
Cloudreve 是一款开源、强大、稳定、安全的私有网盘自托管服务。社区版 开源免费,适合 个人或家庭 搭建私有云存储。Pro 版 在社区版基础上拓展了更多功能,通过 master/slave 主从架构,以及完善的集群调度与负载均衡功能,很适合团队协作或企业私有域中部署 商业化 网盘存储。
Pro 版额外提供:
增值服务体系: 内置 Stripe、微信、支付宝等支付接口渠道,快速构建付费体系
分享与协作: 支持更为精细化的用户分享策略和权限,灵活控制链接分享和访问
多维度存储策略: 针对用户、用户组配置差异化存储方案,匹配不同业务场景
集成高级认证功能: 支持 Logto/OIDC 等 SSO 提供商登录,可接入 QQ 互联登录
增值服务拓展: 基于容量、额度、积分与商城构建的,完善的增值服务链路
Black Friday 黑五特惠
中,使用优惠码 BFSC2025 购买 Cloudreve Pro 或 iOS VOL 许可证获得 25% 折扣。
本文记录了 Cloudreve Pro 的完整部署过程,特别感谢 Cloudreve 团队慷慨提供的 内容创作者许可证 支持!
SSH 登录 Linux 服务器,新建一个目录,用于 Cloudreve 服务的数据卷持久化
mkdir -p ~/container/cloudreve && cd $_
为了方便后期数据备份、管理或迁移,这里使用了 Docker 绑定数据卷的特性。创建一个 docker-compose.yml 模板,看起来应该像这样:
services:
pro:
image: cloudreve.azurecr.io/cloudreve/pro:latest
container_name: cloudreve-pro-backend
depends_on:
- postgresql
- redis
restart: unless-stopped
ports:
- "127.0.0.1:5212:5212"
# for magnet/bt download
#- "6888:6888"
#- "6888:6888/udp"
environment:
- CR_CONF_Database.Type=postgres
- CR_CONF_Database.Host=postgresql
- CR_CONF_Database.User=cloudreve
- CR_CONF_Database.Name=cloudreve
- CR_CONF_Database.Port=5432
- CR_CONF_Redis.Server=redis:6379
- CR_LICENSE_KEY=${CR_LICENSE_KEY}
volumes:
- ./data:/cloudreve/data
postgresql:
image: postgres:17
container_name: cloudreve-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=cloudreve
- POSTGRES_DB=cloudreve
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- ./db:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
redis:
image: redis:latest
container_name: cloudreve-redis
restart: unless-stopped
volumes:
- ./redis:/data
登录 Cloudreve 授权管理系统 ,进入授权管理

获取 Docker 私有仓库访问凭证

复制登录命令

进行一次登录
sudo docker login -u <用户名> -p <密码> cloudreve.azurecr.io
看到 Login Succeeded 代表登录成功,此时可以拉取 Docker 镜像
sudo docker compose pull
在正式启动 Cloudreve Pro 服务前,我们需要先给子域名绑定授权

