selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Goploader logo

Self-host Goploader

v1.0.2

Encrypted file sharing server with terminal-first design

ReleaseOpen SourceMIT
docker run --rm --name=goploader -v goploader:/data -p 8080:8080 gpldr:latest
Updated7 months ago
LanguageJavaScript
Setup difficultyModerate
Stars
301
Ports
8080 (main server HTTP listener), 8008 (initial web setup interface)

What is Goploader?

goploader is a file sharing server written in Go that prioritizes privacy through server-side encryption — files are encrypted upon receipt and the decryption key is never stored on the server. It consists of a server component and a CLI client (gpldr), both designed for terminal-first workflows. The server supports uploads via multipart form data, making it compatible with curl, httpie, and wget without requiring the official client. Features include configurable file lifetime, one-time downloads, size limits, disk quotas, and a web setup interface. It uses an embedded BoltDB database so no external database is required. The project can be run via Docker, as a standalone binary, or built from source, and can be managed with systemd or supervisor.

Should you self-host Goploader?

Goploader scores 48/100 on selfhost.directory (how scoring works) and ranks #52 of 86 in File Sharing. It has 301 GitHub stars.

It shipped 1 stable release in the past year. The latest, v1.0.2, came out on 12 March 2026.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in JavaScript.

Its closest alternative on selfhost.directory is copyparty (82/100, 47 150 stars). It scores higher overall, so compare the two before you pick. See Goploader vs copyparty side by side.

Features

  • Clipboard integrationRequires xclip or xsel on Linux
  • Configurable file lifetime
  • Curl/wget/httpie compatible
  • Disk quota
  • File size limits
  • One-time downloads
  • Progress Bar
  • Prometheus Metrics
  • Screenshot UploadRequires gnome-screenshot, import, or scrot installed
  • Sensitive mode
  • Server-Side Encryption
  • Upload from stdin
  • Web setup interface

Goploader README

How to install Goploader

Install Goploader with Docker

Docker
$ git clone https://github.com/depado/goploader.git
$ cd goploader
$ make docker

To start running the Docker image try docker run --rm --name=goploader -v goploader:/data -p 8080:8080 gpldr:latest and open the setup web interface at http://127.0.0.1:8080 on your browser. Add an extra -d to the command so you run it as a background service (daemon).

Image built locally via Makefile; no pre-built image on Docker Hub

How to configure Goploader

  • always_downloadfalseDisable viewing the file in the browser and always offer to download the files.

    Disable viewing the file in the browser and always offer to download the files.

    values: true, false

  • append_portfalseSet to true if you need to append the port to the name_server in the returned URLs.

    Set to true if you need to append the port to the name_server in the returned URLs.

    values: true, false

  • dbgoploader.dbPath to the database. (The database being a single file)

    Path to the database. (The database being a single file)

  • disable_encryptionfalseDisable encryption. Files will be written to disk much faster, but there won't be any server-side encryption.

    Disable encryption. Files will be written to disk much faster, but there won't be any server-side encryption.

    values: true, false

  • disk_quota0Maximum total size the uploaded files occupy on disk in GB. 0 to disable.

    Maximum total size the uploaded files occupy on disk in GB. 0 to disable.

  • fulldoctrueDisplay or not the link to the full documentation of the project.

    Display or not the link to the full documentation of the project.

    values: true, false

  • hostHost on which the server should listen.

    Host on which the server should listen.

  • key_length16Size of the AES cipher key.

    Size of the AES cipher key.

  • loglevelinfoDefines a level for the logs. Choices are "debug", "info", "error","disabled".

    Defines a level for the logs. Choices are "debug", "info", "error","disabled".

    values: debug, info, error, disabled

  • name_serverThe server name to use. This is used to return correct URLs to the clients.

    The server name to use. This is used to return correct URLs to the clients.

  • no_webfalseWhen set to true, this option completely disable the HTML pages. Upload will only be possible using curl and/or client.

    When set to true, this option completely disable the HTML pages. Upload will only be possible using curl and/or client.

    values: true, false

  • port8080Port on which the server should listen.

    Port on which the server should listen.

  • prometheus_enabledfalseEnabled Prometheus metrics. This exposes the /metrics endpoint which will expose data for prometheus.

    Enabled Prometheus metrics. This exposes the /metrics endpoint which will expose data for prometheus.

    values: true, false

  • sensitive_modefalseIf web interface is activated, hide all information and only display the file upload form.

    If web interface is activated, hide all information and only display the file upload form.

    values: true, false

  • serve_httpsfalseSet to true if you want the server to serve its own HTTPS certificate.

    Set to true if you want the server to serve its own HTTPS certificate.

    values: true, false

  • size_limit20Maximum size of sent files in MB.

    Maximum size of sent files in MB.

  • ssl_certPath to the SSL Certificate. Required if you set serve_https to true.

    Path to the SSL Certificate. Required if you set serve_https to true.

  • ssl_private_keyPath to your SSL private key. Required if you set serve_https to true.

    Path to your SSL private key. Required if you set serve_https to true.

  • statsfalseDisplay or not the statistics on the main page (number of files uploaded and total size).

    Display or not the statistics on the main page (number of files uploaded and total size).

    values: true, false

  • uniuri_length10Length of the unique ID of the resources, which is part of the returned URL for each uploaded file.

    Length of the unique ID of the resources, which is part of the returned URL for each uploaded file.

  • upload_dirup/Path to the (local or absolute) directory where the files should be stored.

    Path to the (local or absolute) directory where the files should be stored.

Goploader releases & version history

More in File Transfer & Sync

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…