如果你的目标是:
✔ 服务器没有公网 IP
✔ Nextcloud 通过 Cloudflare Tunnel 对外访问
✔ 使用 Docker(包括 AIO)
✔ 自动 HTTPS,不需要反向代理、无需暴露端口
那下面是目前最稳、最清晰、最小可运行的 Cloudflare Tunnel + Docker Nextcloud 部署方案。
我分成两种模式:
(A) Nextcloud 官方 AIO(你正在用的)
(B) 自己 docker-compose 部署(如果你需要)
先从你最关心的 Cloudflare + AIO 开始。
⸻
🟦 方案 A:Cloudflare Tunnel 访问 Nextcloud AIO(推荐)
AIO 默认使用 8080 → 8443 → 内置代理 → Nextcloud
Cloudflare Tunnel 只需连到 AIO 的 8080。
✨ 总架构
公网用户 → Cloudflare → Tunnel (cloudflared)
→ 你的服务器 → http://nextcloud-aio-mastercontainer:8080
⸻
1️⃣ 创建 Cloudflare Tunnel(Zero Trust 面板)
在 Cloudflare:
Zero Trust → Networks → Tunnels → Create Tunnel → Cloudflared
命名:nextcloud
Cloudflare 会给你一个 docker 命令,类似:
docker run -d --name cloudflared --restart unless-stopped
-v /root/.cloudflared:/etc/cloudflared
cloudflare/cloudflared:latest tunnel run
复制那个命令,到你的服务器运行。
⸻
2️⃣ 添加 Public Hostname(核心步骤)
进入 Tunnel → Public Hostnames → Add
填写:
Subdomain: cloud
Domain: onetwothree.com
Service Type: HTTP
URL: http://nextcloud-aio-mastercontainer:8080
⚠️ 注意:URL 必须是 http:// ,不能 https
因为:
• AIO 内部 8080 是 HTTP
• 8443 是证书初始化界面,不用暴露给外网
• Cloudflare 外层负责 HTTPS
点击 Save。
⸻
3️⃣ DNS 会自动创建 CNAME(无需自己加)
Cloudflare 会自动创建:
cloud CNAME .cfargotunnel.com (Proxied)
这是正确的,不要改。
⸻
4️⃣ 启动 Nextcloud AIO
你的 AIO 启动命令是:
sudo docker run
--init
--sig-proxy=false
--name nextcloud-aio-mastercontainer
--restart always
--publish 8080:8080
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config
--volume /var/run/docker.sock:/var/run/docker.sock:ro
ghcr.io/nextcloud-releases/all-in-one:latest
⚠️ 不要暴露 8443,Cloudflare 不需要用。
只保留 8080 即可,或者:
--publish 8080:8080
⸻
5️⃣ 通过你的域名访问 Nextcloud
直接访问:
AIO 会自动检测 domain,并配置反向代理。
⸻
6️⃣ 解决 AIO 里的 domain 提示(DNS config is not set)
你之前遇到:
DNS config is not set for this domain
这是因为你使用了 Tailscale 或本地访问,而不是 真实 DNS 解析的域名。
现在 Cloudflare 已经自动创建:
cloud.onetwothree.com → .cfargotunnel.com
AIO 就能通过 DNS 查询到 IP(通过 Cloudflare),这个错误会消失。
⸻
🟩 方案 A 总结(非常稳)
项目 状态
服务器无公网 IP 支持
不暴露任何端口 支持
自动 HTTPS Cloudflare 处理
支持 Docker AIO 完全支持
Nextcloud domain 检查 可通过
你需要做的就 3 步:
-
创建 Cloudflare Tunnel 并运行 cloudflared
-
Public Hostname → cloud → http://nextcloud-aio-mastercontainer:8080
-
启动 AIO(只暴露 8080)
⸻
🟧 如果你需要我帮你生成 docker-compose(可选)
我可以提供:
✔ cloudflared-tunnel docker-compose
✔ nextcloud-aio docker-compose
✔ Cloudflare DNS 自动化模式
✔ 一键重启脚本
你只需告诉我:
📌 你的域名:onetwothree.com(已知)
📌 你要的子域名:默认是 cloud
📌 是否还想用 ssh / nas 子域名?
⸻
需要我给你生成完整 docker-compose + 配置文件吗?