[{"data":1,"prerenderedAt":119},["ShallowReactive",2],{"seo-verification":3,"blog-deploy-your-applications-with-kamal-on-a-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":22,"featuredImage":24,"bgImage":25,"posterImage":26,"relatedSolution":24,"intro":27,"sections":28,"ctaTitle":71,"ctaBody":72,"ctaButton":73,"ctaUrl":74,"relatedPosts":75},40,"deploy-your-applications-with-kamal-on-a-vps",{"fr":10,"en":8,"ar":11},"deployer-avec-kamal","انشر-تطبيقاتك-باستخدام-kamal-على-خادم-vps","Deploy your applications with Kamal on a VPS","Deploy your applications with Kamal on a VPS: zero-downtime, Docker and automatic SSL driven from your machine, without Kubernetes.",3,0,false,"2026-05-11T00:00:00+00:00",{"id":14,"name":19,"slug":20,"color":21,"icon":20},"Deployment","deploiement","bg-success\u002F10 text-success",[23],{"id":14,"name":19,"slug":20,"color":21,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-kamal-poster.svg","Kamal (formerly MRSK), from the Rails\u002F37signals ecosystem, deploys containerized applications on one or several VPS from your local machine, without a heavy orchestrator. It combines Docker build, push to a registry, zero-downtime deployment and automatic SSL reverse proxy in a single command: `kamal deploy`.",[29,33,43,46,68],{"type":30,"title":31,"body":32},"h2","Why deploy with Kamal on a VPS rather than with Kubernetes?","Kubernetes is oversized for the majority of applications hosted on a single VPS or a small cluster. Kamal targets precisely this ground: it takes your Dockerfile, builds the image, sends it to your servers via SSH and switches traffic without interruption thanks to its built-in proxy (kamal-proxy). The entire configuration fits in a `config\u002Fdeploy.yml` file versioned with your code: no control plane to maintain, no endless YAML. You keep the simplicity of a VPS with a professional deployment workflow.",{"type":34,"title":35,"items":36},"ul","What Kamal brings you",[37,38,39,40,41,42],"Zero-downtime deployments via health checks and progressive traffic switching","Build and push of the Docker image, then deployment on the servers, in a single command","Automatic Let's Encrypt SSL managed by kamal-proxy, without manual configuration","Instant rollback to the previous version with `kamal rollback`","Centralized and encrypted management of secrets and environment variables","Multi-server deployment (web, jobs, accessories such as Postgres or Redis) from a single file",{"type":30,"title":44,"body":45},"Prerequisites","On the VPS side, Kamal only requires key-based SSH access and Docker (which it can even install via `kamal setup` on the first deployment). A VPS with 2 vCPU and 2 to 4 GB of RAM is suitable for a standard web application plus its database. On the local machine side, install Kamal (Ruby gem or Docker image), and prepare a container registry (Docker Hub, GitHub Container Registry, or a private registry) as well as a domain pointing to the VPS.",{"type":47,"title":48,"steps":49},"steps","Deploy an application with Kamal",[50,53,56,59,62,65],{"title":51,"body":52},"Initialize the configuration","In your project, run `kamal init`. This generates `config\u002Fdeploy.yml` and `.kamal\u002Fsecrets`. Fill in the service name, the image (`votreuser\u002Fmonapp`), the list of servers (`servers.web`) with the VPS IP and the registry used.",{"title":54,"body":55},"Define the secrets and variables","Place the sensitive values in `.kamal\u002Fsecrets` (never committed): `KAMAL_REGISTRY_PASSWORD`, `RAILS_MASTER_KEY` or your application keys. Reference them in `deploy.yml` under `env.secret`. Non-sensitive variables go under `env.clear`.",{"title":57,"body":58},"Enable the proxy and SSL","In the `proxy` section of `deploy.yml`, specify your `host` (`app.yourdomain.com`) and enable `ssl: true`. kamal-proxy will automatically obtain the Let's Encrypt certificate and terminate TLS in front of your container. Make sure the DNS already points to the VPS before the deployment.",{"title":60,"body":61},"Provision the server","Run `kamal setup`. Kamal connects via SSH, installs Docker if needed, logs in to the registry, starts kamal-proxy and then deploys the first version. This is the single bootstrap step: subsequent deployments will be faster.",{"title":63,"body":64},"Deploy and check","On each update, run `kamal deploy`. Kamal builds the image, pushes it, starts the new containers, waits for the health checks to pass, then switches the traffic and stops the old ones. Check the status with `kamal app logs -f` and `kamal app details`.",{"title":66,"body":67},"Manage accessories (database, cache)","Declare Postgres or Redis under the `accessories` key of `deploy.yml`, with their image, their port and their volumes. `kamal accessory boot db` starts the service. You thus keep the entire stack described in a single versioned file.",{"type":69,"body":70},"tip","If a deployment introduces a regression, don't touch the code: run `kamal rollback [VERSION]` to instantly return to the previous image, still present on the VPS. Also consider using `kamal app exec` to run one-off tasks (migrations, console) directly in the running container, without opening a manual SSH session.","Drive your Kamal deployments on a ServOrbit Cloud VPS","Provision a Cloud VPS with the Deployment template and key-based SSH access: Kamal installs Docker on it and deploys your application with zero downtime from the very first command.","See the Cloud VPS","\u002Fvps-cloud",[76,90,103],{"id":77,"slug":78,"slugs":79,"title":82,"excerpt":83,"readTime":84,"views":15,"isPinned":16,"publishedAt":85,"category":86,"categories":87,"featuredImage":24,"bgImage":25,"posterImage":89,"relatedSolution":24},33,"deploy-your-applications-with-caprover-on-a-vps",{"fr":80,"en":78,"ar":81},"deployer-avec-caprover","انشر-تطبيقاتك-باستخدام-caprover-على-خادم-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,"2026-05-18T00:00:00+00:00",{"id":14,"name":19,"slug":20,"color":21,"icon":20},[88],{"id":14,"name":19,"slug":20,"color":21,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"id":91,"slug":92,"slugs":93,"title":96,"excerpt":97,"readTime":14,"views":15,"isPinned":16,"publishedAt":98,"category":99,"categories":100,"featuredImage":24,"bgImage":25,"posterImage":102,"relatedSolution":24},34,"deploy-your-applications-with-dokku-on-a-vps",{"fr":94,"en":92,"ar":95},"deployer-avec-dokku","انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps","Deploy your applications with Dokku on a VPS","Deploy your apps with Dokku, the smallest PaaS on the market: git push, Heroku buildpacks and automatic SSL on a lightweight VPS.","2026-05-17T00:00:00+00:00",{"id":14,"name":19,"slug":20,"color":21,"icon":20},[101],{"id":14,"name":19,"slug":20,"color":21,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"id":104,"slug":105,"slugs":106,"title":109,"excerpt":110,"readTime":14,"views":15,"isPinned":16,"publishedAt":111,"category":112,"categories":113,"featuredImage":24,"bgImage":25,"posterImage":115,"relatedSolution":116},35,"deploy-your-applications-with-portainer-on-a-vps",{"fr":107,"en":105,"ar":108},"deployer-avec-portainer","انشر-تطبيقاتك-باستخدام-portainer-على-خادم-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":14,"name":19,"slug":20,"color":21,"icon":20},[114],{"id":14,"name":19,"slug":20,"color":21,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":117,"appSlug":118},"application-deployment-devops","portainer",1787580994873]