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 访问权限
✅ 稳定的网络连接检查命令:
# 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 解析正常
✅ 防火墙允许出站连接
✅ 网盘服务未被屏蔽测试方法:
# 测试外网连接
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
- 缓存空间:视使用情况而定
- 日志文件:持续增长
结果:空间不足导致安装失败或运行异常判断是否需要扩容:
# 查看 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后挂载即可"


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

在高级选项里选择 ext4 ,点击 保存&应用
然后重启openwrt,一定要重启,不然不生效,生效后如下

把分区挂载到opt目录后,也就是docker的目录达到了扩容的目的
处理完扩容问题后,接下来进入安装阶段
部署过程
TIP
运行前请先确保系统已安装fuse3,确定fusermount3命令可以正常运行
- 通过ssh连接openwrt
- 开启MountFlags
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:格式化磁盘
# 1. 查看磁盘列表
fdisk -l
# 找到你的 USB 设备,例如 /dev/sda
# 2. 创建分区(如果需要)
fdisk /dev/sda
# 按 n 创建新分区
# 按 w 保存退出
# 3. 格式化为 ext4
mkfs.ext4 /dev/sda1
# 等待完成(大容量磁盘可能需要几分钟)步骤 3:挂载磁盘
# 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:通过命令行
# 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:
# 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:检查可用空间
# 查看各分区使用情况
df -h
# 查看块设备
lsblk步骤 2:调整分区大小
警告
此操作有风险,可能导致系统无法启动! 务必先备份重要数据!
# 仅适用于有未分配空间的情况
# 使用 fdisk 或 parted 调整分区
# 具体操作因设备而异,建议查阅相关文档
# 更安全的做法:
# 重新刷入自定义固件,增大 Docker 分区步骤 3:清理 Docker 缓存
如果无法扩容,可以清理无用数据:
# 清理未使用的镜像
docker image prune -a
# 清理未使用的容器
docker container prune
# 清理未使用的卷
docker volume prune
# 清理所有未使用对象
docker system prune -a --volumes
# 查看清理后的空间
df -h /var/lib/docker验证扩容效果
# 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:
# 检查是否已安装
which fusermount3
# 如果返回路径,说明已安装
# 如果无返回,需要安装安装 fuse3:
# 更新软件包列表
opkg update
# 安装 fuse3
opkg install fuse3
# 验证安装
fusermount3 --version💡 常见问题:
问题:找不到 fuse3 包
解决:
1. 检查软件源配置
cat /etc/opkg/distfeeds.conf
2. 更换软件源
使用官方源或国内镜像源
3. 手动编译安装
从 GitHub 下载源码编译步骤 2:配置 MountFlags
为什么需要配置?
Docker 容器需要访问宿主机的挂载点
默认情况下,Docker 的挂载命名空间是私有的
需要设置为 shared 才能正确挂载云盘操作步骤:
# 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:
# 编辑 Docker 启动脚本
vi /etc/init.d/dockerd
# 在启动命令前添加
mount --make-shared /opt
# 或者添加到本地启动脚本
vi /etc/rc.local
# 在 exit 0 之前添加
mount --make-shared /opt
exit 0步骤 3:设置挂载点
查找挂载点:
# 查看所有挂载点
df -h
# 输出示例:
# Filesystem Size Used Avail Use% Mounted on
# /dev/root 100M 80M 20M 80% /
# /dev/sda1 931G 77M 884G 1% /opt设置共享挂载:
# 将 /opt 设置为共享挂载
mount --make-shared /opt
# 验证
findmnt -o TARGET,PROPAGATION /opt
# 应该看到:
# TARGET PROPAGATION
# /opt shared永久生效:
方法 1:添加到 rc.local
# 编辑启动脚本
vi /etc/rc.local
# 在 exit 0 之前添加
mount --make-shared /opt
# 保存退出方法 2:创建启动脚本
# 创建脚本
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 拉取:
# 拉取最新不稳定版本(推荐,功能最新)
docker pull cloudnas/clouddrive2-unstable
# 或拉取稳定版本
docker pull cloudnas/clouddrive2
# 验证镜像
docker images | grep clouddrive2💡 加速下载:
如果下载速度慢,可以配置镜像加速器:
# 编辑 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:启动容器
完整启动命令:
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:19798 | Web 管理端口 | ✅ 必需 |
--privileged | 特权模式 | ✅ 必需 |
--device /dev/fuse:/dev/fuse | FUSE 设备映射 | ✅ 必需 |
目录结构说明:
/opt/clouddrive/
├── Config/ # 配置文件(必须)
│ ├── config.json # 主配置
│ └── logs/ # 日志文件
├── shared/ # 云盘挂载点(必须)
│ ├── 阿里云盘/
│ ├── 百度网盘/
│ └── OneDrive/
└── media/ # 媒体文件(可选)
├── Movies/
└── TV/自定义配置示例:
示例 1:最小化配置
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:完整配置(推荐)
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:验证部署
检查容器状态:
# 查看运行中的容器
docker ps | grep clouddrive2
# 应该看到类似输出:
# CONTAINER ID IMAGE STATUS
# abc123def456 cloudnas/clouddrive2-unstable Up 2 minutes查看日志:
# 实时查看日志
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 地址初次访问:
1. 设置管理员密码
2. 阅读并接受使用协议
3. 进入主界面☁️ 配置云盘挂载
通用配置流程
步骤 1:登录 Web 管理界面
访问:http://路由器IP:19798
输入管理员密码步骤 2:添加云盘
1. 点击"添加云盘"
2. 选择云盘类型
3. 扫码或输入账号密码
4. 授权访问
5. 设置挂载参数步骤 3:验证挂载
# 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:定期清理缓存
# 创建清理脚本
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. 缓存配置优化
缓存目录结构:
# 创建专用缓存目录
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 秒
- 重试次数:3DNS 优化:
# 使用更快的 DNS
vi /etc/config/dhcp
option localuse '1'
list server '119.29.29.29' # 腾讯 DNS
list server '223.5.5.5' # 阿里 DNS3. 资源限制
限制容器资源:
# 停止容器
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监控资源使用:
# 查看容器资源使用
docker stats clouddrive2
# 输出示例:
# NAME CPU % MEM USAGE / LIMIT
# clouddrive2 5.2% 256MiB / 512MiB安全加固
1. 修改默认端口
# 停止容器
docker stop clouddrive2
docker rm clouddrive2
# 使用自定义端口启动
docker run -d \
--name clouddrive2 \
-p 29798:19798 \ # 改为 29798
...其他参数不变...
cloudnas/clouddrive2-unstable
# 访问地址变为:
# http://192.168.1.1:297982. 启用 HTTPS(进阶)
使用 Nginx 反向代理:
# 安装 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 restart3. 访问控制
限制访问 IP:
# 使用 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. 定期更新
# 创建更新脚本
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. 健康检查脚本
#!/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每小时检查:
cru a cd2_health "0 * * * * /jffs/scripts/cd2_health_check.sh"2. 自动清理日志
#!/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每天执行:
cru a cd2_clean_logs "0 2 * * * /jffs/scripts/cd2_clean_logs.sh"3. 备份配置
#!/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每周备份:
cru a cd2_backup "0 3 * * 0 /jffs/scripts/cd2_backup_config.sh"🐛 常见问题与故障排除
问题 1:容器启动失败
症状:
❌ docker ps 看不到容器
❌ docker logs 显示错误
❌ 端口无法访问排查步骤:
步骤 1:查看错误日志
# 查看容器日志
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:检查目录权限
# 确保目录存在
ls -la /opt/clouddrive/
# 创建缺失的目录
mkdir -p /opt/clouddrive/{Config,Shared,media}
# 设置权限
chmod 755 /opt/clouddrive -R步骤 3:重新创建容器
# 删除旧容器
docker stop clouddrive2
docker rm clouddrive2
# 重新启动
# 使用之前的 docker run 命令问题 2:云盘挂载失败
症状:
❌ Web 界面显示挂载失败
❌ 挂载点为空
❌ 访问文件报错排查步骤:
步骤 1:检查网络连接
# 测试云盘服务可达性
ping aliyundrive.com
ping pan.baidu.com
# 如果不通,检查网络和 DNS步骤 2:验证账号授权
1. 重新登录云盘
2. 确认授权未过期
3. 检查账号状态(是否被封禁)步骤 3:查看详细日志
# 查看 CloudDrive2 日志
docker logs -f clouddrive2
# 查找错误信息
# 常见错误:
# - Token expired(令牌过期)
# - Access denied(访问被拒绝)
# - Network timeout(网络超时)步骤 4:重新添加云盘
1. 在 Web 界面删除失败的云盘
2. 清除浏览器缓存
3. 重新添加云盘
4. 仔细按照步骤操作问题 3:读写速度慢
症状:
❌ 文件传输速度慢
❌ 视频播放卡顿
❌ 列表加载缓慢优化方案:
方案 1:启用缓存
Web 界面 → 设置
- 启用本地缓存
- 增大缓存空间
- 调整预读策略方案 2:优化网络
# 检查带宽
speedtest-cli
# 检查延迟
ping -c 10 aliyundrive.com
# 如果延迟高,考虑:
# - 更换 DNS
# - 使用 CDN
# - 优化路由方案 3:调整并发
设置 → 传输
- 增加并发连接数(3-5)
- 调整分片大小(10-20 MB)
- 启用多线程下载方案 4:检查硬件瓶颈
# 检查 CPU 使用率
top
# 检查内存使用
free -m
# 检查磁盘 IO
iostat -x 1
# 如果资源不足:
# - 升级硬件
# - 限制容器资源
# - 关闭其他服务问题 4:开机后容器未启动
症状:
❌ 重启路由器后 CloudDrive2 未运行
❌ 需要手动启动解决方案:
方法 1:检查重启策略
# 查看容器重启策略
docker inspect clouddrive2 | grep RestartPolicy
# 应该是:
# "RestartPolicy": {
# "Name": "unless-stopped"
# }
# 如果不是,重新创建容器并指定
docker run --restart unless-stopped ...方法 2:添加到启动脚本
# 编辑 rc.local
vi /etc/rc.local
# 在 exit 0 之前添加
sleep 10
docker start clouddrive2
# 保存退出方法 3:创建 systemd 服务(如果有 systemd)
# 创建服务文件
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 错误解决方案:
参考原文提到的方法:
# 1. 找到启动项
# 系统 → 启动项 → 本地启动脚本(拉到最底部)
# 2. 添加以下命令
mount --make-shared /opt
# 3. 保存应用
# 4. 重启路由器
reboot
# 5. 验证
docker ps
mount | grep shared图示说明:
问题 6:内存泄漏
症状:
❌ 运行几天后内存占用越来越高
❌ 系统变慢
❌ 其他服务受影响解决方案:
方法 1:定期重启容器
# 创建重启脚本
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:限制内存使用
# 重新创建容器并限制内存
docker run -d \
--name clouddrive2 \
--memory=512m \
--memory-swap=512m \
...其他参数...
cloudnas/clouddrive2-unstable方法 3:清理缓存
# 定期清理缓存
rm -rf /opt/clouddrive/Cache/*
# 或通过 Web 界面清理
# 设置 → 缓存管理 → 清空缓存💡 最佳实践与建议
1. 配合媒体服务器使用
Jellyfin 配置:
步骤 1:安装 Jellyfin
# 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/统一管理:
# 创建符号链接整合
ln -s /opt/clouddrive/Shared/Aliyun/Movies /opt/media/Movies
ln -s /opt/clouddrive/Shared/Baidu/Documents /opt/media/Documents3. 数据备份策略
3-2-1 原则:
3 份数据副本:
- 云端原始数据
- CloudDrive2 缓存
- 本地备份
2 种介质:
- 云存储
- 本地硬盘
1 份异地:
- 不同的云服务提供商自动化备份:
# 使用 rclone 备份到另一个云盘
rclone sync /opt/clouddrive/Shared remote:backup
# 或使用 rsync 备份到本地硬盘
rsync -av /opt/clouddrive/Shared/ /mnt/backup/4. 监控与告警
创建监控脚本:
#!/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定时执行:
# 每 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 安装配置指南能帮助你成功搭建云端存储系统!如有任何问题,欢迎在社区交流讨论。
记住:云端存储虽方便,本地备份不可少! ☁️
- 🔥🔥🔥2026年便宜好用的翻墙VPN机场推荐评测(长期更新 欢迎推荐)
- 稳定好用的流媒体合租平台推荐(长期更新 欢迎推荐)
- AI 使用教程汇总|ChatGPT、Gemini 新手入门与国内使用指南
- 国外接码平台 Hero SMS 评测(稳定 · 低价 · 高成功率)
免责声明
本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。