@EDACerton Longtime lurker, and I had reported this issue about 6 months ago and provided logs, but had not been able to narrow down the root cause. (I also wasn't using AI so much back then). Today I exported the diagnostic logs and asked Claude to analyze and this is what it came up with: Bug Report: Tailscale plugin breaks nginx daily due to stale MagicDNS hostname and missing reload_services call Environment: Unraid 7.2.5, Tailscale plugin (latest), tailscaled v1.98.3 Symptom: After a few minutes of working fine following a manual restart, Tailscale connections drop. The plugin must be manually restarted to restore access. This repeats every day around the same time. Root Cause (from log analysis): There are two bugs that combine to cause the failure: Bug 1 — Stale hostname in cert commands. My tailnet's MagicDNS suffix is [tailnet-name].ts.net, so my correct FQDN is [hostname].[tailnet-name].ts.net. However, both daily.php and tailscale-watcher.php are hardcoded to request certs for [hostname].magicdns.ts.net — the old-style MagicDNS format that no longer matches my tailnet. The cert command fails silently every morning. The plugin should derive the hostname dynamically from the live Tailscale state (which correctly reports the current DNS name) rather than using a cached/hardcoded value. Bug 2 — daily.php does not call reload_services after running tailscale cert. On startup, tailscale-watcher.php correctly calls reload_services after the cert command, which causes nginx to pick up the new cert and bind properly to the Tailscale IP. However, daily.php runs tailscale cert at ~4:41 AM every day and then exits without calling reload_services. This causes nginx to lose its listener on the Tailscale IP (100.x.x.x:80), after which the watcher enters an infinite nginx restart loop that never self-recovers. Evidence from logs (tailscale-utils.log): On startup (works): tailscale-watcher.php: exec: tailscale cert ... [hostname].magicdns.ts.net
tailscale-watcher.php: exec: /usr/local/emhttp/webGui/scripts/reload_services ← presentOn daily timer (breaks): daily.php: exec: tailscale cert ... [hostname].magicdns.ts.net
← reload_services never called
tailscale-watcher.php: WebGUI not listening on 100.x.x.x:80, terminating and restarting
← loops every 2 minutes indefinitelyRequested fixes: Derive the cert hostname dynamically from tailscale status or the local API rather than using a hardcoded/cached value, so it stays correct if the tailnet MagicDNS suffix changes. Add a reload_services call in daily.php after tailscale cert completes, matching the behavior of tailscale-watcher.php on startup.