HTTPS automatique avec Caddy

Ce guide explique comment utiliser Caddy, un serveur Web performant et convivial, pour améliorer la configuration de votre serveur Outline. Avec ses fonctionnalités HTTPS automatiques et sa configuration flexible, Caddy est un excellent choix pour faire fonctionner votre serveur Outline, en particulier si vous utilisez un transport WebSocket.

Qu'est-ce que Caddy ?

Caddy est un serveur Web Open Source connu pour sa facilité d'utilisation, ses fonctionnalités HTTPS automatiques et sa compatibilité avec de nombreux protocoles. Il permet de simplifier la configuration des serveurs Web et offre notamment les fonctionnalités suivantes :

  • HTTPS automatique : Caddy obtient et renouvelle automatiquement les certificats TLS pour sécuriser les connexions.
  • Compatibilité HTTP/3 : Caddy prend en charge le dernier protocole HTTP/3, pour un trafic Web plus rapide et efficace.
  • Extensibilité : Caddy peut être amélioré avec des plug-ins offrant différentes fonctionnalités comme le proxy inverse et l'équilibrage de charge.

Étape 1 : Prérequis

  • Téléchargez et installez xcaddy.

Étape 2 : Configurez votre domaine

Avant de lancer Caddy, vérifiez que votre nom de domaine est correctement configuré pour pointer vers l'adresse IP de votre serveur.

  • Configurez les enregistrements A/AAAA : connectez-vous à votre fournisseur DNS et configurez les enregistrements A et AAAA afin que votre domaine pointe respectivement vers les adresses IPv4 et IPv6 de votre serveur.
  • Vérifiez les enregistrements DNS : vérifiez que vos enregistrements DNS sont configurés correctement avec une recherche faisant autorité :

    curl "https://cloudflare-dns.com/dns-query?name=DOMAIN_NAME&type=A" \
      -H "accept: application/dns-json"
    

Étape 3 : Compilez et exécutez un build Caddy personnalisé

Avec xcaddy, vous pouvez compiler un serveur caddy binaire personnalisé qui inclut le module de serveur principal Outline et d'autres modules d'extension de serveur indispensables.

xcaddy build \
  # The example uses a YAML config, so include a YAML config adapter module.
  --with github.com/iamd3vil/caddy_yaml_adapter \
  # The Outline core server module.
  --with github.com/Jigsaw-Code/outline-ss-server/outlinecaddy

Étape 4 : Configurez et exécutez le serveur Caddy avec Outline

Créez un fichier config.yaml avec la configuration suivante :

apps:
  http:
    servers:
      server1:
        listen:
          - ":443"
        routes:
          - match:
            - host:
              - 'DOMAIN_NAME'
            - path:
              - "/TCP_PATH"
            handle:
            - handler: websocket2layer4
              type: stream
              connection_handler: ss1
          - match:
            - host:
              - 'DOMAIN_NAME'
            - path:
              - "/UDP_PATH"
            handle:
              - handler: websocket2layer4
                type: packet
                connection_handler: ss1
  outline:
    shadowsocks:
      replay_history: 10000
    connection_handlers:
      - name: ss1
        handle:
          handler: shadowsocks
          keys:
            - id: user-1
              cipher: chacha20-ietf-poly1305
              secret: SHADOWSOCKS_SECRET

Cette configuration représente une stratégie Shadowsocks-over-WebSockets avec un serveur Web écoutant le port 443, qui accepte le trafic Shadowsocks TCP et UDP encapsulé respectivement aux chemins TCP_PATH et UDP_PATH.

Exécutez le serveur Caddy amélioré avec Outline à l'aide de la configuration créée :

caddy run --config config.yaml --adapter yaml --watch

Vous trouverez d'autres exemples de configuration dans notre dépôt GitHub outline-ss-server/outlinecaddy.

Étape 5 : Créez une clé d'accès dynamique

Générez un fichier YAML de clé d'accès client pour vos utilisateurs à l'aide du format de configuration avancée et indiquez les points de terminaison WebSocket configurés précédemment côté serveur :

transport:
  $type: tcpudp

  tcp:
    $type: shadowsocks

    endpoint:
      $type: websocket
      url: wss://DOMAIN_NAME/TCP_PATH
    cipher: chacha20-ietf-poly1305
    secret: SHADOWSOCKS_SECRET

  udp:
    $type: shadowsocks

    endpoint:
      $type: websocket
      url: wss://DOMAIN_NAME/UDP_PATH
    cipher: chacha20-ietf-poly1305
    secret: SHADOWSOCKS_SECRET

Après avoir généré le fichier YAML de clé d'accès dynamique, vous devez le fournir à vos utilisateurs. Vous pouvez héberger le fichier sur un service d'hébergement Web statique ou le générer de façon dynamique. En savoir plus sur les clés d'accès dynamiques

Étape 6 : Connectez-vous au client Outline

Utilisez l'une des applications officielles du client Outline (version 1.15.0 ou versions ultérieures) et ajoutez la clé d'accès dynamique que vous venez de créer comme entrée de serveur. Cliquez sur Connecter pour activer la tunnelisation vers votre serveur à l'aide de la configuration Shadowsocks-over-Websocket.

Utilisez un outil comme IPInfo pour vérifier que vous naviguez désormais sur Internet via votre serveur Outline.