跳转到内容

OpenWRT 安装 CloudDrive2 完全指南(2026 年最新版)

CloudDrive2 部署到 OpenWRT/iStoreOS 路由器,实现阿里云盘、百度网盘、OneDrive 等云存储的本地化挂载访问,打造轻量级云端 NAS 系统。

💡 提示:本文已更新到 2026 年 4 月,包含最新的 Docker 配置优化和网盘兼容性说明。

📖 什么是 CloudDrive2?

核心功能

CloudDrive2 是什么?

CloudDrive2 是一款强大的云存储挂载工具
可以将多个云盘挂载为本地磁盘/目录
支持 Windows/macOS/Linux/Docker/NAS

核心价值:
✅ 云端存储本地化访问
✅ 多网盘统一管理
✅ 无需下载直接播放
✅ 节省本地存储空间

支持的云平台:

国内网盘:
✅ 阿里云盘(推荐)
✅ 百度网盘
✅ 天翼云盘
✅ 移动云盘
✅ 115 网盘
✅ 迅雷云盘
✅ 夸克网盘

国际网盘:
✅ Microsoft OneDrive
✅ Google Drive
✅ Dropbox
✅ WebDAV 协议
✅ S3 兼容存储

应用场景

家庭媒体中心:

场景:电影/电视剧存储在阿里云盘
优势:
- 无需下载到本地
- Jellyfin/Emby 直接读取
- 多人同时观看
- 不占用路由器存储空间

办公文档同步:

场景:工作文件存储在 OneDrive/百度网盘
优势:
- 局域网内快速访问
- 多设备共享
- 版本自动同步
- 离线缓存加速

数据备份归档:

场景:重要数据备份到多个云盘
优势:
- 异地容灾
- 成本低廉
- 自动化管理
- 随时恢复

个人理解

💬 使用 CloudDrive2 2 年的真实体验:

为什么选择 CloudDrive2 而非其他方案?

对比 Rclone:

CloudDrive2 优势:
✅ 图形化管理界面(友好)
✅ 中文支持完善
✅ 国内网盘优化好
✅ 挂载更稳定
✅ 缓存机制智能

Rclone 优势:
✅ 开源免费
✅ 支持平台更多
✅ 社区资源丰富
❌ 配置复杂(命令行)
❌ 国内网盘支持弱

对比 Alist:

CloudDrive2 优势:
✅ 真正的文件系统挂载
✅ 应用兼容性更好
✅ 性能更优

Alist 优势:
✅ 纯 Web 界面
✅ 资源占用更低
✅ 部署更简单
❌ 部分应用无法识别

我的观点:

  • 如果你需要真正的文件系统挂载(如 Jellyfin 刮削),CloudDrive2 是最佳选择
  • 如果只是Web 浏览和下载,Alist 更轻量
  • 如果追求极致自由和定制,Rclone 更灵活
  • 对于国内用户,CloudDrive2 的本土化做得最好

🔍 前置条件检查

硬件要求

最低配置:

CPU: ARMv7 或 x86_64
内存: ≥ 512 MB(推荐 1 GB+)
存储: ≥ 2 GB 可用空间(Docker + 缓存)
网络: 稳定的互联网连接
USB: 可选(用于扩展存储)

推荐配置:

路由器:
- x86 软路由(J4125/N5105/N100)
- 或高性能 ARM 路由器(RT-AX86U/GT-AX6000)
- 内存 ≥ 2 GB
- SSD 或高速 U 盘

存储扩展:
- USB 3.0 移动硬盘/SSD
- 或 SATA/NVMe(x86 平台)

💡 硬件选择建议:

平台优势劣势适用场景
x86 软路由性能强、扩展性好功耗高、成本高重度使用、多服务
ARM 路由器功耗低、体积小性能有限轻度使用、单服务
虚拟机灵活、易备份需要宿主机ESXi/PVE 环境

软件要求

必需组件:

✅ OpenWRT/iStoreOS 固件
✅ Docker 已安装并运行
✅ SSH 访问权限
✅ 稳定的网络连接

检查命令:

bash
# 1. 查看系统信息
uname -a
cat /etc/openwrt_release

# 2. 检查 Docker 状态
docker info
docker ps

# 3. 检查可用空间
df -h

# 4. 检查内存
free -m

# 5. 检查 fuse3
which fusermount3
fusermount3 --version

如果 Docker 未安装:

参考本站教程:Docker 安装指南

网络环境确认

关键检查点:

✅ 路由器能正常访问互联网
✅ DNS 解析正常
✅ 防火墙允许出站连接
✅ 网盘服务未被屏蔽

测试方法:

bash
# 测试外网连接
ping -c 4 aliyundrive.com
ping -c 4 baidu.com

# 测试 HTTPS
wget -O /dev/null https://www.aliyundrive.com

# 测试 Docker Hub
docker pull hello-world

⚠️ 特别注意:

如果使用旁路由模式

常见问题:
❌ Docker 容器无法上网
❌ DNS 解析失败
❌ 网盘连接超时

解决方法:
1. 确认主路由转发正常
2. 检查 iptables 规则
3. 临时改为主路由测试
4. 配置正确的网关和 DNS

💾 Docker 空间扩容

为什么需要扩容?

