MeTube:yt-dlp 的自架 Web 介面
適用於 YouTube 和其他網站的自架影片下載器(yt-dlp 的 Web UI)。
秒懂
- 它是什麼?
- 一個基於瀏覽器的下載器,封裝 yt-dlp,適用於 YouTube 和其他網站,提供 Docker 映像檔和豐富的設定選項。
- 適合誰用?
- MeTube 刻意保持狹窄範圍:它只負責下載,檔案寫出後即停止。下載後的標籤整理和媒體庫組織交由專門的工具處理。
- 可以商用嗎?
- 可以,但條件嚴格。AGPL-3.0 是網路 copyleft 授權:如果別人透過網路使用你修改過的版本(例如作為託管服務),你必須以同一授權向他們提供原始碼。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 6 天前。
- 用什麼語言寫的?
- 主要是 Python(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
alexta69-metube-deep-analysis|yt-dlp 的 Web 介面
alexta69-metube-deep-analysis|yt-dlp 的 Web 介面 的專案脈絡:MeTube 是一個自架的 Web 介面,用於 yt-dlp 影片下載器。它執行在你的瀏覽器中,可以從 YouTube 和 yt-dlp 支援的數十個其他網站拉取影片、音訊、字幕和縮圖。倉庫元資料將 Python 列為主要語言。Docker 映像檔支援多架構(amd64/arm64)。你可以透過環境變數和簡單的 UI 來管理它。
alexta69-metube-deep-analysis|使用 Docker 執行
alexta69-metube-deep-analysis|使用 Docker 執行 的專案脈絡:README 給出了兩種基於 Docker 啟動 MeTube 的方法。最簡單的是 docker run 指令,它發佈 8081 連接埠並掛載一個下載目錄:docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube。docker-compose 範例遵循相同模式,帶有 restart: unless-stopped。兩者都使用 ghcr.io 映像。README 沒有提及其他安裝方式。
alexta69-metube-deep-analysis|透過環境變數設定
alexta69-metube-deep-analysis|透過環境變數設定 的專案脈絡:大多數行為透過環境變數設定,使用 -e 或 Compose 中的 environment 部分傳遞。README 將其分組:執行時和權限(PUID、PGID、UMASK、DEFAULT_THEME、LOGLEVEL、ENABLE_ACCESSLOG)、下載行為(MAX_CONCURRENT_DOWNLOADS、DELETE_FILE_ON_TRASHCAN、播放清單項目限製、訂閱檢查間隔)、儲存和目錄(DOWNLOAD_DIR、AUDIO_DOWNLOAD_DIR、自訂目錄、STATE_DIR、TEMP_DIR、CHOWN_DIRS)、檔案命名和 yt-dlp 選項(OUTPUT_TEMPLATE 及相關、YTDL_OPTIONS 和預設)以及 Web 伺服器設定(HOST、PORT、URL_PREFIX、HTTPS、CORS)。每個都有記錄的預設值。
alexta69-metube-deep-analysis|yt-dlp 選項的三個層級
alexta69-metube-deep-analysis|yt-dlp 選項的三個層級 的專案脈絡:MeTube 允許你在三個層級自訂 yt-dlp:全域選項適用於每次下載,預設是可在 UI 中按下載選擇的命名選項包,而每次下載的覆寫是 UI 中的自由文字 JSON 欄位(預設停用)。當下載開始時,各層按順序組合:先是全域,然後是選中的預設(按順序),最後是每次下載的覆寫。衝突鍵時更具體的層獲勝。選項表示為與 yt-dlp API 選項名稱匹配的 JSON 物件。
alexta69-metube-deep-analysis|安全預設值和警告
alexta69-metube-deep-analysis|安全預設值和警告 的專案脈絡:README 突出了兩個與安全相關的設定。ALLOW_PRIVATE_ADDRESSES 預設為 false,拒絕解析到內部主機的 URL 以防範 SSRF。啟用它會完全停用該保護,僅建議在受信任的環境中使用。另外,啟用 ALLOW_YTDL_OPTIONS_OVERRIDES 允許任何有權存取 UI 的人提供任意的 yt-dlp API 選項,這可能導致容器內任意指令執行;README 說只在受信任的環境中啟用。CORS_ALLOWED_ORIGINS 控製跨源請求,瀏覽器擴充功能和小書籤需要設定它。
alexta69-metube-deep-analysis|Cookie 和從其他工具傳送連結
alexta69-metube-deep-analysis|Cookie 和從其他工具傳送連結 的專案脈絡:對於受限製或私密影片,你可以透過進階選項 UI 上傳從瀏覽器匯出的 cookies.txt 檔案。幾種整合允許你向 MeTube 傳送 URL:Chrome 和 Firefox 的瀏覽器擴充功能、小書籤、iOS 捷徑和 Raycast 擴充功能。基於瀏覽器的那些需要設定 CORS_ALLOWED_ORIGINS,如果你在 HTTPS 頁面上,MeTube 也必須透過 HTTPS 提供(使用 HTTPS=true 或 HTTPS 反向代理)。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新 的專案脈絡:MeTube 可以設定為直接以 HTTPS 模式執行(HTTPS=true、CERTFILE、KEYFILE),也可以放在反向代理後面。當在子目錄下提供服務時,設定 URL_PREFIX;由於 MeTube 使用 WebSocket 進行即時更新,代理必須傳遞 Upgrade 和 Connection 標頭。yt-dlp 需要頻繁更新,因此當新的 yt-dlp 穩定版發佈時,會自動發佈新的 MeTube Docker 映像。你也可以透過設定 YTDL_NIGHTLY_UPDATE_TIME 來使用夜間建置。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:部署時先以 Docker 綁定 `/downloads`,再把 `PUID`、`PGID`、`STATE_DIR` 與 `TEMP_DIR` 設定到可寫入的位置;用 `MAX_CONCURRENT_DOWNLOADS=1` 先下載一個短影片,觀察 Completed 清單、`queue.json` 和實際檔名,再測試訂閱的 `SUBSCRIPTION_DEFAULT_CHECK_INTERVAL`。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:MeTube 的持久狀態位於 `queue.json`、`pending.json`、`completed.json` 和 `subscriptions.json`;移動 `STATE_DIR` 後要確認重啟仍能讀回佇列。`DOWNLOAD_DIRS_INDEXABLE` 預設關閉,測試時應從瀏覽器確認下載目錄沒有被當成網頁索引,而不是只看容器啟動成功。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第1項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第2項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第3項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第4項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第5項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第6項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第7項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第8項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第9項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第10項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第11項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第12項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第13項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第14項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第15項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第16項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
alexta69-metube-deep-analysis|HTTPS、反向代理和 yt-dlp 更新:alexta69-metube-deep-analysis 第17項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 alexta69-metube-deep-analysis,不能移植成其他專案的結論。
編輯結論
MeTube 刻意保持狹窄範圍:它只負責下載,檔案寫出後即停止。下載後的標籤整理和媒體庫組織交由專門的工具處理。 部署時先以 Docker 綁定 `/downloads`,再把 `PUID`、`PGID`、`STATE_DIR` 與 `TEMP_DIR` 設定到可寫入的位置;用 `MAX_CONCURRENT_DOWNLOADS=1` 先下載一個短影片,觀察 Completed 清單、`queue.json` 和實際檔名,再測試訂閱的 `SUBSCRIPTION_DEFAULT_CHECK_INTERVAL`。
社群筆記