本指南介绍了如何使用强大易用的 Web 服务器 Caddy 来增强 Outline 服务器设置。Caddy 具有自动 HTTPS 功能和灵活的配置,是为 Outline 服务器提供支持的理想选择,尤其适合使用 WebSocket 传输的应用场景。
什么是 Caddy?
Caddy 是一种开源 Web 服务器,它易于使用、具备自动 HTTPS 功能且支持各种协议。该服务器简化了 Web 服务器配置,提供了以下实用功能:
- 自动 HTTPS:Caddy 可自动获取和续订 TLS 证书,确保连接安全性。
- HTTP/3 支持:Caddy 支持最新 HTTP/3 协议,能够实现更快、更高效的网络流量传输。
- 支持插件扩展:Caddy 可通过插件进行扩展,以支持各种功能,包括反向代理和负载均衡。
第 1 步:前提条件
- 下载并安装
xcaddy
第 2 步:配置域名
在启动 Caddy 之前,请务必正确配置域名,使其指向服务器的 IP 地址。
- 设置 A/AAAA 记录:登录 DNS 提供商的网站,设置域名的 A 记录和 AAAA 记录,确保它们分别指向服务器的 IPv4 地址和 IPv6 地址。
验证 DNS 记录:通过权威查找验证 DNS 记录是否设置正确:
curl "https://cloudflare-dns.com/dns-query?name=DOMAIN_NAME&type=A" \ -H "accept: application/dns-json"
第 3 步:构建并运行自定义 Caddy build
使用 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/Jigsaw-Code/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-WebSocket 策略,其中 Web 服务器监听端口 443
,并分别在路径 TCP_PATH 和 UDP_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 服务器浏览互联网。