Tự động chuyển sang HTTPS bằng Caddy

Hướng dẫn này giải thích cách sử dụng Caddy, một máy chủ web mạnh mẽ và thân thiện với người dùng, để nâng cao chế độ thiết lập máy chủ Outline. Các tính năng HTTPS tự động và cấu hình linh hoạt của Caddy là lựa chọn tuyệt vời để phân phát máy chủ Outline, đặc biệt là khi sử dụng phương thức truyền tải WebSocket.

Caddy là gì?

Caddy là một máy chủ web nguồn mở nổi tiếng với khả năng dễ sử dụng, HTTPS tự động và hỗ trợ nhiều giao thức. Công cụ này giúp đơn giản hoá cấu hình máy chủ web và cung cấp các tính năng như:

  • HTTPS tự động: Caddy tự động lấy và gia hạn chứng chỉ TLS, đảm bảo các kết nối an toàn.
  • Hỗ trợ HTTP/3: Caddy hỗ trợ giao thức HTTP/3 mới nhất để lưu lượng truy cập web nhanh hơn và hiệu quả hơn.
  • Mở rộng bằng Trình bổ trợ: Bạn có thể mở rộng Caddy bằng các trình bổ trợ để hỗ trợ nhiều chức năng, bao gồm cả tính năng proxy ngược và cân bằng tải.

Bước 1: Điều kiện tiên quyết

  • Tải xuống và cài đặt xcaddy

Bước 2: Định cấu hình miền

Trước khi khởi động Caddy, hãy đảm bảo tên miền của bạn được định cấu hình chính xác để trỏ đến địa chỉ IP của máy chủ.

  • Thiết lập bản ghi A/AAAA: Đăng nhập vào nhà cung cấp dịch vụ DNS và thiết lập bản ghi A và AAAA cho miền của bạn để trỏ đến địa chỉ IPv4 và IPv6 của máy chủ tương ứng.
  • Xác minh bản ghi DNS: Xác minh rằng bạn đã thiết lập bản ghi DNS đúng cách bằng một truy vấn có thẩm quyền:

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

Bước 3: Tạo và chạy bản dựng Caddy tuỳ chỉnh

Khi sử dụng xcaddy, bạn có thể tạo một tệp nhị phân caddy tuỳ chỉnh bao gồm mô-đun máy chủ cốt lõi Outline và các mô-đun tiện ích máy chủ cần thiết khác.

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

Bước 4: Định cấu hình và chạy máy chủ Caddy bằng Outline

Tạo tệp config.yaml mới có cấu hình sau:

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

Cấu hình này thể hiện chiến lược Shadowsocks qua WebSockets với một máy chủ web đang nghe trên cổng 443, chấp nhận lưu lượng truy cập được gói TCP và UDP Shadowsocks tại các đường dẫn TCP_PATHUDP_PATH tương ứng.

Chạy máy chủ Caddy được mở rộng bằng Outline bằng cấu hình đã tạo:

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

Bạn có thể tìm thấy thêm các cấu hình mẫu trong kho lưu trữ GitHub outline-ss-server/outlinecaddy.

Bước 5: Tạo khoá truy cập động

Tạo tệp YAML khoá truy cập ứng dụng cho người dùng bằng định dạng cấu hình nâng cao và bao gồm các điểm cuối WebSocket đã được định cấu hình trước đó ở phía máy chủ:

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

Sau khi tạo tệp YAML khoá truy cập động, bạn cần cung cấp tệp đó cho người dùng. Bạn có thể lưu trữ tệp trên một dịch vụ lưu trữ web tĩnh hoặc tạo tệp một cách linh động. Tìm hiểu thêm về cách sử dụng Khoá truy cập động.

Bước 6: Kết nối với ứng dụng Outline

Sử dụng một trong các ứng dụng Outline Client (ứng dụng Outline) chính thức (phiên bản 1.15.0 trở lên) và thêm khoá truy cập động mới tạo làm mục nhập máy chủ. Nhấp vào Connect (Kết nối) để bắt đầu tạo đường hầm đến máy chủ của bạn bằng cấu hình Shadowsocks-over-Websocket.

Sử dụng một công cụ như IPInfo để xác minh rằng bạn hiện đang duyệt Internet thông qua máy chủ Outline.