问题背景:

大多数 OpenWRT 固件的 Docker 分区默认很小
通常只有 100-500 MB

CloudDrive2 需要:
- Docker 镜像:~300 MB
- 配置文件:~50 MB
- 缓存空间:视使用情况而定
- 日志文件:持续增长

结果:空间不足导致安装失败或运行异常

判断是否需要扩容:

bash
# 查看 Docker 存储使用情况
docker system df

# 查看根分区可用空间
df -h /

# 如果可用空间 < 1 GB,建议扩容

扩容 docker 空间

openwrt一般只要不是自己DIY编译的很少有把docker分区编译够用的,只能通过挂载分区的方式来实现扩容。够用的直接跳过,进入到下个标题直接配置

创建分区或者添加新分区

一般添加的新的磁盘默认是看不到的,需要执行一下命令 创建分区 或者 格式化成ext4 才能在挂载点看到该分区。

查看当前系统所有硬盘及分区情况:fdisk -l

在指定的硬盘(例:/dev/sdb)上创建分区:fdisk /dev/sdb , 根据提示进行下一步操作

如:查看帮助(h),新建分区(n),删除分区(d),查看分区情况(p)

分区成功后,写分区表并退出(w)

对新建分区(例:/dev/sda1)进行格式化: mkfs.ext4 /dev/sdb1

由于我自己的是虚拟机的环境,就直接添加一个分区,格式化后直接挂载了,如果是单个物理盘,而且已经安装了openwrt,请根据命令创建新分区,格式化ext4后挂载即可"

clouddrive2

clouddrive2

选择好分区和挂载目录,勾选上 启用此挂载点

clouddrive2

在高级选项里选择 ext4 ,点击 保存&应用

然后重启openwrt,一定要重启,不然不生效,生效后如下

clouddrive2

把分区挂载到opt目录后,也就是docker的目录达到了扩容的目的

处理完扩容问题后,接下来进入安装阶段

部署过程

TIP

运行前请先确保系统已安装fuse3,确定fusermount3命令可以正常运行

  • 通过ssh连接openwrt
  • 开启MountFlags
sh
mkdir -p /etc/systemd/system/docker.service.d/

方案一:使用外部存储(推荐)⭐

适用场景:

✅ 有 USB 移动硬盘/U 盘
✅ 需要大容量缓存
✅ 追求最佳性能

操作步骤:

步骤 1:准备存储设备

推荐使用:
- USB 3.0 移动硬盘(容量大)
- USB 3.0 U 盘(速度快)
- SATA/NVMe SSD(x86 平台)

避免使用:
❌ USB 2.0 设备(速度慢)
❌ 老旧 U 盘(寿命短)

步骤 2:格式化磁盘

磁盘格式化

bash
# 1. 查看磁盘列表
fdisk -l

# 找到你的 USB 设备,例如 /dev/sda

# 2. 创建分区(如果需要)
fdisk /dev/sda
# 按 n 创建新分区
# 按 w 保存退出

# 3. 格式化为 ext4
mkfs.ext4 /dev/sda1

# 等待完成(大容量磁盘可能需要几分钟)

步骤 3:挂载磁盘

挂载配置

bash
# 1. 创建挂载点
mkdir -p /opt

# 2. 手动挂载测试
mount /dev/sda1 /opt

# 3. 验证挂载
df -h /opt

# 应该看到类似输出:
# /dev/sda1  931G  77M  884G   1% /opt

步骤 4:设置开机自动挂载

方法 A:通过 Web 界面(推荐)

1. 登录 LuCI 管理界面
2. 系统 → 挂载点
3. 点击"添加"
4. 选择 UUID 或设备(/dev/sda1)
5. 挂载点填写:/opt
6. 文件系统:ext4
7. 勾选"启用此挂载点"
8. 点击"保存并应用"

启用挂载点

方法 B:通过命令行

bash
# 1. 获取磁盘 UUID
blkid /dev/sda1

# 输出示例:
# /dev/sda1: UUID="xxxx-xxxx" TYPE="ext4"

# 2. 编辑 fstab
vi /etc/config/fstab

# 3. 添加以下内容
config mount
    option target '/opt'
    option uuid 'xxxx-xxxx'  # 替换为你的 UUID
    option fstype 'ext4'
    option options 'rw,sync,noatime'
    option enabled '1'

# 4. 重启生效
reboot

步骤 5:迁移 Docker 数据(可选)

如果之前已经安装了 Docker:

bash
# 1. 停止 Docker 服务
/etc/init.d/dockerd stop

