Automatyczny protokół HTTPS z serwerem Caddy

W tym przewodniku znajdziesz informacje o tym, jak korzystać z Caddy, zaawansowanego i przyjaznego dla użytkownika serwera WWW, aby udoskonalić konfigurację serwera Outline. Funkcje serwera Caddy dotyczące automatycznego protokołu HTTPS oraz jego elastyczna konfiguracja sprawiają, że jest to doskonały wybór do obsługi serwera Outline, zwłaszcza w przypadku korzystania z transportu webSocket.

Czym jest serwer Caddy?

Caddy to serwer WWW na licencji open source znany z łatwości użytkowania, automatycznego protokołu HTTPS i obsługi wielu różnych protokołów. Upraszcza konfigurację serwera WWW i zapewnia funkcje takie jak:

  • Automatyczny protokół HTTPS: Caddy automatycznie uzyskuje i odnawia certyfikaty TLS, zapewniając tym samym bezpieczne połączenia.
  • Obsługa HTTP/3: Caddy obsługuje najnowszy protokół HTTP/3, co przekłada się na szybszy i wydajniejszy ruch w sieci.
  • Rozszerzalność za pomocą wtyczek: Caddy można rozszerzyć za pomocą wtyczek o różne funkcje, w tym odwrotne serwery proxy i równoważenie obciążenia.

Krok 1. Wymagania wstępne

  • Pobierz i zainstaluj xcaddy.

Krok 2. Skonfiguruj domenę

Przed uruchomieniem serwera Caddy upewnij się, że nazwa Twojej domeny jest poprawnie skonfigurowana, tak aby wskazywała na adres IP Twojego serwera.

  • Ustaw rekordy A/AAAA: zaloguj się do swojego dostawcy DNS i skonfiguruj rekordy A i AAAA dla swojej domeny, tak aby wskazywały odpowiednio na adresy IPv4 i IPv6 Twojego serwera.
  • Sprawdź rekordy DNS: sprawdź, czy Twoje rekordy DNS są ustawione poprawnie, za pomocą wyszukiwania autorytatywnego:

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

Krok 3. Utwórz i uruchom odpowiedni serwer Caddy

Korzystając z xcaddy, możesz skompilować spersonalizowany plik binarny caddy zawierający główny moduł serwera Outline i inne moduły rozszerzenia serwera, które są potrzebne.

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

Krok 4. Skonfiguruj i uruchom serwer Caddy z Outline

Utwórz nowy plik config.yaml o następującej konfiguracji:

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

Ta konfiguracja reprezentuje strategię Shadowsocks-over-WebSockets z serwerem WWW nasłuchującym na porcie 443, przyjmującym spakowany ruch protokołów Shadowsocks TCP i UDP odpowiednio przy ścieżkach TCP_PATH i UDP_PATH.

Uruchom serwer Caddy rozszerzony za pomocą Outline, korzystając z utworzonej konfiguracji:

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

Więcej przykładów konfiguracji znajdziesz w naszym repozytorium GitHub outline-ss-server/outlinecaddy.

Krok 5. Utwórz dynamiczny klucz dostępu

Wygeneruj plik YAML z kluczem dostępu klienta dla użytkowników korzystających z formatu zaawansowanej konfiguracji i uwzględnij punkty końcowe WebSocket skonfigurowane po stronie serwera:

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

Po wygenerowaniu pliku YAML z dynamicznym kluczem dostępu musisz dostarczyć go swoim użytkownikom. Możesz hostować plik na statycznym hostingu WWW lub generować go dynamicznie. Dowiedz się więcej o dynamicznych kluczach dostępu.

Krok 6. Połącz się z klientem Outline

Skorzystaj z jednej z oficjalnych aplikacji klienta Outline (wersja 1.15.0 i nowsze) i dodaj swój nowo utworzony dynamiczny klucz dostępu jako wpis serwera. Kliknij Połącz, aby rozpocząć tunelowanie do swojego serwera za pomocą konfiguracji Shadowsocks-over-Websocket.

Skorzystaj z narzędzia takiego jak IPInfo, aby potwierdzić, że przeglądasz internet za pomocą swojego serwera Outline.