一直以来都是在用百度、阿里家的网盘,不是限速就是‘限速’,想来自己的服务器大部分资源也都在闲置着,就在网上找了一番如何搭建个人网盘,本文描述个人自建网盘的全过程。

一、准备工作

二、搭建效果

登录页

image-20221103214255900

首页

image-20221103214331232

管理页

image-20221103214415783

分享页

image-20221103214605204

可以参考我搭建好的效果:https://cloud.qiandao.space

支持多用户注册、第三方云存储、创建分享链接、断点续传、离线下载等等等等。。

三、开始搭建

1. 下载压缩包

其实也可以用docker创建,但不推荐,docker固然便于整体管理,但这种服务还是贴合原系统更高效、便捷一些,不用担心docker的挂载路径或是误操作

地址:https://cloud.qiandao.space/s/59iD

2. 初启动

  • 在opt目录创建cloud文件夹,将压缩包放入

  • #当前目录 /opt/cloud
    tar -xvf cloudreve_3.5.3_linux_amd64.tar
    # 如果是 tar.gz 格式请使用 tar -zxvf 命令
    
  • chmod +x ./cloudreve	# 赋予执行权限
    
  • 初次启动 Cloudreve

./cloudreve

此时会在在命令行打印服务账户与密码,请牢记

  • 放开防火墙5212端口,部分服务器还需在安全组中配置

  • 此时访问http://ip:5212出现登录页即正常

3. 修改配置

服务启动后会在同级目录下生成conf.ini的配置文件,我们按照自己的需求对其进行修改

vim conf.ini
[System]
; 运行模式
Mode = master
; 监听端口
Listen = :5212
; 是否开启 Debug
Debug = false
; Session 密钥, 一般在首次启动时自动生成
SessionSecret = 23333
; Hash 加盐, 一般在首次启动时自动生成
HashIDSalt = something really hard to guss

; SSL 相关
[SSL]
; SSL 监听端口
Listen = :443
; 证书路径
CertPath = C:\Users\i\Documents\fullchain.pem
; 私钥路径
KeyPath = C:\Users\i\Documents\privkey.pem

; 启用 Unix Socket 监听
[UnixSocket]
Listen = /run/cloudreve/cloudreve.sock

; 数据库相关,如果你只想使用内置的 SQLite 数据库,这一部分直接删去即可
[Database]
; 数据库类型,目前支持 sqlite/mysql/mssql/postgres
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = root
; 密码
Password = root
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = v3
; 数据表前缀
TablePrefix = cd_
; 字符集
Charset = utf8mb4
; SQLite 数据库文件路径
DBFile = cloudreve.db

; 从机模式下的配置
[Slave]
; 通信密钥
Secret = 1234567891234567123456789123456712345678912345671234567891234567
; 回调请求超时时间 (s)
CallbackTimeout = 20
; 签名有效期
SignatureTTL = 60

; 跨域配置
[CORS]
AllowOrigins = *
AllowMethods = OPTIONS,GET,POST
AllowHeaders = *
AllowCredentials = false

; Redis 相关
[Redis]
Server = 127.0.0.1:6379
Password =
DB = 0

; 从机配置覆盖
[OptionOverwrite]
; 可直接使用 `设置名称 = 值` 的格式覆盖
max_worker_num = 50

推荐配置

[System]
Debug = 默认	
Mode = 默认
Listen = 默认
SessionSecret = 默认
HashIDSalt = 默认

[Database]	#可选
Type = mysql	# 增加mysql配置,其自带的是SQLite数据库
Port = 端口
User = root
Password = 密码
Host = 服务器ip
Name = Cloudreve
TablePrefix = cloud
Charset = utf8mb4

[Redis] #可选
Server = 127.0.0.1:6379
Password = 密码
DB = 库

当然我们需要提前在mysql中创建好相应的数据库,表的话会连接后会自动创建

使用 Redis 后,以下内容将被 Redis 接管:

  • 用户会话(重启 Cloudreve 后不会再丢失登录会话)

  • 数据表高频记录查询缓存(如存储策略、设置项)

  • 回调会话

  • OneDrive 凭证

4. 重新启动

使用ctrl+c停止当前服务运行,删除同级目录下生成的cloudreve.db文件(里面保存了密码),当然,如果不使用mysql则不用删除

再次启动:

 ./cloudreve

记下当前账户密码,查看mysql及redis数据库是否有内容,有则正常,再次访问:http://ip:5212

输入账户密码登录,进入云盘之后可以修改账户与密码,剩下的,先体验一会儿吧,因为到这你就已经搭建完成了

上传文件后会在同级目录的uploads目录存储:

image-20221103225432296

四、进程守护

我们想用systemctl管理服务,都可以参照这种做法

1. 编辑配置文件

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

将下文 目录处 更换为程序所在目录:

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

[Service]
WorkingDirectory=/opt/cloud
ExecStart=/opt/cloud/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target

2. 相关命令

# 更新配置
systemctl daemon-reload

# 启动服务
systemctl start cloudreve

# 查看状态
systemctl status cloudreve

# 停止服务
systemctl stop cloudreve

# 重启服务
systemctl restart cloudreve

# 设置开机启动
systemctl enable cloudreve

五、nginx反向代理

1. 解析域名

我们在厂商处购买的域名经备案后才可解析使用

这里使用二级域名解析到当前服务

二级域名三级域名等等可以有无限个,这里使用二级域名

  • 一级域名:qiandao.space、www.qiandao.space
  • 二级域名:cloud.qiandao.sapce、music.qiandao.space
  • 三级域名:qiniu.file.qiandao.space

控制台处增添域名A解析:

image-20221103224430075

2. 安装nginx

压缩包下载:https://cloud.qiandao.space/s/JPcE

上传自/usr/local目录下

  • tar -zxvf nginx-1.22.1.tar.gz	#解压
    mv nginx-1.22.1 nginx			#更名
    cd nginx
    

3. 修改配置

vim conf/nginx.conf

在最后一行大括号结束前加上:include /usr/local/nginx/conf/config/*.conf;表示会读取该目录下所有.conf的文件,:wq保存并推出

image-20221103223133268

创建文件:

vim conf/config/cloud.qiandao.conf
server {
         listen    443 ssl;
         server_name cloud.qiandao.space;

         ssl_session_timeout 5m;

    	#ssl证书配置,申请好后上传至任意位置引用即可
         ssl_certificate      /usr/local/nginx/ssl/cloud.qiandao.space/cloud.qiandao.space.pem;
         ssl_certificate_key /usr/local/nginx/ssl/cloud.qiandao.space/cloud.qiandao.space.key;

         location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                client_max_body_size    10240m;	#🍵

                proxy_pass http://ip:5212/;
         }
}

🍵:必须配置,最大允许上传文件大小,nginx默认为1MB

提一嘴,nginx默认也是不支持WebSocket的,如果想让其开启需要在块中添加如下配置:

#超时时间 600秒
proxy_read_timeout 600;
#WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

4. 重载配置

sbin/nginx -s reload

等待生效即可,再次访问https://cloud.qiandao.space即可直达!