[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"seo-verification":3,"blog-deploy-your-applications-with-dokku-on-a-vps-ma-en":6,"promo-bar-likely":213},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-deploy-your-applications-with-dokku-on-a-vps-ma-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":156,"ctaBody":157,"ctaButton":158,"ctaUrl":159,"relatedPosts":160},34,"deploy-your-applications-with-dokku-on-a-vps",{"fr":12,"en":10,"ar":13,"es":14},"deployer-avec-dokku","انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps","desplegar-aplicaciones-con-dokku-en-un-vps","Deploy your applications with Dokku on a VPS","Complete Dokku v0.35 guide: installation, buildpacks, env vars, rollback, postgres\u002Fredis\u002Fletsencrypt plugins and troubleshooting common errors.",11,1,false,"2026-05-17T00:00:00+00:00","2026-10-18T21:57:59+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Deployment","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg","Dokku bills itself as 'the smallest PaaS in the world.' Built around Docker and Heroku buildpacks, it offers a `git push` deployment experience on a modest VPS, without a heavy interface or embedded orchestrator. This guide goes beyond a basic installation — it covers environment variables, zero-downtime rollback, essential plugins and troubleshooting the most common errors.",[34,38,50,53,75,78,81,84,147,150,153],{"type":35,"title":36,"body":37},"h2","Why choose Dokku for your VPS","Where other PaaS solutions bundle a web interface and a full orchestrator, Dokku stays deliberately minimalist: it is a set of shell scripts that drive Docker. You push your code with `git push dokku main`, Dokku detects the language via Heroku buildpacks or a Dockerfile, builds the image and brings the application online. Everything is managed from the command line, which makes it extremely lightweight and predictable.\n\nCompared to Dokku, CapRover, Coolify and Easypanel all offer a graphical interface, but at the cost of a much heavier memory footprint. CapRover reserves Docker Swarm and its supervision daemon; it recommends 2 GB of RAM as a minimum configuration. Coolify 4 relies on Nixpacks and an embedded PostgreSQL database: expect 2 GB of RAM at idle. Easypanel integrates Traefik and a Nixpacks builder, which also requires 2 GB of RAM as soon as a build is active. Dokku, on the other hand, runs comfortably from 512 MB of RAM for a lightweight application and adds no permanent control component. It is the natural choice for developers who want a Heroku-like workflow on a small VPS, without memory overhead and without consuming resources for a dashboard they will use only a few minutes per week.",{"type":39,"title":40,"items":41},"ul","The concrete strengths of Dokku",[42,43,44,45,46,47,48,49],"Minimal memory footprint: runs from 512 MB of RAM for a lightweight app, 1 GB comfortably.","Deployment via `git push`, just like Heroku, with automatic language detection via buildpacks.","Native support for Heroku buildpacks (Node, Python, Ruby, Go, PHP…) and Dockerfiles, your choice.","Official plugins for PostgreSQL, MySQL, Redis and MongoDB, managed entirely from the CLI.","Let's Encrypt plugin for automatic HTTPS with built-in renewal via cron.","Zero-downtime deploys thanks to configurable health checks before container switch.","Instant rollback via `dokku tags` and `dokku deploy` on a previous image.","Automatic injection of connection variables (DATABASE_URL, REDIS_URL) on `plugin:link`.",{"type":35,"title":51,"body":52},"Sized prerequisites for Dokku","Dokku is the most resource-efficient PaaS in this series.\n\n**RAM.** 512 MB is enough for a lightweight application without an active build. Plan for 1 GB of RAM for everyday use and 2 GB as soon as your builds use buildpacks (Node, Ruby, Python compile in memory during image construction) or you host a database on the same VPS. For several applications in parallel with PostgreSQL, target 4 GB.\n\n**CPU.** 1 vCPU is sufficient for lightweight applications. Buildpack build phases are CPU-intensive and occur on the fly during each `git push`: a shared vCPU may slow the deployment but does not block it.\n\n**Disk.** Count on 20 GB of SSD minimum. Buildpack Docker images can weigh several hundred megabytes; add space for your data volumes (database, uploads).\n\n**Swap.** On a VPS with 1 or 2 GB of RAM, always add 2 GB of swap. Without swap, the Linux kernel OOM killer can terminate a Node or Ruby build during compilation.\n\n**System.** Ubuntu 22.04 LTS or 24.04 LTS freshly installed, without pre-installed Docker or Nginx. Dokku installs its own versions. Ports 22 (SSH), 80 and 443 must be open.\n\n**DNS.** Configure either one domain per application or a wildcard domain `*.your-domain.com` pointing to the VPS IP address.",{"type":54,"title":55,"steps":56},"steps","Install Dokku v0.38.x and deploy a first application",[57,60,63,66,69,72],{"title":58,"body":59},"Download and run the official bootstrap script","On a freshly installed Ubuntu 22.04 or 24.04 LTS, fetch the stable-branch installation script and run it:\n\n```\nwget -NP . https:\u002F\u002Fdokku.com\u002Fbootstrap.sh\nsudo DOKKU_TAG=v0.38.x bash bootstrap.sh\n```\n\nThe script installs Docker (if absent), Nginx and Dokku itself. The operation takes two to five minutes depending on VPS speed.",{"title":61,"body":62},"Configure the global domain and add your SSH key","Set the root domain that Dokku will use to build application subdomains:\n\n```\ndokku domains:set-global your-domain.com\n```\n\nThen add your SSH public key to authorize deployments from your local machine:\n\n```\ncat ~\u002F.ssh\u002Fid_ed25519.pub | ssh root@your-domain.com \"dokku ssh-keys:add admin\"\n```",{"title":64,"body":65},"Create an application and configure the Git remote","On the server, create the target application:\n\n```\ndokku apps:create my-app\n```\n\nOn your local machine, add Dokku as a Git remote in your repository:\n\n```\ngit remote add dokku dokku@your-domain.com:my-app\n```\n\nDokku will automatically create the subdomain `my-app.your-domain.com`.",{"title":67,"body":68},"Provision a PostgreSQL database","Install the official PostgreSQL plugin (once per server):\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-postgres.git\n```\n\nCreate a database and link it to the application:\n\n```\ndokku postgres:create my-db\ndokku postgres:link my-db my-app\n```\n\nThe `link` command automatically injects the `DATABASE_URL` environment variable into the application container.",{"title":70,"body":71},"Deploy the application for the first time","From your local repository, push to Dokku:\n\n```\ngit push dokku main\n```\n\nDokku detects the language (via `Procfile`, `package.json`, `requirements.txt`, `go.mod`…), downloads the corresponding buildpack, builds the Docker image, then starts the container. The process is displayed in real time in the terminal.",{"title":73,"body":74},"Enable HTTPS with Let's Encrypt","Install the Let's Encrypt plugin (once per server):\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-letsencrypt.git\n```\n\nSet the email address for expiry notifications, then enable the certificate for the application:\n\n```\ndokku letsencrypt:set my-app email admin@your-domain.com\ndokku letsencrypt:enable my-app\n```\n\nEnable automatic renewal via a cron task:\n\n```\ndokku letsencrypt:cron-job --add\n```",{"type":35,"title":76,"body":77},"Managing multiple applications and environment variables","Dokku manages each application in an isolated container. You can host as many applications as your VPS can handle, each on its own subdomain or custom domain.\n\n**Environment variables.** Use `dokku config:set` to inject secrets or configuration parameters:\n\n```\ndokku config:set my-app NODE_ENV=production \\\n  SECRET_KEY=changeme \\\n  MAIL_HOST=smtp.your-domain.com\n```\n\n**Staging vs production.** The common practice is to create two applications on the same server:\n\n```\ndokku apps:create my-app-staging\ndokku apps:create my-app-production\n```\n\nEach Git remote points to its own application with separately defined environment variables.\n\n**Custom domains.** To associate an existing domain with an application:\n\n```\ndokku domains:add my-app your-domain.com\ndokku domains:add my-app www.your-domain.com\n```",{"type":35,"title":79,"body":80},"Zero-downtime updates and rollback","Dokku handles zero-downtime via a health check mechanism before switching. By default, it waits for the new container to respond on the application port before redirecting traffic. You can refine this behavior with a `CHECKS` file at the root of your project:\n\n```\nWAIT=10\nTIMEOUT=60\n\u002Fhealthz Application is up\n```\n\n**Tags and rollback.** Dokku keeps Docker images of previous deployments as tags. List them:\n\n```\ndokku tags:list my-app\n```\n\nTo revert to a previous version, deploy the desired tag:\n\n```\ndokku tags:deploy my-app v3\n```\n\nThis command switches traffic to the image tagged `v3` without any rebuild — the rollback is near-instant. To explicitly create a backup tag before a risky deployment:\n\n```\ndokku tags:create my-app stable-before-migration\n```",{"type":35,"title":82,"body":83},"Essential plugins","Dokku draws its richness from its ecosystem of official plugins.\n\n**PostgreSQL.** The most used. Additional useful commands: `dokku postgres:backup my-db` for a manual dump, `dokku postgres:connect my-db` for interactive psql access.\n\n**Redis.**\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-redis.git\ndokku redis:create my-cache\ndokku redis:link my-cache my-app\n```\n\nInjects the `REDIS_URL` variable into the container.\n\n**Cron (scheduler).** Create an `app.json` file at the root of your project:\n\n```json\n{\n  \"cron\": [\n    { \"command\": \"php artisan schedule:run\", \"schedule\": \"* * * * *\" }\n  ]\n}\n```\n\nDokku 0.26+ reads this file and automatically creates a cron task in the container.",{"type":85,"title":86,"headers":87,"rows":92},"comparison","Dokku vs CapRover vs Easypanel — 2026 comparison",[88,89,90,91],"Criterion","Dokku 0.35","CapRover 1.x","Easypanel 2.x",[93,98,103,108,113,118,123,128,133,137,142],[94,95,96,97],"RAM at idle","~100 MB (Nginx + daemon)","~400 MB (Swarm + supervisor)","~350 MB (Traefik + API)",[99,100,101,102],"Graphical interface","No — CLI only","Yes (web dashboard)","Yes (modern dashboard)",[104,105,106,107],"Buildpacks","Heroku buildpacks (CNB included)","captain-definition \u002F Docker","Nixpacks or Dockerfile",[109,110,111,112],"Git deployment","Native git push","caprover CLI + webhook","GitHub \u002F GitLab webhook",[114,115,116,117],"Plugins \u002F marketplace","~100 official plugins","One-Click catalog (~150 apps)","Integrated marketplace (~200 apps)",[119,120,121,122],"Zero-downtime","Yes (CHECKS file)","Yes (rolling Docker Swarm)","Yes (Traefik labels)",[124,125,126,127],"Rollback","dokku tags:deploy","Rebuild from image","Redeploy from Git",[129,130,131,132],"Multi-server","Not native (SSH multi-remote)","Yes (Docker Swarm multi-node)","Yes (remote agents)",[134,135,136,135],"Kubernetes","No","No (Docker Swarm only)",[138,139,140,141],"License","MIT","Apache 2.0","Proprietary (free tier)",[143,144,145,146],"Learning curve","Low (simple CLI)","Moderate (interface + captain DNS)","Low (intuitive interface)",{"type":148,"body":149},"tip","**Swap recommended from 1 GB of RAM.** On a light VPS, add 2 GB of swap before anything else: a Node or Python build without swap is regularly killed by the OOM killer.\n\n**CHECKS file.** Without this file, Dokku switches as soon as the container starts, before the application is ready to respond.\n\n**Log rotation.** Docker logs grow without limit by default. Configure rotation in `\u002Fetc\u002Fdocker\u002Fdaemon.json`:\n\n```json\n{\n  \"log-driver\": \"json-file\",\n  \"log-opts\": { \"max-size\": \"50m\", \"max-file\": \"3\" }\n}\n```\n\nThen restart Docker to apply the settings.",{"type":35,"title":151,"body":152},"Troubleshooting common errors","**`error: failed to push some refs` — permission denied.**\nCheck that your SSH key is registered: `dokku ssh-keys:list`. If absent, add it with `dokku ssh-keys:add admin \u003C ~\u002F.ssh\u002Fid_ed25519.pub`.\n\n**`! [remote rejected] main -> main (pre-receive hook declined)`.**\nThis error indicates a build failure on the Dokku side. Check the detailed logs with `dokku logs my-app`.\n\n**The application returns 502 Bad Gateway.**\nNginx receives the request but the container does not respond. Check the process status: `dokku ps:report my-app`. Common cause: the application is not listening on the port declared in the `Procfile` or the `PORT` variable injected by Dokku.\n\n**`letsencrypt:enable` fails — HTTP-01 challenge timeout.**\nThe ACME challenge requires the domain to resolve to the VPS IP **before** activation. Check DNS propagation (`dig +short my-app.your-domain.com`). If behind a proxy (Cloudflare), temporarily disable the proxy (DNS-only) while the certificate is being issued.\n\n**Build killed by the kernel (OOM) — `Killed`.**\nThe OOM killer intervened due to lack of memory. Add swap or migrate to a VPS with 2 GB of RAM.",{"type":35,"title":154,"body":155},"Going further","Dokku covers the deployment of single-container applications on a VPS. If your architecture evolves toward multiple interdependent services, several alternatives in the same family complement this approach. CapRover adds a graphical interface and a Docker Swarm cluster mode. Easypanel simplifies multi-service management with Nixpacks and an application marketplace. For a standalone reverse proxy without a full PaaS, Caddy or Nginx Proxy Manager integrate natively with Docker. Each of these tools runs on a ServOrbit Cloud VPS under Ubuntu LTS.","Put Dokku into production on your VPS","A ServOrbit Cloud VPS running Ubuntu LTS, lightweight and affordable, is the ideal ground for Dokku and its git push deployment workflow.","Get started with a Cloud VPS","\u002Fvps-cloud",[161,181,197],{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":170,"views":171,"isPinned":19,"noindex":19,"publishedAt":172,"updatedAt":173,"category":174,"categories":175,"featuredImage":29,"bgImage":30,"posterImage":177,"relatedSolution":178},33,"deploy-your-applications-with-caprover-on-a-vps",{"fr":165,"en":163,"ar":166,"es":167},"deployer-avec-caprover","انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps","desplegar-aplicaciones-con-caprover-en-un-vps","Deploy your applications with CapRover on a VPS","Complete CapRover guide: installation, captain-definition, GitHub Actions CI\u002FCD, multi-node cluster, backups and troubleshooting 502, build failed and Docker API errors.",10,2,"2026-05-18T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[176],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":179,"appSlug":180},"application-deployment-devops","caprover",{"id":182,"slug":183,"slugs":184,"title":188,"excerpt":189,"readTime":170,"views":18,"isPinned":19,"noindex":19,"publishedAt":190,"updatedAt":173,"category":191,"categories":192,"featuredImage":29,"bgImage":30,"posterImage":194,"relatedSolution":195},35,"deploy-your-applications-with-portainer-on-a-vps",{"fr":185,"en":183,"ar":186,"es":187},"deployer-avec-portainer","انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps","desplegar-aplicaciones-con-portainer-en-un-vps","Deploy your applications with Portainer on a VPS","Manage Docker visually with Portainer on your VPS: containers, stacks, volumes and networks managed from a clear web interface.","2026-05-16T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[193],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":179,"appSlug":196},"portainer",{"id":198,"slug":199,"slugs":200,"title":204,"excerpt":205,"readTime":170,"views":206,"isPinned":19,"noindex":19,"publishedAt":207,"updatedAt":208,"category":209,"categories":210,"featuredImage":29,"bgImage":30,"posterImage":212,"relatedSolution":29},36,"deploy-your-applications-with-easypanel-on-a-vps",{"fr":201,"en":199,"ar":202,"es":203},"deployer-avec-easypanel","انشر-تطبيقاتك-باستخدام-easypanel-على-خادم-vps","desplegar-con-easypanel","Deploy your applications with Easypanel on a VPS","Complete Easypanel guide: exact prerequisites, installation, Traefik, TLS, databases, backups, troubleshooting and Coolify \u002F Dokploy comparison.",4,"2026-05-15T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[211],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-easypanel-poster.svg",true,1794270387809]