Nextcloud私有网盘搭建:把数据掌握在自己手里
引言
百度网盘限速、阿里云盘也开始收费、各种云服务的数据安全问题频发...是时候搭建一个自己的私有网盘了!
Nextcloud 是开源圈里最受欢迎的私有云盘方案,功能强大到你根本用不完——文件同步、在线预览、协同办公、甚至还能搭个在线笔记。而且数据完全在自己服务器上,隐私有保障。
今天手把手教你在 Ubuntu 22.04 LTS 上搭建 Nextcloud,告别那些坑爹的限速和审查。
准备工作
服务器选择
Nextcloud 对硬件要求主要看存储和并发访问量,普通个人使用建议:
- CPU:1-2核
- 内存:2G 以上(官方推荐至少 4G,不过 2G 也够用)
- 硬盘:根据你的存储需求来,建议搭配大容量数据盘
- 系统:Ubuntu 22.04 LTS
- 带宽:至少 5Mbps
我用的是 雨云 的服务器,搭配了他们的高防云盘做数据存储,稳定性一直不错。感兴趣可以看看:雨云服务器。
环境说明
我们将使用 LNMP 环境(Linux + Nginx + MySQL + PHP)来部署 Nextcloud。这是目前最主流的 Web 服务架构,性能和稳定性都有保障。
更新系统
apt update && apt upgrade -y
主体步骤
1. 安装 Nginx
apt install -y nginx
systemctl start nginx
systemctl enable nginx
验证安装:
nginx -v
2. 安装 MySQL
apt install -y mysql-server
systemctl start mysql
systemctl enable mysql
初始化 MySQL,设置 root 密码:
mysql_secure_installation
创建 Nextcloud 专用数据库:
mysql -u root -p
在 MySQL 命令行中执行:
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '你的强密码';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3. 安装 PHP 8.1
Nextcloud 官方推荐 PHP 8.1,我们用 Ondrej 的 PPA 源安装:
apt install -y software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install -y php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd php8.1-intl php8.1-bz2 php8.1-imagick php8.1-apcu php8.1-redis
安装常用扩展:
apt install -y libmagickcore-6.q16-6-extra unzip redis-server
4. 配置 PHP
编辑 PHP-FPM 配置文件:
nano /etc/php/8.1/fpm/pool.d/www.conf
找到并修改以下内容:
listen = /run/php/php8.1-fpm.sock
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
设置 APCu 缓存:
nano /etc/php/8.1/fpm/php.ini
添加:
apc.enable_cli = 1
apc.shm_size = 256M
重启 PHP-FPM:
systemctl restart php8.1-fpm
5. 下载 Nextcloud
cd /var/www
wget https://download.nextcloud.com/server/releases/nextcloud-28.0.4.zip
unzip nextcloud-28.0.4.zip
rm nextcloud-28.0.4.zip
chown -R www-data:www-data /var/www/nextcloud
6. 配置 Nginx
创建 Nextcloud 的 Nginx 配置文件:
nano /etc/nginx/sites-available/nextcloud
写入:
upstream php-handler {
server unix:/run/php/php8.1-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name your_domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain.com;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
root /var/www/nextcloud;
index index.php index.html /index.php$request_uri;
client_max_body_size 10240M;
location / {
rewrite ^ /index.php$request_uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ \.(?:css|js|svg|gif|png|html|ttf|woff2?|ico|txt|jpg|jpeg)$ {
try_files $uri /index.php$request_uri;
access_log off;
expires 6M;
add_header Cache-Control "public, immutable";
}
}
启用配置:
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
7. 配置 SSL(可选但强烈推荐)
安装 Certbot 自动证书:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your_domain.com
8. 配置 Redis 缓存
Nextcloud 官方推荐使用 Redis 作为本地缓存:
systemctl start redis-server
systemctl enable redis-server
nano /var/www/nextcloud/config/config.php
在 config.php 中添加:
'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
'memcache.locking' => '\OC\Memcache\Redis',
9. 初始化 Nextcloud
打开浏览器访问你的服务器 IP 或域名,应该能看到 Nextcloud 的安装向导。按照提示填写管理员账号密码和数据库信息。
点击「安装完成」,等待片刻即可进入网盘界面。
10. 配置后台任务
建议使用系统 cron 而不是 Ajax:
crontab -u www-data -e
添加:
*/5 * * * * php -f /var/www/nextcloud/cron.php
在 Nextcloud 管理页面 → 基本设置 → 后台任务,选择「Cron」。
常见问题
Q: 安装时提示「数据目录无效」?
A: 确保 Nextcloud 目录和你的数据目录都有正确的权限:chown -R www-data:www-data /var/www/nextcloud。
Q: 上传大文件失败?
A: 需要修改三处配置:Nginx 的 client_max_body_size、PHP 的 upload_max_filesize 和 post_max_size,以及 Nextcloud 配置中的文件大小限制。
Q: 访问很慢? A: 建议安装 APCu 和 Redis 缓存,并配置 PHP OPcache。如果在国内使用,可以考虑使用国内镜像源加速应用更新。
Q: 如何升级 Nextcloud? A: 最简单的方式是通过 Web 界面的内置升级功能,或者下载新版本覆盖后手动执行升级命令。
总结
好了,Nextcloud 私有网盘就搭建完成了!相比那些商业网盘,自己的网盘就是香——不限速、不审查、数据完全可控。
搭配官方客户端,可以实现手机照片自动备份、电脑文件同步等功能,体验不比 iCloud 差。而且 Nextcloud 还有丰富的插件生态,可以扩展出在线文档、协作编辑、日历同步等各种功能。
搭建过程中遇到问题欢迎留言,有空再分享 Nextcloud 的进阶配置和插件推荐!