From 1236d381ebabe92e4b7e7e98fde0fc8cf5a2fe31 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Fri, 17 Apr 2026 15:47:21 -0700 Subject: [PATCH] Wait for MagicDNS readiness before starting nginx Upstream blocks resolve DNS at config load. If MagicDNS isn't ready yet (Tailscale just connected), nginx gets empty resolution and returns 502. Poll nslookup until resolution works before launching nginx. Co-Authored-By: Claude Opus 4.6 (1M context) --- fly/start.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/fly/start.sh b/fly/start.sh index 5b08490..8fd1fd4 100644 --- a/fly/start.sh +++ b/fly/start.sh @@ -11,10 +11,18 @@ tailscale up --authkey="${TS_AUTHKEY}" --hostname=flyio-proxy until tailscale status > /dev/null 2>&1; do sleep 1; done echo "Tailscale connected" +# Wait for MagicDNS to be ready — upstream blocks resolve DNS at config +# load, so nginx will fail to start if MagicDNS can't resolve yet. +echo "Waiting for MagicDNS..." +until nslookup forge.tail8d86e.ts.net 100.100.100.100 > /dev/null 2>&1; do + sleep 1 +done +echo "MagicDNS ready" + # Ensure fail2ban deny file exists before nginx starts touch /etc/nginx/forge-deny.conf -# Start nginx — MagicDNS is available, health check passes immediately. +# Start nginx — MagicDNS is available, upstreams resolved. nginx -g "daemon off;" & NGINX_PID=$! echo "Nginx started"