manjaro 下初次部署Cloudreve全记录(非root用户)

什么是cloudreve

cloudreve是github上开源的网盘系统。

官网

地址:https://cloudreve.org/

源码

地址:https://github.com/cloudreve/Cloudreve


cloudreve部署

环境:manjaro cli ( archlinux)

版本:cloudreve V3.1.1

由于我平时使用的都是非root用户,下面用户名都用'[username]'代替,使用前请替换成自己的用户名。

下载

下载对应平台的发行版:cloudreve_3.1.1_linux_amd64.tar.gz

安装mysql

1.安装

sudo pacman -S mysql

2.初始化

sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

3.启用

sudo systemctl start mysqld

4.安全设置

sudo mysql_secure_installation

这里最后要设置root的密码,需要牢记,之后要使用,下面用'[mysql_db_root_passwd]'替代,使用前需替换成自己的密码。

5.创建数据库

先登录:

mysql -h localhost -P 3306 -u root  -p[mysql_db_root_passwd]

再创建数据库:

CREATE DATABASE `cloudreve` CHARACTER SET utf8 COLLATE utf8_general_ci;

退出登录:

quit

安装aria2

1.安装

sudo pacman -S aria2

2.创建配置文件

sudo mkdir /etc/aria2
sudo chown [username] /etc/aria2 -R

touch aria2.conf
touch aria2.session

由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名

编辑配置文件

vim /etc/aria2/aria2.conf

内容如下:

#设置下载目录
dir=/home/zhao/cloudreve/Downloads
#关闭ipv6
disable-ipv6=true

#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-listen-port=6800
#断点续传
continue=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session

#最大同时下载任务数
max-concurrent-downloads=20
save-session-interval=120

# Http/FTP 相关
connect-timeout=120
#lowest-speed-limit=10K
#同服务器连接数
max-connection-per-server=10
#max-file-not-found=2
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M

#单文件最大线程数, 路由建议值: 5
split=10
check-certificate=false
#http-no-cache=true

3.配置服务

sudo vim /usr/lib/systemd/system/aria2.service

内容如下:

[Unit]
Description=Aria2 Service
After=syslog.target network.target

[Service]
Type=simple
User=[username]
ExecStart=/usr/bin/aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all --save-session /etc/aria2/aria2.session --input-file /etc/aria2/aria2.session --conf-path=/etc/aria2/aria2.conf
Restart=always

[Install]
WantedBy=multi-user.target

由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名

安装nginx

1.安装

sudo pacman -S nginx

2.修改配置

sudo vi /etc/nginx/nginx.conf

主要修改3个地方:

1.运行用户: user [username];

2.进程数: worker_processes 4; 这个数量推荐与cpu线程数目相同。

3.服务:

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            autoindex on;
            proxy_pass http://localhost:5200;
            client_max_body_size 102400m;
        }

        location = /static/ {
            # 这里的root设置的目录是cloudreve的静态文件目录
            root  /home/[username]/cloudreve/statics/;
            autoindex on;
        }
}

由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名。

安装cloudreve

1.创建工作文件夹

mkdir /home/[username]/cloudreve

2.复制&解压

复制下载好的发行版压缩文件到文件夹

cp cloudreve_3.1.1_linux_amd64.tar.gz /home/[username]/cloudreve/

解压

cd /home/[username]/cloudreve
tar -xvf cloudreve_3.1.1_linux_amd64.tar.gz

由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名

3.首次运行测试

sudo chmod +x ./cloudreve
./cloudreve

首次运行会打印监听端口、用户名和密码,用浏览器登录测试,没问题进行下一步。

4.修改配置文件

vim ./conf.ini

主要修改两个位置:

1.修改监听 Listen = :5200

2.修改数据库,在后面添加:

[Database]
; 数据库类型,目前支持 sqlite | mysql
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = root
; 密码
Password = [mysql_db_root_passwd]
; 数据库地址
Host = localhost
; 数据库名称
Name = cloudreve
; 数据表前缀
TablePrefix = cd

上面用'[mysql_db_root_passwd]'替代mysq的root用户的密码,使用前需替换成自己的密码。

完整实例如下:

[System]
Mode = master
Listen = :5200
Debug = false
SessionSecret = [SessionSecret]
HashIDSalt = [HashIDSalt]

