Troubleshooting
Start with the output of the failing command, then inspect state and logs.
dpl inspect <unit>Common log paths:
<base>/state/<unit>/log/build.log<base>/state/<unit>/log/runtime.log<base>/state/<unit>/log/access.log # http-server only<base>/state/<unit>/log/timers.logPodman is not installed
Section titled “Podman is not installed”Symptom:
podman: command not foundor a deploy fails when dpl tries to build or run a container.
Fix:
podman --versionIf that fails, install Podman for your operating system. Then rerun the deploy:
dpl deploy <unit>The install script prints a warning when Podman is missing. dpl still installs, but deploys cannot run containers until Podman exists.
dpl serve is not started
Section titled “dpl serve is not started”Symptom:
dpl deployupdates state, but the container does not start.- Timers do not run.
dpl inspectshows a unit waiting for startup.
Fix on a systemd host:
systemctl status dplsystemctl start dplFix when running manually:
DPL_BASE=/opt/dpl dpl serveUse the same DPL_BASE for dpl serve and your deploy commands.
After starting serve, redeploy or reload the daemon:
systemctl reload dplor send SIGHUP to the process that owns state/serve.pid (for example, kill -HUP $(cat state/serve.pid)).
A reference is broken
Section titled “A reference is broken”Symptom:
Invalid referenceunknown exportunit '...' not foundFix:
dpl check <unit>Check that:
- the referenced unit has a YAML file in
conf - the unit name uses lowercase letters, digits, and dashes
- the reference key is valid for that unit type
- the secret exists
App starts and then fails health check
Section titled “App starts and then fails health check”Look at the runtime log:
tail -n 100 /opt/dpl/state/<unit>/log/runtime.logCommon causes:
- the app listens on a different port than
runtime.port - a required environment value is missing
runtime.initfailed- the database is not ready
Fix the config or app code, then deploy again.
HTTP requests fail or return the wrong status
Section titled “HTTP requests fail or return the wrong status”For an http-server unit, nginx access records are stored separately:
tail -n 100 /opt/dpl/state/<http-server>/log/access.logaccess.log is JSONL and contains only nginx access records. nginx error output
is in the same unit’s runtime log:
tail -n 100 /opt/dpl/state/<http-server>/log/runtime.logStatic files return 404
Section titled “Static files return 404”Check the app export and domain route:
exports: - source: /app/dist path: /routes: - kind: serve_files location: / root: ${site:export}Then deploy in this order:
dpl deploy site ./site.tar.gzdpl deploy domainThe domain deploy needs the app export to already exist.