用 Nextcloud 搭建您自己的云
Nextcloud 是把文件、日历和联系人保存在您自己服务器上的云端软件。官方管理手册要求每个 PHP 进程至少 128 MB 内存,建议 512 MB。真正起决定作用的,是您的文件将占用的磁盘空间,以及同时使用的人数。
本文介绍官方要求、性能设置、备份,以及头几天该做什么。
用 Nextcloud 做什么?
您可以在电脑和手机之间同步文件,用分享链接把文件发给别人,并把日历和联系人列表保存在自己的服务器上。电脑和手机应用只需要您的服务器地址。新功能以应用的形式提供,每个应用都会给服务器增加一些内存和 CPU 负载。
官方要求
| 项目 | 官方管理手册的说法 |
|---|---|
| 内存 | 每个进程至少 128 MB,建议 512 MB。内置更新程序至少需要 256 MB。 |
| 数据库 | 推荐 MariaDB 和 PostgreSQL,MySQL 也在列。SQLite 仅用于测试和非常小的安装。MySQL 和 MariaDB 需要 InnoDB。 |
| Web 服务器 | 推荐使用带 PHP-FPM 或 mod_php 的 Apache 2.4。也支持带 PHP-FPM 的 Nginx。 |
| PHP | 支持的版本随 Nextcloud 版本而变,请查看手册中的最新对照表。 |
| 缓存 | 推荐使用 APCu 加 Redis(或 Valkey)。它不是必需的,但能明显提升性能。 |
| 后台任务 | 推荐使用 Cron,每 5 分钟运行一次。 |
“每个进程的内存”是什么意思?
Nextcloud 运行在 PHP 上,每个同时发生的请求都是一个独立的 PHP 进程。手册中的内存数字是针对每个进程的。PHP-FPM 的默认进程池允许同时处理 5 个请求(pm.max_children = 5)。手册建议根据您的 RAM 来计算这个值,并假定每个 worker 占用 50-100 MB。粗略的算法是:把分给 PHP 的 RAM 除以每个 worker 的内存。如果把这个值设得过高,系统会陷入 swap,手册认为这比让请求排队更糟。
磁盘:您的文件存放在服务器上
在 Nextcloud 中,文件存储在服务器的磁盘上。随着照片和文档归档越来越大,限制往往先出现在磁盘上,然后才是 RAM。选择服务器时请看磁盘一栏。在 Seturack,升级服务器配置时磁盘也会增大,而降级不会缩小磁盘。增大后的磁盘不会缩回去,请记住这一点。
手动安装概要
- 准备服务器:Ubuntu、带 PHP-FPM 的 Apache 或 Nginx,以及 MariaDB 或 PostgreSQL。
- 把域名指向服务器并获取 HTTPS 证书。第一步见如何绑定您自己的域名。
- 用网页安装程序或命令行安装 Nextcloud。
- 把后台任务改为 cron。打开 Web 服务器用户的 crontab:
crontab -u www-data -e然后添加这一行:*/5 * * * * php -f /var/www/nextcloud/cron.php - 在管理设置中,把后台任务模式设为 Cron。
- 添加 APCu 和 Redis 缓存。
- 设置邮件服务器,用于密码重置和通知。
- 制定备份计划,并试一次恢复。
备份
Nextcloud 文档要求备份 config 文件夹、data 文件夹、theme 文件夹和数据库。如果有自定义的 apps 文件夹,也要一起备份。为了得到一致的备份,请先开启维护模式,完成后再关闭:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
命令中的路径取决于您把 Nextcloud 安装在哪里。Seturack 每晚备份您的服务器,并保留最近 7 天。请再配合数据库转储和文件复制,并且在服务器之外也保存一份重要数据的副本。
什么时候该扩容服务器?
- 磁盘快满了:用
df -h检查。因为您的文件都在磁盘上,这通常是最先碰到的限制。 - 系统在用 swap:如果
free -h输出中的 swap 一行在不断被占满,说明 RAM 不够。 - 页面打开很慢或用户在排队:根据 RAM 提高 PHP worker 的数量。如果 RAM 撑不住,就升级服务器。
升级不会删除服务器,您的 IP 地址和数据保持不变。
常见错误
- 用 SQLite 起步。手册认为它只适合测试和非常小的安装,以后再换数据库很麻烦。
- 让后台任务停留在默认的 AJAX 模式。手册把它描述为最不可靠的选项,所以请改用 Cron。
- 跳过缓存。它不是必需的,但按手册所说能明显提升性能。
- 从不测试备份。无法恢复的备份毫无用处。
安全
- 不要用管理员账户做日常工作。请为团队创建单独的账户。
- 开启其中一款双因素认证应用。
- 保持 Nextcloud 和 PHP 为最新版本。安装完成后,更新由您负责。
- 只通过 HTTPS 提供网站服务。
Seturack 上现成的 Nextcloud
如果下单时选择 Nextcloud,数据库、缓存和后台任务都已配置好,不会出现安装向导。网站通过由您的 IP 地址派生的 sslip.io 地址以 HTTPS 打开。登录名是 yonetici(土耳其语的“管理员”),密码在面板中。首次设置可能需要一点时间。首次登录后,请修改密码,为团队创建账户,并设置邮件服务器。具体步骤见 Nextcloud 帮助文章。
如果磁盘开始变满,您可以在面板中升级服务器。如果想从现成的安装开始,请看 Nextcloud 服务器页面。
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。