腾讯云 Octopus 是基于 OpenWrt 的轻量级开源软路由系统,不内置 Caddy,但支持手动安装并配置为反向代理网关;需适配架构、启用 opkg、绑定 DNSPod 域名,通过非标端口(如 667/668)配合 tencentcloud 插件实现 DNS 验证与自动证书续期。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

腾讯云 Octopus(注意:你提到的“Octop v1.0.0”应为 Octopus,是腾讯云推出的轻量级开源软路由系统,基于 OpenWrt,常用于 iStoreOS 或类似生态;目前无官方“Octop”命名产品,v1.0.0 可能指某定制版 Octopus 固件)本身不内置 Caddy,但支持手动安装并配置为反向代理网关,尤其适合家庭/内网场景对外暴露服务。
以下是针对 Octopus v1.0.0(OpenWrt 系统) 的 Caddy 反向代理配置全流程,聚焦实操、避坑和国内环境适配(如 80/443 被封、DNS 验证、证书自动续期等):
确认系统兼容性与基础准备
Octopus 基于 OpenWrt,需确认:
- 架构为
aarch64(ARM64,常见于 ARM 软路由)或x86_64(部分 x86 小主机); - 已启用
opkg包管理,并可访问源(如https://downloads.openwrt.org对应版本); - 具备公网 IPv4(或 IPv6 + Cloudflare Tunnel 等备用方案);
- 已注册域名,且 DNS 可由腾讯云 DNSPod(即 DNSPod.cn)托管。
✅ 提示:Octopus 默认不开放 80/443,家宽环境下必须改用非标端口(如
667/668),并配合 DNS 验证申请证书。
安装 Caddy(适配 Octopus/OpenWrt)
Caddy 官方不提供 OpenWrt 包,需手动部署:
-
下载对应架构的 Caddy 二进制(带 tencentcloud 插件)
访问 Caddy 下载页,勾选:-
tencentcloud(必需,用于 DNSPod.cn 的 API 自动验证) - (可选)
http.prometheus,http.cache等增强插件
示例(aarch64):
wget https://github.com/caddyserver/caddy/releases/download/v2.9.6/caddy_2.9.6_linux_arm64.tar.gz tar -xzf caddy_2.9.6_linux_arm64.tar.gz mv caddy /usr/bin/ chmod +x /usr/bin/caddy
-
-
创建运行用户与目录
uci set system.@system[0].hostname='octopus-caddy' uci commit system # 创建 caddy 用户(避免 root 运行) adduser -D -u 65534 -s /bin/false caddy mkdir -p /etc/caddy /var/lib/caddy chown -R caddy:caddy /etc/caddy /var/lib/caddy
配置 Caddyfile(DNS 验证 + 反代)
编辑 /etc/caddy/Caddyfile:
{
http_port 667
https_port 668
email your@email.com
acme_dns tencentcloud {
secret_id "AKIDxxxxxxxxxxxxxxxxxxxxxxx"
secret_key "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
nas.example.com:668 {
reverse_proxy 192.168.1.100:5000
encode gzip
}
blog.example.com:668 {
reverse_proxy 192.168.1.101:1313
}? 关键说明:
-
acme_dns tencentcloud:启用腾讯云 DNSPod API 自动验证(不是dnspod插件!); -
nas.example.com:668:显式指定端口,绕过被封的 443; -
reverse_proxy后地址为内网服务真实地址(非localhost,因 Caddy 运行在路由器上,需直连局域网设备); - 所有域名需已在 DNSPod 添加 A 记录,指向你的公网 IP(即使 IP 动态,也可配合 DDNS 脚本更新)。
启动与守护(systemd 或 procd)
Octopus 使用 procd(OpenWrt init 系统),新建服务脚本:
cat > /etc/init.d/caddy << 'EOF'
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=99
start_service() {
procd_open_instance
procd_set_param command /usr/bin/caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
procd_set_param user caddy
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn ${respawn_timeout:-3600} ${respawn_retry:-5}
procd_close_instance
}
EOF
chmod +x /etc/init.d/caddy
/etc/init.d/caddy enable
/etc/init.d/caddy start✅ 启动后查看日志:
logread | grep caddy # 成功标志:`serving initial configuration` + `certificate obtained successfully`
验证与排障要点
| 现象 | 常见原因 | 快速检查 |
|---|---|---|
证书申请失败(no certificate available) |
DNSPod API 密钥错误 / 权限不足 / 域名未托管在 DNSPod |
curl -H "Authorization: Bearer $TOKEN" https://dnsapi.tencentcloudapi.com 测试 API |
| 访问返回 502 |
reverse_proxy 地址不可达(如防火墙、服务未监听 0.0.0.0) |
在 Octopus 上执行 curl -v http://192.168.1.100:5000
|
| 页面加载慢或超时 | 缺少 encode gzip 或未开启 zstd 压缩 |
在 Caddyfile 中补上 encode gzip zstd
|
| 无法从外网访问 | 公网 IP 变更未同步 DNS / 路由器未做端口转发(若用光猫桥接+Octopus拨号则无需) |
nslookup nas.example.com 看是否解析到当前公网 IP |
Caddy 在 Octopus 上不是开箱即用,但一次配好就能长期稳定运行——自动续证、零手动 reload、统一 HTTPS 入口。只要 DNSPod API 配对正确,后续新增子域名只需改 Caddyfile + reload_config(或重启服务),整个过程不依赖外部工具或复杂脚本。


















