之前 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,Cloudreve condition: 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 顺滑太多,隧道也不闹脾气了。

更多推荐