跳至主要内容

使用 Caddy 自動設定 HTTPS

本指南將說明如何運用 Caddy 強化 Outline 伺服器設定。Caddy 是一款功能強大又容易使用的網路伺服器,具備自動 HTTPS 功能和彈性設定,是架設 Outline 伺服器的理想選擇,尤其在使用 WebSocket 傳輸時,更能簡化設定。

什麼是 Caddy?

Caddy 是一款開放原始碼網路伺服器,主打簡單易用、自動設定 HTTPS 及支援多種通訊協定。這項服務可以簡化網路伺服器設定,並提供以下功能:

  • **自動 HTTPS:**Caddy 會自動取得並更新 TLS 憑證,確保連線安全。

  • **HTTP/3 支援:**Caddy 支援最新的 HTTP/3 通訊協定,讓網路傳輸更快速有效率。

  • **以外掛程式擴充:**Caddy 可透過外掛程式擴充,支援反向 Proxy、負載平衡等多種功能。

步驟 1:事前準備

步驟 2:設定網域

啟動 Caddy 前,請確認您的網域名稱已正確設定,指向您的伺服器 IP 位址。

  • **設定 A/AAAA 記錄:**登入 DNS 供應商網站,將網域的 A 記錄設為指向伺服器的 IPv4 位址,AAAA 記錄設為指向 IPv6 位址。

  • **驗證 DNS 記錄:**使用權威查詢確認 DNS 記錄設定正確,如下所示:

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

步驟 3:建構並執行自訂 Caddy 版本

使用 xcaddy 建構自訂 caddy 二進位檔,納入 Outline 核心伺服器模組和其他需要的伺服器擴充模組。

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/OutlineFoundation/outline-ss-server/outlinecaddy

步驟 4:設定並執行搭配 Outline 的 Caddy 伺服器

建立新的 config.yaml 檔案並加入以下設定:

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>

這項設定採用 Shadowsocks-over-WebSockets 策略,網路伺服器會監聽 443 通訊埠,並分別在 TCP_PATHUDP_PATH 路徑接收經 TCP 和 UDP 封裝的 Shadowsocks 流量。

使用已建立的設定,執行經由 Outline 模組擴充的 Caddy 伺服器,如下所示:

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

如需更多設定示例,請前往 outline-ss-server/outlinecaddy GitHub 存放區

步驟 5:建立動態存取金鑰

使用進階設定格式為使用者產生用戶端存取金鑰 YAML 檔案,並納入先前在伺服器端設定的 WebSocket 端點,如下所示:

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>

產生動態存取金鑰 YAML 檔案後,您需要將檔案提供給使用者,比如將檔案託管於靜態網站代管服務,或動態產生檔案。進一步瞭解如何使用動態存取金鑰

步驟 6:使用 Outline 用戶端連線

使用官方 Outline 用戶端應用程式 (1.15.0 以上版本),將新建立的動態存取金鑰新增為伺服器項目。點選「連線」****,即可使用 Shadowsocks-over-Websocket 設定建立的通道連線至您的伺服器。

您可以使用類似 IPInfo 的工具,確認目前是否透過 Outline 伺服器瀏覽網際網路。