OffshoreVps
教程2026年10月10日阅读约 9 分钟作者:OffshoreVps 团队

用 Docker Compose 在 VPS 上自托管 Nextcloud

运行你自己的私有云,管理文件、日历和联系人:Compose 文件、HTTPS 反向代理、受信任域名、cron 任务和备份。

Nextcloud 为你提供文件同步、日历、联系人和文档编辑功能,而且运行在你自己控制的服务器上,而不是把文件交给大型云服务商。下面介绍如何用 Docker Compose 在 VPS 上运行它。

VPS 上的终端窗口,显示自托管 Nextcloud 所用的命令,以“mkdir -p ~/nextcloud && cd ~/nextcloud”开头
本指南中你将在服务器上运行的那类命令。

开始之前

  • 配备 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

运行之前请修改全部三个密码。请使用较长的随机字符串。

本指南的步骤依次为:1. 开始之前;2. 1. Compose 文件;3. 2. 在前面加上 HTTPS;4. 3. 完成设置;5. 4. 保持其健康运行
本指南的步骤,按顺序排列。

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 应用。