Skip to content
This repository was archived by the owner on Aug 2, 2026. It is now read-only.
 
 

Repository files navigation

Upgopher

Upgopher, a gopher carrying files

A single self-contained binary to share files and clipboard content between devices—no database, dependencies, or mandatory configuration.

CI status Latest release MIT license Container image

Upgopher demo: browse files, upload content, and share clipboard text

Start sharing in three steps

# 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 device

Upgopher 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.

Install

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.20.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.

What it is good at

  • 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.

Included

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, and server timeouts.

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.

Choosing the right tool

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.

Common commands

# 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

# Custom port and a 1 GiB upload limit
upgopher -dir ./shared -port 8080 -max-upload-size 1

Read the full configuration reference.

Security and limits

  • 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.
  • -ssl without -cert and -key creates a new self-signed certificate at startup; clients will not trust it automatically.
  • 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.

Documentation

Upgopher is available under the MIT License.

About

Share files, folders, text, and clipboard images between devices from a single self-contained binary.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages