搬瓦工部署 Nextcloud 私有云盘教程

Nextcloud 是一款开源的私有云存储平台,功能类似百度网盘或 Google Drive,但数据完全掌控在自己手中。除了文件存储和同步,Nextcloud 还支持日历、通讯录、在线文档编辑、视频通话等丰富功能。本文将在搬瓦工 VPS 上通过 Docker 方式部署 Nextcloud。

一、方案推荐

  • 个人使用:1 核 2GB 内存,20GB 磁盘空间即可满足基本需求。
  • 多人协作:2 核 4GB 内存,40GB 以上磁盘空间。

Nextcloud 对磁盘空间需求较大,请根据存储需求选择合适的方案。具体可参考 搬瓦工全部在售方案

二、前置准备

开始之前请确保:

  • 已安装 Docker 和 Docker Compose,参考 Docker 安装教程
  • 已将域名解析到服务器 IP。
  • 服务器防火墙已开放 80 和 443 端口。

三、创建项目目录

mkdir -p /opt/nextcloud && cd /opt/nextcloud

四、编写 Docker Compose 文件

创建 docker-compose.yml

nano docker-compose.yml

写入以下内容:

version: '3.8'

services:
  db:
    image: mariadb:10.11
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword_change_me
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: dbpassword_change_me
    volumes:
      - db_data:/var/lib/mysql

  redis:
    image: redis:7-alpine
    restart: always
    command: redis-server --requirepass redispassword_change_me

  app:
    image: nextcloud:latest
    restart: always
    depends_on:
      - db
      - redis
    ports:
      - "8080:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: dbpassword_change_me
      REDIS_HOST: redis
      REDIS_HOST_PASSWORD: redispassword_change_me
      NEXTCLOUD_TRUSTED_DOMAINS: your-domain.com
      OVERWRITEPROTOCOL: https
    volumes:
      - nextcloud_data:/var/www/html

volumes:
  db_data:
  nextcloud_data:

重要:请将所有密码替换为你自己的强密码,将 your-domain.com 替换为你的域名。

五、启动服务

docker compose up -d

等待镜像下载和容器启动完成后,检查状态:

docker compose ps

三个服务(db、redis、app)都应显示为 running 状态。

六、配置 Nginx 反向代理

为 Nextcloud 配置 Nginx 反向代理并启用 HTTPS。首先安装 Nginx 和 Certbot:

apt install nginx certbot python3-certbot-nginx -y

创建 Nginx 配置文件:

nano /etc/nginx/sites-available/nextcloud

写入以下内容:

server {
    listen 80;
    server_name your-domain.com;

    client_max_body_size 10G;
    fastcgi_buffers 64 4K;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }

    location /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
    }
}

启用站点并申请 SSL 证书:

ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
certbot --nginx -d your-domain.com

七、完成安装

在浏览器中访问 https://your-domain.com,设置管理员账号和密码,即可开始使用 Nextcloud。

八、性能调优

8.1 配置内存缓存

进入 Nextcloud 容器修改配置:

docker exec -it nextcloud-app-1 bash
apt update && apt install nano -y
nano /var/www/html/config/config.php

在配置数组中添加:

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => true,

8.2 配置后台任务

推荐使用 cron 方式执行后台任务。在宿主机上添加定时任务:

crontab -e

添加以下行:

*/5 * * * * docker exec -u www-data nextcloud-app-1 php cron.php

然后在 Nextcloud 管理后台的"基本设置"中将后台任务模式改为"Cron"。

8.3 调整 PHP 内存限制

docker exec -it nextcloud-app-1 bash
echo "memory_limit=512M" > /usr/local/etc/php/conf.d/memory-limit.ini
echo "upload_max_filesize=10G" > /usr/local/etc/php/conf.d/upload-limit.ini
echo "post_max_size=10G" >> /usr/local/etc/php/conf.d/upload-limit.ini

修改后重启容器:

docker compose restart app

九、客户端连接

Nextcloud 提供全平台客户端:

  • 桌面端:支持 Windows、macOS、Linux,可自动同步文件夹。
  • 移动端:iOS 和 Android 客户端,支持自动上传照片。
  • WebDAV:可以在文件管理器中直接挂载 Nextcloud 目录。

客户端连接地址为 https://your-domain.com,使用注册的账号密码登录即可。

十、数据备份

定期备份是保障数据安全的关键。创建备份脚本:

nano /opt/nextcloud/backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/opt/backups/nextcloud"
mkdir -p $BACKUP_DIR

# 开启维护模式
docker exec -u www-data nextcloud-app-1 php occ maintenance:mode --on

# 备份数据库
docker exec nextcloud-db-1 mysqldump -u nextcloud -pdbpassword_change_me nextcloud > $BACKUP_DIR/db_$DATE.sql

# 备份数据目录
docker run --rm -v nextcloud_nextcloud_data:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/data_$DATE.tar.gz -C /data .

# 关闭维护模式
docker exec -u www-data nextcloud-app-1 php occ maintenance:mode --off

# 删除 30 天前的备份
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
chmod +x /opt/nextcloud/backup.sh

添加定时任务每天凌晨 3 点自动备份:

echo "0 3 * * * /opt/nextcloud/backup.sh" | crontab -

十一、常见问题

上传文件大小受限

确认 Nginx 的 client_max_body_size 和 PHP 的 upload_max_filesize 设置足够大。

安全警告:反向代理头配置

确保 Nginx 配置中正确设置了 X-Forwarded-ForX-Forwarded-Proto 头,并在 Nextcloud 的 config.php 中设置了 'overwriteprotocol' => 'https'

总结

通过 Docker 部署 Nextcloud 可以快速搭建属于自己的私有云盘,数据完全自主可控。搬瓦工 VPS 的稳定性和带宽足以支撑个人和小团队使用。购买 VPS 时使用优惠码 NODESEEK2026 享受折扣,更多教程请参考 新手教程 页面。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。