# 2. 迁移现有数据
mv /var/lib/docker/* /opt/docker/

# 3. 创建软链接
ln -s /opt/docker /var/lib/docker

# 4. 启动 Docker
/etc/init.d/dockerd start

# 5. 验证
docker info | grep "Docker Root Dir"
# 应该显示:Docker Root Dir: /var/lib/docker -> /opt/docker

方案二:扩展现有分区

适用场景:

✅ 没有外部存储设备
✅ 闪存空间充足
✅ 轻度使用

操作步骤:

步骤 1:检查可用空间

bash
# 查看各分区使用情况
df -h

# 查看块设备
lsblk

步骤 2:调整分区大小

警告

此操作有风险,可能导致系统无法启动! 务必先备份重要数据!

bash
# 仅适用于有未分配空间的情况
# 使用 fdisk 或 parted 调整分区
# 具体操作因设备而异,建议查阅相关文档

# 更安全的做法:
# 重新刷入自定义固件,增大 Docker 分区

步骤 3:清理 Docker 缓存

如果无法扩容,可以清理无用数据:

bash
# 清理未使用的镜像
docker image prune -a

# 清理未使用的容器
docker container prune

# 清理未使用的卷
docker volume prune

# 清理所有未使用对象
docker system prune -a --volumes

# 查看清理后的空间
df -h /var/lib/docker

验证扩容效果

bash
# 1. 检查挂载状态
mount | grep /opt

# 2. 检查可用空间
df -h /opt

# 3. 测试写入权限
touch /opt/test.txt
echo "test" > /opt/test.txt
cat /opt/test.txt
rm /opt/test.txt

# 4. 检查 Docker 是否正常运行
docker info
docker run hello-world

🐳 部署 CloudDrive2

步骤 1:安装依赖

检查 fuse3:

bash
# 检查是否已安装
which fusermount3

# 如果返回路径,说明已安装
# 如果无返回,需要安装

安装 fuse3:

bash
# 更新软件包列表
opkg update

# 安装 fuse3
opkg install fuse3

# 验证安装
fusermount3 --version

💡 常见问题:

问题:找不到 fuse3 包

解决:
1. 检查软件源配置
   cat /etc/opkg/distfeeds.conf
   
2. 更换软件源
   使用官方源或国内镜像源
   
3. 手动编译安装
   从 GitHub 下载源码编译

步骤 2:配置 MountFlags

为什么需要配置?

Docker 容器需要访问宿主机的挂载点
默认情况下,Docker 的挂载命名空间是私有的
需要设置为 shared 才能正确挂载云盘

操作步骤:

bash
# 1. 创建 Docker 服务配置目录
mkdir -p /etc/systemd/system/docker.service.d/

# 2. 创建配置文件
cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF

# 3. 验证文件内容
cat /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf

# 应该看到:
# [Service]
# MountFlags=shared

替代方案(无 systemd):

如果你的 OpenWRT 没有 systemd:

bash
# 编辑 Docker 启动脚本
vi /etc/init.d/dockerd

# 在启动命令前添加
mount --make-shared /opt

# 或者添加到本地启动脚本
vi /etc/rc.local

# 在 exit 0 之前添加
mount --make-shared /opt
exit 0

步骤 3:设置挂载点

查找挂载点:

bash
# 查看所有挂载点
df -h

# 输出示例:
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/root       100M   80M   20M  80% /
# /dev/sda1       931G   77M  884G   1% /opt

查找挂载点

设置共享挂载:

bash
# 将 /opt 设置为共享挂载
mount --make-shared /opt

# 验证
findmnt -o TARGET,PROPAGATION /opt

# 应该看到:
# TARGET PROPAGATION
# /opt   shared

永久生效:

方法 1:添加到 rc.local

bash
# 编辑启动脚本
vi /etc/rc.local

# 在 exit 0 之前添加
mount --make-shared /opt

# 保存退出

方法 2:创建启动脚本

bash
# 创建脚本
cat <<EOF > /jffs/scripts/set_mount_shared.sh
#!/bin/sh
sleep 5
mount --make-shared /opt
echo "$(date): MountFlags set to shared" >> /tmp/mount_flags.log
EOF

# 赋予执行权限
chmod +x /jffs/scripts/set_mount_shared.sh

# 添加到开机启动
echo "/jffs/scripts/set_mount_shared.sh &" >> /etc/rc.local

步骤 4:拉取 Docker 镜像

从 Docker Hub 拉取:

bash
# 拉取最新不稳定版本(推荐,功能最新)
docker pull cloudnas/clouddrive2-unstable

# 或拉取稳定版本
docker pull cloudnas/clouddrive2

# 验证镜像
docker images | grep clouddrive2

💡 加速下载:

如果下载速度慢,可以配置镜像加速器:

bash
# 编辑 Docker 配置
vi /etc/docker/daemon.json

# 添加以下内容
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud"
  ]
}

# 重启 Docker
/etc/init.d/dockerd restart

# 重新拉取
docker pull cloudnas/clouddrive2-unstable

国内镜像源推荐:

✅ DaoCloud: https://docker.m.daocloud.io
✅ Timeweb: https://dockerhub.timeweb.cloud
✅ Huecker: https://huecker.io
✅ 阿里云: https://<your-id>.mirror.aliyuncs.com

步骤 5:启动容器

完整启动命令:

bash
docker run -d \
  --name clouddrive2 \
  --restart unless-stopped \
  --env CLOUDDRIVE_HOME=/Config \
  -v /opt/clouddrive/shared:/CloudNAS:shared \
  -v /opt/clouddrive/Config:/Config \
  -v /opt/clouddrive/media/shared:/media:shared \
  -p 19798:19798 \
  --privileged \
  --device /dev/fuse:/dev/fuse \
  cloudnas/clouddrive2-unstable

参数详解:

参数说明必要性
-d后台运行✅ 必需
--name clouddrive2容器名称✅ 推荐
--restart unless-stopped自动重启策略✅ 推荐
--env CLOUDDRIVE_HOME=/Config配置目录环境变量✅ 必需
-v /opt/.../shared:/CloudNAS:shared云盘挂载点✅ 必需
-v /opt/.../Config:/Config配置文件目录✅ 必需
-v /opt/.../media:/media:shared媒体文件目录⚠️ 可选
-p 19798:19798Web 管理端口✅ 必需
--privileged特权模式✅ 必需
--device /dev/fuse:/dev/fuseFUSE 设备映射✅ 必需

目录结构说明:

/opt/clouddrive/
├── Config/          # 配置文件(必须)
│   ├── config.json  # 主配置
│   └── logs/        # 日志文件
├── shared/          # 云盘挂载点(必须)
│   ├── 阿里云盘/
│   ├── 百度网盘/
│   └── OneDrive/
└── media/           # 媒体文件(可选)
    ├── Movies/
    └── TV/

自定义配置示例:

示例 1:最小化配置

bash
docker run -d \
  --name clouddrive2 \
  --restart unless-stopped \
  -v /opt/cd2/Config:/Config \
  -v /opt/cd2/Shared:/CloudNAS:shared \
  -p 19798:19798 \
  --privileged \
  --device /dev/fuse:/dev/fuse \
  cloudnas/clouddrive2-unstable

示例 2:完整配置(推荐)

bash
docker run -d \
  --name clouddrive2 \
  --restart unless-stopped \
  --env CLOUDDRIVE_HOME=/Config \
  --env TZ=Asia/Shanghai \
  -v /opt/clouddrive/Config:/Config \
  -v /opt/clouddrive/Shared:/CloudNAS:shared \
  -v /opt/clouddrive/Media:/media:shared \
  -v /opt/clouddrive/Cache:/cache:shared \
  -p 19798:19798 \
  --privileged \
  --device /dev/fuse:/dev/fuse \
  --memory=512m \
  --cpus=1.0 \
  cloudnas/clouddrive2-unstable

额外参数说明:

--env TZ=Asia/Shanghai     # 设置时区
--memory=512m              # 限制内存使用
--cpus=1.0                 # 限制 CPU 使用
-v /opt/.../Cache:/cache   # 缓存目录(提升性能)

步骤 6:验证部署

检查容器状态:

bash
# 查看运行中的容器
docker ps | grep clouddrive2

# 应该看到类似输出:
# CONTAINER ID  IMAGE                             STATUS
# abc123def456  cloudnas/clouddrive2-unstable     Up 2 minutes

查看日志:

bash
# 实时查看日志
docker logs -f clouddrive2

# 查看最近 100 行日志
docker logs --tail 100 clouddrive2

# 正常启动应该看到:
# CloudDrive2 started successfully
# Web UI listening on port 19798

访问 Web 界面:

浏览器访问:
http://192.168.1.1:19798

替换为你的路由器 IP 地址

CloudDrive2 Web 界面

初次访问:

1. 设置管理员密码
2. 阅读并接受使用协议
3. 进入主界面

☁️ 配置云盘挂载

通用配置流程

步骤 1:登录 Web 管理界面

访问:http://路由器IP:19798
输入管理员密码

步骤 2:添加云盘

1. 点击"添加云盘"
2. 选择云盘类型
3. 扫码或输入账号密码
4. 授权访问
5. 设置挂载参数

步骤 3:验证挂载

bash
# SSH 登录路由器
ssh root@192.168.1.1

# 查看挂载的云盘
ls -la /opt/clouddrive/Shared/

# 应该看到云盘文件夹
# 尝试读取文件
cat /opt/clouddrive/Shared/阿里云盘/test.txt

阿里云盘配置(推荐)⭐⭐⭐⭐⭐

优势:

✅ 不限速(相比百度网盘)
✅ 空间大(免费 100GB+)
✅ 稳定性好
✅ 视频播放流畅

配置步骤:

方法 1:扫码登录(推荐)

1. 在 CloudDrive2 中选择"阿里云盘"
2. 显示二维码
3. 用手机阿里云盘 App 扫码
4. 确认授权
5. 自动完成配置

方法 2:Token 登录

1. 访问阿里云盘网页版
2. 登录后打开开发者工具(F12)
3. 切换到 Network 标签
4. 刷新页面
5. 找到 token 请求
6. 复制 refresh_token
7. 粘贴到 CloudDrive2

高级配置:

缓存优化:

设置 → 阿里云盘 → 缓存配置
- 启用本地缓存:是
- 缓存目录:/opt/clouddrive/Cache
- 缓存大小:10-50 GB(根据空间调整)
- 缓存策略:智能预读

传输优化:

- 并发下载数:3-5
- 分片大小:10 MB
- 启用断点续传:是
- 上传限速:不限(或根据带宽设置)

💡 使用技巧:

技巧 1:自动备份照片

手机阿里云盘设置:
- 开启自动备份
- 选择 WiFi 环境下
- CloudDrive2 自动同步到本地

技巧 2:配合 Jellyfin

Jellyfin 媒体库路径设置为:
/opt/clouddrive/Shared/阿里云盘/Movies

优势:
- 无需下载即可播放
- 自动刮削元数据
- 多设备同时观看

技巧 3:定期清理缓存

bash
# 创建清理脚本
cat <<EOF > /jffs/scripts/clean_cd2_cache.sh
#!/bin/sh
CACHE_DIR="/opt/clouddrive/Cache"
MAX_SIZE=50  # GB

CURRENT_SIZE=$(du -sg $CACHE_DIR | cut -f1)

if [ $CURRENT_SIZE -gt $MAX_SIZE ]; then
    rm -rf $CACHE_DIR/*
    echo "$(date): Cache cleaned" >> /tmp/cd2_clean.log
fi
EOF

chmod +x /jffs/scripts/clean_cd2_cache.sh

# 每周日凌晨 3 点执行
cru a clean_cd2_cache "0 3 * * 0 /jffs/scripts/clean_cd2_cache.sh"

百度网盘配置

特点:

⚠️ 非会员限速严重(~100 KB/s)
✅ 资源丰富
✅ 分享生态成熟

配置步骤:

1. 选择"百度网盘"
2. 扫码或账号密码登录
3. 授权访问
4. 配置挂载参数

优化建议:

购买会员:

如果经常使用,建议购买超级会员
- 不限速下载
- 更大存储空间
- 视频在线播放

缓存策略:

- 启用强力缓存
- 增大缓存空间
- 减少重复下载

只读挂载:

如果不需上传,设置为只读模式
避免误操作删除云端文件

OneDrive 配置

优势:

✅ Office 365 用户空间大(1 TB+)
✅ 国际访问稳定
✅ 与 Windows 集成好

配置步骤:

1. 选择"Microsoft OneDrive"
2. 跳转到微软登录页面
3. 输入账号密码
4. 授权访问
5. 选择要挂载的驱动器

多账户支持:

可以添加多个 OneDrive 账户
- 个人账户
- 工作/学校账户
- 分别挂载到不同目录

💡 使用技巧:

配合 Office 使用:

Windows 上编辑文档
自动同步到 OneDrive
路由器上可直接访问最新版本

备份重要文档:

将工作文档存储在 OneDrive
CloudDrive2 提供本地访问
双重保障

其他云盘配置

天翼云盘:

适合:中国电信用户
优势:电信网络速度快
配置:类似阿里云盘

115 网盘:

适合:重度下载用户
优势:资源丰富
注意:需要会员

WebDAV:

适合:自建 NAS/服务器
优势:完全可控
配置:
- URL: https://your-server.com/webdav
- 用户名/密码
- 支持加密传输

⚙️ 高级配置与优化

性能优化

1. 缓存配置优化

缓存目录结构:

bash
# 创建专用缓存目录
mkdir -p /opt/clouddrive/Cache/{aliyun,baidu,onedrive}

# 设置权限
chmod 755 /opt/clouddrive/Cache

缓存参数调优:

Web 界面 → 设置 → 全局缓存
- 启用缓存:是
- 缓存路径:/opt/clouddrive/Cache
- 最大缓存:30-50 GB
- 缓存过期:7 天
- 预读策略:智能

2. 网络优化

调整并发连接:

设置 → 网络
- 最大并发连接:50-100
- 单盘并发:3-5
- 超时时间:30 秒
- 重试次数:3

DNS 优化:

bash
# 使用更快的 DNS
vi /etc/config/dhcp

option localuse '1'
list server '119.29.29.29'  # 腾讯 DNS
list server '223.5.5.5'     # 阿里 DNS

3. 资源限制

限制容器资源:

bash
# 停止容器
docker stop clouddrive2

# 删除容器
docker rm clouddrive2

# 重新启动并限制资源
docker run -d \
  --name clouddrive2 \
  --restart unless-stopped \
  --memory=512m \
  --cpus=1.0 \
  --env CLOUDDRIVE_HOME=/Config \
  -v /opt/clouddrive/Config:/Config \
  -v /opt/clouddrive/Shared:/CloudNAS:shared \
  -p 19798:19798 \
  --privileged \
  --device /dev/fuse:/dev/fuse \
  cloudnas/clouddrive2-unstable

监控资源使用:

bash
# 查看容器资源使用
docker stats clouddrive2

# 输出示例:
# NAME            CPU %   MEM USAGE / LIMIT
# clouddrive2     5.2%    256MiB / 512MiB

安全加固

1. 修改默认端口

bash
# 停止容器
docker stop clouddrive2
docker rm clouddrive2

# 使用自定义端口启动
docker run -d \
  --name clouddrive2 \
  -p 29798:19798 \  # 改为 29798
  ...其他参数不变...
  cloudnas/clouddrive2-unstable

# 访问地址变为:
# http://192.168.1.1:29798

2. 启用 HTTPS(进阶)

使用 Nginx 反向代理:

bash
# 安装 Nginx
opkg install nginx

# 配置反向代理
vi /etc/nginx/conf.d/clouddrive2.conf

server {
    listen 443 ssl;
    server_name cd2.yourdomain.com;
    
    ssl_certificate /etc/ssl/certs/your_cert.pem;
    ssl_certificate_key /etc/ssl/private/your_key.pem;
    
    location / {
        proxy_pass http://127.0.0.1:19798;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# 重启 Nginx
/etc/init.d/nginx restart

3. 访问控制

限制访问 IP:

bash
# 使用 iptables 限制
iptables -A INPUT -p tcp --dport 19798 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 19798 -j DROP

# 只允许内网访问

4. 定期更新

bash
# 创建更新脚本
cat <<EOF > /jffs/scripts/update_cd2.sh
#!/bin/sh
echo "$(date): Updating CloudDrive2..."

# 拉取最新镜像
docker pull cloudnas/clouddrive2-unstable

# 停止旧容器
docker stop clouddrive2
docker rm clouddrive2

# 启动新容器(使用之前的启动命令)
docker run -d \
  --name clouddrive2 \
  --restart unless-stopped \
  --env CLOUDDRIVE_HOME=/Config \
  -v /opt/clouddrive/Config:/Config \
  -v /opt/clouddrive/Shared:/CloudNAS:shared \
  -p 19798:19798 \
  --privileged \
  --device /dev/fuse:/dev/fuse \
  cloudnas/clouddrive2-unstable

echo "$(date): Update completed" >> /tmp/cd2_update.log
EOF

chmod +x /jffs/scripts/update_cd2.sh

# 每月 1 号凌晨 4 点自动更新
cru a update_cd2 "0 4 1 * * /jffs/scripts/update_cd2.sh"

自动化脚本

1. 健康检查脚本

bash
#!/bin/bash
# /jffs/scripts/cd2_health_check.sh

CONTAINER_NAME="clouddrive2"
LOG_FILE="/tmp/cd2_health.log"

# 检查容器是否运行
if ! docker ps | grep -q $CONTAINER_NAME; then
    echo "$(date): ERROR - Container not running!" >> $LOG_FILE
    
    # 尝试重启
    docker start $CONTAINER_NAME
    sleep 5
    
    # 再次检查
    if docker ps | grep -q $CONTAINER_NAME; then
        echo "$(date): Container restarted successfully" >> $LOG_FILE
    else
        echo "$(date): FAILED to restart container" >> $LOG_FILE
    fi
else
    echo "$(date): OK - Container is running" >> $LOG_FILE
fi

# 检查挂载点
if ! mountpoint -q /opt/clouddrive/Shared; then
    echo "$(date): WARNING - Mount point not accessible" >> $LOG_FILE
fi

每小时检查:

bash
cru a cd2_health "0 * * * * /jffs/scripts/cd2_health_check.sh"

2. 自动清理日志

bash
#!/bin/bash
# /jffs/scripts/cd2_clean_logs.sh

LOG_DIR="/opt/clouddrive/Config/logs"
MAX_DAYS=7

# 删除 7 天前的日志
find $LOG_DIR -name "*.log" -mtime +$MAX_DAYS -delete

echo "$(date): Old logs cleaned" >> /tmp/cd2_maintenance.log

每天执行:

bash
cru a cd2_clean_logs "0 2 * * * /jffs/scripts/cd2_clean_logs.sh"

3. 备份配置

bash
#!/bin/bash
# /jffs/scripts/cd2_backup_config.sh

BACKUP_DIR="/opt/clouddrive/Backup"
DATE=$(date +%Y%m%d)

mkdir -p $BACKUP_DIR

# 备份配置文件
tar czf $BACKUP_DIR/cd2_config_$DATE.tar.gz \
  /opt/clouddrive/Config/

# 保留最近 10 个备份
ls -t $BACKUP_DIR/cd2_config_*.tar.gz | tail -n +11 | xargs rm -f

echo "$(date): Backup completed" >> /tmp/cd2_backup.log

每周备份:

bash
cru a cd2_backup "0 3 * * 0 /jffs/scripts/cd2_backup_config.sh"

🐛 常见问题与故障排除

问题 1:容器启动失败

症状:

❌ docker ps 看不到容器
❌ docker logs 显示错误
❌ 端口无法访问

排查步骤:

步骤 1:查看错误日志

bash
# 查看容器日志
docker logs clouddrive2

# 常见错误及解决:

错误 A:MountFlags 未配置

Error: permission denied

解决:
1. 确认已配置 MountFlags
   cat /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
   
2. 或执行
   mount --make-shared /opt
   
3. 重启 Docker
   /etc/init.d/dockerd restart

错误 B:FUSE 设备不可用

Error: /dev/fuse: no such file or directory

解决:
1. 检查 fuse3 是否安装
   which fusermount3
   
2. 安装 fuse3
   opkg install fuse3
   
3. 加载内核模块
   modprobe fuse

错误 C:端口被占用

Error: port 19798 is already in use

解决:
1. 查找占用端口的进程
   netstat -tuln | grep 19798
   
2. 杀死进程或更改端口
   docker run -p 29798:19798 ...

步骤 2:检查目录权限

bash
# 确保目录存在
ls -la /opt/clouddrive/

# 创建缺失的目录
mkdir -p /opt/clouddrive/{Config,Shared,media}

# 设置权限
chmod 755 /opt/clouddrive -R

步骤 3:重新创建容器

bash
# 删除旧容器
docker stop clouddrive2
docker rm clouddrive2

# 重新启动
# 使用之前的 docker run 命令

问题 2:云盘挂载失败

症状:

❌ Web 界面显示挂载失败
❌ 挂载点为空
❌ 访问文件报错

排查步骤:

步骤 1:检查网络连接

bash
# 测试云盘服务可达性
ping aliyundrive.com
ping pan.baidu.com

# 如果不通,检查网络和 DNS

步骤 2:验证账号授权

1. 重新登录云盘
2. 确认授权未过期
3. 检查账号状态(是否被封禁)

步骤 3:查看详细日志

bash
# 查看 CloudDrive2 日志
docker logs -f clouddrive2

# 查找错误信息
# 常见错误:
# - Token expired(令牌过期)
# - Access denied(访问被拒绝)
# - Network timeout(网络超时)

步骤 4:重新添加云盘

1. 在 Web 界面删除失败的云盘
2. 清除浏览器缓存
3. 重新添加云盘
4. 仔细按照步骤操作

问题 3:读写速度慢

症状:

❌ 文件传输速度慢
❌ 视频播放卡顿
❌ 列表加载缓慢

优化方案:

方案 1:启用缓存

Web 界面 → 设置
- 启用本地缓存
- 增大缓存空间
- 调整预读策略

方案 2:优化网络

bash
# 检查带宽
speedtest-cli

# 检查延迟
ping -c 10 aliyundrive.com

# 如果延迟高,考虑:
# - 更换 DNS
# - 使用 CDN
# - 优化路由

方案 3:调整并发

设置 → 传输
- 增加并发连接数(3-5)
- 调整分片大小(10-20 MB)
- 启用多线程下载

方案 4:检查硬件瓶颈

bash
# 检查 CPU 使用率
top

# 检查内存使用
free -m

# 检查磁盘 IO
iostat -x 1

# 如果资源不足:
# - 升级硬件
# - 限制容器资源
# - 关闭其他服务

问题 4:开机后容器未启动

症状:

❌ 重启路由器后 CloudDrive2 未运行
❌ 需要手动启动

解决方案:

方法 1:检查重启策略

bash
# 查看容器重启策略
docker inspect clouddrive2 | grep RestartPolicy

# 应该是:
# "RestartPolicy": {
#     "Name": "unless-stopped"
# }

# 如果不是,重新创建容器并指定
docker run --restart unless-stopped ...

方法 2:添加到启动脚本

bash
# 编辑 rc.local
vi /etc/rc.local

# 在 exit 0 之前添加
sleep 10
docker start clouddrive2

# 保存退出

方法 3:创建 systemd 服务(如果有 systemd)

bash
# 创建服务文件
cat <<EOF > /etc/systemd/system/clouddrive2.service
[Unit]
Description=CloudDrive2 Container
After=docker.service
Requires=docker.service

[Service]
ExecStartPre=-/usr/bin/docker stop clouddrive2
ExecStartPre=-/usr/bin/docker rm clouddrive2
ExecStart=/usr/bin/docker run \
  --name clouddrive2 \
  --restart unless-stopped \
  --env CLOUDDRIVE_HOME=/Config \
  -v /opt/clouddrive/Config:/Config \
  -v /opt/clouddrive/Shared:/CloudNAS:shared \
  -p 19798:19798 \
  --privileged \
  --device /dev/fuse:/dev/fuse \
  cloudnas/clouddrive2-unstable
ExecStop=/usr/bin/docker stop clouddrive2

[Install]
WantedBy=multi-user.target
EOF

# 启用服务
systemctl enable clouddrive2
systemctl start clouddrive2

问题 5:Docker 启动失败

症状:

❌ /etc/init.d/dockerd start 失败
❌ 提示 MountFlags 错误

解决方案:

参考原文提到的方法:

bash
# 1. 找到启动项
# 系统 → 启动项 → 本地启动脚本(拉到最底部)

# 2. 添加以下命令
mount --make-shared /opt

# 3. 保存应用

# 4. 重启路由器
reboot

# 5. 验证
docker ps
mount | grep shared

图示说明:

Docker 启动修复

问题 6:内存泄漏

症状:

❌ 运行几天后内存占用越来越高
❌ 系统变慢
❌ 其他服务受影响

解决方案:

方法 1:定期重启容器

bash
# 创建重启脚本
cat <<EOF > /jffs/scripts/restart_cd2.sh
#!/bin/sh
docker restart clouddrive2
echo "$(date): CloudDrive2 restarted" >> /tmp/cd2_restart.log
EOF

chmod +x /jffs/scripts/restart_cd2.sh

# 每周日凌晨 5 点重启
cru a restart_cd2 "0 5 * * 0 /jffs/scripts/restart_cd2.sh"

方法 2:限制内存使用

bash
# 重新创建容器并限制内存
docker run -d \
  --name clouddrive2 \
  --memory=512m \
  --memory-swap=512m \
  ...其他参数...
  cloudnas/clouddrive2-unstable

方法 3:清理缓存

bash
# 定期清理缓存
rm -rf /opt/clouddrive/Cache/*

# 或通过 Web 界面清理
# 设置 → 缓存管理 → 清空缓存

💡 最佳实践与建议

1. 配合媒体服务器使用

Jellyfin 配置:

步骤 1:安装 Jellyfin

bash
# Docker 安装 Jellyfin
docker run -d \
  --name jellyfin \
  -v /opt/jellyfin/config:/config \
  -v /opt/clouddrive/Shared/阿里云盘/Media:/media:ro \
  -p 8096:8096 \
  jellyfin/jellyfin

步骤 2:配置媒体库

Jellyfin 管理界面:
1. 添加媒体库
2. 类型:电影/电视剧
3. 文件夹:/media
4. 启用元数据抓取
5. 完成

优势:

✅ 无需下载即可播放
✅ 自动刮削海报和信息
✅ 多设备同时观看
✅ 转码适配不同设备

Emby/Plex 同理配置

2. 多网盘协同

场景:分散存储

阿里云盘:电影、电视剧(大文件)
百度网盘:文档、资料(小文件)
OneDrive:工作文件(重要数据)

CloudDrive2 统一挂载到:
/opt/clouddrive/Shared/
├── Aliyun/
├── Baidu/
└── OneDrive/

统一管理:

bash
# 创建符号链接整合
ln -s /opt/clouddrive/Shared/Aliyun/Movies /opt/media/Movies
ln -s /opt/clouddrive/Shared/Baidu/Documents /opt/media/Documents

3. 数据备份策略

3-2-1 原则:

3 份数据副本:
- 云端原始数据
- CloudDrive2 缓存
- 本地备份

2 种介质:
- 云存储
- 本地硬盘

1 份异地:
- 不同的云服务提供商

自动化备份:

bash
# 使用 rclone 备份到另一个云盘
rclone sync /opt/clouddrive/Shared remote:backup

# 或使用 rsync 备份到本地硬盘
rsync -av /opt/clouddrive/Shared/ /mnt/backup/

4. 监控与告警

创建监控脚本:

bash
#!/bin/bash
# /jffs/scripts/cd2_monitor.sh

# 检查容器状态
if ! docker ps | grep -q clouddrive2; then
    echo "CRITICAL: CloudDrive2 is down!" | mail -s "CD2 Alert" admin@example.com
fi

# 检查磁盘空间
USAGE=$(df /opt | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt 90 ]; then
    echo "WARNING: Disk usage is ${USAGE}%" | mail -s "Disk Alert" admin@example.com
fi

# 检查内存使用
MEM=$(docker stats clouddrive2 --no-stream --format "{{.MemUsage}}")
echo "$(date): Memory: $MEM" >> /tmp/cd2_monitor.log

定时执行:

bash
# 每 30 分钟检查一次
cru a cd2_monitor "*/30 * * * * /jffs/scripts/cd2_monitor.sh"

