-
Notifications
You must be signed in to change notification settings - Fork 0
Traefik
github-actions[bot] edited this page May 18, 2026
·
2 revisions
Reverse proxy operations -- day-to-day management, debugging, and troubleshooting of the Traefik container.
For architecture, DNS setup, and configuration, see Traefik Reverse Proxy.
| Property | Value |
|---|---|
| Image |
docker.io/library/traefik (Official) |
| Container name | traefik |
| Published port | 80 (host) -> 80 (container) |
| Config directory | /home/mms/config/traefik |
| Dynamic config | /home/mms/config/traefik/dynamic/*.yml |
| Backup type | Config backup |
| Autodeploy group |
backend (every 30 min) |
systemctl --user start traefik.service
systemctl --user stop traefik.service
systemctl --user restart traefik.service
systemctl --user status traefik.servicejournalctl --user -u traefik --since today
journalctl --user -u traefik -f
podman logs --tail 50 traefik# Test that Traefik is serving (returns 404 for unknown hosts, which is OK)
curl -s -o /dev/null -w "%{http_code}" http://localhost
# Test a specific route
curl -sf -H "Host: radarr.media.example.com" http://localhost
curl -sf http://radarr.media.example.com# Stop the running service first
systemctl --user stop traefik.service
podman run --rm -it \
--name test-traefik \
--network mms \
--userns=keep-id \
--tmpfs /run:U \
-p 80:80 \
-v /home/mms/config/traefik:/etc/traefik:Z \
docker.io/library/traefik:latestOfficial image rules:
- Use
--userns=keep-id - Use
--network mms, not--network mms.network - Use
--tmpfs /run:U - Published port 80 is the only externally-accessible port (besides Plex 32400 and Channels 8089)
-
Config backup: Daily at 03:00, encrypted with age, saved to
/data/backups/config/traefik/
ansible-playbook playbooks/restore.yml \
-e service_name=traefik \
-e backup_file=/data/backups/config/traefik/<backup-file>.tar.zst.age \
-e backup_age_identity_file=/path/to/age-identity.txt# Check the generated dynamic configuration
ls ~/config/traefik/dynamic/
cat ~/config/traefik/dynamic/*.yml
# Test each service route
for svc in prowlarr radarr radarr4k sonarr lidarr sabnzbd jellyfin plex tautulli channels navidrome immich notebook grafana; do
echo -n "$svc: "
curl -s -o /dev/null -w "%{http_code}" -H "Host: ${svc}.media.example.com" http://localhost
echo
done
# Test from inside Traefik container (backend connectivity)
podman exec traefik wget -q --spider http://radarr:7878404 errors on a service route
Traefik is running but the route doesn't match the Host header. Check:
- The dynamic config has the correct subdomain:
cat ~/config/traefik/dynamic/*.yml | grep -A5 radarr
- DNS resolves correctly:
dig radarr.media.example.com
- The
Hostheader matches exactly:curl -v -H "Host: radarr.media.example.com" http://localhost
502 Bad Gateway / connection refused to backend
The backend container is not running or not on the mms network:
# Check the backend is running
podman ps | grep radarr
# Test connectivity from Traefik
podman exec traefik wget -q --spider http://radarr:7878
# Verify network membership
podman network inspect mms | grep radarrDNS not resolving
The wildcard DNS record may not be configured. See Traefik Reverse Proxy for setup instructions. Quick workaround:
# Add to /etc/hosts on the client
echo "<tailscale-ip> radarr.media.example.com sonarr.media.example.com" | sudo tee -a /etc/hostsRoutes not updating after deploy
Traefik uses the file provider and watches for changes. If routes aren't updating, restart Traefik:
systemctl --user restart traefik.service