Push-to-deploy (OFF by default): vanguard-deploy applies only changed parts with a live-stream guard for MediaMTX, rollback, pending timer; dumpd /deploy webhook gated by DEPLOY_AUTO; configure --apply; switchToClone.sh; draft CI workflow; committed plugin zip
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
31
README.md
31
README.md
@@ -396,6 +396,37 @@ files are not revisited. Clips are always converted to CFR regardless.
|
||||
Planned alternative: re-encode flagged streams off-site on a machine with a hardware encoder (home box NVENC or a
|
||||
Spot GPU) and push the result back — see CommunityDiscordMedia.md → Later.
|
||||
|
||||
## Deployment (push to deploy — built, OFF by default)
|
||||
|
||||
The server folder is a git clone of this repo (`./switchToClone.sh key` → add the printed deploy key in Gitea →
|
||||
`./switchToClone.sh clone`). Generated files (`.env`, `Caddyfile`, `mediamtx.yml`, `copyparty.conf`, the token
|
||||
secret) are gitignored and survive pulls; static pages are bind-mounted from the checkout.
|
||||
|
||||
`sudo vanguard-deploy pull` fetches `main` and applies **only what changed**, after `check.sh`:
|
||||
|
||||
| changed | action | interruption |
|
||||
|---|---|---|
|
||||
| `configure.py`, `dock/`, `clips/`, `about/`, stignore | `configure.py --apply` → Caddy reload, copyparty restart | none / a second |
|
||||
| `bin/*`, `systemd/*` | install; dumpd restart when it changed; timers pick up next run | a second |
|
||||
| `firewall/nftables.conf` | `nft -f` | none |
|
||||
| `docker-compose.yml`, bot image | `compose up -d --build` for changed services | that service |
|
||||
| anything that changes `mediamtx.yml` or the mediamtx service | **restart only when no stream is live**; otherwise deferred, `deploy-pending.timer` retries every 5 min | none while live |
|
||||
| `jellyfin-plugin-vanguard/dist/*.zip` (committed) | `installJellyfinPlugin.sh` | Jellyfin restart |
|
||||
| `live/` | `npm run build` on the server → `/srv/live` | none |
|
||||
|
||||
`sudo vanguard-deploy rollback` checks out the previously deployed revision and applies the reverse diff.
|
||||
`sudo vanguard-deploy status` shows revisions, auto mode, pending restarts, live streams.
|
||||
|
||||
**Automatic**: Gitea → repo → Settings → Webhooks → Gitea, URL `http://<docker gateway>:8081/deploy`
|
||||
(`docker network inspect vanguard-stream_default -f '{{(index .IPAM.Config 0).Gateway}}'`, usually `172.18.0.1`),
|
||||
secret = `DEPLOY_WEBHOOK_SECRET` from `.env`, push events, branch `main`. dumpd verifies the HMAC and runs
|
||||
`vanguard-deploy pull` **only when `DEPLOY_AUTO=1`** in `.env` (then `./configure.py --apply` to push the setting
|
||||
to `/etc/vanguard/deploy.env`). Until then every push is logged (`journalctl -u dumpd | grep deploy`) and ignored.
|
||||
Optional `DEPLOY_NOTIFY_WEBHOOK_URL` posts deploy results to Discord.
|
||||
|
||||
CI: `.gitea/draft-workflows/ci.yml` (inert until moved to `.gitea/workflows/`) runs `check.sh` and the plugin
|
||||
tests/build on the Actions runner. The runner never deploys — it must not touch the host.
|
||||
|
||||
## Layout on the server
|
||||
|
||||
/srv/media/streams/<user>/<Title>/.live/<ts>.mp4 recording in progress (hidden from Jellyfin/copyparty)
|
||||
|
||||
Reference in New Issue
Block a user