Utiliser Caddy comme reverse proxy

Utiliser Caddy comme reverse proxy

Caddy est un puissant reverse proxy écrit en langague go. Il est une excellente alternative à Nginx et Traefik. Je l'utilise pour accéder à mes containers docker (ce blog par exemple). Caddy génère automatiquement les certificats ssl letsencrypt (ce qui est très pratique ). Nous allons voir comment l'installer et l'utiliser.

Installation sur Debian/Ubuntu:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
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

installation de caddy

Installation avec Docker:

Créez un fichier docker-compose.yml :

version: '3.1'
services:
  caddy:
    image: caddy:<version>
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./site:/srv
      - caddy_data:/data
      - caddy_config:/config

volumes:
  caddy_data:
  caddy_config:

Pour démarrer le container:

docker compose up -d

Configuration:

Partons du principe que le nom de domaine est "test.ncity.fr" (assurez-vous qu'il pointe bien sur l'adresse ip de votre serveur) et que l'on veut rediriger le domaine sur le port "8080".

Editez le fichier de configuration (à adapter si vous utilisez docker compose):

nano /etc/caddy/Caddyfile

Insérez ces directives:

test.ncity.fr {
  reverse_proxy localhost:8080
  log {
        output file /var/log/caddy/test.ncity.fr.access.log
    }
}

Redémarrez caddy:

service caddy restart

Avec Docker compose:

docker compose restart

Caddy a créé et configuré automatiquement le certificat ssl pour votre domaine. Vous pouvez désormais accéder à votre application: https://test.ncity.fr