Back to Posts
部署nextcloud server
cloud
解决方案: 技术栈:ubuntu24.02 + AIO + Cloudflare + Reverse Proxy Reverse Proxy用Cloudflare Tunnel实现 硬件要求:
- CPU数:4
- 运行内存:6 GB
- 存储:50GB
- 物理服务器地址:墨尔本
访问设备位置 | 速度 | ping bing.com速度 |
---|---|---|
墨尔本 | 5-6ms | 5ms |
中国 | 233ms | 55ms |
✅ 1.部署服务器(假设你已经完成)
- 建议使用 Debian / Ubuntu LTS 系统。
- 开启端口:
80
和443
(HTTP/HTTPS 给 Cloudflare)3478
(Nextcloud Talk 使用)8080
(Nextcloud AIO 管理界面,仅本地访问)11000
(Nextcloud 容器的 Apache 后端端口,供反向代理用)
✅ 3. 配置 Cloudflare Tunnel(推荐)
Cloudflare Tunnel 相当于一个反向代理,不需要公网 IP,也不用自己申请 HTTPS 证书。
安装 Cloudflare Tunnel:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
cloudflared --version
登录 Cloudflare 帐号并创建 tunnel:
cloudflared tunnel login
会生成以下内容:
ytia0059@instance-20250410-024649:~$ cloudflared tunnel login
Please open the following URL and log in with your Cloudflare account:
https://dash.cloudflare.com/argotunnel?aud=&callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FArj0rQZlAQOpyVXNSiVBF1NdSxwvyZ0SG81O6o0-tT8%3D
Leave cloudflared running to download the cert automatically.
2025-04-10T02:54:52Z INF Waiting for login...
2025-04-10T02:54:53Z INF You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/home/ytia0059/.cloudflared/cert.pem
点击其中的网址,进入cloudflare,会选择自己的域名。
cloudflared tunnel create nextcloud-tunnel
会生成以下内容:
Tunnel credentials written to /home/ytia0059/.cloudflared/e9fb1288-5c4e-4afe-9602-e37b76190b53.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.
Created tunnel nextcloud-tunnel with id e9fb1288-5c4e-4afe-9602-e37b76190b53
其中的id很重要,以及生成的json文件地址
创建 tunnel 配置文件:
sudo mkdir -p /etc/cloudflared/
sudo nano /etc/cloudflared/config.yml
内容示例(替换为你的域名):
tunnel: 刚才生成的id
credentials-file: /root/.cloudflared/xxxxxxxxx.json //刚才生成的json文件地址
ingress:
- hostname: nextcloud.yourdomain.com //自己在cloudflare配置的子域名
service: http://localhost:11000
- service: http_status:404
启动并设置为开机启动:
cloudflared tunnel run nextcloud-tunnel
sudo cloudflared service install
✅ 4. 配置 Cloudflare DNS
前往 Cloudflare 网站 → DNS 设置 → 添加 A 记录:
- 类型:
CNAME
- 名称:
nextcloud
- 内容:
nextcloud-tunnel-id.cfargotunnel.com
(自动填充的 Tunnel 地址) - 代理状态:已启用 Cloudflare 代理(小橙云)
✅ 2. 安装 Docker 并启动 Nextcloud AIO
确保系统已经安装 Docker,运行以下命令:
sudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8080:8080 \
--env APACHE_PORT=11000 \
--env APACHE_IP_BINDING=127.0.0.1 \
--env SKIP_DOMAIN_VALIDATION=true \
--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
⚠️ 说明:
APACHE_PORT=11000
:Apache 容器监听的端口(供反向代理用)APACHE_IP_BINDING=127.0.0.1
:Apache 只监听本地,增强安全SKIP_DOMAIN_VALIDATION=true
:Cloudflare Tunnel 下验证会失败,必须跳过
✅ 5. 打开 AIO 管理页面设置域名
访问:
https://<你的服务器公网IP>:8080
忽略 TLS 警告,进入页面后:
- 填写你的域名
nextcloud.yourdomain.com
- 点击验证(由于你跳过了验证,应该能继续)
✅ 6. 完成安装后访问
现在你应该可以直接通过:
https://nextcloud.yourdomain.com
访问你的 Nextcloud 服务了!