Cloudreve
搜索文档…
快速开始

获取 Cloudreve

你可以在 GitHub Release 页面获取已经构建打包完成的主程序。其中每个版本都提供了常见系统架构下可用的主程序,命名规则为cloudreve_版本号_操作系统_CPU架构.tar.gz 。比如,普通 64 位 Linux 系统上部署 3.0.0 版本,则应该下载cloudreve_3.0.0_linux_amd64.tar.gz
如果你想体验最新的功能特性,可以在 GitHub Actions 中下载每次 commit 后构建的开发版。注意,开发版并不稳定,无法用于生产用途,且不保证完全可用。
如果想要自行从源代码构建,请参阅以下章节:

启动 Cloudreve

Linux
Windows
Linux 下,直接解压并执行主程序即可:
1
#解压获取到的主程序
2
tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz
3
4
# 赋予执行权限
5
chmod +x ./cloudreve
6
7
# 启动 Cloudreve
8
./cloudreve
Copied!
Windows 下,直接解压获取到的 zip 压缩包,启动 cloudreve.exe 即可。
Cloudreve 在首次启动时,会创建初始管理员账号,请注意保管管理员密码,此密码只会在首次启动时出现。如果您忘记初始管理员密码,需要删除同级目录下的cloudreve.db,重新启动主程序以初始化新的管理员账户。
Cloudreve 默认会监听5212端口。你可以在浏览器中访问http://服务器IP:5212进入 Cloudreve。
以上步骤操作完后,最简单的部署就完成了。你可能需要一些更为具体的配置,才能让 Cloudreve 更好的工作,具体流程请参考下面的配置流程。

可选部署流程

反向代理

在自用或者小规模使用的场景下,你完全可以使用 Cloudreve 内置的 Web 服务器。但是如果你需要使用 HTTPS,亦或是需要与服务器上其他 Web 服务共存时,你可能需要使用主流 Web 服务器反向代理 Cloudreve ,以获得更丰富的扩展功能。
你需要在 Web 服务器中新建一个虚拟主机,完成所需的各项配置(如启用 HTTPS),然后在网站配置文件中加入反代规则:
NGINX
Apache
IIS
在网站的server字段中加入:
1
location / {
2
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3
proxy_set_header Host $http_host;
4
proxy_redirect off;
5
proxy_pass http://127.0.0.1:5212;
6
7
# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
8
# client_max_body_size 20000m;
9
}
Copied!
VirtualHost字段下加入反代配置项ProxyPass,比如:
1
<VirtualHost *:80>
2
ServerName myapp.example.com
3
ServerAdmin [email protected]
4
DocumentRoot /www/myapp/public
5
6
# 以下为关键部分
7
AllowEncodedSlashes NoDecode
8
ProxyPass "/" "http://127.0.0.1:5212/" nocanon
9
10
</VirtualHost>
Copied!
1. 安装 IIS URL Rewrite 和 ARR 模块
如已安装,请跳过本步。
2. 启用并配置 ARR
打开 IIS,进入主页的 Application Request Routing Cache,再进入右边的 Server Proxy Settings...,勾选最上面的 Enable proxy,同时取消勾选下面的 Reverse rewrite host in response headers。点击右边的 应用 保存更改。
进入主页最下面的 配置编辑器 (Configuration Editor),转到 system.webServer/proxy 节点,调整 preserveHostHeaderTrue 后点击右边的 应用 保存更改。
如果不取消勾选反向重写主机头,会导致 Cloudreve API 无法返回正确的地址,导致无法预览图片视频等。
3. 配置反代规则
这是 web.config 文件的内容,将它放在目标网站根目录即可。此样例包括两个规则与一个限制:
  • HTTP to HTTPS redirect (强制 HTTPS,需要自行配置 SSL 后才可使用,不使用请删除该 rule)
  • Rerwite (反代)
  • requestLimits 中的 60000000 为传输文件大小限制,单位 byte,如果您要使用本地存储策略请更改大小为理论最大文件尺寸
