A single self-contained binary to share files and clipboard content between devices—no database, dependencies, or mandatory configuration.
Upgopher can now encrypt file content in your browser before it travels through ngrok, Cloudflare Tunnel, trycloudflare, or another HTTP/HTTPS proxy. The destination decrypts uploads automatically; downloads are decrypted in the browser. Enable it with one flag, using the same browser interface and tunnel URL:
upgopher -dir ./shared -encrypt-transfers -user admin -pass 'choose-a-strong-password'Uploads, downloads, ZIP archives, text previews, search excerpts, and shared images all use the encrypted transport. It adds application-layer encryption alongside HTTPS, using AES-256-GCM and RSA-OAEP, with no extra dependencies.
Read the encrypted-transfer guide and the v1.21.0 release notes.
# 1. Install
go install github.com/wanetty/upgopher@latest
# 2. Share a directory
upgopher -dir ./shared
# 3. Open http://localhost:9090 on this or another deviceUpgopher binds to all interfaces by default. Use Basic Auth, a trusted local network, a VPN, or a properly configured reverse proxy before exposing it beyond your machine.
| Method | Command |
|---|---|
| Homebrew | brew install --cask wanetty/tap/upgopher |
| Scoop | scoop bucket add wanetty https://github.com/wanetty/scoop-bucket then scoop install upgopher |
| Docker | docker run --rm -p 9090:9090 -v "$PWD:/data" wanetty/upgopher:1.21.0 |
| Go | go install github.com/wanetty/upgopher@latest |
| Binary | Download the archive for your OS from GitHub Releases and verify it with checksums.txt |
The project-maintained container is also published as
ghcr.io/wanetty/upgopher. See the
installation guide
for platform-specific instructions and persistent Docker examples.
- Move files across a LAN. Open a browser on a phone, laptop, VM, or lab machine and upload or download without setting up a client.
- Share text and screenshots between devices. The built-in shared clipboard supports multiple tabs and optional per-tab protection.
- Expose a development folder temporarily. Serve build output, logs, or test artifacts with one command.
- Publish a read-only download portal. Keep browsing and downloads available
while disabling uploads and deletion with
-readonly. - Run a small homelab file drop. Put Upgopher behind your VPN, tunnel, or reverse proxy when you need a compact browser-based tool instead of a storage platform.
Files: drag-and-drop file and folder uploads, download, directory creation and deletion, ZIP downloads, search inside text files, breadcrumbs, and a directory tree.
Sharing: copyable direct links, custom path aliases, and a shared clipboard for text and screenshots.
Controls: optional Basic Auth, built-in HTTPS with a self-signed or custom certificate, read-only mode, hidden-file controls, upload limits, server timeouts, and optional browser-to-server file encryption.
Everything required by the UI is embedded in the binary. Upgopher uses only the Go standard library and does not require a database or configuration file.
Comparison checked for Upgopher v1.20.0 in July 2026. Projects evolve; follow the linked sources for their current feature sets.
| Tool | Artifact / runtime | Upload and management | Auth model | Users / roles | HTTPS | WebDAV | Resumable uploads | Shared clipboard | Best fit |
|---|---|---|---|---|---|---|---|---|---|
| Upgopher | Self-contained Go binary | Browser file manager | Optional global Basic Auth | No | Built in | No | No | Text and screenshots | The smallest step from a folder to a practical browser sharing UI |
python -m http.server |
Python runtime | Browse and download | No built-in access control | No | CLI TLS options in current Python | No | No | No | Temporary, read-only serving during local development |
| Dufs | Single Rust binary | Upload, edit, search, archive | Access controls | Account rules | Built in | Yes | Yes | No | A compact server when WebDAV or resumable transfers matter |
| File Browser | Binary or container with persistent state | Full web file administration | Login and persistent auth | Yes | Commonly via proxy | No | No | No | Multi-user file management with administration and permissions |
| Copyparty | Python runtime or self-extracting bundle | Extensive file and media features | Accounts and per-volume permissions | Yes | Built in | Yes | Yes | No | Advanced transfers, protocols, indexing, deduplication, and media workflows |
Upgopher deliberately does not provide WebDAV, resumable uploads, multi-user roles, storage backends, or a persistent administration database. If one of those is central to your setup, one of the alternatives above is likely a better choice.
# Protect access
upgopher -dir ./shared -user admin -pass 'choose-a-strong-password'
# Download-only portal
upgopher -dir ./public -readonly
# Built-in HTTPS with an ephemeral self-signed certificate
upgopher -dir ./shared -ssl
# Encrypt file content before it crosses an HTTPS tunnel
upgopher -dir ./shared -encrypt-transfers -user admin -pass 'choose-a-strong-password'
# In another terminal: cloudflared tunnel --url http://localhost:9090
# Custom port and a 1 GiB upload limit
upgopher -dir ./shared -port 8080 -max-upload-size 1Read the full configuration reference.
- Treat an unauthenticated instance as public to every device that can reach its port.
- Prefer a VPN or a reverse proxy with trusted TLS for internet-facing use.
-sslwithout-certand-keycreates a new self-signed certificate at startup; clients will not trust it automatically.-encrypt-transfersadds browser-to-server application encryption to uploads, downloads, ZIPs, file previews/search results, and shared images. Open the HTTPS tunnel URL or localhost in a browser with Web Crypto to use it.- The browser and server encrypt file content with AES-256-GCM and exchange protected transfer keys using RSA-OAEP. Shared links handle decryption through a browser download page. Uploaded files are saved in their original format.
- Encrypted transfers include upload progress, cancellation, automatic temporary transfer cleanup, and direct-to-disk downloads in supported browsers.
- Basic Auth is global. Upgopher does not provide separate user accounts or per-folder permissions.
- Clipboard data and custom path aliases are held in memory and disappear when the process restarts.
- A read-only instance prevents uploads and deletion through Upgopher; it does not change host filesystem permissions.
See the security guide. Report vulnerabilities privately to @gm_eduard; do not open a public issue.
Upgopher is available under the MIT License.
