一直以来都是在用百度、阿里家的网盘,不是限速就是‘限速’,想来自己的服务器大部分资源也都在闲置着,就在网上找了一番如何搭建个人网盘,本文描述个人自建网盘的全过程。
一、准备工作
- 云服务器,带宽是刚需,硬盘也最好留大些,内存是不怎么耗费的
- 已备案公网域名,后面配置https服务访问
- 云盘选址,开始也是找了很多,下面列出几个
二、搭建效果
登录页
首页
管理页
分享页
可以参考我搭建好的效果:https://cloud.qiandao.space
支持多用户注册、第三方云存储、创建分享链接、断点续传、离线下载等等等等。。
三、开始搭建
1. 下载压缩包
其实也可以用docker
创建,但不推荐,docker固然便于整体管理,但这种服务还是贴合原系统更高效、便捷一些,不用担心docker的挂载路径或是误操作
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
目录存储:
四、进程守护
我们想用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解析
:
2. 安装nginx
上传自/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
保存并推出
创建文件:
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
即可直达!