Cobalt 可解析、支持的平台众多,作者实测 YouTube、Bilibili、X/Twitter、Twitch、Tiktok 、Instagram、Reddit 等均可顺利解析、下载,具体使用请参考上篇「博文」及「视频分享」。同时,Cobalt 支持自托管部署,最新版本(10)提供有 api (后端/backend)docker 镜像,尚未发布 cobalt 10 前端镜像。历史版本 cobalt 7 则提供了完整的 api 和 web 模块。高级用户可以私有化部署 api 服务端,并通过前端(cobalt.tools 站点)提交,作为自定义处理服务器。私有化部署的主机应确保至少应放行 9000 端口或其他用于 api 通讯的端口。对于前端确有需求的开发者或爱好者,可以使用旧版本(7)docker 镜像,或者 git clone 后,在 node.js 环境中部署。docker 加速镜像几乎全部失效,可订阅「嘀嗒云」解决 docker.io、ghcr.io 等仓库的连接问题。
私有化部署最新版本(api)
在默认已安装 docker、docker-compose 的前提下,首先,创建 cobalt-api 服务定义配置文件。
mkdir /opt/cobalt cd /opt/cobalt nano docker-compose.yml
docker-compose.yml 文件内容参考如下,可直接拷贝并修改 URL 使用。本配置中的两项服务 cobalt-api 和 watchtower,watchtower 服务配置块为可选,可整体删除。watchtower 默认监听端口为 8080,可通过环境变量修改 。
services: cobalt-api: image: ghcr.io/imputnet/cobalt:latest restart: unless-stopped container_name: cobalt-api init: true ports: - 9000:9000/tcp # if you're using a reverse proxy, uncomment the next line and remove the one above (9000:9000/tcp): #- 127.0.0.1:9000:9000 environment: API_URL: "http://cobalt.example.com/" # if you want to use cookies when fetching data from services, uncomment the next line and the lines under volume # COOKIE_PATH: "/cookies.json" # see docs/run-an-instance.md for more information labels: - com.centurylinklabs.watchtower.scope=cobalt # if you want to use cookies when fetching data from services, uncomment volumes and next line #volumes: #- ./cookies.json:/cookies.json # update the cobalt image automatically with watchtower watchtower: image: ghcr.io/containrrr/watchtower restart: unless-stopped command: --cleanup --scope cobalt --interval 900 --include-restarting volumes: - /var/run/docker.sock:/var/run/docker.sock
之后,在 cobalt 目录下启动容器。
docker compose up -d #docker-compose up -d
缺失 docker compose 命令时,应安装 docker-compose-plugin。要停止并删除 cobalt 容器以及 cobalt 自定义网络,可使用如下命令。
docker compose down #docker-compose rm -f #docker rm -f $(docker ps -a) docker network prune -y
同时,需要在 cobalt.tools 中打开『Settings』,在『Instance』下启用『use a custom processing server』,输入自定义的服务端(api 容器)URL 并提交。前文直接使用官方站点在线下载峰值速度可达 30Mbps,私有化部署的下载速度取决于 api 服务部署主机和下载端的网络环境。
完整私有化部署
完整私有化部署要分别定义 api 和 web 服务,也就是需要加载两个容器。过程与使用最新版本部署 api 完全相同,仅服务定义文件 docker-compose.yml 有所区别。编辑适合自身网络环境和需求的服务定义文件时,应注意以下几点:
- IP 或域名均可使用,但 API IP 必须为公网 IP ,支持 IPv6
- WEB IP 如无公网访问需求,可为内网 IP
- 注意修改镜像名称,cobalt 仅部分版本提供适配 armv7、arm64 平台的镜像
- 支持 http、https,建议使用 https,仅私人访问可使用自签证书
- 建议使用域名而非 IP,并提前配置好 DNS 解析
- 如果部署于境外主机,建议使用 nginx、caddy 等进行反向代理,定义文件中应去掉端口号
- 最新版本 10 部署 api,混搭版本 7 部署 web 未经验证,谨慎使用
version: '1.0' services: cobalt-api: image: ghcr.io/imputnet/cobalt:7 restart: unless-stopped container_name: cobalt-api init: true tty: true ports: - 9000:9000/tcp environment: # 私有化部署的主机IP或域名 API_URL: "http://public_ip_or_domainname:9000/" API_NAME: "cobalt-api" # 如需开启cookie,则打开下一行,并删除volumes注释 # COOKIE_PATH: "/cookies.json" #volumes: #- ./cookies.json:/cookies.json cobalt-web: image: ghcr.io/imputnet/cobalt:7 restart: unless-stopped container_name: cobalt-web init: true tty: true ports: - 9001:9001/tcp environment: # web主机IP或域名 WEB_URL: "http://ip_or_domainname:9001/" # api主机ip或域名 API_URL: "http://public_ip_or_domainname:9000/"
编辑好 docker-compose.yml 后,运行 docker compose up -d 命令,docker 将自动拉取镜像,并按照定义文件创建 cobalt-api、cobalt-web 两项服务。
容器加载后,我们就可以通过域名或 IP 地址访问前端 web,并正常下载视频资源。示例使用了 http 协议,并添加 DNS AAAA 记录指向内网盒子。
至此,就完成了使用 cobalt 7 镜像进行完整私有化部署的任务。如果需要采用最新版本,应 git clone 所有代码,在配置好的 node.js 环境下部署 。有关端口号去除、nginx 反向代理配置等内容可参考本站相关博文。多人共享的话,最简单的方法就是败一台大流量境外服务器部署 cobalt,免备案免折腾,推荐首次促销的 ServerPoint ,新加坡 PCCW、Telstra 双线,2c2g80g 年付 $50,流量恐怖,可申请由 10T/m 翻倍为 20T/m,亚洲周边国家/地区数据中心的 VPS 这种价格每月 10T + 流量非常罕见。
最后,特别提示,无论使用何种下载工具下载何种资源,务必尊重版权,严格遵守内容协议、遵照原创声明对每个人都有好处。更多精彩,敬请关注老E的博客!
文章评论