搬瓦工部署 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-For 和 X-Forwarded-Proto 头,并在 Nextcloud 的 config.php 中设置了 'overwriteprotocol' => 'https'。
总结
通过 Docker 部署 Nextcloud 可以快速搭建属于自己的私有云盘,数据完全自主可控。搬瓦工 VPS 的稳定性和带宽足以支撑个人和小团队使用。购买 VPS 时使用优惠码 NODESEEK2026 享受折扣,更多教程请参考 新手教程 页面。