项目地址:https://github.com/jiangrui1994/CloudSaver
Docker 镜像:jiangrui1994/cloudsaver
一、软件简介
1.1 CloudSaver是什么
CloudSaver 是一个自托管(Self-hosted)的网盘资源搜索与转存工具。它把"找资源"和"存资源"两个动作整合到一个 Web 界面里:在搜索框输入关键词(或从豆瓣热门榜单点选影视),CloudSaver 会从多个资源订阅源聚合搜索结果,你只需点击"转存",资源就直接进入你自己的网盘,全程无需手动复制分享链接、无需打开网盘 App。
技术栈为 Vue 3 + Express + SQLite3,前端采用 Element Plus(PC 端)与 Vant(移动端)双 UI 体系,响应式布局,手机浏览器上的体验与 PC 端基本一致。后端数据全部存储在本地 SQLite 中,部署门槛低,非常适合 NAS、软路由、家用服务器等场景。

1.2 核心功能
1.3 适用场景
家庭影音用户:在 NAS 上部署一套,全家(或好友)通过浏览器搜片、转存到自己的网盘,再配合 115/夸克的在线播放或 Infuse、VidHub 等挂载工具观看。
多网盘用户:同一个资源在不同网盘渠道间比价(看哪个源有货),一键转存到指定网盘。
移动端重度用户:不想在手机上装一堆网盘 App 来回切换,一个网页搞定。
1.4 重要说明(部署前必读)
必须私有化部署。CloudSaver 需要填入你的网盘 Cookie(等同于账号密码),作者明确声明从未提供任何在线服务或公开 Demo,任何声称与该项目相关的在线网站均为未授权第三方搭建,使用他人部署的实例有账号被盗风险。
源码版本停留在 V0.2.5。GitHub 开源仓库代码不再更新,最新功能仅通过 Docker 镜像发布(
:latest稳定版 /:test测试版)。0.3.0 之后版本改为在 Web 界面内自定义订阅源,TELE_CHANNELS环境变量已失效。资源搜索需要能访问外网的网络环境(订阅源多托管于 Telegram 频道),服务器需配置代理。
项目仅供学习交流,仅限个人使用,禁止商用;搜索到的资源均来自第三方,项目方不对其真实性与合法性负责。
配置代理参考文章:Docker部署 Clash 代理完整指南 - 屋檐下的猫🐱
二、Docker Compose 部署教程
2.1 环境要求
一台装有 Docker 与 Docker Compose 的主机(Linux 服务器、NAS、Windows Docker Desktop、macOS 均可)
可用端口 8008(容器内部固定 8008,宿主机端口可自定义)
(必需)可访问外网的网络环境,用于拉取镜像与资源搜索
磁盘空间:镜像约几百 MB,数据目录占用很小
2.2 目录准备
以 Linux / NAS 为例,先创建数据与配置目录:
mkdir -p /opt/cloudsaver/data
mkdir -p /opt/cloudsaver/config
2.3 编写 docker-compose.yml
在 /opt/cloudsaver/ 下新建 docker-compose.yml:
services:
cloudsaver:
image: jiangrui1994/cloudsaver:latest # 测试版改为 jiangrui1994/cloudsaver:test
container_name: cloud-saver
ports:
- "8008:8008" # 冒号左侧为宿主机端口,冲突时可改为如 "8032:8008"
volumes:
- ./data:/app/data # 数据目录:SQLite 数据库等,必须持久化
- ./config:/app/config # 配置目录:内含 env 环境变量文件
restart: unless-stopped
镜像源选择:
测试版包含最新功能与修复,但可能不稳定,生产/自用环境建议 :latest。Docker Hub 拉取困难时可改用 GHCR 镜像。

2.4 启动容器
cd /opt/cloudsaver
docker compose up -d # 旧版 Compose 用 docker-compose up -d
验证运行状态:
docker compose ps # 查看容器状态
docker logs -f cloud-saver # 查看日志,首次启动会自动生成配置文件
浏览器访问 http://服务器IP:8008,看到注册/登录页即部署成功。

