自定义网盘 Cloudreve
自定义网盘 Cloudreve※
平时需要手机/电脑互传文件,搜索发现已经有解决方案了,例如nextCloud,Cloudreve,ifilespace等等,个人总结下它们各有优缺点
平台 | 优点 | 缺点 |
nextCloud | 1. 开源 2. 全平台支持(win/mac/ios/android) | 部署复杂 |
cloudreve | 1. 开源 2. 部署简单 3. 可自由配置 4. 支持PWA | 仅有web版本 |
ifilespace | 1. 部署简单 2. 全平台支持(win/mac/ios/android) | 闭源 |
最终,个人选择了cloudreve这个产品,官方网址如下:Cloudreve - 部署公私兼备的网盘系统
一、安装过程※
1. 下载安装包:Releases · cloudreve/Cloudreve (github.com) 找对应的平台下载即可,一般都是选择linux-amd64版本
2. 上传到服务器,例如目录是/data/file-server,解压缩后可以看到一个名称为cloudreve的文件
3. 运行./cloudreve 即可,此时可以看到屏幕会显示账号名和密码、监听的端口(默认5212端口)等信息,需要记住这个账户名和密码
4. 直接登录http://ip:5212即可进入了
5. 一般情况下我们都会使用nginx进行转发处理
下面是一个nginx配置例子
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 512m;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
server {
listen 80;
server_name hanhna.com www.hanhna.com;
rewrite ^(.*){content}nbsp;https://$host$1 permanent;
location / {
proxy_pass http://127.0.0.1:19002;
proxy_http_version 1.1;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
#root /root/static;
}
}
server {
listen 80;
server_name file.hanhna.com;
rewrite ^(.*){content}nbsp;https://$host$1 permanent;
}
server {
listen 443 ssl;
server_name file.hanhna.com;
#root html;
#index index.html index.htm;
ssl_certificate /etc/letsencrypt/live/file.hanhna.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/file.hanhna.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:5212;
proxy_http_version 1.1;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
二、存在的问题※
1. 后台执行问题
官方文档中有解决方案:快速开始 - Cloudreve
(1)# 编辑配置文件
vim /usr/lib/systemd/system/cloudreve.service
(2)将下文 PATH_TO_CLOUDREVE
更换为程序所在目录:
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
WorkingDirectory=/PATH_TO_CLOUDREVE
ExecStart=/PATH_TO_CLOUDREVE/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
(3# 更新配置
systemctl daemon-reload
(4)# 启动服务
systemctl start cloudreve
(5)# 设置开机启动
systemctl enable cloudreve
2. 上传大文件失败的问题
一般出现这个问题都是因为nginx配置的问题,在nginx配置即可:即http{} 中加入client_max_body_size 512m;
3. 第三方app的问题
有个开源的适配第三方app,使用fluter编写,具体地址是:Releases · YangChengxxyy/cloudreve_flutter (github.com)