cloudflared
Office Web - Source - Docker Image - Document
cloudflared 是 Cloudflare 隧道客户端。通过建立安全的仅出站(Outbound-only)连接,将 Cloudflare 全球网络的流量代理到你的本地或私有起源节点,无需公网 IP 和开放入站端口。
快速入门教程
1. 准备工作与获取 Token
- 访问 Cloudflare Zero Trust 控制台。
- 导航至 Networks > Tunnels,点击 Add a tunnel。
- 选择 Cloudflare Managed(远程托管模式),输入隧道名称。
- 在随后生成的安装命令中复制对应的
token字符串(以eyJh...开头)。
2. 配置环境变量
在当前目录下创建并配置 .env 文件:
bash
# 时区
TZ=Asia/Shanghai
# 隧道密钥 Token(必须)
TUNNEL_TOKEN=eyJhIjoiXXXXXX...
# 日志级别:debug, info (default), warn, error, fatal
TUNNEL_LOGLEVEL=info
# 禁用自动更新(容器环境建议设置为 true)
NO_AUTOUPDATE=true
# 可选:日志保存文件
# TUNNEL_LOGFILE=/var/log/cloudflared.log3. 使用 Docker Compose 启动
编辑或使用自带的 compose.yaml:
yaml
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: ["tunnel", "run"]
hostname: cloudflared
env_file:
- path: ./.env
required: false启动隧道服务:
bash
# 启动容器
docker compose up -d
# 查看运行状态与连接日志
docker compose logs -f cloudflared4. Systemd 服务管理(裸机/虚拟机场景)
若不在 Docker 中运行,可通过 systemd 进行服务托管:
bash
# 安装服务(自动创建并启用 systemd cloudflared.service)
cloudflared service install <TOKEN>
# 卸载服务(systemd cloudflared.service)
cloudflared service uninstall常用管理命令:
bash
sudo systemctl start cloudflared # 启动
sudo systemctl restart cloudflared # 重启
sudo systemctl status cloudflared # 状态5. 添加公开服务路由(Dashboard 方式)
在 Zero Trust 控制台的 Tunnel 详情中切换到 Public Hostname,添加路由规则:
- Public Hostname:填写域名与子域(例如
app.example.com)。 - Service Type:选择
HTTP或HTTPS。 - URL:输入本地服务地址(如内网 IP
192.168.1.100:8080,或同 Docker 网络下的服务名web:80)。 - 保存后即可通过
https://app.example.com安全访问本地服务。
6. 安全访问 SSH(Dashboard 配置 + 命令行登录)
- Dashboard 配置:在 Public Hostname 中添加一条记录,Service Type 选择
SSH,URL 填写localhost:22(域名例如ssh.example.com)。 - 命令行直接登录:客户端本地安装
cloudflared后,执行以下命令直接连接:
bash
# 命令行登录
ssh -o ProxyCommand="/usr/local/bin/cloudflared access ssh --hostname %h" user@ssh.example.com- SSH 配置文件方式(推荐):在客户端
~/.ssh/config中配置别名:
text
Host myserver
HostName ssh.example.com
User root
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h配置完成后,即可通过简写命令一键登录:
bash
ssh myserver进阶构建(使用 alpine 作为基础镜像)
如果希望使用更加轻量的 Alpine 基础镜像构建:
dockerfile
FROM cloudflare/cloudflared:latest AS builder
FROM alpine:latest
LABEL org.opencontainers.image.source="https://github.com/cloudflare/cloudflared"
COPY --from=builder /usr/local/bin/cloudflared /usr/local/bin/cloudflared
ENTRYPOINT ["cloudflared", "--no-autoupdate"]
CMD ["version"]执行构建命令:
bash
docker build -t cloudflared .