在目前公共网盘不是面临限速就是价格高涨,同时面临着和谐危险的情况下,自行部署个人网盘已经成为了很多人的选择。
出于对折腾服务器的兴趣,本人购买了一台云服务器,通过 Cloudreve 搭建了属于自己的网盘。
在这里,就分享一些 Cloudreve 安装的教程和经验。
准备材料
为了搭建一个网盘,你需要准备的有:
- 一台云服务器,采用主流 Linux 系统(推荐使用 Ubuntu 20.04 LTS)。
- 一个域名(可选)。
在此次教程中,本人使用的环境及材料为:
- 一台使用 1TB HDD 存储的 单核心,2GB 内存服务器。
- 使用系统为:Ubuntu 20.04 LTS。
- 采用一个二级域名并将域名解析指定到服务器上(无CDN)。
- 域名对应的 SSL 证书。
前期准备
为了生产环境的安全,请不要将 Cloudreve 在 root 用户下执行。
这里我们创建一个用户用于运行 Cloudreve:
adduser <你想要的用户名>
系统将会引导你输入密码,并设置好个人信息(可以乱填)。
用户创建成功后,我们对其赋予 sudo 组:
usermod -G sudo <用户名>
这样就将用户加入了 sudo 组,赋予了该用户使用 sudo 命令的权限。
我们切换到这个用户,并转到家目录:
su <用户名>
cd
基础部署
首先,从 https://github.com/cloudreve/Cloudreve/releases 找到对应服务器的版本并下载。
一般的云服务器,下载对应 linux_amd64 的版本即可。下载后放置到用户的家目录中。
执行解压:
tar -xf <下载到的压缩包名>
对主程序赋予执行权限:
chmod +x ./cloudreve
尝试执行主程序:
./cloudreve
留意程序输出的内容,此时会返回默认管理员的账号和密码。
访问到 http://<服务器ip>:5212 ,尝试输入账号密码进入网盘。(预先在防火墙或其他安全策略放行对应端口)
若能成功访问,则代表运行没有问题。
进程守护
通过以上步骤建立的服务,在退出控制台后就会被强制终止。
虽然我们可以用 screen 等方式维持其后台运行,但要实现服务的稳定还是需要进程守护的协助。
这里我们采用 Systemd 实现进程守护。
编辑配置文件:
vim /usr/lib/systemd/system/cloudreve.service
将配置文件内容修改为:(若使用 root 用户可以删除 User 对应行)
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
User=<安装cloudreve的用户名>
WorkingDirectory=<cloudreve根目录路径>
ExecStart=<cloudreve根目录路径>/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
保存并退出,启用服务:
# 更新配置
systemctl daemon-reload
# 启动服务
systemctl start cloudreve
# 设置开机启动
systemctl enable cloudreve
Nginx 反代
在进行此步骤之前,请做好如下准备:
- 正确使用域名并配置了 DNS 解析。
在 Ubuntu 20.04 LTS 中,我们可以快速 apt 安装 nginx:
sudo apt install nginx
(不要问我为什么不用宝塔部署,问就是更省事也更轻便,还有一些不方便说的原因)
找到 nginx 的配置文件位置,这里以 /etc/nginx/nginx.conf(实际位置因人而异)为例:
一样是进入vim编辑:
vim /etc/nginx/nginx.conf
在http下方插入:(看得懂的可以自己改站点配置位置,whatever)
include /etc/nginx/cloudreve.conf;
保存并退出。(提示,若 nginx.conf 里面已经有 include /etc/nginx/sites-enabled/*; 类似描述则可以不插入此内容,后面编辑站点配置在对应地方创建配置即可)
这时创建编辑站点配置:
vim /etc/nginx/cloudreve.conf
将配置内容改为:
server
{
listen 80;
server_name <对应域名>;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5212;
# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
client_max_body_size 20000m;
}
}
修改完毕后保存并退出,然后重启nginx:
systemctl restart nginx
这时,应该可以通过浏览器直接访问域名,登入 Cloudreve 。
站点 SSL
在进行此步骤前,你需要准备的:
- 完成本文的 Nginx反代 教程。
- 为相应的 DNS 解析申请了可用的 SSL 证书。
找到你的 SSL 证书(在域名商/证书机构可下载),将其中的 .key 及 .pem 文件放置到服务器。
文件放置位置随意,保证随时可访问即可。(个人习惯为放在nginx配置目录下,自行创建cert目录放置)
重新编辑你的站点配置:(这里以本教程中出现的 /etc/nginx/cloudreve.conf 为例)
vim /etc/nginx/cloudreve.conf
对配置内容修改如下:
server
{
listen 80;
listen 443 ssl http2;
server_name <对应域名>;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5212;
# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
client_max_body_size 20000m;
}
# SSL证书部署(此处路径为直接指向文件而不是根目录)
ssl_certificate <证书 .pem 所在绝对路径>;
ssl_certificate_key <证书 .key 所在绝对路径>;
ssl_session_timeout 5m;
# 可选项,进行301重定向,强制https
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
修改完毕后保存并退出,然后重启nginx:
systemctl restart nginx
若无报错,通过浏览器访问 Cloudreve 时有https证书显示,即代表 SSL 配置成功。
踩过的坑
部署ipv6解析及反代时出现问题?
- ipv6对应的配置文件应该有所修改:
server
{
listen [::]:80 ipv6only=on;
listen [::]:443 ipv6only=on ssl http2;
server_name <对应域名>;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://[::1]:5212;
# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
client_max_body_size 20000m;
}
ssl_certificate <证书 .pem 所在绝对路径>;
ssl_certificate_key <证书 .key 所在绝对路径>;
ssl_session_timeout 5m;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
- 如果你对同个域名,同时用 A 记录和 AAAA 记录解析,访问时应该会优先 ipv6 访问,在某些校园网环境有奇效。
总结
部署 Cloudreve 的过程应该可谓简单,但为了保证其稳定运行及便捷访问,还是需要进行一定的操作。
本问主要面向对 Linux 不熟悉的用户,建立一个更全面详细的部署教程。
若本文内容存在争议及错误,请各位大佬不吝赐教。