在 DigitalOcean 上自托管 Nextcloud 2026 — 完整指南
Nextcloud 是一个自托管平台,用于存储文件、日历和文档,让用户完全掌控自己的数据,而不是依赖大型云服务提供商。DigitalOcean 在 Marketplace 上提供了一个一键应用程序,可以在几分钟内在 Droplet 上安装 Nextcloud,无需从头设置 LAMP/LEMP 堆栈。本指南将指导你选择合适的 Droplet 规格、配置 SSL 和域名、通过 Volumes 扩展存储,以及遵循长期维护最佳实践。
目录
什么是 Nextcloud?它能替代 Google Drive 吗?
Nextcloud 是一个开源软件,用于构建个人文件存储、同步和共享系统。它的工作方式与 Google Drive 或 Dropbox 类似,但有一个关键区别:用户拥有服务器和所有数据。无需将你的信息托付给大型提供商。除了基本的文件同步之外,Nextcloud 还通过其"应用程序"系统提供免费的附加模块,例如日历、联系人、协作文档编辑(通过 Collabora Online 或 OnlyOffice)、视频通话和聊天(Nextcloud Talk)以及看板风格的项目管理(Deck)。 常见的问题是 Nextcloud 是否真的能替代 Google Drive。答案是"在许多情况下,是的"——特别是如果你的主要目标是文件存储、跨设备同步和与他人分享链接,这些 Nextcloud 都能完全做到,同时让你掌控数据驻留。它适合具有严格数据隐私要求的团队或组织,以及不希望其文件被第三方算法扫描的用户。但是,Nextcloud 默认不提供 Google Docs 提供的流畅实时协作编辑。你需要安装 Collabora Online 或 OnlyOffice 等额外应用程序,这会消耗更多服务器资源。 另一个关键区别是责任。当你自托管时,你需要承担正常运行时间、安全补丁、备份和扩展的责任。Google Drive 为你完全处理基础设施。在从 Google Drive 切换到 Nextcloud 之前,评估你的组织或团队是否有时间和知识持续维护系统。如果有,Nextcloud 在 DigitalOcean 上是值得的,因为你可以精确控制每月成本,并且不会面临 SaaS 提供商施加的存储配额限制。
- 核心功能:文件同步、日历、联系人、Talk(视频通话)、Deck(看板)
- 通过 Collabora Online 或 OnlyOffice 应用程序添加协作编辑
- 优势:你掌控你的数据;没有第三方文件扫描
- 注意事项:你需要完全处理正常运行时间、补丁和备份
通过 Marketplace 一键应用程序部署
让我们意外的一点是:DigitalOcean Marketplace 包含 Nextcloud 作为一键应用程序,可以在 Droplet 上即时启动,无需手动设置 LAMP/LEMP。从创建 > Droplets 开始,然后选择 Marketplace 选项卡,搜索"Nextcloud",并选择 DigitalOcean 准备的镜像(通常预配置了 Ubuntu、Apache/Nginx、MySQL 和 PHP)。 选择合适的 Droplet 规格直接影响你的 Nextcloud 体验,因为当多个用户同时访问时或当你启用 Collabora Online 等应用程序时,该应用程序会消耗大量 RAM。根据当前价格,最适合单独用户或测试的基本(共享 CPU)计划是 2 GiB RAM/1 vCPU/50GB SSD,每月 $12。对于小团队或生产用途,我们建议至少 4 GiB RAM/2 vCPU/80GB SSD,每月 $24,因为双核更好地处理缩略图生成和后台任务。如果你计划在同一台机器上运行 Collabora Online,请考虑 8 GiB RAM/4 vCPU/160GB SSD 计划,每月 $48 或更高。 对于泰国用户,我们建议 sgp1(新加坡)区域,因为它是全球 15 个选项中最接近的 DigitalOcean 数据中心;班加罗尔(blr1)是第二选择。选择你的区域后,添加 SSH 密钥以确保安全性,而不是使用密码登录。点击创建 Droplet,系统将在 1-2 分钟内自动安装 Nextcloud。准备好后,在浏览器中打开 Droplet 的 IP 地址以访问设置向导,该向导提示你创建管理员帐户并选择数据库(包括的 MySQL 或单独的托管数据库)。 注意:上述价格反映 2026 年 7 月的费率。在做出决定之前,请始终在 digitalocean.com/pricing 上验证当前价格。
- 推荐计划:单独用户 2GiB/1vCPU/50GB = $12/月,小团队 4GiB/2vCPU/80GB = $24/月
- 同时运行 Collabora Online 至少需要 8GiB/4vCPU/160GB = $48/月
- 最接近泰国的区域:sgp1(新加坡),然后是 blr1(班加罗尔)
- 在创建 Droplet 之前配置 SSH 密钥以确保安全性而不是密码登录
设置 SSL 和域名
安装 Nextcloud 后,在生产使用前始终配置域名和 SSL。Nextcloud 的同步客户端和移动应用程序需要有效的 HTTPS 连接;否则,同步失败或出现安全警告。
首先,将你的域名或子域名的 DNS A 记录(例如 cloud.yourdomain.com)指向你的 Droplet 的 IP。如果你想要一个即使在销毁和重新创建 Droplet 后仍然保留的 IP,请使用 DigitalOcean 的预留 IP,只要它连接到活跃的 Droplet,就是免费的。在不重新分配的情况下分离它会产生 $5/月的费用。
正确配置 DNS 后,DigitalOcean Nextcloud Marketplace 镜像通常包含一个脚本,可以通过 Let's Encrypt 自动启用 HTTPS,例如 sudo nextcloud.enable-https lets-encrypt(对于 snap 包),它请求证书并自动设置 HTTP 到 HTTPS 的重定向。对于标准 Apache 安装,请改用 certbot --apache -d cloud.yourdomain.com。Let's Encrypt 证书通过 certbot 安装的 cron 作业每 90 天自动更新一次。
另一个经常被忽视的步骤是将你的新域名添加到 Nextcloud 的"受信域名"列表。否则,系统将拒绝从未注册的域名访问。通过 sudo -u www-data php occ config:system:set trusted_domains 1 --value=cloud.yourdomain.com 添加它,或直接编辑 config/config.php 将域名添加到 trusted_domains 数组。此外,一旦确认 SSL 工作正常,启用 HSTS 标头并禁用纯 HTTP 访问以防止降级攻击。
- 将 DNS A 记录指向 Droplet IP 或预留 IP(当附加到活跃 Droplet 时免费)
- 通过 Let's Encrypt 请求免费证书:
certbot --apache -d yourdomain.com或nextcloud.enable-https lets-encrypt - 通过
occ config:system:set将新域名添加到 trusted_domains
通过 Volumes 扩展存储
Droplet SSD 大小受到你选择的计划的限制。例如,4GiB RAM 计划仅包含 80GB SSD,这可能不足以满足许多用户或随时间推移的大文件。要在不升级到更昂贵的 Droplet 的情况下扩展存储,请添加块存储卷——一个独立的磁盘,连接到你的 Droplet 并独立于 RAM/CPU 进行扩展。
Volume 定价为每月 $0.10/GiB;例如,100GiB = $10/月,500GiB = $50/月,或 1,000GiB = $100/月。要附加一个,请转到控制面板 > Volumes > 创建 Volume,设置大小,确保区域与你的 Droplet 匹配,然后选择要附加的 Droplet。创建后,通过 SSH 进入你的 Droplet 并使用 DigitalOcean 显示的命令挂载卷,例如 mkfs.ext4 -F /dev/disk/by-id/scsi-0DO_Volume_volume-name 后跟 mount -o discard,defaults,noatime /dev/disk/by-id/scsi-0DO_Volume_volume-name /mnt/volume-name,并在 /etc/fstab 中添加条目以在重启时自动挂载。
挂载后,你有两种主要方法:(1)通过编辑 config.php 的 datadirectory 值并将旧数据复制到新位置,将 Nextcloud 的整个数据目录移动到新卷,或(2)通过管理员 > 外部存储选择"本地"并指向挂载的路径,将卷添加为外部存储。选项 2 适合于你想要为特定用户组分离文件存储与主数据目录的情况。
定期创建 Volume 快照进行文件备份;它们每月每 GiB 的费用为 $0.06——比扩展卷本身便宜,非常适合在不过度花费的情况下维护多个历史备份。
- Volume 定价:$0.10/GiB/月;例如,100GiB=$10、500GiB=$50、1000GiB=$100
- 通过
mkfs.ext4附加和挂载,并添加到/etc/fstab以实现自动挂载 - 用作新数据目录或通过管理员面板添加为外部存储
- Volume 快照每月每 GiB 的费用为 $0.06——非常适合多版本文件备份
与移动和桌面应用程序同步
Nextcloud 通过 Windows、macOS、Linux、iOS 和 Android 上的官方应用程序支持文件同步,提供与 Google Drive 或 Dropbox 类似的体验。从官方网站下载 Nextcloud Desktop Client,安装它,输入你的服务器 URL(例如 https://cloud.yourdomain.com)加凭据,然后选择本地文件夹进行同步并配置单向或双向同步。
桌面应用程序支持虚拟文件(在某些平台上),它们将所有文件显示为占位符,直到你访问它们才下载,节省了具有大型服务器档案的用户的本地磁盘空间。iOS 和 Android 的移动应用程序支持照片和视频的自动上传,使其成为在手动完成时的强大 Google Photos 替代品。
除了官方应用程序外,Nextcloud 还支持标准 WebDAV 协议,允许你通过其他文件管理器连接——Windows 资源管理器(映射网络驱动器)、macOS Finder(连接到服务器)或具有 WebDAV 支持的移动文件应用程序——无需 Nextcloud 应用程序。WebDAV 连接 URL 通常看起来像 https://cloud.yourdomain.com/remote.php/dav/files/USERNAME/
对于需要细粒度同步控制的团队,Nextcloud 提供选择性同步以仅下载特定文件夹,以及带宽限制以限制上传/下载速度,使其他网络流量不会受到影响。
- 官方应用程序可用于 Windows/macOS/Linux/iOS/Android;通过服务器 URL + 凭据连接
- 虚拟文件(某些平台)显示为占位符,在访问之前不消耗本地磁盘空间
- 移动应用程序支持相机照片/视频的自动上传
何时使用此设置(真实用例)
在 DigitalOcean 上自托管 Nextcloud 在某些场景中比其他场景更合适。了解哪些用例适合可以帮助你决定是否投入时间和预算来使用这种方法。 理想的场景包括具有数据主权或合规性要求的中小型团队或组织——例如,需要仅在东南亚存储数据。只需选择 DigitalOcean 的 sgp1 区域。另一个适合是具有 Linux 知识的自由职业者或开发人员,他们希望通过 Volumes 按使用量付费,而不是固定的 SaaS 订阅,从而获得无限存储。如果你想要整合多个服务——用 Nextcloud Talk 代替 Zoom、用 Deck 代替 Trello 以及一个系统中的文件存储,减少每个工具的 SaaS 订阅,也可以考虑。 不适合的情况包括寻求最大便利性而不想进行服务器管理的日常用户。自托管带来了责任:补丁、监控正常运行时间和故障排除(与 Google Drive 不同,Google Drive 不要求你做任何事情)。另一个不匹配的是严重依赖流畅实时协作编辑(如 Google Docs/Sheets)的团队。虽然 Nextcloud 与 Collabora Online 或 OnlyOffice 集成,但体验和稳定性与本地云编辑器不匹配,支持多用户同时编辑需要大幅增加服务器资源。 总之,DigitalOcean 上的 Nextcloud 适合那些重视数据控制和长期成本节省而不是即时便利,并具备基本 Linux 服务器管理知识的人。
- 理想用于:需要数据主权的组织;选择区域以自己存储数据
- 理想用于:具有 Linux 知识的自由职业者/开发人员,希望按使用量付费的存储
- 不适合:寻求最大便利性而不想进行服务器维护的用户
- 不适合:需要重度实时协作编辑(如 Google Docs)的团队
常见错误及其修复方法
最常见的错误是"通过不受信任的域名访问",当你通过尚未添加到 config.php 的 trusted_domains 的域名或 IP 访问 Nextcloud 时触发。通过前面说明的 occ 命令添加域名来修复它。
另一个常见问题是后台作业运行不完整或速度很慢——缩略图未生成、通知延迟、文件预览不显示。原因通常源于对后台作业使用"AJAX"模式,该模式仅在用户查看网页时运行。通过设置系统 crontab 以每 5 分钟调用 php -f /var/www/nextcloud/cron.php,然后配置 Nextcloud 的管理员 > 基本设置使用 Cron 而不是 AJAX,切换到"Cron"。
内存问题也会出现,特别是在较小的 Droplet(1-2GB RAM)上进行大文件上传或批量缩略图处理时。你可能会遇到"PHP 内存限制"错误或系统挂起。作为第一步,在 php.ini 中将 memory_limit 增加到至少 512M。如果问题仍然存在,考虑升级到具有更多 RAM 的计划,因为内存不足总是一个瓶颈。
当用户上传超过 Droplet 的 SSD 而没有通知时,会发生磁盘满问题,迫使 Nextcloud 拒绝新上传,甚至防止网页加载。通过在管理员 > 用户中设置每个用户的配额,并配置 DigitalOcean 的免费监控在磁盘使用情况接近容量时提醒你,来防止这种情况。在用尽空间之前提前计划 Volume 扩展。
最后,SSL 证书到期发生在 certbot 的自动更新失败时——通常是因为其 cron 作业被删除或防火墙阻止端口 80,防止在续订期间进行域名验证。定期运行 certbot renew --dry-run 以确认自动更新功能。
- 不受信任的域名错误:通过
occ config:system:set将域名添加到 trusted_domains - 不完整的后台作业:通过 crontab 调用 cron.php 每 5 分钟从 AJAX 切换到 Cron
- 小计划上的内存限制:将
memory_limit增加到 512M 或更高,或升级 RAM
最佳实践
长期可靠且安全地维护 Nextcloud 需要从一开始就遵循最佳实践,而不是等到出现问题。
在安全方面,启用 DigitalOcean 的云防火墙(免费,无额外费用)以限制访问仅限必要的端口——22(SSH)、80/443(HTTP/HTTPS)——并关闭所有其他端口。切换到 SSH 密钥身份验证而不是密码登录,并禁用直接 root SSH 访问。对于 Nextcloud 本身,至少在管理员帐户上启用双因子身份验证(2FA),并确保 Nextcloud 的内置暴力破解保护处于活动状态。
对于缓存和性能,将 Redis 或 APCu 安装为 Nextcloud 的内存缓存层。这减少了数据库负载,大大加快了页面渲染速度,特别是在有多个并发用户时。通过 config.php 进行配置,将 memcache.local 和 memcache.locking 设置为指向你的 Redis 或 APCu 安装。
在备份方面,实施两层方案:Droplet 快照($0.06/GiB/月)用于包括操作系统和配置的完整系统备份,以及 Volume 快照($0.06/GiB/月)仅用于用户数据文件。定期安排自动快照——每天或每周取决于数据重要性——并每年至少执行一次测试恢复,以确认备份在需要时工作。
通过管理员 > 概览或 occ upgrade 定期保持 Nextcloud 更新,因为每个版本都包含重要的安全补丁。在升级前始终快照或备份以防止安装的应用程序的主要版本兼容性问题。
最后,审计成本,通过检查分离的预留 IP(不必要地花费 $5/月)和审查 Volume 大小以确认它们对实际存储的数据是否合理。
- 启用云防火墙(免费)以限制端口 22/80/443;使用 SSH 密钥而不是密码
- 将 Redis/APCu 安装为内存缓存以减少数据库负载并提升速度
- 两层备份:Droplet 快照 + Volume 快照(每月 $0.06/GiB)进行年度恢复测试
- 通过
occ upgrade定期更新 Nextcloud 但在每次更新前快照