快轉到主要內容

以Docker架設Invidious站台,Youtube去廣告、網頁下載影片

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Self-hosting自架
標籤   Invidious Youtube RSS Feed
目錄

想要在電腦和手機無廣告看Youtube影片?你有「Invidious」這個解決方案。

Invidious為一款輕量的第三方Youtube前端,我在Invidious用法討論了Invidious網站的使用方式,現在我們要來自架Invidious站台!

為啥要這樣幹呢?首先,公共Invidious站台因為太多人用,很容易因為流量過高被Youtube官方封鎖,導致影片無法載入。

並且,Invidious提供帳號註冊功能,裡面有簡單的訂閱功能與觀看紀錄,但你怎麼知道公共站點註冊帳號,背後的管理員會不會偷看你的紀錄呢?

為此,自己架一個Invidious站台看影片,你就不用跟其他人搶資源,並對站台資料有完全掌控權。

1. 撰寫docker-compose
#

有趣的是為強調開源隱私,Invidious官方映像檔是放在RedHat的Quay.io而非Docker Hub。在拉取映像檔之前可能要執行docker login quay.io登入帳號。

  1. 在Linux電腦安裝Docker

  2. 為防止Invidious被Youtube伺服器擋住,執行youtube-trusted-session-generator容器,假裝瀏覽Youtube,取得po_tokenvisitor_data這二組資料

docker run quay.io/invidious/youtube-trusted-session-generator
  1. 因為部署需要指令稿初始化,建議複製Invidious官方的儲存庫
git clone https://github.com/iv-org/invidious.git

cd invidious
  1. 編輯docker-compose.yml,將po_tokenvisitor_data填進去,再按需修改。詳細設定檔參考官方範本。因為Youtube隨時會修改網站功能,如果Invidious不能看,先到Github回報issue,或者改用最新版git commit的映像檔invidious:master
services:

  invidious:
    image: quay.io/invidious/invidious:latest
  # image: quay.io/invidious/invidious:latest-arm64 # ARM64/AArch64 devices
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000" # 預設啟用反向代理,如果用不到就去掉127.0.0.1
    environment:
      INVIDIOUS_CONFIG: |
        db:
          dbname: invidious #資料庫帳號密碼
          user: kemal
          password: kemal
          host: invidious-db
          port: 5432
        check_tables: true
        signature_server: inv_sig_helper:12999
        visitor_data: "CHANGE_ME"" # # 填入上面取得的數值
        po_token: "CHANGE_ME" # 填入上面取得的數值
        statistics_enabled: true
        hmac_key: ""  # 修改此值,hmac_key可以用指令openssl rand -hex 20隨機生成        
    healthcheck:
      test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1
      interval: 30s
      timeout: 5s
      retries: 2
    logging:
      options:
        max-size: "1G"
        max-file: "4"
    depends_on:
      - invidious-db

  inv_sig_helper:
    image: quay.io/invidious/inv-sig-helper:latest
    init: true
    command: [ "--tcp", "0.0.0.0:12999" ]
    environment:
      - RUST_LOG=info
    restart: unless-stopped
    cap_drop:
      - ALL
    read_only: true
    security_opt:
      - no-new-privileges:true

  invidious-db:
    image: docker.io/library/postgres:14
    restart: unless-stopped
    volumes:
      - postgresdata:/var/lib/postgresql/data # 資料庫儲存於目前目錄之下
      - ./config/sql:/config/sql
      - ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
    environment:
      POSTGRES_DB: invidious
      POSTGRES_USER: kemal
      POSTGRES_PASSWORD: kemal
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB" ]

volumes:
  postgresdata:
  1. 啟動容器服務
docker compose up -d
  1. 瀏覽器開啟http://localhost:3000就可以看Youtube了。要從外部存取請使用通訊埠轉發或是內網穿透軟體

2. 功能用法
#

  1. 按「趨勢」顯示熱門影片。內容地區可以在右上角設定裡面調整。

  2. 點選右上角按照喜好自行設定,「預設聆聽」是指只播放音訊不播放影片。啟用DASH格式的話,就能夠播放1080p影片,不然Invidious預設只有720p。

  3. Invidious內建帳號註冊功能。帳號的功能僅是紀錄觀看歷史和訂閱列表,不會讓Google知道使用者的動向。訂閱列表還能匯出為RSS,與其他軟體共享。

  4. 使用者能從網頁端下載影片,不過最高畫質可能不會太高,其他畫質要手動合併影音檔案。

  5. 即使是自架伺服器,也有小機率被Youtube暫時封鎖,這時能夠點選網頁底部切換其他站台。不過也有可能其他公共站台也跟著被封就是了XD

3. Invidious客戶端APP
#

如果你認為網頁不好用,那麼請使用支援Invidious技術的APP。你可以用這些客戶端,連線到自架的Invidious站台。

Android請用Clipious

iOS請用Yattee

電腦請用FreeTube

根據Invidious官方推薦的APP,瀏覽器安裝擴充元件Privacy Redirect便能將所有Youtube連結自動導向自架的Invidious站點。

如果你有興趣自架代理搜尋引擎SearXNG,它也支援將影片搜尋結果導向自己架的Invidious站點。

相關文章

Invidious用法:Youtube去廣告、網頁下載影片的開源前端網站
分類   Linux系統 Self-hosting自架
標籤   Invidious Youtube
Karakeep:開源書籤管理 + 稍後閱讀軟體,AI自動上標籤
分類   Linux系統 Self-hosting自架
標籤   RSS Feed Data Hoarding Note-Taking OCR ChatGPT Ollama Browser Extension
自架RSS網頁閱讀器 FreshRSS + Fluent Reader,取回閱讀自主權
分類   Linux系統 Self-hosting自架
標籤   RSS Feed

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。