Self-contained, no-JS landing page (tinygrad-minimal) that doubles as the artifact download host, served by Caddy on an internal :80 box. - site/index.html: static page, "Same tool, only a little different", feature highlights (remote->remote, symmetric panels, ssh_config awareness, edit-in- place, self-copy guard, ...), fixed stable download links, FAQ (unsigned notes). - site/Caddyfile: one flat /dl/ folder with browse + range requests and per-type Cache-Control (patches immutable, update.json no-cache, installers short). - site/deploy.sh: drop a build's artifacts/stable-* into /dl/ (renames the win portable zip to a stable name). - Flat folder matches electrobun's artifacts/ layout, so it's also the future updater baseUrl; per-build folders/symlink dropped in favor of it. - docs/build-and-release.md: document the download host + deploy flow. Verified: caddy validate + live smoke test (links, cache headers, 206 range, 404 fallback, deploy.sh copy/rename) against a temp root. Co-Authored-By: Claude <noreply@anthropic.com>
miniSCP site
The all-in-one landing page and download host for miniSCP. One static page, one flat download folder, served by Caddy. No JS, no build step.
Layout
site/
index.html # the landing page (pure static HTML/CSS)
Caddyfile # local :80 server config
deploy.sh # copy a build's artifacts into the download folder
assets/ # images (logo, screenshots) — dropped in as they're ready
Deploys to /srv/miniscp on the server:
/srv/miniscp/
index.html
assets/
dl/ # flat folder of all artifacts (the downloads + future updater feed)
Run it
# from the repo root, on the server
sudo mkdir -p /srv/miniscp/dl
sudo cp site/index.html /srv/miniscp/
sudo cp -r site/assets /srv/miniscp/ # once assets exist
caddy run --config site/Caddyfile --adapter caddyfile
# or install as a service: sudo caddy start --config site/Caddyfile
Then open http://<host>/.
Publish a build
electrobun can't cross-compile, so each OS/arch is built on its own machine. On each build
machine, after producing artifacts, drop them into the shared dl/ folder:
bun scripts/release.ts # or --target mac-x64 / win-x64
site/deploy.sh # -> /srv/miniscp/dl
Serving on a different box than you build on? Stage locally, then sync:
MINISCP_DL_DIR=./_dl site/deploy.sh
rsync -av ./_dl/ user@host:/srv/miniscp/dl/
That's the whole workflow: build, drop the artifacts, done. Installers keep stable names and overwrite in place, so the download links on the page never change.
Don't delete old
*.patchfiles. They're the incremental-update trail for the (upcoming) built-in updater — removing them forces older installs to re-download the full app.
Notes
- Downloads live under
/dl/and are browsable athttp://<host>/dl/. - The page links to fixed, stable filenames (
stable-macos-arm64-miniSCP.dmg, …) so it stays static and always points at the latest build. - Builds are currently unsigned — the FAQ on the page covers the macOS
xattrstep and the Windows SmartScreen prompt. /dl/is also the intendedrelease.baseUrlfor the future electrobun auto-updater.