1
<?xml version="1.0" encoding="UTF-8"?>
2
<configuration>
3
<system.webServer>
4
<rewrite>
5
<rules>
6
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
7
<match url=".*" />
8
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
9
<add input="{HTTPS}" pattern="off" />
10
</conditions>
11
<action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
12
</rule>
13
<rule name="Rerwite" stopProcessing="true">
14
<match url=".*" />
15
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
16
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
17
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
18
</conditions>
19
<action type="Rewrite" url="http://localhost:5212/{R:0}" />
20
</rule>
21
</rules>
22
</rewrite>
23
<security>
24
<requestFiltering allowDoubleEscaping="true">
25
<requestLimits maxAllowedContentLength="60000000" />
26
</requestFiltering>
27
</security>
28
</system.webServer>
29
</configuration>
Copied!

进程守护

以下两种方式可任选其一。

Systemd

1
# 编辑配置文件
2
vim /usr/lib/systemd/system/cloudreve.service
Copied!
将下文 PATH_TO_CLOUDREVE 更换为程序所在目录:
1
[Unit]
2
Description=Cloudreve
3
Documentation=https://docs.cloudreve.org
4
After=network.target
5
After=mysqld.service
6
Wants=network.target
7
8
[Service]
9
WorkingDirectory=/PATH_TO_CLOUDREVE
10
ExecStart=/PATH_TO_CLOUDREVE/cloudreve
11
Restart=on-abnormal
12
RestartSec=5s
13
KillMode=mixed
14
15
StandardOutput=null
16
StandardError=syslog
17
18
[Install]
19
WantedBy=multi-user.target
Copied!
1
# 更新配置
2
systemctl daemon-reload
3
4
# 启动服务
5
systemctl start cloudreve
6
7
# 设置开机启动
8
systemctl enable cloudreve
Copied!
管理命令:
1
# 启动服务
2
systemctl start cloudreve
3
4
# 停止服务
5
systemctl stop cloudreve
6
7
# 重启服务
8
systemctl restart cloudreve
9
10
# 查看状态
11
systemctl status cloudreve
Copied!

Supervisor

