Automatisches HTTPS mit Caddy

In diesem Leitfaden erfahren Sie, wie Sie mit Caddy, einem leistungsstarken und nutzerfreundlichen Webserver, Ihre Outline-Serverkonfiguration optimieren. Dank automatischem HTTPS und flexiblen Konfigurationsmöglichkeiten ist Caddy eine sehr gute Wahl für Ihren Outline-Server, insbesondere, wenn Sie das WebSocket-Übertragungsprotokoll verwenden.

Was ist Caddy?

Caddy ist ein Open-Source-Webserver, der für seine Nutzerfreundlichkeit, die automatische Umleitung auf HTTPS („Automatisches HTTPS“) und die Unterstützung verschiedener Protokolle bekannt ist. Er vereinfacht die Webserver-Konfiguration und bietet Funktionen wie:

  • Automatisches HTTPS: Caddy erhält und erneuert TLS-Zertifikate automatisch und sorgt so für sichere Verbindungen.
  • Unterstützung von HTTP/3: Caddy unterstützt das neueste HTTP/3-Protokoll für schnelleren und effizienteren Web-Traffic.
  • Plug‑ins: Caddy lässt sich mit Plug‑ins um verschiedene Funktionen erweitern, darunter Reverse-Proxyvorgänge und Load Balancing.

Schritt 1: Voraussetzungen

  • Laden Sie xcaddy herunter und führen Sie die Installation durch.

Schritt 2: Domain konfigurieren

Bevor Sie Caddy starten, vergewissern Sie sich, dass Ihr Domainname richtig konfiguriert ist und auf die IP‑Adresse Ihres Servers verweist.

  • A‑/AAAA-Einträge festlegen: Melden Sie sich bei Ihrem DNS-Anbieter an und legen Sie die A‑ und AAAA-Einträge für Ihre Domain so fest, dass sie jeweils auf die IPv4- bzw. auf die IPv6-Adressen Ihres Servers verweisen.
  • DNS-Einträge prüfen: Prüfen Sie, ob die DNS-Einträge für die maßgebliche Domain festgelegt sind:

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

Schritt 3: Benutzerdefinierten Caddy-Build erstellen und ausführen

Mit xcaddy können Sie ein benutzerdefiniertes caddy-Binärprogramm erstellen, das das Kernmodul des Outline-Servers sowie weitere benötigte Server-Erweiterungsmodule enthält.

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

Schritt 4: Caddy-Server konfigurieren und mit Outline ausführen

Erstellen Sie eine neue config.yaml-Datei mit der folgenden Konfiguration:

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

Diese Konfiguration stellt eine Shadowsocks‑over-WebSockets-Strategie dar, mit einem Webserver, der Port 443 überwacht und getarnten Shadowsocks-Traffic über TCP und UDP auf den Pfaden TCP_PATH und UDP_PATH akzeptiert.

Führen Sie den Caddy-Server mit Outline als Erweiterung mit der erstellten Konfiguration aus:

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

Weitere Beispielkonfigurationen finden Sie hier.

Schritt 5: Dynamischen Zugriffsschlüssel erstellen

Generieren Sie eine YAML-Datei mit dem Client-Zugriffsschlüssel für Ihre Nutzer. Verwenden Sie dazu das Format für die erweiterte Konfiguration und die WebSocket-Endpunkte, die Sie zuvor auf Serverseite konfiguriert haben:

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

Nachdem Sie die YAML-Datei mit dem dynamischen Zugriffsschlüssel erstellt haben, müssen Sie diese Ihren Nutzern zukommen lassen. Sie können die Datei auf einem statischen Webhosting-Dienst hosten oder dynamisch generieren. Weitere Informationen zur Verwendung von dynamischen Zugriffsschlüsseln

Schritt 6: Mit dem Outline-Client verbinden

Fügen Sie in einer der offiziellen Outline-Client-Anwendungen (ab Version 1.15.0) den gerade erstellten dynamischen Zugriffsschlüssel für den Server hinzu. Klicken Sie auf Verbinden, um mit der Shadowsocks‑over-WebSocket-Konfiguration eine Tunnelverbindung zu Ihrem Server herzustellen.

Vergewissern Sie sich mit einem Tool wie IPInfo, dass Sie über Ihren Outline-Server mit dem Internet verbunden sind.