PVE部署 DDNSTO
0 - 简介
官网: https://www.ddnsto.com/ ; 文档中心: https://doc.linkease.com/zh/guide/ddnsto/ 本文 Linux 部署方式参考自官方文档: https://www.koolcenter.com/t/topic/5868
DDNSTO 是 koolcenter (易有云) 出品的一款内网穿透 / 远程访问工具。在没有公网 IP 的情况下,只要在内网任意一台设备上运行 DDNSTO 客户端,就能通过 xxx.ddnsto.com 的二级域名,从外网安全地访问内网中的各种 Web 服务 (NAS、路由器后台、HomeAssistant、各类自托管面板等)。
它和 Tailscale 解决的问题类似 (都是「在外面访问家里」),但思路不同:
- Tailscale 组建的是点对点的虚拟局域网 (MesVPN),访问端也需要安装客户端,访问的是原始内网 IP。
- DDNSTO 走的是「云端中转 + HTTP 反向代理」,访问端无需安装任何客户端,直接用浏览器打开分配的二级域名即可,适合把某个 Web 服务分享出去。
DDNSTO 本身不依赖 PVE,可以装在内网任意一台 Linux 机器上。本文介绍在 PVE 环境中的几种部署方式。
1 - 准备工作: 获取设备授权码 (令牌 Token)
无论用哪种方式安装,运行 DDNSTO 客户端时都需要一个令牌 (Token) 作为认证凭证。先把它拿到手:
- 打开 DDNSTO 控制台,点击右上角「控制台」,使用微信扫码登录。
- 登录成功后,在用户中心 / 右上角处找到并复制你的「令牌 (Token)」。
令牌形如:
abcdefg-8888-8888-1111-abcdefghijk这个令牌等同于你账号的设备授权凭证,请妥善保管,不要泄露。
2 - (推荐) 在 LXC 中安装
2.1 安装 Debian LXC
参考 PVE 安装 alpine LXC & Debian LXC,创建一个 Debian LXC。
安装参数参考:
- Container Type: Unprivileged
- 指定静态的 IPv4 IP 和 网关 IP (强烈建议分配静态 IP)
- Disk Size / RAM 给最小即可 (DDNSTO 客户端非常轻量,512 MiB 内存绰绰有余)
2.2 在 LXC 中安装 DDNSTO (一键脚本)
SSH (或在 PVE 中进入该 LXC 的 console) 后,执行如下一键安装脚本 (二选一):
sh -c "$(curl -sSL http://fw.koolcenter.com/binary/ddnsto/linux/install_ddnsto_linux.sh)"或:
cd /tmp; wget --no-check-certificate http://fw.koolcenter.com/binary/ddnsto/linux/install_ddnsto_linux.sh; sh ./install_ddnsto_linux.sh脚本运行过程中会提示输入令牌 (Token),把第 1 节复制的令牌粘贴进去即可。脚本会自动下载对应架构 (amd64 / arm64) 的二进制,并注册为开机自启的后台服务。
2.3 验证安装
安装脚本完成后,DDNSTO 会以后台服务的形式运行。如果成功连接服务器,日志中会显示类似:
client init ok, username=xxxxx-xxxxxx-xxxxxx-xxx…也可以回到 DDNSTO 控制台 刷新页面,稍等片刻,设备会出现在设备列表中 (状态为在线)。
3 - 在 PVE host 中安装
如果不想单独开一个 LXC,也可以直接装在 PVE host 上 (PVE 底层是 Debian,glibc 发行版,兼容)。
SSH 到 PVE host,执行与上面相同的一键安装命令:
sh -c "$(curl -sSL http://fw.koolcenter.com/binary/ddnsto/linux/install_ddnsto_linux.sh)"同样在提示时粘贴令牌即可。
一般不建议在 PVE host (宿主机) 上直接安装第三方服务,以保持宿主环境干净。这里仅作为一种可选方案列出,更推荐第 2 节的 LXC 方式或第 4 节的 Docker 方式。
3.1 手动安装 (可选)
如果一键脚本不可用,也可以手动下载二进制安装。从 DDNSTO Linux 下载地址 下载对应架构的文件:
- X86 平台:
ddnsto.amd64 - ARM 平台 (树莓派等):
ddnsto.arm64
以 X86 为例:
# 将下载好的二进制放到 /usr/local/bin/ddnsto
cp ddnsto.amd64 /usr/local/bin/ddnsto
chmod +x /usr/local/bin/ddnsto
# 以后台 (daemon) 方式启动,-u 后面替换为你的令牌
ddnsto -u abcdefg-8888-8888-1111-abcdefghijk -daemonARM 平台把 ddnsto.amd64 换成 ddnsto.arm64 即可。
4 - (替代方案) 使用 Docker 部署
Docker 部署参考: https://doc.linkease.com/zh/guide/ddnsto/install/device/docker.html 镜像: linkease/ddnsto
如果你已经有一台运行 Docker 的机器 (包括 Alpine LXC + Docker),用官方镜像部署是最省心的方式,镜像自带运行环境,不受 glibc/musl 限制。
docker run -d \
--name=ddnsto \
--restart always \
--network host \
-e TOKEN=abcdefg-8888-8888-1111-abcdefghijk \
-e DEVICE_IDX=0 \
-v /etc/localtime:/etc/localtime:ro \
-v /your/config-path/ddnsto-config:/ddnsto-config \
-e PUID=0 \
-e PGID=0 \
linkease/ddnsto关键参数说明:
TOKEN: 填写第 1 节从控制台拿到的令牌。DEVICE_IDX: 设备序号,默认0;如果同一令牌下出现设备 ID 重复,改为1~100之间的值。-v .../ddnsto-config:/ddnsto-config: 持久化配置目录,保证容器重启后设备 ID 不变。每个 DDNSTO 容器都应使用各自独立的配置目录路径。--network host: 使用 host 网络,便于客户端访问到同网段的其他内网设备。
部分发行版执行
docker命令需要加sudo前缀。
5 - 配置域名映射 (远程访问内网服务)
客户端跑起来、设备在控制台上线后,就可以为内网服务配置「域名映射」,从而通过二级域名远程访问。
- 在 DDNSTO 控制台 的设备列表中,找到刚上线的设备,点击「添加域名映射」的
+按钮。 - 填写映射配置:
- 域名前缀: 使用小写字母或数字,且长度大于 6 个字符。例如前缀
kool666666,对应访问地址https://kool666666.ddnsto.com。 - 目标主机: 填内网服务的地址。80 端口可省略 (如
http://192.168.50.1);非 80 端口必须写明 (如http://192.168.50.11:5000)。 - 协议: 按目标服务选择
http或https。
- 域名前缀: 使用小写字母或数字,且长度大于 6 个字符。例如前缀
- 点击「添加」,成功添加后约 1 分钟左右即可正常访问。
之后在任意有网络的设备上,用浏览器打开 https://你的前缀.ddnsto.com 即可访问对应内网服务 (首次访问可能需要微信登录做身份验证)。
💡 多个内网服务可以各配一个前缀,互不影响。
6 - 常用管理命令
一键脚本方式安装后,DDNSTO 会注册为 systemd 服务,服务名为 com.linkease.ddnstoshell。
# 停止运行
systemctl stop com.linkease.ddnstoshell
# 启动
systemctl start com.linkease.ddnstoshell
# 查看运行状态
systemctl status com.linkease.ddnstoshell
# 设置 / 取消开机自启
systemctl enable com.linkease.ddnstoshell
systemctl disable com.linkease.ddnstoshellDocker 方式的管理则用对应的 docker 命令:
docker stop ddnsto # 停止
docker start ddnsto # 启动
docker restart ddnsto # 重启
docker logs -f ddnsto # 查看日志 (确认 client init ok)
docker rm -f ddnsto # 删除容器
docker pull linkease/ddnsto && docker rm -f ddnsto && <重新 run> # 更新镜像