[Database]
Type = mysql
Port = 3306
User = root
Password = [mysql_db_root_passwd]
Host = localhost
Name = cloudreve
TablePrefix = cd

上面的[SessionSecret]和[HashIDSalt]代替,在第一次启动生成的配置文件中已经自动生成,无需修改。

面用'[mysql_db_root_passwd]'替代mysq的root用户的密码,使用前需替换成自己的密码。

删除无用的sqlite生成的cloudreve.db

rm cloudreve.db

5.再次测试运行

./cloudreve

首次运行会打印监听端口、用户名和密码,如果监听端口已经修,说明配置文件已经生效,用浏览器登录测试,没问题进行下一步。

需要注意的是这次的用户名密码要牢记

6.再次修改配置文件

修改 Listen = localhost:5200

7.导出静态文件

./cloudreve -eject

这个命令,会生成一个叫statics的文件夹,在我的服务器上绝对路径:/home/[username]/cloudreve/statics/也就是nginx配置文件中静态资源代理的root,这里需要注意对应修改好。

8.配置服务

sudo vim /usr/lib/systemd/system/cloudreve.service

内容如下:

[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target mysqld.service aria2.service
Wants=network.target aria2.service

[Service]
User=[username]
WorkingDirectory=/home/zhao/cloudreve
ExecStart=/home/[username]/cloudreve/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target

由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名

9.再次测试

systemctl daemon-reload
systemctl start aria2
systemctl start mysql
systemctl start cloudreve
systemctl start nginx

再次在浏览器中访问不带端口(默认80)的ip地址,输入上次记录的用户名、密码,测试功能。

10.设置开机启动

systemctl enable aria2
systemctl enable mysql
systemctl enable cloudreve
systemctl enable nginx

重启服务器,测试功能

后续

以上就是对我本次部署过程的总结,后续参考手册https://docs.cloudreve.org/,进行设置优化就好了。

设置需要注意以下几点:

1.站点信息-->url一定要设置准确

2.’离线下载-->临时下载目录’要与aria2配置文件中的dir相一致

3.在’用户‘中修改的密码,一定要记住! * _*


踩的一些坑

安装过程一开始也不是一帆风顺的,中间遇到了几个坑,记录如下:

1.权限问题

aria2 --- nginx --- cloudreve --- 用户文件

四者默认的启动用户是不同的,造成无权限访问文件或文件夹的问题。

为了方便我将所有的启动用户都设置成了我的登录用户:

1.aria2和cloudreve是在服务的脚本里添加User=用户名来控制启动的用户`

2.nginx在配置文件中可以设置user [username];

3.而用户创建的文件原本的所有者就是用户自己不需要修改

4.用sudo创建的aria2的配置文件通过sudo chown 用户名 /etc/aria2 -R将所有者改为用户

2.上传文件一直卡在‘处理中’

经过分析这个问题是nginx导致的,nginx上传文件控制了大小,在配置中添加client_max_body_size 102400m;即:最大上传大小100GB。这个可以根据实际需要进行设置。

3.手动启动没问题,但开机自启动失败

经过分析这个是启动顺序出错导致的。

首先服务脚本所在目录具有不同的优先级。aria2在通过用户启动时,如果放到/etc/systemd/system/目录优先级过高,往往由于一些关键服务没有加载或after没有完全声明,造成不能一次就启动成功。将aria2放到/usr/lib/systemd/system/目录中完全足够。

这几个模块之间也有启动顺序,cloudreve要在mysql和aria2之前启动,所以我添加了:

After=network.target mysqld.service aria2.service
Wants=network.target aria2.service

在cloudreve的服务脚本中。

4.邮件无法发送

网易126提示:554, b'DT:SPM 126 smtp6......

这个是网易邮箱检测到邮件是恶意/垃圾邮件内容,拒绝发送。

我尝试修改模板,就算发几个字都不行,所以我又注册了一个新浪邮箱,所有问题都解决了!

唯一美中不足的就是,发送的邮件要到垃圾箱中才能找到,果然是垃圾邮件啊。。。

新浪邮箱配置如下:

服务器:smtp.sina.com

端口:465

用户名:邮箱地址

密码:生成的授权吗

5.不能获取gravatar头像

‘参数设置-->图像处理’中的Gravatar服务器地址改成国内的:https://cn.gravatar.com/

并且在https://cn.gravatar.com/中注册帐号,并且邮箱对应有头像时,才能使用gravatar头像。