对话笔记直发:4.30 Cloudflare Tunnel 0基础手动安装教程。分类:网络基建。
Vaultwarden 通过 Cloudflare Tunnel + 自定义域名手动部署教程
适用场景:
- 服务器系统:
Armbian / Debian 12 ARM64 - 已经安装并登录
Tailscale Vaultwarden已通过 Docker 部署完成Vaultwarden当前监听:127.0.0.1:8080- 服务器上已有
caddy占用80/443 - 希望新增第二种访问方式:
Cloudflare Tunnel + 自定义域名 - 不开放新公网端口
- 不改现有
caddy - 保留原有
Tailscale Serve入口作为备用
本文示例环境:
- 服务器 SSH:
root@局域网IP(已脱敏)“ - 根域名:
douy.indevs.in - Vaultwarden 目标域名:
3566.douy.indevs.in
一、最终效果
完成后,你会同时保留两种访问方式:
-
Tailscale备用入口
例如:https://jp-tvbox-3566.taile8eadf.ts.net -
Cloudflare Tunnel + 自定义域名正式入口
例如:https://3566.douy.indevs.in
同时满足:
Vaultwarden仍然只监听127.0.0.1:8080- 不占用新的公网端口
- 不修改
caddy - 不给 Vaultwarden 套
Cloudflare Access SIGNUPS_ALLOWED=false保持不变
二、部署前提
开始前请确认你已经具备以下条件:
- 一台本地服务器,已联网
- 系统为
Armbian / Debian 12 ARM64 - 已安装 Docker 和 Docker Compose
- 已部署 Vaultwarden
- 当前
docker-compose.yml路径为:/opt/vaultwarden/docker-compose.yml - 当前 Vaultwarden 数据目录为:
/opt/vaultwarden/data - 当前 Vaultwarden 监听为:
127.0.0.1:8080 - 域名已接入 Cloudflare DNS
- 服务器可以访问外网
- 你可以 SSH 登录服务器
三、部署思路
本方案的核心逻辑是:
- 安装
cloudflared - 用
cloudflared创建一个 Tunnel - 在 Cloudflare 上把
3566.douy.indevs.in指向这个 Tunnel - Tunnel 再把请求转发到本机:
http://127.0.0.1:8080 - 把 Vaultwarden 的
DOMAIN改成新的正式域名:https://3566.douy.indevs.in - 重启 Vaultwarden
- 验证网页、API、同步、WebSocket 是否正常
- 保留原有 Tailscale 入口不变
四、先检查当前环境
先 SSH 登录服务器:
ssh root@`局域网IP(已脱敏)`1. 检查 cloudflared 是否已安装
command -v cloudflared如果没有输出,说明还没安装。
2. 检查 Vaultwarden 容器状态
docker ps --format '{{.Names}}\t{{.Status}}\t{{.Ports}}' | grep -i vaultwarden正常示例输出:
vaultwarden Up 2 days (healthy) 127.0.0.1:8080->80/tcp3. 检查 Tailscale Serve 状态
tailscale serve status正常示例输出:
https://jp-tvbox-3566.taile8eadf.ts.net (tailnet only)
|-- / proxy http://127.0.0.1:8080这说明你当前的 Tailscale HTTPS 入口仍然工作正常。
4. 检查 Vaultwarden compose 里的 DOMAIN 和 SIGNUPS_ALLOWED
先查看文件关键内容:
grep -n 'DOMAIN\|SIGNUPS_ALLOWED' /opt/vaultwarden/docker-compose.yml示例输出:
9: SIGNUPS_ALLOWED: 'false'
10: DOMAIN: 'https://jp-tvbox-3566.taile8eadf.ts.net'5. 检查 8080 是否仍只监听本地回环
ss -ltnp | grep ':8080'示例输出:
LISTEN 0 4096 127.0.0.1:8080 0.0.0.0:* users:(("docker-proxy",pid=xxxx,fd=x))这说明服务没有直接暴露到公网。
6. 检查当前系统是否使用 docker-compose
有些机器支持 docker compose,有些是 docker-compose。
先检查:
command -v docker-compose如果能看到类似:
/usr/bin/docker-compose说明应该使用 docker-compose。
你也可以进一步验证:
docker-compose -f /opt/vaultwarden/docker-compose.yml ps五、安装 cloudflared
1. 添加 Cloudflare 官方软件源
mkdir -p /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg -o /usr/share/keyrings/cloudflare-main.gpg
chmod a+r /usr/share/keyrings/cloudflare-main.gpg
printf 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bookworm main\n' > /etc/apt/sources.list.d/cloudflared.list2. 更新软件源并安装
apt-get update
apt-get install -y cloudflared3. 验证安装成功
cloudflared --version示例输出:
cloudflared version 2026.3.0六、登录 Cloudflare
这一步会让服务器获得 Cloudflare Tunnel 的授权证书。
执行:
cloudflared tunnel login终端会输出一个链接,类似:
Please open the following URL and log in with your Cloudflare account:
https://dash.cloudflare.com/argotunnel?aud=...省略...浏览器里要做什么
- 用浏览器打开终端里给出的链接
- 登录 Cloudflare 账号
- 选择你的域名
douy.indevs.in - 点击授权
授权成功后,服务器终端通常会显示:
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem这表示授权成功。
七、创建 Tunnel
这里创建一个专门给 Vaultwarden 用的 Tunnel。
执行:
cloudflared tunnel create vaultwarden-3566示例输出:
Tunnel credentials written to /root/.cloudflared/74dd8243-b91c-4da8-b60c-d64bf6295a1c.json
Created tunnel vaultwarden-3566 with id 74dd8243-b91c-4da8-b60c-d64bf6295a1c请记下这个 Tunnel ID,例如:
74dd8243-b91c-4da8-b60c-d64bf6295a1c八、把子域名指向 Tunnel
执行:
cloudflared tunnel route dns vaultwarden-3566 3566.douy.indevs.in成功示例:
Added CNAME 3566.douy.indevs.in which will route to this tunnel你也可以查看 Tunnel 列表:
cloudflared tunnel list示例输出:
ID NAME CREATED CONNECTIONS
74dd8243-b91c-4da8-b60c-d64bf6295a1c vaultwarden-3566 2026-04-30T07:09:17Z九、编写 cloudflared 配置文件
创建配置目录:
install -d -m 755 /etc/cloudflared编辑配置文件:
nano /etc/cloudflared/config.yml填入以下内容:
tunnel: 74dd8243-b91c-4da8-b60c-d64bf6295a1c
credentials-file: /root/.cloudflared/74dd8243-b91c-4da8-b60c-d64bf6295a1c.json
ingress:
- hostname: 3566.douy.indevs.in
service: http://127.0.0.1:8080
- service: http_status:404说明:
tunnel:替换成你自己的 Tunnel IDcredentials-file:替换成你自己的 JSON 凭据文件名hostname:替换成你自己的 Vaultwarden 域名service:保持为http://127.0.0.1:8080
保存退出。
十、安装并启动 cloudflared 系统服务
执行:
cloudflared service install
systemctl enable --now cloudflared查看状态:
systemctl status cloudflared --no-pager正常示例:
Active: active (running)查看 Tunnel 连接详情:
cloudflared tunnel info vaultwarden-3566如果你看到多个已注册连接,说明 Tunnel 已经连上 Cloudflare 边缘。
十一、修改 Vaultwarden 的 DOMAIN
这一步很关键。
Vaultwarden 的 DOMAIN 必须改成正式使用的自定义域名,否则浏览器插件、Windows 客户端、安卓客户端可能出现同步、登录、WebSocket 或重定向问题。
1. 先备份 compose 文件
cp /opt/vaultwarden/docker-compose.yml /opt/vaultwarden/docker-compose.yml.bak-cloudflare2. 编辑 compose 文件
nano /opt/vaultwarden/docker-compose.yml找到这一段:
environment:
WEBSOCKET_ENABLED: 'true'
SIGNUPS_ALLOWED: 'false'
DOMAIN: 'https://jp-
---
> 注:本文涉及的服务器公网 IP / Tailnet / 局域网 IP 已脱敏,请替换为你自己的地址。
---
**相关**: [[00-索引-网络基建索引]] [[4.27 Bitwarden + Vaultwarden+ Tailscale]]