Cloudflare Tunnel 遇到的问题与解决方案

Docker 运行 Cloudflare Tunnel 遇到的问题与解决方案

在服务器上使用 cloudflare/cloudflared 镜像时,可能会遇到一些常见问题。这里整理了完整的解决步骤,方便以后参考。


1. 前台运行导致 SSH 退出后隧道断开

直接运行下面命令:

BASH
1
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <你的token>

问题:进程是前台运行的,SSH 一旦断开,tunnel 也会中断


2. 解决方法:后台运行 + 自动重启

推荐命令:

BASH
1
2
sudo docker run -d --restart=always --name cloudflared \
cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <你的token>

说明:

  • -d → 后台运行,不依赖 SSH 会话
  • --restart=always → 系统重启后自动拉起
  • --name cloudflared → 容器命名,方便管理

3. 权限问题:permission denied while trying to connect to the Docker daemon socket

报错信息:

LIVECODESERVER
1
permission denied while trying to connect to the Docker daemon socket

原因:当前用户没有操作 Docker 的权限。

解决方案 1:临时用 sudo

BASH
1
sudo docker ps

解决方案 2:永久添加用户到 docker

BASH
1
2
sudo usermod -aG docker <你的用户名>
newgrp docker

退出并重新登录 SSH 后即可生效。


4. 常用命令

  • 查看日志:
    BASH
    1
    docker logs -f cloudflared
  • 停止容器:
    BASH
    1
    docker stop cloudflared
  • 重启容器:
    BASH
    1
    docker restart cloudflared

5. 注意事项

  1. **不要带 < >**,那只是占位符,实际使用时需要替换为真实的 token
  2. 推荐写一个脚本 start-cloudflared.sh 保存命令,执行时更方便:
    BASH
    1
    2
    3
    4
    5
    #!/bin/bash
    docker stop cloudflared 2>/dev/null
    docker rm cloudflared 2>/dev/null
    sudo docker run -d --restart=always --name cloudflared \
    cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <你的token>

✅ 总结

  • SSH 退出就断开 → 因为是前台运行,解决方法是 -d 后台运行。
  • permission denied → 因为用户没权限操作 Docker,可以用 sudo 或把用户加入 docker 组。
  • 建议写脚本或加 --restart=always,确保隧道稳定运行。