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 系统。
  • 开启端口:
    • 80443(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 服务了!