install.sh, deploy.sh and the runbooks cover the bot bundle path
install.sh installs deployBotBundle.sh as vanguard-deploy-bot and creates /srv/bot/app; the pipeline reinstalls it when it changes. FRESH-INSTALL gains section 7a and appendix L (the first release, the python312 runner label, the Gitea secrets, the Authentik app), with the appendix relettered so it stays in order. README's rebuild list says the bot's repo is outside this one and what to restore where. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,8 @@ README.md (section numbers given).
|
||||
## 0. Before touching the server
|
||||
- DNS: `A` record for `HOST` → the server IP; `CNAME`s `files`, `clips`, `sync`, `live`, `auth`, `watch`, `git`, `bot` → `HOST`.
|
||||
Optional: the bare domain `A` → server IP (it redirects to `https://HOST/`).
|
||||
- The Discord bot lives in its **own** repo (ours `VanguardOrg/VanguardBot`), not in this one. Nothing here
|
||||
needs it to exist; section 7a wires it up afterwards.
|
||||
- Discord developer portal → New Application (one app serves Authentik login, the Jellyfin plugin's bot and the
|
||||
Discord bot):
|
||||
- OAuth2 → Redirects: `https://auth.BASE/source/oauth/callback/discord/` (the last segment is the Authentik
|
||||
@@ -103,6 +105,18 @@ Log in at `https://git.BASE/` as `GITEA_ADMIN_USER` / `GITEA_ADMIN_PASSWORD` fro
|
||||
(your SSH key under Settings → SSH keys).
|
||||
3. Runner: `./registerGiteaRunner.sh` on the server → Site Administration → Actions → Runners shows it idle.
|
||||
|
||||
## 7a. Discord bot (README 5d)
|
||||
1. The bot is **not** part of this repo. Its code arrives as a release bundle built by its own Gitea Actions
|
||||
workflow and installed by `deployBotBundle.sh`; the image here carries no bot dependencies.
|
||||
2. Create the org + repo in Gitea (ours: `VanguardOrg/VanguardBot`) and let the dev push to it.
|
||||
3. The runner needs the **`python312`** label (CPython 3.12 + node, for the JavaScript actions). It is in
|
||||
`docker-compose.yml`; labels are fixed at registration, so `./registerGiteaRunner.sh` after any change.
|
||||
4. In Gitea → the bot repo → Settings → Actions: secrets `BOT_DEPLOY_SECRET` (from `./configure.py --show`)
|
||||
and `DISCORD_BOT_TOKEN`; variable `DISCORD_GUILD_ID`. **The bot's secrets live here, not in `.env`.**
|
||||
5. Authentik: a Proxy Provider for `https://bot.BASE` on the embedded outpost (same shape as `live.`).
|
||||
6. Push to `main` → CI tests, builds the bundle, posts it signed to dumpd, which installs it and restarts the
|
||||
container. By hand: `./deployBotBundle.sh <bundle.zip>`; back out with `--rollback`.
|
||||
|
||||
## 8. Pipeline (README "Deployment")
|
||||
1. On the server: `./switchToClone.sh key` → add the printed key as a read-only **Deploy Key** on the repo
|
||||
→ `./switchToClone.sh clone` (keeps `.env`, generated configs, plugin zips) → `./configure.py --apply`.
|
||||
@@ -305,8 +319,30 @@ K2. dev$ ssh debian@HOST 'f=$(ls -t /srv/media/streams/*/*.mp4 | head -1); echo
|
||||
K3. https://watch.BASE/ → the recording is an episode under this weekday's season; Discord feed channel got a post with a frame grab.
|
||||
K4. https://live.BASE/ while someone streams → a window with the corner chip "webrtc".
|
||||
|
||||
## L. Afterwards
|
||||
## L. Discord bot (first release)
|
||||
|
||||
L1. dev$ ssh debian@HOST 'docker inspect authentik-server --format "{{.Config.Image}}"' → put that tag in .env as AUTHENTIK_TAG, then ./configure.py --apply.
|
||||
L2. Rotate anything pasted into a chat or screenshot (Discord client secret: portal → Reset → Authentik source → update).
|
||||
L3. Backups: .env, /srv/appdata, /srv/media, /etc/vanguard/clip-quotas.json. Home archive puller: README §7.
|
||||
L1. Gitea → New Organization `VanguardOrg` → New Repository `VanguardBot` (private). The bot dev pushes to it.
|
||||
L2. dev$ ssh debian@HOST 'cd ~/vanguard-stream && ./configure.py --show | grep -A2 "bot ci"'
|
||||
→ copy BOT_DEPLOY_SECRET and the list of keys CI may set.
|
||||
L3. Gitea → VanguardBot → Settings → Actions → Secrets → Add: `BOT_DEPLOY_SECRET` (L2), `DISCORD_BOT_TOKEN` (A2).
|
||||
Variables → Add: `DISCORD_GUILD_ID` (A3). Optional `VANGUARD_DEPLOY_HOST` = the docker gateway from I3 if
|
||||
the deploy job cannot detect it.
|
||||
L4. Check the runner advertises the python312 label:
|
||||
dev$ ssh debian@HOST 'cd ~/vanguard-stream && ./registerGiteaRunner.sh' (only if it does not)
|
||||
Site Administration → Actions → Runners → vanguard-runner → labels include python312.
|
||||
L5. Authentik → Applications → Create with provider → Proxy Provider, Forward auth (single application),
|
||||
external host `https://bot.BASE` → add to the Embedded Outpost → bind group `bot-users`.
|
||||
L6. The dev pushes to `main`. The run should end with the install log, "settings written: DISCORD_BOT_TOKEN,
|
||||
DISCORD_GUILD_ID" and HTTP 200.
|
||||
dev$ ssh debian@HOST 'cd ~/vanguard-stream && ./deployBotBundle.sh --status'
|
||||
→ version, commit, package count, container Up.
|
||||
L7. dev$ ssh debian@HOST 'docker logs discord-bot --tail 20'
|
||||
→ the bot's version line, then its MariaDB connection. First real MariaDB run: watch for a retry loop.
|
||||
L8. Private window → https://bot.BASE/ → Discord login → the bot's pages. Needs the `bot-users` group (admins
|
||||
need it too, or set BOT_REQUIRE_GROUP= and let the bot's WEB_ALLOWED_GROUPS decide).
|
||||
|
||||
## M. Afterwards
|
||||
|
||||
M1. dev$ ssh debian@HOST 'docker inspect authentik-server --format "{{.Config.Image}}"' → put that tag in .env as AUTHENTIK_TAG, then ./configure.py --apply.
|
||||
M2. Rotate anything pasted into a chat or screenshot (Discord client secret: portal → Reset → Authentik source → update).
|
||||
M3. Backups: .env, /srv/appdata, /srv/media, /etc/vanguard/clip-quotas.json. Home archive puller: README §7.
|
||||
|
||||
Reference in New Issue
Block a user