🎯 总结与建议

配置检查清单

安装前:

✅ 检查硬件配置(内存 ≥ 512 MB)
✅ 确认 Docker 已安装
✅ 准备足够的存储空间
✅ 备份重要数据
✅ 确认网络连接正常

安装后:

✅ 验证容器正常运行
✅ 测试云盘挂载
✅ 配置缓存优化
✅ 设置开机自启
✅ 创建备份策略

日常维护:

✅ 监控资源使用
✅ 定期清理缓存
✅ 更新 CloudDrive2
✅ 检查日志错误
✅ 验证数据完整性

个人最终建议

💬 使用 CloudDrive2 2 年的心得:

1. 选择合适的云盘

强烈推荐:
✅ 阿里云盘(不限速、稳定)
✅ OneDrive(Office 用户)

谨慎使用:
⚠️ 百度网盘(非会员限速)
⚠️ 小众网盘(稳定性差)

2. 重视缓存配置

❌ 不要禁用缓存
✅ 合理设置缓存大小

经验值:
- 轻度使用:10 GB
- 中度使用:30 GB
- 重度使用:50 GB+

3. 做好资源限制

❌ 不要放任资源使用
✅ 限制内存和 CPU

推荐配置:
- 内存:512 MB
- CPU:1 核
- 根据实际负载调整

