MeTube 自托管视频下载器:5 个问题快速上手
MeTube 自托管视频下载器5 个问题快速上手【免费下载链接】metubeSelf-hosted video downloader for YouTube and other sites (web UI for yt-dlp)项目地址: https://gitcode.com/GitHub_Trending/me/metubeMeTube 是一款自托管视频下载服务本质上是给 yt-dlp 套了一层网页界面。跑起来一个容器之后你在浏览器里粘贴链接视频和音频文件就落到你指定的目录里进度通过 WebSocket 实时刷新。全程不需要背 yt-dlp 的命令行参数。全部环境变量清单可以对照 README.md 查。 怎么跑起来从一条命令到 compose一条命令先跑通docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube执行完服务就在后台运行监听 8081 端口。把/path/to/downloads换成宿主机上真实存在的目录下载的文件会一直存在那里不挂卷的话文件只活在容器里删容器就没了。用 docker compose 长期管理常驻部署建议写进 compose顺带加两个常用变量DOWNLOAD_MODE控制调度策略MAX_CONCURRENT_DOWNLOADS限定并发数。services: metube: image: ghcr.io/alexta69/metube restart: unless-stopped ports: - 8081:8081 volumes: - /path/to/downloads:/downloads environment: - DOWNLOAD_MODElimited - MAX_CONCURRENT_DOWNLOADS3DOWNLOAD_MODElimited时超出并发上限的任务排队等待而不是同时挤进来机器配置小的时候更稳。再配一个container_name: metube后面进容器排障会方便很多。从源码运行开发者需要看代码或改功能时按仓库说明用 Node.js 22 和 Python 3.13 本地跑git clone https://gitcode.com/GitHub_Trending/me/metube cd metube cd ui npm install node_modules/.bin/ng build cd .. uv sync uv run python3 app/main.py另外社区有浏览器扩展支持右键把视频直接发到 MeTube。装扩展后要设CORS_ALLOWED_ORIGINS在 HTTPS 页面上使用时你的实例也必须走 HTTPSHTTPStrue或反代终结。 视频下载放在哪、叫什么名字目录与命名音频和视频分开存默认两者存在同一个目录。想让音乐独立成库就设AUDIO_DOWNLOAD_DIR比如/downloads/music配合 beets 之类的打标工具按 Artist/Album 归档。每次下载选子目录CUSTOM_DIRStrue时网页界面上的添加按钮旁会出现目录下拉框CREATE_CUSTOM_DIRStrue时还能直接输入新名字目录会被递归创建。两个开关默认都是开的按专辑或主题各存一个文件夹即可。用模板给文件改名默认文件名是%(title)s.%(ext)s。改它用OUTPUT_TEMPLATE比如把分辨率写进名字OUTPUT_TEMPLATE%(title)s_[%(resolution)s].%(ext)s。播放列表有单独的OUTPUT_TEMPLATE_PLAYLIST默认值会让每个播放列表自动落在以列表名命名的子目录里。 带宽、并发、下载数量怎么限制限带宽YTDL_OPTIONS是一个 JSON 对象直接透传给 yt-dlp键名约等于命令行参数去掉连字符、换成下划线environment: - YTDL_OPTIONS{ratelimit: 500000}ratelimit对应--limit-rate单位是字节每秒500000 即约 500KB/s。不想让下载占满上行时加上它。控制并发与播放列表数量MAX_CONCURRENT_DOWNLOADS是并发下载上限默认 3多出来的任务排队。共享机器上可以降到 2。播放列表有两种识别模式默认的宽松模式会自动关联视频所属的播放列表严格模式只在链接本身就是播放列表时才批量拉取。怕误下整个频道就给DEFAULT_OPTION_PLAYLIST_ITEM_LIMIT设一个数字0 表示不限制。如果目标是 iPhone 或 iPad界面上 Quality 选项里的 Best (iOS) 会自动挑 h264 兼容格式。更严格的控制是在YTDL_OPTIONS里传exec下载完成后自动调 ffmpeg 转码成libx264 aac。 需要登录的会员内容怎么下上传 Cookie下载受限视频需要带上浏览器的 Cookie。用浏览器扩展把目标站点的 Cookie 导出成cookies.txt挂进容器并告诉 yt-dlp 文件位置volumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS{cookiefile:/cookies/cookies.txt}不想动容器也可以走网页在 Advanced Options 里点 Upload Cookies 上传文件上传后 Cookie 指示器变亮同一面板的 Delete Cookies 可以删掉。 出问题了怎么办日志与权限把LOGLEVEL设为DEBUG再看容器日志多数失败原因能直接定位。报权限错误时检查宿主机下载目录的权限755 是个稳妥的起点。文件名出现中文乱码就在YTDL_OPTIONS里加outtmpl_encoding: utf-8强制 UTF-8 输出。反向代理背后的 WebSocket挂在现有站点后面比如 Nginx时两行 WebSocket 头不能省否则浏览器里的进度刷新会卡住location /metube/ { proxy_pass http://metube:8081; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; }挂在子目录下时记得同步设置URL_PREFIX。如果实例要直接对外提供 HTTPS设HTTPStrue并用CERTFILE、KEYFILE挂上证书。让 yt-dlp 跟上版本视频平台改版频繁yt-dlp 发新版后 MeTube 镜像会自动发布新构建配合 watchtower 可以自动拉取重启。想紧跟 nightly 构建设YTDL_NIGHTLY_UPDATE_TIME为HH:MM格式的 24 小时制时间容器会在指定时刻切换版本并重启。MeTube 适合手里有一台服务器、想把视频存量沉淀到自己目录里、偶尔还要批量拉播放列表或频道的人如果你只是偶尔下一个视频本地装个下载客户端更省事。下一步把第一条命令里的/path/to/downloads改成真实目录执行浏览器打开 8081 端口粘贴一条链接几分钟内就能看到第一个文件落盘。【免费下载链接】metubeSelf-hosted video downloader for YouTube and other sites (web UI for yt-dlp)项目地址: https://gitcode.com/GitHub_Trending/me/metube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考