Nextcloud 为你提供文件同步、日历、联系人和文档编辑功能,而且运行在你自己控制的服务器上,而不是把文件交给大型云服务商。下面介绍如何用 Docker Compose 在 VPS 上运行它。
开始之前
- 配备 2 vCPU 和 4 GB 内存的 VPS 是一个舒适的起点。存储是主要限制,所以请选择与你的文件相匹配的磁盘大小。
- 一个指向该服务器的域名,参见我们的 DNS 指南。
- 已安装 Docker,参见在 Ubuntu 上安装 Docker。
1. Compose 文件
mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
db:
image: mariadb:11
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
environment:
MYSQL_ROOT_PASSWORD: change-me-root
MYSQL_PASSWORD: change-me-db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
volumes:
- db:/var/lib/mysql
redis:
image: redis:7-alpine
restart: unless-stopped
app:
image: nextcloud:stable
restart: unless-stopped
depends_on: [db, redis]
ports:
- "127.0.0.1:8080:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: change-me-db
REDIS_HOST: redis
volumes:
- nc:/var/www/html
volumes:
db:
nc:
EOF
docker compose up -d
运行之前请修改全部三个密码。请使用较长的随机字符串。
2. 在前面加上 HTTPS
添加一个代理到 127.0.0.1:8080 的 Nginx server 块,然后按照我们的 Nginx 指南运行 Certbot。代理块需要以下几行,这样 Nextcloud 才能识别正确的协议,大文件上传也才能正常工作:
client_max_body_size 2G;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
3. 完成设置
打开你的域名并创建管理员账户。然后把你的域名添加到受信任列表,并设置代理相关信息:
docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https
4. 保持系统健康
- 更新:
docker compose pull && docker compose up -d,一次只升级一个主版本。 - 后台任务:在管理设置中切换为 Cron,并添加一个主机 cron 条目,每五分钟运行一次
cron.php。 - 备份:保存两个卷以及一份数据库转储。参见如何备份 VPS。
- 双因素登录:为每个账户启用 TOTP 应用。