Maintenance & updates¶
Update routine¶
| What | How | Cadence |
|---|---|---|
:latest images (Sonarr, Radarr, Prowlarr, Plex, Bazarr, Seerr, Tautulli, FlareSolverr) |
Portainer → Stack → Update the stack → Re-pull image | scheduled (see private runbook) |
| Pinned images (gluetun, qBittorrent, restic, Portainer) | Check release notes, bump the tag in the stack or compose, redeploy | deliberately, when needed |
| DSM | Control Panel → Update (security updates) | when released |
Never run docker-compose in the folder of a Portainer-managed stack
Portainer keeps its own copy of the compose file and the env. Edit and redeploy in Portainer (or through its API).
Rollback tags¶
Before bumping a pinned image, keep the old one:
docker tag qmcgaw/gluetun:<old> qmcgaw/gluetun:rollback-$(date +%Y%m%d)
Rolling back means putting the old tag back in the stack and redeploying. Before risky changes, also save the stack file and env
(Portainer API GET /api/stacks/<id>/file) and the app's config.xml/DB into /volume1/docker/backups/<change>-<date>/ (root 700).
Known gotchas¶
- Saving or updating the gluetun-qbittorrent stack recreates gluetun. Wait for gluetun to be healthy; qBittorrent restarts with it. Check that its listen port = the forwarded port.
- Allowed Hosts in Sonarr/Radarr: any new hostname or proxy has to be added, followed by a restart, or you get
400 Invalid Hostname. - Snapshots of
datahold on to the space of replaced media for up to a month. If the volume passes 80%, prune olddatasnapshots first. - The qBittorrent share-limit action Remove triggers an *arr health warning. That is expected and intended (see gluetun page).
- Plex Optimized Versions are not worth it on this CPU (far slower than realtime).
Keeping this guide current¶
- Make the change on the NAS and note it in the private runbook.
- Update the matching page and/or
compose/file here. Sanitize (see the README checklist). - Add an entry to the Changelog.
- Run
./scripts/scan.sh, thenmkdocs build --strict, then commit.