本教程介绍如何利用 Caddy 的自动证书管理功能,配合 Sing-box 搭建 Hysteria2 协议。
核心逻辑:
- Caddy:负责申请和续期证书,有没有实际网页无所谓。
- Sing-box:引用 Caddy 申请好的证书文件来运行代理服务。
- 权限:默认情况下两者均由 systemd (root) 运行,无权限隔阂。
第一步:安装 Caddy 并申请证书 Link to heading
1. 安装 Caddy 在终端依次执行以下命令(适用于 Debian/Ubuntu):
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
2. 配置 Caddy 编辑配置文件:
sudo nano /etc/caddy/Caddyfile
清空原有内容,填入以下配置(请将 your.domain.com 替换为你实际的域名):
your.domain.com {
respond "Service is running" 200
}
3. 启动 Caddy
sudo systemctl restart caddy
sudo systemctl enable caddy
启动后请等待约 30 秒,让 Caddy 完成证书申请过程。
第二步:定位证书路径(关键) Link to heading
1. 执行查找命令
使用以下命令找到名为 caddy 的目录:
sudo find / -type d -name 'caddy'
2. 确定证书位置
终端通常会返回 /var/lib/caddy 或类似的结果。
进入该目录,寻找 certificates 文件夹。通常完整的路径结构如下:
[查找到的caddy目录]/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/your.domain.com/
在该目录下,你会看到两个文件,请记录下它们的绝对路径(下一步配置要用):
your.domain.com.crt(证书文件)your.domain.com.key(私钥文件)
第三步:安装 Sing-box Link to heading
使用安装脚本进行安装:
sudo bash <(curl -fsSL https://sing-box.app/install.sh)
第四步:配置 Sing-box Link to heading
1. 编辑配置文件
打开配置文件(路径通常为 /etc/sing-box/config.json):
sudo nano /etc/sing-box/config.json
2. 写入配置
将下面的内容复制进去。注意:必须修改 password、server_name 以及第二步中找到的 certificate_path 和 key_path。
{
"log": {
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "hysteria2",
"tag": "hy2-in",
"listen": "::",
"listen_port": 51000,
"users": [
{
"password": "your_strong_password_here"
}
],
"sniff": true,
"sniff_override_destination": true,
"tls": {
"enabled": true,
"server_name": "your.domain.com",
"alpn": [
"h3"
],
"certificate_path": "/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/your.domain.com/your.domain.com.crt",
"key_path": "/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/your.domain.com/your.domain.com.key"
}
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
}
]
}
第五步:启动与验证 Link to heading
1. 重启 Sing-box
sudo systemctl restart sing-box
2. 检查状态
sudo systemctl status sing-box
如果看到绿色的 active (running),说明服务启动成功。
由于 Caddy 和 Sing-box 都是通过 Systemd 以 root 用户运行的,因此不存在读取证书的权限问题。
客户端连接参考 Link to heading
- 服务器地址:
your.domain.com - 端口:
51000 - 密码: 配置文件中设置的密码
- SNI (Server Name):
your.domain.com - 跳过证书验证: 否