Découverte de Caddy - un serveur web simple et rapide

Nous avons tous utilisé Apache et NGNIX pour héberger un site web et ils sont très bien, mais pour être honnête, je ne me suis jamais vraiment senti à l’aise avec leur configuration. Et c’est ce qui m’a amené à Caddy. Découvrons ce que Caddya à offrir.

Caddy

Caddy est un serveur web unique (du moins je le pense) avec un jeu de fonctionnalités modernes. Vous pouvez l’utiliser comme reverse proxy et load balancer. héberger vos applications PHP avec lui.. Et j’ai presque oublié l’une des meilleures fonctionnalités ; le HTTPS automatique, avec des certificats utilisant des fournisseurs comme Lets Encrypt et ZeroSSL.

Cool, non ?

Caddy est disponible sous la forme d’un simple exécutable, d’une image docker ou, comme d’habitude, via un gestionnaire de paquets. Aujourd’hui, nous utiliserons Debian. Mais si vous utilisez un autre système d’exploitation, leur documentation devrait vous couvrir.

bash

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Une fois installé, le service s’exécutera automatiquement et servira la page de bienvenue par défaut sur le port 80. Caddy peut ensuite être configuré en utilisant le fichier Caddyfile dans /etc/caddy

Comme dit plus haut, caddy peut être configuré en utilisant le fichier Caddyfile écrit en JSON dans /etc/caddy. Dans ce fichier, nous lui donnons des directives pour qu’il soit soit un reverse proxy, un serveur web, un front php, etc. Caddy peut aussi être configuré en utilisant son API REST si c’est quelque chose qui vous intéresse.

Disons que vous avez une application qui fonctionne sur le port 9999 et que vous voulez faire un reverse proxy vers 443 (HTTPS). Le fichier de configuration ressemblerait à ceci :

json

demo.app.com {
    reverse_proxy 127.0.0.1:9999
    encode gzip
}

Pour que Caddy recharge le Caddyfile, il suffit de lancer un systemctl reload caddy, Caddy rechargera alors le fichier de configuration, demandera un certificat pour demo.app.com et servira votre application sur HTTPS1.

Ok un reverse proxy c’est bien mais mon site web (celui-ci) est statique et généré par Hugo, comment pourrions-nous le servir en utilisant caddy ? Encore une fois, 4 lignes de configuration suffisent.

json

demo.website.com {
    #  sont stockés nos fichiers statiques
    root * /var/www/demo.droapp.com/public
    file_server 
}

Un rapide systemctl reload caddy plus tard et Caddy sert vos fichiers statiques sur HTTPS1 à demo.website.com.

Vous utilisez habituellement Nginx comme façade/front pour PHP-fpm, mais Caddy peut aussi le faire. Et encore une fois avec un simple fichier de configuration.

json

demo.website.com {
        #  sont stockés nos fichiers
        root * /var/www/demo.website.com
        # on indique à caddy  trouver le socket php-fpm
	    php_fastcgi /run/php/php8.2-fpm.sock	
        file_server
        encode gzip
}

Encore un rapide systemctl reload caddy et nous sommes maintenant en face d’une application php sur HTTPS1.

Caddy est aussi souvent exécuté avec Docker Compose et est toujours aussi simple. Voici un simple docker-compose.yml et nous pouvons utiliser n’importe quel exemple de Caddyfile ci-dessus.

yml

version: "3.7"

services:
  caddy:
    image: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - $PWD/Caddyfile:/etc/caddy/Caddyfile
      - $PWD/caddy_data:/data
      - $PWD/caddy_config:/config
      - $PWD/site:/srv # Si nous voulons servir des fichiers statiques dans $PWD/site
Documentation
Caddy possède l’une des meilleures documentation que j’aie vues depuis longtemps. Il existe de nombreuses autres fonctions que je n’ai pas abordées ici.

Sur ce, je pense avoir couvert les bases de l’utilisation de Caddy. L’utilisez-vous ? Dites-moi comment et ce que vous en pensez.

Feature Photo originale de Valery Sysoev sur Unsplash.


  1. Caddy ne réussira à demander un certificat que si les ports 80 et 443 sont ouverts sur votre serveur. Vous pouvez également désactiver la demande de certificat si vous n’en avez pas besoin. D’autres options comme le HTTPS local peuvent également être utilisées. ↩︎ ↩︎ ↩︎

Contenu connexe