2.5 环境变量配置(env 文件)
首次启动后,容器会在 /app/config(即你挂载的 config 目录)下自动生成 env 配置文件。常用配置项:
# JWT 密钥:用于登录态签名,强烈建议修改为随机强密钥
JWT_SECRET=your_jwt_secret_here
# Telegram 订阅源基础地址(默认即可,一般无需修改)
TELEGRAM_BASE_URL=https://t.me/s
生成一个强 JWT 密钥的方法:
openssl rand -base64 32
注意:0.3.0 及之后版本,订阅频道不再通过环境变量配置,而是直接在 Web 界面"设置 → 搜索频道"中批量导入,修改后无需重启容器。修改
env文件后需docker compose restart生效。
2.6 常用维护命令
docker compose pull && docker compose up -d # 更新到最新镜像
docker compose down # 停止并删除容器(数据保留在挂载目录)
docker compose restart # 重启
docker logs --tail 100 cloud-saver # 查看最近 100 行日志
三、使用教程
3.1 初始配置
第一步:注册账号
打开 http://服务器IP:8008,点击注册。系统采用注册码机制区分角色(用户名不支持中文):
用管理员注册码注册第一个账号,注册成功后自动登录。

第二步:立即修改注册码
进入"设置"页面,找到注册码设置,把两个默认注册码改成自己的。这一步是必须的——默认注册码全网公开,若服务暴露在公网且不修改,任何人都能注册管理员账号接管你的实例。

第三步:配置网络代理(关键步骤)
资源搜索需要能访问外网的网络环境(订阅源多托管于 Telegram 频道),服务器需配置代理
第四步:导入搜索频道(关键步骤)
全新部署的 CloudSaver 没有任何内置搜索源(0.3.0 起移除了内置源),需要手动导入:
进入"设置",下滑找到搜索频道区域(初始为空);
复制下方频道配置相关的 JSON 代码;
回到设置页,点击批量导入,粘贴 JSON,选择增量更新;
务必点击"保存设置";
回到主页刷新,搜索功能即可使用。

