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>
70 lines
2.2 KiB
Markdown
70 lines
2.2 KiB
Markdown
# miniSCP site
|
|
|
|
The all-in-one landing page **and** download host for miniSCP. One static page, one flat
|
|
download folder, served by [Caddy](https://caddyserver.com). 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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 `*.patch` files.** 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 at `http://<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 `xattr` step and the
|
|
Windows SmartScreen prompt.
|
|
- `/dl/` is also the intended `release.baseUrl` for the future electrobun auto-updater.
|