点击 保存 后获取用于激活许可证的授权密钥,将其暴露给环境变量
export CR_LICENSE_KEY=你的授权密钥
一切就绪,现在可以启动 Cloudreve 服务了
sudo -E docker compose up -d
观察日志,正常情况下应该没有报错、警告和容器自动退出重启的情况,否则请返回检查
sudo docker compose logs -f
先决步骤可参考 服务器使用 Cloudflare CDN 的最佳实践 ,通常我会使用 Docker 外部宿主机上的 Nginx 进行反向代理,并仅由 Cloudflare CDN 回源访问,这是符合要求的 Nginx 虚拟主机配置文件示例:
server {
listen 80;
listen [::]:80;
# change it to your domain
server_name pan.via.moe;
# force https
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
# change it to your domain
server_name pan.via.moe;
# logs
access_log /var/log/nginx/cloudreve.access.log;
error_log /var/log/nginx/cloudreve.error.log;
# Cloudflare Origin CA
ssl_certificate /etc/nginx/cert/wild.via.moe.pem;
ssl_certificate_key /etc/nginx/cert/wild.via.moe.key;
ssl_protocols TLSv1.2 TLSv1.3;
# for Cloudflare SSL ciphers
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
# upload limit 10GB
client_max_body_size 10G;
# nerver cache rules
location ~* ^/(sw\.js|index\.html|manifest\.json)$ {
proxy_pass http://127.0.0.1:5212;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
# cloudflare real ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# no cache
add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
}
location / {
proxy_pass http://127.0.0.1:5212;
proxy_redirect off;
# Header
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
# cloudflare real ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
检查 Nginx 配置
sudo nginx -t
输出正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重载 Nginx 配置
sudo nginx -s reload
在 Cloudflare 将域名解析到服务器 IP 并开启 Cloudflare 代理

尽管我们已经在前面的 Nginx 配置文件中声明了缓存规则,考虑到 Cloudflare 仍可能会错误的缓存这些文件,建议在 Cloudflare 中额外添加一条 缓存规则,原因见官方文档 检查缓存配置 的说明。

大功告成!现在应当可以访问 Cloudreve 服务了。
访问你的域名,第一个注册的用户即为管理员


建议对管理员用户登录添加额外保护

可以添加额外的验证码服务,建议使用 Cloudflare Turnstile,这样下次我们就可以享受到和大型网站一样的全球宕机服务啦~ 出院!

离线下载 功能默认使用 Aria2 服务(集成在容器镜像内),对于一般的 HTTP 下载无需任何配置,开箱即用

若要下载 BitTorrent 或 Magnet 链接,仍需要在文章开头的 docker-compose.yml 模板里取消注释 6888 端口,并在安全组中放行相应的端口。
ports:
- "127.0.0.1:5212:5212"
# uncomment below for magnet/bt download
- "6888:6888"
- "6888:6888/udp"
也可以使用 qBittorrent 作为下载器,👉 了解更多关于 Cloudreve 离线下载的 细节 。

Cloudreve 是一款开源、强大、稳定、安全的私有网盘自托管服务。社区版 开源免费,适合 个人或家庭 搭建私有云存储。Pro 版 在社区版基础上拓展了更多功能,通过 master/slave 主从架构,以及完善的集群调度与负载均衡功能,很适合团队协作或企业私有域中部署 商业化 网盘存储。
Pro 版额外提供:
增值服务体系: 内置 Stripe、微信、支付宝等支付接口渠道,快速构建付费体系
分享与协作: 支持更为精细化的用户分享策略和权限,灵活控制链接分享和访问
多维度存储策略: 针对用户、用户组配置差异化存储方案,匹配不同业务场景
集成高级认证功能: 支持 Logto/OIDC 等 SSO 提供商登录,可接入 QQ 互联登录
增值服务拓展: 基于容量、额度、积分与商城构建的,完善的增值服务链路
Black Friday 黑五特惠
中,使用优惠码 BFSC2025 购买 Cloudreve Pro 或 iOS VOL 许可证获得 25% 折扣。
本文记录了 Cloudreve Pro 的完整部署过程,特别感谢 Cloudreve 团队慷慨提供的 内容创作者许可证 支持!
SSH 登录 Linux 服务器,新建一个目录,用于 Cloudreve 服务的数据卷持久化
mkdir -p ~/container/cloudreve && cd $_
为了方便后期数据备份、管理或迁移,这里使用了 Docker 绑定数据卷的特性。创建一个 docker-compose.yml 模板,看起来应该像这样:
services:
pro:
image: cloudreve.azurecr.io/cloudreve/pro:latest
container_name: cloudreve-pro-backend
depends_on:
- postgresql
- redis
restart: unless-stopped
ports:
- "127.0.0.1:5212:5212"
# for magnet/bt download
#- "6888:6888"
#- "6888:6888/udp"
environment:
- CR_CONF_Database.Type=postgres
- CR_CONF_Database.Host=postgresql
- CR_CONF_Database.User=cloudreve
- CR_CONF_Database.Name=cloudreve
- CR_CONF_Database.Port=5432
- CR_CONF_Redis.Server=redis:6379
- CR_LICENSE_KEY=${CR_LICENSE_KEY}
volumes:
- ./data:/cloudreve/data
postgresql:
image: postgres:17
container_name: cloudreve-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=cloudreve
- POSTGRES_DB=cloudreve
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- ./db:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
redis:
image: redis:latest
container_name: cloudreve-redis
restart: unless-stopped
volumes:
- ./redis:/data
登录 Cloudreve 授权管理系统 ,进入授权管理

获取 Docker 私有仓库访问凭证

复制登录命令

进行一次登录
sudo docker login -u <用户名> -p <密码> cloudreve.azurecr.io
看到 Login Succeeded 代表登录成功,此时可以拉取 Docker 镜像
sudo docker compose pull
在正式启动 Cloudreve Pro 服务前,我们需要先给子域名绑定授权

点击 保存 后获取用于激活许可证的授权密钥,将其暴露给环境变量
export CR_LICENSE_KEY=你的授权密钥
一切就绪,现在可以启动 Cloudreve 服务了
sudo -E docker compose up -d
观察日志,正常情况下应该没有报错、警告和容器自动退出重启的情况,否则请返回检查
sudo docker compose logs -f
先决步骤可参考 服务器使用 Cloudflare CDN 的最佳实践 ,通常我会使用 Docker 外部宿主机上的 Nginx 进行反向代理,并仅由 Cloudflare CDN 回源访问,这是符合要求的 Nginx 虚拟主机配置文件示例:
server {
listen 80;
listen [::]:80;
# change it to your domain
server_name pan.via.moe;
# force https
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
# change it to your domain
server_name pan.via.moe;
# logs
access_log /var/log/nginx/cloudreve.access.log;
error_log /var/log/nginx/cloudreve.error.log;
# Cloudflare Origin CA
ssl_certificate /etc/nginx/cert/wild.via.moe.pem;
ssl_certificate_key /etc/nginx/cert/wild.via.moe.key;
ssl_protocols TLSv1.2 TLSv1.3;
# for Cloudflare SSL ciphers
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
# upload limit 10GB
client_max_body_size 10G;
# nerver cache rules
location ~* ^/(sw\.js|index\.html|manifest\.json)$ {
proxy_pass http://127.0.0.1:5212;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
# cloudflare real ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# no cache
add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
}
location / {
proxy_pass http://127.0.0.1:5212;
proxy_redirect off;
# Header
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
# cloudflare real ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
检查 Nginx 配置
sudo nginx -t
输出正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重载 Nginx 配置
sudo nginx -s reload
在 Cloudflare 将域名解析到服务器 IP 并开启 Cloudflare 代理

尽管我们已经在前面的 Nginx 配置文件中声明了缓存规则,考虑到 Cloudflare 仍可能会错误的缓存这些文件,建议在 Cloudflare 中额外添加一条 缓存规则,原因见官方文档 检查缓存配置 的说明。

大功告成!现在应当可以访问 Cloudreve 服务了。
访问你的域名,第一个注册的用户即为管理员


建议对管理员用户登录添加额外保护

可以添加额外的验证码服务,建议使用 Cloudflare Turnstile,这样下次我们就可以享受到和大型网站一样的全球宕机服务啦~ 出院!

离线下载 功能默认使用 Aria2 服务(集成在容器镜像内),对于一般的 HTTP 下载无需任何配置,开箱即用

若要下载 BitTorrent 或 Magnet 链接,仍需要在文章开头的 docker-compose.yml 模板里取消注释 6888 端口,并在安全组中放行相应的端口。
ports:
- "127.0.0.1:5212:5212"
# uncomment below for magnet/bt download
- "6888:6888"
- "6888:6888/udp"
也可以使用 qBittorrent 作为下载器,👉 了解更多关于 Cloudreve 离线下载的 细节 。