TG分享频道:
[{"name":"115网盘资源分享频道","id":"Lsp115"},{"id":"alyp_1","name":"网盘(高品质)影视"},{"id":"shareAliyun","name":"阿里云盘发布频道"},{"id":"Quark_Movies","name":"夸克云盘综合资源"},{"id":"Aliyun_4K_Movies","name":"阿里云盘4K影视"},{"id":"zaihuayun","name":"阿里云盘资源"},{"id":"PanjClub","name":"盘酱酱Club"},{"id":"tianyirigeng","name":"天翼云盘资源频道"},{"id":"xx123pan","name":"123云盘资源频道"},{"id":"zyzhpd123","name":"123云盘综合频道"},{"id":"cloudtianyi","name":"天翼云盘资源发布频道"},{"id":"tyypzhpd","name":"天翼云盘综合频道"},{"id":"Oscar_4Kmovies","name":"奥斯卡4K蓝光(精品)影视磁力站"},{"id":"ydypzyfx","name":"移动云盘资源分享"},{"id":"bdwpzhpd","name":"百度网盘综合频道"},{"id":"Q66share","name":"阿里云盘吧"},{"id":"BaiduCloudDisk","name":"百度网盘资源分享"},{"id":"yunpan139","name":"网盘资源收藏(移动云盘)"},{"id":"yunpanuc","name":"网盘资源收藏(UC网盘)"},{"id":"qixingzhenren","name":"云盘资源发布频道"},{"id":"duanjucabian","name":"热门短剧/擦边短剧/精选短剧/在线预览"},{"id":"yoyokuakeduanju","name":"YOYO资源|夸克|短剧"},{"id":"Channel_Shares_115","name":"Shares_115_Channel"},{"id":"yeqingjie_GJG666","name":"爷青回动画分享"},{"id":"gotopan","name":"迅雷云盘"},{"id":"oneonefivewpfx","name":"影巢"},{"id":"zhenyingsg","name":"帧影时光"},{"id":"movielover8888_TV","name":"【热门网剧在线】"},{"id":"CBduanju","name":"全网擦边|电影|资源分享"},{"id":"ucquark","name":"UC夸克百度迅雷资源分享"},{"id":"weichengduanju666","name":"短剧大全资源"},{"id":"yingxiangkj","name":"影享空间"},{"name":"夸克网盘资源收藏夹","id":"QuarkFree"},{"name":"综艺网盘资源频道","id":"TG654TG"},{"name":"115影视资源分享频道","id":"QukanMovie"},{"name":"夸克丶百度丶迅雷丶4K网盘","id":"WFYSFX02"},{"name":"网盘资源收藏","id":"naclyunpan"}]PanSou公开频道(https://github.com/fish2018/pansou):
[
{"name":"tgsearchers3","id":"tgsearchers3"},
{"name":"Aliyun_4K_Movies","id":"Aliyun_4K_Movies"},
{"name":"bdbdndn11","id":"bdbdndn11"},
{"name":"yunpanx","id":"yunpanx"},
{"name":"bsbdbfjfjff","id":"bsbdbfjfjff"},
{"name":"yp123pan","id":"yp123pan"},
{"name":"sbsbsnsqq","id":"sbsbsnsqq"},
{"name":"yunpanxunlei","id":"yunpanxunlei"},
{"name":"tianyifc","id":"tianyifc"},
{"name":"BaiduCloudDisk","id":"BaiduCloudDisk"},
{"name":"txtyzy","id":"txtyzy"},
{"name":"peccxinpd","id":"peccxinpd"},
{"name":"gotopan","id":"gotopan"},
{"name":"PanjClub","id":"PanjClub"},
{"name":"kkxlzy","id":"kkxlzy"},
{"name":"baicaoZY","id":"baicaoZY"},
{"name":"MCPH01","id":"MCPH01"},
{"name":"bdwpzhpd","id":"bdwpzhpd"},
{"name":"ysxb48","id":"ysxb48"},
{"name":"jdjdn1111","id":"jdjdn1111"},
{"name":"yggpan","id":"yggpan"},
{"name":"MCPH086","id":"MCPH086"},
{"name":"zaihuayun","id":"zaihuayun"},
{"name":"Q66Share","id":"Q66Share"},
{"name":"ucwpzy","id":"ucwpzy"},
{"name":"shareAliyun","id":"shareAliyun"},
{"name":"alyp_1","id":"alyp_1"},
{"name":"dianyingshare","id":"dianyingshare"},
{"name":"Quark_Movies","id":"Quark_Movies"},
{"name":"XiangxiuNBB","id":"XiangxiuNBB"},
{"name":"ydypzyfx","id":"ydypzyfx"},
{"name":"ucquark","id":"ucquark"},
{"name":"xx123pan","id":"xx123pan"},
{"name":"yingshifenxiang123","id":"yingshifenxiang123"},
{"name":"zyfb123","id":"zyfb123"},
{"name":"tyypzhpd","id":"tyypzhpd"},
{"name":"tianyirigeng","id":"tianyirigeng"},
{"name":"cloudtianyi","id":"cloudtianyi"},
{"name":"hdhhd21","id":"hdhhd21"},
{"name":"Lsp115","id":"Lsp115"},
{"name":"oneonefivewpfx","id":"oneonefivewpfx"},
{"name":"qixingzhenren","id":"qixingzhenren"},
{"name":"taoxgzy","id":"taoxgzy"},
{"name":"Channel_Shares_115","id":"Channel_Shares_115"},
{"name":"tyysypzypd","id":"tyysypzypd"},
{"name":"vip115hot","id":"vip115hot"},
{"name":"wp123zy","id":"wp123zy"},
{"name":"yunpan139","id":"yunpan139"},
{"name":"yunpan189","id":"yunpan189"},
{"name":"yunpanuc","id":"yunpanuc"},
{"name":"yydf_hzl","id":"yydf_hzl"},
{"name":"leoziyuan","id":"leoziyuan"},
{"name":"pikpakpan","id":"pikpakpan"},
{"name":"Q_dongman","id":"Q_dongman"},
{"name":"yoyokuakeduanju","id":"yoyokuakeduanju"},
{"name":"TG654TG","id":"TG654TG"},
{"name":"WFYSFX02","id":"WFYSFX02"},
{"name":"QukanMovie","id":"QukanMovie"},
{"name":"yeqingjie_GJG666","id":"yeqingjie_GJG666"},
{"name":"movielover8888_film3","id":"movielover8888_film3"},
{"name":"Baidu_netdisk","id":"Baidu_netdisk"},
{"name":"D_wusun","id":"D_wusun"},
{"name":"FLMdongtianfudi","id":"FLMdongtianfudi"},
{"name":"KaiPanshare","id":"KaiPanshare"},
{"name":"QQZYDAPP","id":"QQZYDAPP"},
{"name":"rjyxfx","id":"rjyxfx"},
{"name":"PikPak_Share_Channel","id":"PikPak_Share_Channel"},
{"name":"btzhi","id":"btzhi"},
{"name":"newproductsourcing","id":"newproductsourcing"},
{"name":"cctv1211","id":"cctv1211"},
{"name":"duan_ju","id":"duan_ju"},
{"name":"QuarkFree","id":"QuarkFree"},
{"name":"yunpanNB","id":"yunpanNB"},
{"name":"kkdj001","id":"kkdj001"},
{"name":"xxzlzn","id":"xxzlzn"},
{"name":"pxyunpanxunlei","id":"pxyunpanxunlei"},
{"name":"jxwpzy","id":"jxwpzy"},
{"name":"kuakedongman","id":"kuakedongman"},
{"name":"liangxingzhinan","id":"liangxingzhinan"},
{"name":"xiangnikanj","id":"xiangnikanj"},
{"name":"solidsexydoll","id":"solidsexydoll"},
{"name":"guoman4K","id":"guoman4K"},
{"name":"zdqxm","id":"zdqxm"},
{"name":"kduanju","id":"kduanju"},
{"name":"cilidianying","id":"cilidianying"},
{"name":"CBduanju","id":"CBduanju"},
{"name":"SharePanFilms","id":"SharePanFilms"},
{"name":"dzsgx","id":"dzsgx"},
{"name":"BooksRealm","id":"BooksRealm"},
{"name":"Oscar_4Kmovies","id":"Oscar_4Kmovies"}
]第五步:配置网盘 Cookie
转存功能依赖各网盘的登录 Cookie,在设置页对应网盘处填入:
115 网盘:登录 115.com 网页版,浏览器开发者工具(F12)→ Network/应用 → Cookie 中提取;
夸克网盘:登录夸克网盘网页版,同样方式提取 Cookie;
天翼云盘 / 123 云盘:同理,登录对应网页版提取。
Cookie 获取的具体字段在语雀常见问题文档中有逐项说明。Cookie 会过期,转存大面积失败时首先检查并更新 Cookie。
3.2 主要功能操作流程
关键词搜索转存(最常用)
顶部搜索栏输入影视名称(如"流浪地球");
结果按网盘渠道分类展示,并标注各渠道找到的资源数量;
选择资源数量较多的渠道(如夸克),浏览结果列表;
每条结果提供两个操作:
跳转:打开原始分享链接(可手动查看内容);
转存:选择目标网盘与目标文件夹,一键转存到自己网盘。
豆瓣榜单找片
左侧导航进入豆瓣热门榜单,浏览热门电影/剧集海报墙,点击任意条目即自动以其名称发起搜索,后续流程同上。
多用户协作
管理员可在设置中管理注册码;把普通用户注册码告知家人/朋友,他们注册后即可独立使用搜索与转存功能(各自配置各自的网盘 Cookie,互不影响)。
移动端使用
手机浏览器直接访问同一地址,界面自动切换为移动端布局,搜索、榜单、转存功能完整可用。可将页面"添加到主屏幕"当作 App 使用。
3.3 常见问题
3.4 安全建议
修改默认注册码与 JWT_SECRET;
尽量不要直接暴露公网;如需外网访问,建议走 VPN/内网穿透并开启访问认证;
定期更新镜像以获取安全修复;
网盘 Cookie 不要泄露给他人,也不要使用他人部署的 CloudSaver 实例。
四、总结
CloudSaver 的核心价值在于把"聚合搜索 → 一键转存"这条链路私有化:部署只需一个容器、两个挂载目录,初始配置的关键动作是改注册码、导入搜索频道、填网盘 Cookie三步。它适合作为 NAS 影音工作流的最上游(搜索与入库环节),与 115/夸克网盘的在线播放或各类网盘挂载工具衔接,构成完整的私人媒体库方案。
参考链接
语雀文档(常见问题 / 更新日志):CloudSaver部署与使用常见问题 (密码 me16)
官方 Telegram 群组:https://t.me/+4fWSSbQn5rMxYjM1