Self-hosting troubleshooting
Common control-plane failures when self-hosting dFlow and what to check next.
Written By Zoro
Last updated 25 days ago
Work through symptoms top to bottom. Capture docker compose logs excerpts when opening an internal incident.
Container exits immediately: invalid environment
Symptom: payload-app restarts loop; logs mention Zod or "Invalid environment variables".
Checks:
Compare your
.envagainstapps/dashboard/.env.example.Confirm
DATABASE_URI,REDIS_URI,PAYLOAD_SECRET, andNEXT_PUBLIC_WEBSITE_URLare set and reachable from the container.See
DOCKER.mdfor build-time vs runtime validation.
Cannot reach the dashboard
Symptom: Browser timeout or connection refused.
Checks:
docker compose ps: aretraefikandpayload-apphealthy?Firewall: 80 / 443 open to Traefik?
NEXT_PUBLIC_WEBSITE_URLmatches the hostname clients use.If behind another proxy, verify upstream routing and WebSockets.
TLS or ACME failures
Symptom: Certificate warnings or Traefik ACME errors.
Checks:
acme.jsonexists and is writable (chmod 600).CF_DNS_API_TOKEN(or other DNS API creds) still valid.DNS records point to this host before ordering certs.
More context: Control plane domains and SSL.
MongoDB auth errors
Symptom: App logs show authentication failed against mongodb.
Checks:
MONGO_INITDB_ROOT_USERNAME/MONGO_INITDB_ROOT_PASSWORDmatchDATABASE_URI.You did not re-create the
mongo-datavolume with new creds without resetting the database.Network:
payload-appresolves hostnamemongodb.
Redis connection errors
Symptom: Queue or cache errors referencing redis.
Checks:
rediscontainer running.REDIS_URIuses the Compose service name (e.g.redis://redis:6379).
Tailscale-related failures
Symptom: Features that expect tailnet integration stay disabled or error.
Checks:
NET_ADMINand/dev/net/tunstill onpayload-app.TAILSCALE_AUTH_KEY,TAILSCALE_OAUTH_CLIENT_SECRET, andTAILSCALE_TAILNETpopulated and not expired.Separate Worker Node mesh issues: Compute and worker node issues under Troubleshooting in the sidebar.
Beszel agent spam or crashes
Symptom: beszel-agent logs errors about auth.
Checks:
Replace placeholder KEY and TOKEN in docker-compose.yml or disable the agent service until configured.
Still stuck
Troubleshooting overview under Troubleshooting in the sidebar
Getting started issues under Troubleshooting in the sidebar (first-login class problems)
When to contact support under Troubleshooting in the sidebar (expectations for self-hosted)