Skip to content

Troubleshooting

Common issues and fixes. Pair with Commands for log and nginx helpers.

Can't get past Setup

The bootstrap secret is required before the first admin account can be created. Finding the IP alone is not enough.

bash
docker logs docklift-backend | grep -A8 "Fresh install"
bash
sudo cat /opt/docklift/data/.bootstrap-secret

Paste the setup code into the Setup page. After a successful register/restore it is consumed and deleted.

Can't open SERVER_IP:55xx

  1. Host ports are off by default — use your custom domain, or enable Publish host ports in Build Settings and redeploy
  2. Check /ports for reserved host ports
  3. Confirm the container is running: docker ps --filter name=dl_
  4. Overview may still show Private by default until you publish or attach a domain

Prefer domains over raw host ports.

Domain returns 502

  1. Confirm the app container is running and listening on its internal port (0.0.0.0, not only localhost)
  2. Verify DNS: nslookup yourdomain.com
  3. Ensure nginx-proxy is attached to the project network after deploy
  4. Reload proxy:
bash
docker exec docklift-nginx-proxy nginx -t
docker exec docklift-nginx-proxy nginx -s reload
  1. Cloudflare: SSL mode Full (strict) once HTTPS is active (not Flexible)

Domain returns nothing / NXDOMAIN

DNS record missing or not propagated. Flush local resolver cache and recheck the A record points at the server IP.

Certificate order fails

A certificate request fails entirely if any hostname in the order lacks DNS. www is not auto-added — create DNS first, then add www.example.com.

bash
docker logs docklift-certbot --tail 200

During first issue behind Cloudflare, prefer DNS-only (gray cloud) until Active, then Full (strict).

Build failures

  1. Check deployment logs in Project → Deployments
  2. If "no Dockerfile", set build mode to Railpack, or fix Base directory / Dockerfile path for monorepos
  3. Verify Dockerfile syntax and EXPOSE when using Dockerfile mode
  4. Confirm build-time env vars and BuildKit secrets are marked correctly

Container keeps stopping

bash
docker logs dl_<slug>_<id>_<service> -f --tail 200
  • Ensure the main process does not exit immediately
  • Listen on 0.0.0.0 inside the container
  • Match the configured internal port / EXPOSE

Data disappears after redeploy

Anything written only inside the container filesystem is lost on replace. Add a mount in Storage, or use a managed database / external DATABASE_URL.

bash
docker volume ls --filter label=com.docklift.project

"A deployment is already running"

Cancel the in-flight build first. Deployments are serialized per project.

Dashboard not reachable

bash
docker compose ps
docker logs docklift-nginx -f --tail 100
curl -s http://127.0.0.1:8080/api/health

Default bind is 0.0.0.0 so http://SERVER_IP:8080 works. If you set DASHBOARD_BIND=127.0.0.1, use an SSH tunnel or a panel domain on 80/443.

Bypassing Cloudflare / scraping blocks

If a deployed app is blocked by Cloudflare but works from your SSH shell, Docker's network fingerprint may be detected. Run a lightweight SOCKS proxy on the host network and point the app at it (example):

bash
docker run -d --name local-host-proxy --network host --restart unless-stopped \
  -e PROXY_USER=user -e PROXY_PASSWORD=pass serjs/go-socks5-proxy

Route app traffic through socks5://user:pass@172.28.0.1:1080 (adjust to your bridge gateway). Traffic then leaves through the physical host network.

Open-source self-hosted PaaS for Docker