Cloudreve 是目前自建网盘里最省心的选择之一:多用户、多存储策略、自带 WebDAV、离线下载、缩略图和在线预览,数据全部落在自己硬盘上。Pro 版在此基础上多了同用户组绑定多个存储策略、积分与付费下载、容量包、激活码、支付对接等运营能力。
本文记录在绿联 DXP6800 Pro 上用 Docker Compose 部署 Cloudreve Pro 的完整过程,所有命令都可以直接复制。文末附上我真实踩到的三个坑,能帮你少折腾一晚上。
一、先看效果
部署完成后,网页端可以正常上传文件、浏览列表和生成缩略图,存储配额统计也正常:
上传队列运行正常,分片上传带进度:
图片视图能自动出预览,存储占用实时统计:
二、开始前准备两样东西
Cloudreve Pro 的镜像放在私有仓库里,必须先登录才能拉取,所以要去 Pro 授权管理面板 拿两组东西:
- 授权密钥(点「获取授权密钥」):启动容器时通过环境变量
CR_LICENSE_KEY传入,用来兑换离线许可证。 - 私有镜像仓库账号密码(点「获取 Docker 镜像」):用来
docker login release.cloudreve.org。
这两组东西都在同一个面板里,但用途完全不同,别搞混——我用错了其中一组,导致容器起来后一直提示授权失败(见坑 1)。
另外注意:Pro 授权是按根域名授权的,子域名可以用。首次启动会联网兑换离线许可证,如果 NAS 不能出网,需要在面板额外拿一个「离线许可证密钥」,通过 CR_OFFLINE_LICENSE 传入。
三、三步部署
第 1 步:开好 Docker 与 SSH,确认路径
应用中心安装 Docker 并打开一次(它会自动建好共享文件夹 docker),然后在「控制面板 → 终端机」里开启 SSH。
确认 docker 目录在哪块盘:文件管理器里右键共享文件夹 docker → 属性,看「存储位置」。存储空间 1 对应 /volume1/docker,存储空间 2 就是 /volume2/docker。建议先在文件管理器里把项目目录建出来,不存在的路径在建 compose 项目时会直接报错。
ssh 你的管理员账号@NAS内网IP
sudo -i
cd /volume1/docker
mkdir -p cloudreve-nas && cd cloudreve-nas
第 2 步:登录私有仓库并拉取 Pro 镜像
docker login release.cloudreve.org
# Username / Password 填授权面板「获取 Docker 镜像」生成的那一组
docker pull release.cloudreve.org/cloudreve/pro:latest
docker images | grep cloudreve
看到镜像列出来就成功了。仓库凭证不是永久有效,以后更新镜像如果报 no basic auth credentials 或 unauthorized,回面板重新生成一组再登录即可。
第 3 步:写 compose 并启动
在 /volume1/docker/cloudreve-nas 下新建 docker-compose.yml,内容如下(已包含 PostgreSQL、Redis 和一个固定子网的网络段):
services:
cloudreve:
image: release.cloudreve.org/cloudreve/pro:latest
container_name: cloudreve
restart: unless-stopped
depends_on:
postgresql:
condition: service_started
redis:
condition: service_started
ports:
- "5212:5212" # Web 界面
- "6888:6888" # Aria2 离线下载
- "6888:6888/udp"
environment:
- TZ=Asia/Shanghai
- CR_LICENSE_KEY=你的授权密钥
- CR_CONF_Database.Type=postgres
- CR_CONF_Database.Host=postgresql
- CR_CONF_Database.Port=5432
- CR_CONF_Database.User=cloudreve
- CR_CONF_Database.Password=你的数据库密码
- CR_CONF_Database.Name=cloudreve
- CR_CONF_Redis.Server=redis:6379
volumes:
- ./data:/cloudreve/data
postgresql:
image: postgres:17
container_name: postgresql
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- POSTGRES_USER=cloudreve
- POSTGRES_PASSWORD=你的数据库密码
- POSTGRES_DB=cloudreve
volumes:
- ./postgres:/var/lib/postgresql/data
redis:
image: redis:latest
container_name: redis
restart: unless-stopped
volumes:
- ./redis:/data
networks:
default:
ipam:
config:
- subnet: 10.88.0.0/24
需要改的只有两处:把 CR_LICENSE_KEY 换成授权密钥;把两处数据库密码换成你自己的(必须完全一致,建议只用字母数字,避免 $ 被 compose 当成变量插值)。
docker compose config >/dev/null && echo "语法 OK"
docker compose up -d
docker compose ps
三个容器都显示 Up 就成了,此时访问 http://NAS内网IP:5212。
四、初始化:第一个注册的账号就是管理员
打开页面后立刻注册,第一个注册的账号会自动成为管理员。这一步务必在暴露到公网之前做完,否则会被别人抢注。
然后进 /admin 做三件事:
- 参数设置 → 站点信息:把你的访问地址(内网或域名)加进站点 URL 列表。不配这一项,文件能传上去但下载链接和缩略图会指向错误主机名。
- 存储策略:确认本机存储的 Blob 存储目录是
data/uploads,它落在 NAS 的./data里。 - 用户组:把自己的用户组绑定这份存储策略,否则上传会失败。
五、让它在公网可用
家宽一般没有公网 IP,常规做法是用 frp 把 5212 转发出去,再用域名访问:
- frpc 里
localPort填 5212,remotePort自定义一个不常用端口,记得在 frps 的allowPorts和 VPS 安全组里放行。 - 有域名的话,建议在 VPS 上用 Nginx 或 Caddy 套一层 HTTPS,反代到 frp 的入口,证书交给 Let's Encrypt。
- 反代必须呈递
Host头(proxy_set_header Host $http_host;),否则部分功能异常;同时把client_max_body_size放大,不然大文件分片会上传失败。 - 让 Cloudreve 记录真实访客 IP:在
data/conf.ini的[System]段加上ProxyHeader = X-Forwarded-For,然后重启容器。
公网可访问之后,建议顺手关掉开放注册,或改成邀请码/邮箱验证——网盘地址被扫到是很快的事。
六、我踩过的三个坑
坑 1:容器起来了,但一直提示 Failed to obtain license
原因是 CR_LICENSE_KEY 填错了:我把「获取 Docker 镜像」生成的仓库凭证填了进去。两者都是授权面板里的一长串 JWT,但用途完全不同。有个快速的辨别方法——把那段 JWT 解出来看 aud 字段,如果写的是 https://release.cloudreve.org,那就是镜像仓库凭证,不是授权密钥。
正确做法是用「获取授权密钥」那一串。换好之后重启,日志里会显示拿到许可证并开始监听 5212。
坑 2:建网报错 all predefined address pools have been fully subnetted
这不是端口冲突,而是 NAS 上 Docker 项目太多,默认的地址池(172.16 到 172.31 的 /16 网段)被分完了,新建项目分不到子网。最快、最干净的解法是给这个项目固定一个子网,不用清理任何旧网络:
networks:
default:
ipam:
config:
- subnet: 10.88.0.0/24
把这段加到 compose 末尾即可(注意避开你内网的网段和已有 Docker 网络)。上面那份 compose 已经带上了。
坑 3:端口占用与管理员抢注
5212 和 6888 如果被别的服务占了,改冒号左边那个宿主机端口就行(容器内的端口不要动),比如 "25890:5212"。另外重复强调一次:管理员账号一定要在开公网之前注册掉。
七、维护与备份
- 更新:
docker compose pull && docker compose up -d(凭证过期先重新docker login)。 - 备份只有三样:
docker-compose.yml(含密钥,注意权限)、data/(配置+上传的文件)、postgres/(数据库)。 - 迁移:换机器时把这三个目录拷过去,保持挂载路径一致,再
docker compose up -d即可。
八、参考资料
整套跑下来,从拉镜像到能正常上传文件大约十几分钟。如果你也在 NAS 上折腾自建网盘,这份 compose 可以直接抄;遇到授权或建网报错,对照第六节排查基本就够了。



