Troubleshooting¶
This page is for the owner, and anyone helping: how to find out what is wrong, in which order to
look, and an index of every problem already solved once, grouped by area. The fixes themselves
live in
known-issues.md,
which ships with the stack-logs skill so an AI agent reads the same list.
How to diagnose¶
flowchart TD
start["Something is wrong"] --> hc["stack-health: what is failing?"]
hc --> kuma["Uptime Kuma: since when?"]
kuma --> logs["Dozzle or the stack-logs skill: why?"]
logs --> known{"In the known issues?"}
known -->|yes| fix["Apply its fix, then stack-health again"]
known -->|no| deeper["vpn-check, drive-health, or the app's own logs"]
deeper --> fix
- Run
stack-healthfirst (healthin the terminal). It checks storage, systemd units, security, backups, every service, monitoring, Cleanuparr, the indexers and the VPN, and printsOKorFAILper line with a summaryN passed, M failed. A yellowUPDATESline is information, not a failure. It exits non-zero when anything failed. It isn't strictly read-only: it writes a hardlink test file on the media drive and starts short-livedcurlcontainers.arr-health.timerruns it every 6 hours with--notifyand pushes failures to your phone. - Uptime Kuma tells you when. The status page,
http://<tailscale-ip>:3003/status/stack, has every service's recent checks, so you can see whether something is down now, went down at a certain time, or has been flaky (Dashboards). -
The logs tell you why. Dozzle,
http://<tailscale-ip>:8888, streams every container's log with search (Dashboards). In a terminal:docker compose ps --format '{{.Name}} {{.Status}}' docker logs --since 30m <service> 2>&1 | grep -iE 'error|warn|fatal|exception' | tail -30Every container is named after its compose service. Or ask an AI agent with the
stack-logsskill: it reads the logs and matches them against the known issues (AI agent). 4. For the VPN, runvpn-leak-test(leaktest) or thevpn-checkskill, which also proves qBittorrent and slskd sit inside gluetun's network and that traffic can't bypass the tunnel (VPN and ports). 5. For the media drive, thedrive-healthskill reads its SMART data, temperature and USB link, and Scrutiny shows the history (Maintenance).
Diagnosis is safe. Fixing often isn't: restarting services, touching the VPN, editing .env or
restoring data interrupts people, so check that nothing is playing in Jellyfin first. The
things never to do
are listed at the end of the known issues.
Where a failing check points¶
stack-health section |
Look at |
|---|---|
| STORAGE | Storage and boot, disk space, drive health |
| SYSTEMD | systemd reference, Host setup |
| SECURITY | Security, Host setup |
| BACKUPS | Backups |
| SERVICES, MONITORING | The app's logs; Monitoring |
| CLEANUP & INTROS | Cleanuparr |
| INDEXERS | Indexers |
| VPN | VPN and ports |
Known issues by area¶
Each link opens the entry with its symptom, cause and fix.
VPN and torrents¶
- qBittorrent stops answering after gluetun restarts
- Forwarded port out of sync, including right after a reboot
- No forwarded port at all ("vpn forwarded port" DOWN in Kuma)
- Torrents stuck at 0 peers, trackers say "Operation not permitted"
- Trackers say "Host not found"
Searching and downloading¶
- Searches find nothing, or an indexer keeps failing
- Releases shown as rejected
- Byparr healthcheck fails
- Radarr downloaded a fake of a movie still in cinemas
- SABnzbd "Refused connection from ::ffff:100.x"
Watching and subtitles¶
- Jellyfin home screen shows "Nothing here"
- A show is in Jellyfin but has no poster or description
- Slow playback or disk while downloading
- Subtitles stuck on "Fetching additional data" in a browser
- Bazarr "throttling" messages
- Bazarr uses a full CPU core for minutes at a time
Quick answers for viewers (buffering, nothing new showing, works only at home) are in Watching.
Music¶
- Lidarr ignores Soulseek
- Lidarr finds copies but takes none ("X is not wanted in profile")
- "Album match is not close enough" in Needle's Downloading now
- An album has no cover in Navidrome or Needle
- Needle hides Spotify, or says Spotify refused (429)
- Lidarr: "Connection refused (gluetun:5030)" from SlskdDownloadManager
Games¶
- Questarr says "added to qBittorrent" but nothing downloads
- Games page (SFTPGo): a big download started over
Access¶
- An app won't open from home Wi-Fi, only Jellyfin, Seerr and the games page do
- A viewer (family, friend) can't connect
- SSH refused ("Permission denied (publickey)") from a device of yours
Monitoring and dashboards¶
- Uptime Kuma says a service is down, but it's running
- Dozzle lists containers but can't open their logs
- Dozzle shows no CPU or memory
Storage and configuration¶
Solved a new problem? Add it to known-issues.md in the same shape (symptom, cause, fix) and link
it from the matching group here.