4. 定期维护

❌ 不要安装后不管
✅ 定期检查和维护

维护清单:
- 每周检查运行状态
- 每月清理日志
- 每季度更新版本
- 每年评估需求

5. 安全第一

❌ 不要暴露到公网
✅ 限制内网访问

安全措施:
- 修改默认端口
- 设置强密码
- 启用 HTTPS(如需要)
- 定期更新

相关教程

本站相关教程:

📖 [iStoreOS 文件共享教程](/esxi/openwrt/istoreos-file-sharing-steps.md)
📖 [iStore 插件包合集](/esxi/openwrt/istore-plugin-package.md)
📖 [Docker 安装指南](/fe/docker/install.md)
📖 [Docker 容器管理](/fe/docker/container.md)
📖 [OpenWRT 安装指南](/esxi/install/openwrt.md)
📖 [Aria2 + AriaNg 下载方案](/vps/serve/aria2+ariang.md)

外部资源:

📚 CloudDrive2 官方文档
   https://www.clouddrive2.com/

📚 Docker 官方文档
   https://docs.docker.com/

📚 OpenWRT 论坛
   https://forum.openwrt.org/

📚 Jellyfin 媒体服务器
   https://jellyfin.org/

希望这份详细的 CloudDrive2 安装配置指南能帮助你成功搭建云端存储系统!如有任何问题,欢迎在社区交流讨论。

记住:云端存储虽方便,本地备份不可少! ☁️


免责声明

本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。