Dokploy / Dokploy/dokploy

v0.29.0: Silent ELIFECYCLE crash after "Migration complete" - no error output, crash loops indefinitely

Open
#4,253 4 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs-triage🔍
Dominant language
TypeScript
Stars
37.4k
Forks
3k
Avg merge
1d 3h
Merged PRs (30d)
73

Description

To Reproduce
  1. Running Dokploy v0.28.x on Hostinger KVM VPS (Ubuntu, 8GB RAM, 2 vCPU)
  2. Dokploy auto-updated to v0.29.0 (approximately 2026-04-17 late evening UTC)
  3. Service began crash-looping immediately after migration completed
  4. Followed the recommendation in startup logs to run the security migration:
    curl -sSL https://dokploy.com/security/0.26.6.sh | bash
  5. Security script completed for dokploy-postgres (ALTER ROLE OK, secrets created)
  6. dokploy service update paused: "update paused due to failure or early termination of task"
  7. Crash loop continued with new Docker Secrets credentials in place
  8. Rollback to v0.28.6 also failed with same error while CPU throttle was active
  9. Scaled dokploy to 0 to break the crash loop
  10. Requested removal of Hostinger's CPU throttle (1-3 hour wait)
  11. After throttle lifted, scaled dokploy back to 1 with v0.28.6 image
  12. v0.28.6 started cleanly and has remained stable
Current vs. Expected behavior

Expected behavior:
Dokploy v0.29.0 should either start successfully and log "Server Started on: http://0.0.0.0:3000", OR fail with an actionable error message identifying the specific failure point.

Actual behavior:
v0.29.0 crashes silently with no diagnostic output:
dokploy@v0.29.0 start /app
node -r dotenv/config dist/migration.mjs && node -r dotenv/config dist/server.mjs
Using Docker socket (Standard Docker socket): /var/run/docker.sock
[migration notices omitted]
Migration complete
Using Docker socket (Standard Docker socket): /var/run/docker.sock
ELIFECYCLE Command failed.

For comparison, v0.28.6 prints five diagnostic lines between "Migration complete" and server startup:Migration complete
Main config already exists
Default traefik config already exists
✅ initialization complete
Running DokployVersion: v0.28.6
Default middlewares already exists

v0.29.0 prints zero. The server never reaches startup. Swarm marks the task as failed: task: non-zero exit (1): dockerexec: unhealthy container.

Provide environment information
Operating System: Ubuntu (Hostinger KVM VPS image)
Arch: x86_64
Dokploy version: v0.29.0 (crashed), rolled back to v0.28.6 (working)
VPS Provider: Hostinger KVM 
RAM: 8 GB
Storage: 96 GB, 49% used
Docker Swarm: single-node
Deployed applications: Node.js apps, PostgreSQL databases, n8n, Traefik-fronted services

If you want exact Docker version, run this and paste the output: docker --version
Which area(s) are affected? (Select all that apply)

Databases, Traefik, Docker, Application

Are you deploying the applications where Dokploy is installed or on a remote server?

Same server where Dokploy is installed

Additional context

Credentials migration: During troubleshooting I ran curl -sSL https://dokploy.com/security/0.26.6.sh | bash as recommended by the v0.29.0 startup logs. The script completed successfully for dokploy-postgres (ALTER ROLE OK, Docker Secrets created), but the dokploy service update then paused with "update paused due to failure or early termination of task." The crash continued after credential migration, confirming the issue is not credentials-related.

Provider-level impact: The tight crash loop (Dokploy consuming 700-900% CPU on repeated restart attempts) triggered Hostinger's automated CPU throttling after several hours. This prevented the rollback to v0.28.6 from succeeding until the throttle was manually lifted. After scaling dokploy to 0, waiting for the throttle to clear, then scaling back to 1 with v0.28.6, the service started cleanly.

What was ruled out:

  • Not a Postgres connectivity issue: wait-for-postgres reports "Postgres is reachable ✅" on every attempt
  • Not a migration issue: "Migration complete" prints on every attempt
  • Not credentials: persists after successful Docker Secrets migration
  • Not disk space: 47GB free of 96GB
  • Not memory: Dokploy used <300MB of 8GB available
  • Not Traefik/network: all deployed apps continued serving traffic throughout the incident
  • Not transient: 4+ restart attempts observed, all failed identically

Working fallback:
docker service update --image dokploy/dokploy:v0.28.6 dokploy — v0.28.6 is fully compatible with the Docker Secrets credentials from the 0.26.6.sh script.

Suggested improvements:

  1. Add explicit error logging between "Migration complete" and the ELIFECYCLE exit in dist/server.mjs — whatever is throwing needs to be caught and logged.
  2. Add a "Server ready" log line to distinguish successful startup from silent failure.
  3. Consider increasing the Docker healthcheck start_period to tolerate slower VPS environments.
  4. Document a tested rollback procedure for failed updates.
Will you send a PR to fix it?

No

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the v0.29.0 and v0.28.6 startup output around dist/server.mjs, after the repeated “Migration complete” line. Reproduce the failure under the reported Docker Swarm setup and identify where the process exits before server startup. Done means the service either reaches the documented startup message or emits an actionable error instead of a silent ELIFECYCLE failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, node.js, typescript
Domain
backend, devops, observability
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.