使用 Nextcloud 搭建个人云盘服务
为了充分利用 VPS 服务器的资源,我决定在个人博客 Jekyll 的基础之上,搭建一个基于 Nextcloud 的个人云盘服务。本站此前发布过一篇《如何使用 ownCloud 搭建私有云盘》的文章。
Nextcloud 是由 ownCloud 创始人 Frank Karlitschek 于 2016 年创建。 Nextcloud 使用 PHP 和 JavaScript 编写,可帮助您通过桌面和移动设备同步、共享、访问您的数据并进行协作,它基于 Linux 系统构建。
本文在 Ubuntu 22.04 上使用 MySQL 8、PHP 8 和 Nginx 完成 Nextcloud 28.0.1 版本的云盘搭建。
Nextcloud 28.0.1 版本要求 PHP 8.1,官方建议使用 MySQL 8。
前提条件:
- MySQL 8
- PHP 8
- Nginx
1.安装 MySQL 8
1.1. 安装 MySQL
1
$ sudo apt install mysql-server
查看 MySQL 服务状态:
1
$ sudo systemctl status mysql
1.2.配置 MySQL
创建 nextcloud 库:
mysql> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4;
创建 nextcloud 专用用户,并分配 nextcloud 库的权限:
mysql> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@'localhost';
刷新权限,使之立即生效:
mysql> FLUSH PRIVILEGES;
2.安装 PHP 8
安装 php8.1:
1
$ sudo apt install --no-install-recommends php8.1
--no-install-recommends
表示只安装必须的软件包。
安装 php8.1-fpm:
1
$ sudo apt install --no-install-recommends php8.1-fpm
PHP-FPM(FastCGI Process Manager)是一个 FastCGI 进程管理器,用于管理 PHP 进程。
安装 Nextcloud 需要用到的 php 扩展:
1
2
$ sudo apt install php8.1 php8.1-cli php8.1-common php8.1-json php8.1-fpm php8.1-curl \
php8.1-mysql php8.1-gd php8.1-opcache php8.1-xml php8.1-zip php8.1-mbstring
3.安装 SSL 证书
使用 acme.sh 脚本生成免费的 SSL 证书,acme.sh 安装详见 《如何给网站添加免费的 SSL/TLS 证书?》文章。
1).生成证书
1
2
$ acme.sh --issue -d drive.voxsay.com \
--webroot /var/www/nextcloud --force
--force
: 表示强制颁发新的证书
2).安装证书
新建证书安装目录:
1
$ mkdir -p /etc/certs
安装证书并重启 Nginx,使证书生效:
1
2
3
4
$ acme.sh --install-cert -d drive.voxsay.com \
--key-file /etc/certs/drive.voxsay.com.key \
--fullchain-file /etc/certs/drive.voxsay.com.pem \
--reloadcmd "systemctl restart nginx"
查看已安装的证书:
1
$ acme.sh --info -d drive.voxsay.com
4.安装和配置 Nextcloud
下载 Nextcloud
1
$ wget https://download.nextcloud.com/server/releases/nextcloud-28.0.1.zip
解压包到指定目录:
1
$ unzip nextcloud-28.0.1.zip -d /var/www/
然后,创建存放数据的目录:
1
$ mkdir -p /var/www/nextcloud/data
修改目录权限:
1
2
3
$ chown -R www-data:www-data /var/www/nextcloud/config
$ chown -R www-data:www-data /var/www/nextcloud/apps
$ chown -R www-data:www-data /var/www/nextcloud/data
5.安装和配置 Nginx
1).安装 Nginx:
1
$ sudo apt install nginx
2).添加 Nextcloud 的 Nginx 配置:
使用 vim /etc/nginx/conf.d/drive.voxsay.com.conf
命令编辑配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
upstream php-handler {
server unix:/var/run/php/php8.1-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name drive.voxsay.com;
return 301 https://$server_name:443$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name drive.voxsay.com;
charset utf-8;
ssl_certificate /etc/certs/drive.voxsay.com.pem;
ssl_certificate_key /etc/certs/drive.voxsay.com.key;
root /var/www/nextcloud;
index index.php index.html /index.php$request_uri;
# 省略其它配置 ...
}
3).重启 Nginx 服务
1
$ systemctl restart nginx
然后,打开 https://drive.voxsay.com 网页,根据安装向导完成 Nextcloud 的安装,安装成功的截图如下:
当然,我们也可以通过手机 APP 访问: