用 Docker 部署 Cloudreve 个人网盘(MySQL 版)
之前 Nextcloud 走 CF Tunnel 重定向频繁出错、卡顿,实在忍不了,换成了 Cloudreve。Cloudreve 比 Nextcloud 轻太多,个人网盘 + 文件分享该有的都有,没有一堆用不上的插件拖累。
默认 SQLite + 内存队列其实就够个人用了,但这次顺手上了 MySQL,省得以后数据量大了再迁移。
部署
部署在另一台服务器上,路径 /home/ledger/data/cloudreve/。两个容器:MySQL + Cloudreve,用一个内部网络串起来。
services:
mysql:
image: mysql:latest
container_name: cloudreve-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: cloudreve
MYSQL_USER: cloudreve
MYSQL_PASSWORD: cloudreve_pass
TZ: Asia/Shanghai
volumes:
- /home/ledger/data/cloudreve/mysql:/var/lib/mysql
networks:
- cloudreve_net
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
interval: 10s
timeout: 5s
retries: 10
start_period: 60s
cloudreve:
image: cloudreve/cloudreve:latest
container_name: cloudreve
restart: always
depends_on:
mysql:
condition: service_healthy
ports:
- "10087:5212"
environment:
TZ: Asia/Shanghai
CR_CONF_Database.Type: mysql
CR_CONF_Database.Host: mysql
CR_CONF_Database.Port: "3306"
CR_CONF_Database.User: cloudreve
CR_CONF_Database.Password: cloudreve_pass
CR_CONF_Database.Name: cloudreve
volumes:
- /home/ledger/data/cloudreve/data:/cloudreve/data
networks:
- cloudreve_net
networks:
cloudreve_net:
几个点说明一下:
- 数据库连接走环境变量:Cloudreve 支持用
CR_CONF_*前缀的环境变量覆盖配置,这样就不用挂conf.ini进去了,compose 自包含。 depends_on带健康检查:Cloudreve 启动时 MySQL 必须已经能接连接,否则会 fallback 到 SQLite 或者直接起不来。给 MySQL 加了healthcheck,Cloudrevecondition: service_healthy等 MySQL 就绪再起。- 端口
10087:5212:5212 是 Cloudreve 默认端口,宿主机映射到 10087,后面 CF Tunnel 接这个端口。
启动
cd /home/ledger/data/cloudreve
docker compose up -d
第一次起来后,浏览器访问 http://服务器IP:10087,注册的第一个账号就是管理员。

接入 CF Tunnel 前必做的一步
这一步踩过 Nextcloud 的坑:接入隧道前,必须先在管理面板把"站点URL"改成你的 https 域名,否则 Cloudreve 生成的链接、重定向全是内网地址,走隧道后浏览器会跳到打不开的地址,复现 Nextlearn 式的重定向错乱。
进管理后台 → 站点设置 → 站点URL,填成最终要用的域名,比如 https://pan.你的域名.com。
改完之后再在 Cloudflare Tunnel 那边把 pan.你的域名.com 指向 http://localhost:10087 就行。

用起来
接入后访问 https://pan.你的域名.com,登录管理员账号。个人网盘该有的功能都在:文件上传/下载、目录分享、外链直链、多用户隔离(如果需要的话)。

MySQL 版相比 SQLite 版,后台多用户、大量小文件场景下响应更稳,备份也方便——直接 mysqldump 或者连数据卷一起备份都行。
整体迁移下来体感:比 Nextcloud 顺滑太多,隧道也不闹脾气了。
更多推荐


所有评论(0)