[{"data":1,"prerenderedAt":115},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-avec-caddy-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":20,"featuredImage":22,"bgImage":23,"posterImage":24,"relatedSolution":25,"intro":27,"sections":28,"ctaTitle":71,"ctaBody":72,"ctaButton":73,"ctaUrl":74,"relatedPosts":75},39,"deployer-avec-caddy","Deploy your applications with Caddy on a VPS","Deploy Caddy on your VPS: web server and reverse proxy with automatic HTTPS. A Caddyfile of a few lines is enough to go into production.",7,443,false,"2026-05-12T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},3,"Deployment","deploiement","bg-success\u002F10 text-success",[21],{"id":16,"name":17,"slug":18,"color":19,"icon":18},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-caddy-poster.svg",{"categorySlug":18,"appSlug":26},"caddy","Caddy is a web server and reverse proxy written in Go whose signature is automatic HTTPS: it obtains and renews your TLS certificates with no configuration. On a VPS, a three-line Caddyfile replaces dozens of lines of Nginx plus Certbot, which makes it the fastest option for exposing an application over HTTPS.",[29,33,43,46,65,68],{"type":30,"title":31,"body":32},"h2","Why choose Caddy as the front end on your VPS?","The historical complexity of a reverse proxy comes down to TLS: generating a certificate, configuring renewal, managing the HTTP→HTTPS redirection. Caddy removes all of that. As soon as you specify a domain name in the Caddyfile, it contacts Let's Encrypt (or ZeroSSL as a fallback), provisions the certificate, staples it (OCSP stapling) and renews it in the background. The configuration is readable, short, and hot-reloadable without service interruption.",{"type":34,"title":35,"items":36},"ul","Caddy's strengths in production",[37,38,39,40,41,42],"End-to-end automatic HTTPS: issuance, renewal and redirection without intervention","Minimalist Caddyfile: a block of a few lines per site, far shorter than an Nginx config","Built-in reverse proxy with health checks and load balancing to your containers or local ports","HTTP\u002F2 and HTTP\u002F3 (QUIC) enabled by default","Hot reload of the configuration (`caddy reload`) without interrupting connections","JSON administration API to drive the configuration dynamically",{"type":30,"title":44,"body":45},"Prerequisites","Caddy is frugal: 1 vCPU and 512 MB to 1 GB of RAM are enough to serve several sites as a reverse proxy. You can choose between installing it as a system binary (systemd service) on Ubuntu\u002FDebian, or running it in a Docker container. In both cases, you need a domain pointing to the VPS IP and ports 80, 443 (and 443\u002FUDP for HTTP\u002F3) open in your firewall.",{"type":47,"title":48,"steps":49},"steps","Deploy Caddy as a reverse proxy",[50,53,56,59,62],{"title":51,"body":52},"Install Caddy","On Ubuntu\u002FDebian, add the official repository then `apt install caddy`. Caddy registers itself as a systemd service active at startup. Check: `systemctl status caddy`. In container mode, start from the `caddy:latest` image and mount a volume on `\u002Fdata` to persist the certificates.",{"title":54,"body":55},"Point the DNS and open the ports","Create an A record `app.yourdomain.com` to the VPS IP. Open the necessary ports: `ufw allow 80`, `ufw allow 443` and `ufw allow 443\u002Fudp` for HTTP\u002F3. Port 80 is essential for Let's Encrypt's HTTP challenge.",{"title":57,"body":58},"Write the Caddyfile","Edit `\u002Fetc\u002Fcaddy\u002FCaddyfile`. To expose an application running locally on port 3000: `app.yourdomain.com { reverse_proxy localhost:3000 }`. That's all: Caddy deduces that HTTPS is needed because you specified a domain and triggers the certificate issuance.",{"title":60,"body":61},"Reload and check","Apply the configuration without downtime: `caddy reload --config \u002Fetc\u002Fcaddy\u002FCaddyfile`. Follow the certificate acquisition in the logs: `journalctl -u caddy -f`. On the first HTTPS call to your domain, the certificate is in place.",{"title":63,"body":64},"Add security headers and compression","Enrich the block with a `header` directive for HSTS and the anti-clickjacking headers, and enable `encode gzip zstd` for compression. Since the config is declarative, these additions stay readable and a simple `caddy reload` applies them.",{"type":66,"body":67},"tip","To host several applications on the same VPS, simply list several site blocks in the same Caddyfile, each with its `reverse_proxy`. And for local development without a public domain, replace the domain name with `:80` or use the `tls internal` directive: Caddy then generates a local CA and signs the certificate itself, handy for an internal pre-production environment.",{"type":66,"title":69,"body":70},"The official documentation","For advanced configuration and options specific to the tool, refer to the \u003Ca href=\"https:\u002F\u002Fcaddyserver.com\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\">official Caddy documentation\u003C\u002Fa>. This guide covers going live on a VPS; the vendor's docs remain the reference for fine-tuning, major updates and specific use cases.","Put Caddy in front of your applications on a Cloud VPS","Deploy a ServOrbit Cloud VPS with the Deployment template: Caddy handles automatic HTTPS while you focus on your application.","See the Cloud VPS","\u002Fvps-cloud",[76,89,102],{"id":77,"slug":78,"title":79,"excerpt":80,"readTime":11,"views":81,"isPinned":13,"publishedAt":82,"category":83,"categories":84,"featuredImage":22,"bgImage":23,"posterImage":86,"relatedSolution":87},33,"deployer-avec-caprover","Deploy your applications with CapRover on a VPS","Turn your VPS into a PaaS with CapRover: Git deployments in a single push, automatic SSL and a one-click app catalog.",221,"2026-05-18T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[85],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":18,"appSlug":88},"caprover",{"id":90,"slug":91,"title":92,"excerpt":93,"readTime":11,"views":94,"isPinned":13,"publishedAt":95,"category":96,"categories":97,"featuredImage":22,"bgImage":23,"posterImage":99,"relatedSolution":100},34,"deployer-avec-dokku","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.",258,"2026-05-17T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[98],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"categorySlug":18,"appSlug":101},"dokku",{"id":103,"slug":104,"title":105,"excerpt":106,"readTime":11,"views":107,"isPinned":13,"publishedAt":108,"category":109,"categories":110,"featuredImage":22,"bgImage":23,"posterImage":112,"relatedSolution":113},35,"deployer-avec-portainer","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.",295,"2026-05-16T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[111],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":18,"appSlug":114},"portainer",1785628425095]