Skip to content

Prepare Upgopher v1.20.0 adoption release - #5

Merged
wanetty merged 2 commits into
mainfrom
codex/upgopher-v1.20-adoption
Jul 29, 2026
Merged

wanetty merged 2 commits into
mainfrom
codex/upgopher-v1.20-adoption

Conversation

@wanetty

@wanetty wanetty commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Upgopher v1.20.0 — easier to discover, install, and choose

Upgopher v1.20.0 is an adoption release. The server's routes, flags,
authentication behavior, and file formats remain compatible with v1.19.1.

What is new

  • A shorter README centered on getting from a directory to a browser in one
    command.
  • A product website with installation, configuration, security, and
    troubleshooting documentation.
  • Project-maintained multi-architecture images on Docker Hub and GHCR.
  • Project-maintained Homebrew and Scoop distribution.
  • Refreshed product captures and an honest comparison with Python's
    http.server, Dufs, File Browser, and Copyparty.
  • Release automation that creates a draft for verification before publication.

Install

# macOS
brew install --cask wanetty/tap/upgopher

# Windows
scoop bucket add wanetty https://github.com/wanetty/scoop-bucket
scoop install upgopher

# Docker
docker run --rm -p 9090:9090 -v "$PWD:/data" wanetty/upgopher:1.20.0

# With Go
go install github.com/wanetty/upgopher@latest

Release archives for Linux, macOS, and Windows are attached below. Verify a
download against checksums.txt before running it.

Compatibility

No HTTP routes, flags, authentication behavior, or file formats changed.
Existing installations can keep their current command line and data directory.

The Linux release archive names and embedded binary path remain compatible with
the Upgopher installer maintained by Proxmox Community Scripts. Existing LXC
instances continue using /opt/upgopher/uploads and their current systemd
service during updates.

Container notes

The image now runs as the non-root UID/GID 65532, serves /data, and keeps a
writable /tmp for temporary ZIP files. Bind-mounted directories must grant
that identity the permissions required by your chosen mode.

Use the exact 1.20.0 tag for predictable deployments. 1.20, 1, and
latest are convenience tags that can move.

Intentional limits

Upgopher remains a compact browser-sharing server. It does not add WebDAV,
resumable uploads, multi-user roles, storage backends, or a persistent
administration database in this release.

Validation

  • make test
  • make test-race
  • make lint
  • make build
  • GoReleaser v2 snapshot, archives, and checksums
  • Linux amd64 and arm64 Community Scripts release contract
  • Non-root container smoke tests for uploads, read-only mode, Basic Auth, TLS,
    and ZIP downloads
  • Desktop and mobile documentation checks

See the getting-started guide
and security guide before
exposing an instance beyond a trusted network.

@wanetty
wanetty marked this pull request as ready for review July 29, 2026 09:54
Copilot AI review requested due to automatic review settings July 29, 2026 09:54
@wanetty
wanetty merged commit 0a13e6d into main Jul 29, 2026
6 checks passed
@wanetty
wanetty deleted the codex/upgopher-v1.20-adoption branch July 29, 2026 09:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Prepares the Upgopher v1.20.0 “adoption release” by refreshing top-level docs, adding a standalone GitHub Pages documentation site, and introducing first-party release/distribution automation (GoReleaser + Docker images + Pages publishing) while keeping runtime behavior compatible.

Changes:

  • Bump reported application version to 1.20.0 and refresh README / contributor-facing docs.
  • Add a static product/documentation website under docs/ (HTML/CSS/JS) and publish it via GitHub Pages.
  • Add/adjust release automation: GoReleaser draft releases, Homebrew/Scoop publishing, container builds to GHCR/Docker Hub, and verification scripts.

Reviewed changes

