<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>自託管 on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/%E8%87%AA%E8%A8%97%E7%AE%A1/</link>
        <description>Recent content in 自託管 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Wed, 10 Jun 2026 21:47:35 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/%E8%87%AA%E8%A8%97%E7%AE%A1/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>MeTube：給 yt-dlp 加一個瀏覽器下載面板</title>
        <link>https://knightli.com/zh-tw/2026/06/10/metube-yt-dlp-web-ui/</link>
        <pubDate>Wed, 10 Jun 2026 21:47:35 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/06/10/metube-yt-dlp-web-ui/</guid>
        <description>&lt;p&gt;MeTube 是一個給 &lt;code&gt;yt-dlp&lt;/code&gt; 做瀏覽器介面的自託管專案。它的價值很直接：把原本需要敲命令、記參數、處理路徑和排錯的下載流程，放到一個 Web 面板裡完成。&lt;/p&gt;
&lt;p&gt;對已經熟悉 &lt;code&gt;yt-dlp&lt;/code&gt; 的人來說，MeTube 不是替代品，而是一個更適合日常使用和多人共用的外殼。對不想碰命令列的人來說，它把影片下載這件事降到了「貼上連結、選擇格式、提交任務」的複雜度。&lt;/p&gt;
&lt;h2 id=&#34;metube-適合解決什麼問題&#34;&gt;MeTube 適合解決什麼問題
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;yt-dlp&lt;/code&gt; 本身很強，支援 YouTube 和大量影片網站，也能處理音訊、字幕、封面、播放清單和格式選擇。但命令列工具的門檻也明顯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;參數多，常用配置需要記憶或保存腳本；&lt;/li&gt;
&lt;li&gt;下載路徑、檔案命名、音影片格式容易寫錯；&lt;/li&gt;
&lt;li&gt;給家人或團隊使用時，很難要求每個人都學命令；&lt;/li&gt;
&lt;li&gt;訂閱頻道、批次下載、背景佇列更適合用 Web 面板管理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MeTube 做的就是把這些能力集中到瀏覽器裡。它背後仍然呼叫 &lt;code&gt;yt-dlp&lt;/code&gt;，前台則提供任務提交、佇列管理、品質選擇和配置入口。&lt;/p&gt;
&lt;h2 id=&#34;三類下載場景&#34;&gt;三類下載場景
&lt;/h2&gt;&lt;p&gt;MeTube 的常見用法可以分成三類。&lt;/p&gt;
&lt;p&gt;第一類是單一影片下載。把連結貼進去，選擇影片品質或僅下載音訊，再提交任務即可。它也可以同時處理字幕、封面縮圖等附加內容。&lt;/p&gt;
&lt;p&gt;第二類是播放清單和頻道下載。輸入播放清單或頻道連結後，MeTube 會拉取條目列表，使用者可以選擇部分下載，也可以批次加入佇列。這個場景很適合做課程、Podcast、公開課或影片資料歸檔。&lt;/p&gt;
&lt;p&gt;第三類是訂閱自動下載。訂閱某個頻道或播放清單後，MeTube 會按設定間隔檢查新內容，發現更新後自動加入下載佇列。預設檢查間隔是 60 分鐘，也可以按自己的伺服器負載和更新頻率調整。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;最簡單的部署方式是 Docker：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這條命令做了兩件事：把容器的 &lt;code&gt;8081&lt;/code&gt; 連接埠映射到主機，把主機下載目錄掛載到容器內的 &lt;code&gt;/downloads&lt;/code&gt;。如果已經在 NAS 或家用伺服器上使用 Docker，也可以改成 &lt;code&gt;docker-compose&lt;/code&gt;，方便和反向代理、儲存目錄、權限配置一起維護。&lt;/p&gt;
&lt;h2 id=&#34;yt-dlp-參數怎麼管理&#34;&gt;yt-dlp 參數怎麼管理
&lt;/h2&gt;&lt;p&gt;MeTube 對 &lt;code&gt;yt-dlp&lt;/code&gt; 參數的管理分成三層，從穩定預設值到臨時覆蓋逐級增強。&lt;/p&gt;
&lt;p&gt;第一層是全域配置。可以透過 &lt;code&gt;YTDL_OPTIONS&lt;/code&gt; 設定所有下載任務的預設行為，也可以指向一個 JSON 檔案。檔案更新後可以自動重新載入，不必每次都重啟容器。&lt;/p&gt;
&lt;p&gt;第二層是預設。預設可以理解為命名的參數包，例如「嵌入字幕」「跳過 SponsorBlock 片段」「限速下載」「只取音訊」。下載時在介面裡選擇對應預設即可，也可以組合多個預設。&lt;/p&gt;
&lt;p&gt;第三層是單次覆蓋。臨時任務可以在介面裡輸入 JSON 覆蓋參數，它的優先級最高。這個功能預設關閉，開啟前要考慮權限邊界，因為它允許使用者向容器內傳入任意 &lt;code&gt;yt-dlp&lt;/code&gt; 選項。&lt;/p&gt;
&lt;p&gt;三層優先級可以簡單記成：單次覆蓋高於預設，預設高於全域配置。&lt;/p&gt;
&lt;h2 id=&#34;檔案命名和目錄&#34;&gt;檔案命名和目錄
&lt;/h2&gt;&lt;p&gt;MeTube 繼承了 &lt;code&gt;yt-dlp&lt;/code&gt; 的檔案名稱模板能力。常見配置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OUTPUT_TEMPLATE&lt;/code&gt;：控制單一影片的命名；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OUTPUT_TEMPLATE_PLAYLIST&lt;/code&gt;：控制播放清單下載，預設按清單名分目錄；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OUTPUT_TEMPLATE_CHANNEL&lt;/code&gt;：控制頻道下載，預設按頻道名分目錄；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AUDIO_DOWNLOAD_DIR&lt;/code&gt;：把音訊檔案單獨放到指定目錄。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果下載量較大，可以把臨時目錄放到 SSD，提高合併和轉碼過程的速度。也可以使用 &lt;code&gt;tmpfs&lt;/code&gt;，但要注意記憶體檔案系統可能影響斷點續傳，適合短任務，不適合長時間大檔案下載。&lt;/p&gt;
&lt;p&gt;MeTube 還支援自訂目錄。開啟後，下載介面會出現目錄選擇器，輸入新目錄名即可建立並保存到對應位置。對 NAS 使用者來說，這比每次手寫路徑更方便，也更不容易把檔案放亂。&lt;/p&gt;
&lt;h2 id=&#34;瀏覽器擴充功能和外部整合&#34;&gt;瀏覽器擴充功能和外部整合
&lt;/h2&gt;&lt;p&gt;MeTube 不只局限於打開面板貼上連結。它有 Chrome 和 Firefox 擴充功能，可以在影片頁面右鍵發送到 MeTube；iOS 使用者可以透過快捷指令從 Safari 分享選單提交連結；也可以用書籤腳本在任意網頁一鍵發送目前網址。&lt;/p&gt;
&lt;p&gt;如果使用瀏覽器擴充功能，需要處理好 CORS 和 HTTPS。常見做法是在 MeTube 前面放一層 Nginx、Caddy 或 Apache 反向代理，讓外部訪問走 HTTPS，同時把跨域配置補齊。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;MeTube 最適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有 NAS、家用伺服器或長期運行的 Docker 主機；&lt;/li&gt;
&lt;li&gt;想搭一個統一的影片下載入口；&lt;/li&gt;
&lt;li&gt;需要自動歸檔 YouTube 頻道或播放清單；&lt;/li&gt;
&lt;li&gt;覺得 &lt;code&gt;yt-dlp&lt;/code&gt; 命令列太繁瑣，但又想保留它的能力；&lt;/li&gt;
&lt;li&gt;想給家人、同事或小團隊提供一個不用學命令的下載介面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太適合只偶爾下載一個影片的人。那種場景直接用命令列、桌面工具或臨時腳本可能更輕。MeTube 的優勢在於長期運行、佇列管理、訂閱檢查和統一入口。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意的邊界&#34;&gt;使用時要注意的邊界
&lt;/h2&gt;&lt;p&gt;第一，MeTube 只是給 &lt;code&gt;yt-dlp&lt;/code&gt; 做 Web 化管理，下載能力仍然取決於 &lt;code&gt;yt-dlp&lt;/code&gt; 本身。目標網站規則變化、登入限制、地區限制、格式不可用等問題，最終還是要回到 &lt;code&gt;yt-dlp&lt;/code&gt; 的支援情況。&lt;/p&gt;
&lt;p&gt;第二，開放給多人使用前要考慮權限。尤其是單次覆蓋參數、自訂目錄和公開網路訪問，都可能帶來誤操作或安全風險。更穩妥的做法是放在內網使用，公開訪問時加反向代理、登入驗證和訪問限制。&lt;/p&gt;
&lt;p&gt;第三，下載目錄要提前規劃。播放清單、頻道、音訊、臨時檔案最好分開，不然用一段時間後檔案會很快混在一起。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;MeTube 的定位很清楚：它不是另一個全新下載引擎，而是把 &lt;code&gt;yt-dlp&lt;/code&gt; 變成一個適合長期運行的 Web 下載中心。對 NAS、家用伺服器和需要批次歸檔影片資料的人來說，這比每次手敲命令更穩定，也更容易交給別人使用。&lt;/p&gt;
&lt;p&gt;如果你已經在用 Docker，又經常需要下載影片、音訊、字幕或頻道內容，MeTube 值得作為常駐工具試一下。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/2045898393927603329?share_code=Y0OaTnUufqSR&amp;amp;utm_psn=2046579775909765249&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;知乎專欄原文&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