首先安装supervisor,已安装的可以跳过。
1
# 安装 supervisor
2
sudo yum install python-setuptools
3
sudo easy_install supervisor
4
5
# 初始化全局配置文件
6
sudo touch /etc/supervisord.conf
7
sudo echo_supervisord_conf > /etc/supervisord.conf
Copied!
编辑全局配置文件:
1
sudo vim /etc/supervisord.conf
Copied!
将文件底部的[include] 分区注释符号;删除,加入新的配置文件包含路径:
1
[include]
2
files = /etc/supervisor/conf/*.conf
Copied!
创建 Cloudreve 应用配置所在文件目录,并创建打开配置文件:
1
sudo mkdir -p /etc/supervisor/conf
2
sudo vim /etc/supervisor/conf/cloudreve.conf
Copied!
根据实际情况填写以下内容并保存:
1
[program:cloudreve]
2
directory=/home/cloudreve
3
command=/home/cloudreve/cloudreve
4
autostart=true
5
autorestart=true
6
stderr_logfile=/var/log/cloudreve.err
7
stdout_logfile=/var/log/cloudreve.log
8
environment=CODENATION_ENV=prod
Copied!
其中以下配置项需要根据实际情况更改:
  • directory: Cloudreve 主程序所在目录
  • command: Cloudreve 主程序绝对路径
  • stderr_logfile: 错误日志路径
  • stdout_logfile: 通常日志路径
通过全局配置文件启动 supervisor:
1
supervisord -c /etc/supervisord.conf
Copied!
日后你可以通过以下指令管理 Cloudreve 进程:
1
# 启动
2
sudo supervisorctl start cloudreve
3
4
# 停止
5
sudo supervisorctl stop cloudreve
6
7
# 查看状态
8
sudo supervisorctl status cloudreve
Copied!

Docker

使用之前,请确保您知道 docker 的工作机制,在一般情况下,上述部署流程已经能够覆盖绝大多数使用场景。
我们提供官方的 docker image,支持三种架构 armv7, arm64 以及 amd64, 你可以使用以下命令部署

创建目录结构

确保运行之前:
  1. 1.
    手动创建 conf.ini 空文件或者符合 Cloudreve 配置文件规范的 conf.ini, 并将 <path_to_your_config> 替换为该路径
  2. 2.
    手动创建 cloudreve.db 空文件, 并将 <path_to_your_db> 替换为该路径
  3. 3.
    手动创建 uploads 文件夹, 并将 <path_to_your_uploads> 替换为该路径
  4. 4.
    手动创建 avatar 文件夹,并将 <path_to_your_avatar> 替换为该路径
或者,直接使用以下命令创建:
1
mkdir -vp cloudreve/{uploads,avatar} \
2
&& touch cloudreve/conf.ini \
3
&& touch cloudreve/cloudreve.db
Copied!

运行

然后,运行 docker container:
1
docker run -d \
2
-p 5212:5212 \
3
--mount type=bind,source=<path_to_your_config>,target=/cloudreve/conf.ini \
4
--mount type=bind,source=<path_to_your_db>,target=/cloudreve/cloudreve.db \
5
-v <path_to_your_uploads>:/cloudreve/uploads \
6
-v <path_to_your_avatar>:/cloudreve/avatar \
7
cloudreve/cloudreve:latest
Copied!

Docker Compose

除此之外,我们还提供 docker compose 部署,并且整合了离线下载服务 在此之前,需要创建 data 目录作为离线下载临时中转目录

创建目录结构

1
mkdir -vp cloudreve/{uploads,avatar} \
2
&& touch cloudreve/conf.ini \
3
&& touch cloudreve/cloudreve.db \
4
&& mkdir -p aria2/config \
5
&& mkdir -p data/aria2 \
6
&& chmod -R 777 data/aria2
Copied!

运行

然后将以下文件保存为 docker-compose.yml,放置于当前目录,与 cloudreve 同一层级,同时,修改文件中的 RPC_SECRET
1
version: "3.8"
2
services:
3
cloudreve:
4
container_name: cloudreve
5
image: cloudreve/cloudreve:latest
6
restart: unless-stopped
7
ports:
8
- "5212:5212"
9
volumes:
10
- temp_data:/data
11
- ./cloudreve/uploads:/cloudreve/uploads
12
- ./cloudreve/conf.ini:/cloudreve/conf.ini
13
- ./cloudreve/cloudreve.db:/cloudreve/cloudreve.db
14
- ./cloudreve/avatar:/cloudreve/avatar
15
depends_on:
16
- aria2
17
aria2:
18
container_name: aria2
19
image: p3terx/aria2-pro
20
restart: unless-stopped
21
environment:
22
- RPC_SECRET=your_aria_rpc_token
23
- RPC_PORT=6800
24
volumes:
25
- ./aria2/config:/config
26
- temp_data:/data
27
volumes:
28
temp_data:
29
driver: local
30
driver_opts:
31
type: none
32
device: $PWD/data
33
o: bind
Copied!
运行镜像
1
# 后台运行模式,可以从 docker/docker-compose 的日志中获取默认管理员账户用户名和密码
2
docker-compose up -d
3
4
# 或者,直接运行,log 将会直接输出在当前控制台中,请注意退出之后保持当前容器运行
5
docker-compose up
Copied!
在之后的控制面板中,按照如下配置
  1. 1.
    [不可修改] RPC 服务器地址 => http://aria2:6800
  2. 2.
    [可修改, 需保持和 docker-compose.yml 文件一致] RPC 授权令牌 => your_aria_rpc_token
  3. 3.
    [不可修改] Aria2 用作临时下载目录的 节点上的绝对路径 => /data

更新

关闭当前运行的容器,此步骤不会删除挂载的配置文件以及相关目录
1
docker-compose down
Copied!
如果此前已经拉取 docker 镜像,使用以下命令获取最新镜像
1
docker pull cloudreve/cloudreve
Copied!
重复运行步骤即可