Copilot reviewed 29 out of 37 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
upgopher.go Updates the application version string to v1.20.0.
SECURITY.md Adds a security policy and private disclosure instructions.
scripts/enrich-scoop-manifest/main.go Adds a helper to enrich the GoReleaser-generated Scoop manifest with update metadata.
scripts/create-demo-gif.go Adds a stdlib-only tool to regenerate the README/website demo GIF.
scripts/container-smoke-test.sh Adds a container smoke-test script covering uploads, readonly, auth, TLS, and ZIP.
scripts/check-community-scripts-contract.sh Adds a release-archive contract check for Community Scripts (Linux amd64/arm64).
README.md Replaces the long README with a shorter “getting started + positioning” doc and links to the website.
docs/index.html Adds the product landing page (static HTML).
docs/getting-started.html Adds installation + first-run guide for the website.
docs/configuration.html Adds a flag/configuration reference page for the website.
docs/security.html Adds a security/deployment guidance page for the website.
docs/troubleshooting.html Adds a troubleshooting guide page for the website.
docs/assets/site.js Adds small JS for nav toggle and install method tabs.
docs/assets/site.css Adds the website styling (static, no build step).
docs/.nojekyll Disables Jekyll processing for Pages.
Dockerfile Reworks container build to a multi-arch BuildKit flow and a non-root scratch runtime image with /data + writable /tmp.
distribution/release-checklist.md Adds a detailed v1.20.0 release verification checklist.
distribution/README.md Documents required distribution repos and GitHub Actions secrets/scopes.
distribution/awesome-selfhosted.md Prepares an awesome-selfhosted submission draft.
distribution/adoption-baseline.md Adds a lightweight adoption metrics baseline for the adoption release.
CONTRIBUTING.md Rewrites contribution guidance to match current architecture, constraints, and workflows.
.goreleaser.yml Updates GoReleaser v2 configuration (archives, checksums, draft releases, Homebrew cask + Scoop publishing).
.gitignore Ignores dist/ and adjusts ignored directories.
.dockerignore Adds a Docker build context ignore list to keep images lean and avoid shipping docs/scripts/etc.
.github/workflows/ci.yml Introduces CI for test/vet/build across OSes + a Linux race job + a release-contract job.
.github/workflows/release.yml Adds a tag-triggered GoReleaser draft release workflow + Scoop manifest enrichment commit.
.github/workflows/docker.yml Adds a tag-triggered multi-arch container build+push workflow to GHCR and Docker Hub.
.github/workflows/pages.yml Adds a Pages deployment workflow for the docs/ site.
.github/workflows/go.yml Removes the legacy tag-triggered GoReleaser workflow.
.github/release-notes/v1.20.0.md Adds curated release notes for v1.20.0.

Comment thread docs/index.html
Comment on lines +120 to +135
<div class="install-tabs" role="tablist" aria-label="Installation method">
<button class="install-tab" role="tab" aria-selected="true" aria-controls="install-brew">Homebrew</button>
<button class="install-tab" role="tab" aria-selected="false" aria-controls="install-scoop">Scoop</button>
<button class="install-tab" role="tab" aria-selected="false" aria-controls="install-docker">Docker</button>
<button class="install-tab" role="tab" aria-selected="false" aria-controls="install-go">Go</button>
</div>
</div>
<pre class="install-panel" id="install-brew"><span class="prompt">$</span> brew install --cask wanetty/tap/upgopher
<span class="prompt">$</span> upgopher -dir ./shared</pre>
<pre class="install-panel" id="install-scoop" hidden><span class="prompt">&gt;</span> scoop bucket add wanetty https://github.com/wanetty/scoop-bucket
<span class="prompt">&gt;</span> scoop install upgopher
<span class="prompt">&gt;</span> upgopher -dir .\shared</pre>
<pre class="install-panel" id="install-docker" hidden><span class="prompt">$</span> docker run --rm -p 9090:9090 \
-v "$PWD:/data" wanetty/upgopher:1.20.0</pre>
<pre class="install-panel" id="install-go" hidden><span class="prompt">$</span> go install github.com/wanetty/upgopher@latest
<span class="prompt">$</span> upgopher -dir ./shared</pre>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants