这是什么
Nextcloud 是一款开源的云存储与协作平台:支持桌面和移动端之间的文件同步、共享、日历、通讯录,并拥有涵盖办公文档、笔记和照片的应用生态。它是 Dropbox、Google Drive 和 iCloud 的主流自托管替代方案,所有数据都存储在你自己的服务器上。
为何选择离岸托管
在无需 KYC 的离岸 VPS 上,你的文件永远不会进入与你身份绑定的美国或欧盟大型云账户,而不限流量的带宽意味着大规模同步和共享媒体下载都不会产生额外的出口流量费用。使用加密货币付款并选择隐私友好地区,可以让个人文档的存储不留身份记录,并置于常见数据调取司法管辖区之外。
部署过程
一套可用的参考配置
将其复制到全新的 ChainVPS 实例中。替换占位符后即可启动。
## docker-compose.yml — Nextcloud + MariaDB + Redis
## Prereqs on Ubuntu 24.04:
## apt update && apt install -y docker.io docker-compose-v2
## Put this file in /opt/nextcloud/ and run: docker compose up -d
## Then front it with a TLS reverse proxy (Caddy/Nginx) on 443 -> 127.0.0.1:8080
services:
db:
image: mariadb:11
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MARIADB_ROOT_PASSWORD=CHANGE_ME_root
- MARIADB_DATABASE=nextcloud
- MARIADB_USER=nextcloud
- MARIADB_PASSWORD=CHANGE_ME_db
networks:
- nc
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --requirepass CHANGE_ME_redis
networks:
- nc
app:
image: nextcloud:30-apache
restart: unless-stopped
depends_on:
- db
- redis
ports:
- "127.0.0.1:8080:80" # bind to localhost; expose via reverse proxy TLS
volumes:
- nextcloud:/var/www/html # app + config + apps
- ./data:/var/www/html/data # user files (put on your big data volume)
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=CHANGE_ME_db
- REDIS_HOST=redis
- REDIS_HOST_PASSWORD=CHANGE_ME_redis
- NEXTCLOUD_ADMIN_USER=admin
- NEXTCLOUD_ADMIN_PASSWORD=CHANGE_ME_admin
- NEXTCLOUD_TRUSTED_DOMAINS=cloud.example.com
- OVERWRITEPROTOCOL=https # required behind a TLS proxy
networks:
- nc
volumes:
db:
nextcloud:
networks:
nc:
防火墙
需开放的端口
| 端口 | 协议 | 用途 |
|---|---|---|
| 443 | TCP | 通过你的 TLS 反向代理(Caddy/Nginx)提供 HTTPS 访问——这是唯一需要公开暴露的端口 |
| 80 | TCP | 用于 ACME/Let's Encrypt 验证的 HTTP,并重定向到 HTTPS |
| 8080 | TCP | Nextcloud 容器的 HTTP 端口,仅绑定到 127.0.0.1,由反向代理访问 |
| 3478 | TCP/UDP | 可选:用于 Nextcloud Talk 音视频通话的 TURN/coturn 服务 |
按需调配规格
您需要哪种套餐
VPS Small (2 vCPU / 4 GB RAM)
1-5 名用户,个人文件同步 + 日历/通讯录。随着资料库增长,可为数据目录添加 Storage 套餐存储卷。
VPS Pro (4 vCPU / 8 GB RAM)
10-30 名用户,频繁同步、预览生成,并使用 Collabora/OnlyOffice 编辑文档。搭配大容量 Storage 套餐数据卷使用。
Dedicated (8+ cores / 32 GB RAM) + Storage node
50+ 名用户,团队协作、Talk 视频通话,以及高强度的预览生成。将用户数据迁移到专用 Storage 服务器或 S3 兼容的外部存储。
最佳地区: 由于 Nextcloud 存放的是个人文档,建议选择隐私友好地区——NL、CH、RO、IS、MD 或 LU。瑞士和冰岛拥有强有力的宪法级数据保护,且不属于 14-Eyes 核心成员;摩尔多瓦和罗马尼亚也不受欧盟数据共享压力约束。请选择离你的用户最近的区域,既能保持同步低延迟,又能留在隐私友好的司法管辖区内。
全面加固安全
安全加固清单
- 切勿直接暴露容器端口——将 Nextcloud 绑定到 127.0.0.1:8080,并在 Caddy 或 Nginx 反向代理上终止 TLS,强制启用带 HSTS 的 HTTPS。设置 OVERWRITEPROTOCOL=https 以确保生成的 URL 正确。
- 将 NEXTCLOUD_TRUSTED_DOMAINS 锁定为你的真实主机名,为管理员/数据库/redis 使用足够长的随机密码,并在首次启动后运行 'occ config:system:set trusted_domains',而不要留有通配符。
- 为外部存储启用服务端加密,并为所有账户开启防暴力破解保护和 2FA(TOTP);让登录页面受到监视 Nextcloud 日志的 fail2ban 保护。
- 将 /data 目录迁移到单独的大容量存储卷(ChainVPS Storage)上,并定期通过 'occ maintenance:mode' 对数据库转储和数据目录进行备份;定期测试恢复流程。
- 通过系统 cron 每 5 分钟调用一次 'docker compose exec -u www-data app php cron.php' 来运行推荐的后台定时任务,而不要使用 AJAX cron,并添加内存缓存(上文已配置 Redis)以消除管理概览中的警告。
问题
主机服务 Nextcloud — 常见问题
我需要域名吗?
实际上是需要的。Nextcloud 需要一个主机名才能签发有效的 TLS 证书,也便于移动端/桌面同步客户端安全连接。请将 A 记录指向你的 VPS IP,并将其添加到 NEXTCLOUD_TRUSTED_DOMAINS 中。
我应该选择哪种 ChainVPS 产品——VPS 还是 Storage?
先用 VPS 运行应用本身,再搭配或附加 Storage 套餐来存放实际的文件数据。Nextcloud 对算力的需求不大,但非常吃磁盘空间,因此真正需要权衡的是廉价大容量存储的规格选择。
我可以把文件数据存放在主磁盘之外吗?
可以。可以在 /data 路径挂载单独的 Storage 存储卷,或配置 S3 兼容的外部存储。这样可以让容量的扩展独立于 VPS,并简化备份流程。
不限流量的带宽对 Nextcloud 真的有用吗?
非常有用。首次同步、大型媒体库以及多设备使用都会产生大量数据传输。不限流量意味着大批量的上传和下载不会像大型云服务商那样产生意外的出口流量账单。
我该如何保持它的更新和安全?
固定一个主版本镜像标签(例如 nextcloud:30-apache),升级前先做快照,然后每次只升一个大版本并运行 'occ upgrade'。再结合 2FA、fail2ban 和异地备份,就能建立一个稳固的安全基线。
使用加密货币付款能保证我的存储保持隐私吗?
支付本身无需 KYC,账户也不会绑定任何身份信息,但端到端的隐私还取决于你自己的配置:选择隐私友好地区、启用加密,并掌握好自己的管理员凭据。ChainVPS 绝不会要求提供身份证件。