想要在電腦和手機無廣告看Youtube影片?你有「Invidious」這個解決方案。
Invidious為一款輕量的第三方Youtube前端,我在Invidious用法討論了Invidious網站的使用方式,現在我們要來自架Invidious站台!
為啥要這樣幹呢?首先,公共Invidious站台因為太多人用,很容易因為流量過高被Youtube官方封鎖,導致影片無法載入。
並且,Invidious提供帳號註冊功能,裡面有簡單的訂閱功能與觀看紀錄,但你怎麼知道公共站點註冊帳號,背後的管理員會不會偷看你的紀錄呢?
為此,自己架一個Invidious站台看影片,你就不用跟其他人搶資源,並對站台資料有完全掌控權。
1. 撰寫docker-compose#
有趣的是為強調開源隱私,Invidious官方映像檔是放在RedHat的Quay.io而非Docker Hub。在拉取映像檔之前可能要執行docker login quay.io
登入帳號。
在Linux電腦安裝Docker
為防止Invidious被Youtube伺服器擋住,執行youtube-trusted-session-generator容器,假裝瀏覽Youtube,取得
po_token
和visitor_data
這二組資料
docker run quay.io/invidious/youtube-trusted-session-generator
- 因為部署需要指令稿初始化,建議複製Invidious官方的儲存庫
git clone https://github.com/iv-org/invidious.git
cd invidious
- 編輯
docker-compose.yml
,將po_token
和visitor_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:
- 啟動容器服務
docker compose up -d
- 瀏覽器開啟
http://localhost:3000
就可以看Youtube了。要從外部存取請使用通訊埠轉發或是內網穿透軟體
2. 功能用法#
按「趨勢」顯示熱門影片。內容地區可以在右上角設定裡面調整。
點選右上角按照喜好自行設定,「預設聆聽」是指只播放音訊不播放影片。啟用DASH格式的話,就能夠播放1080p影片,不然Invidious預設只有720p。
Invidious內建帳號註冊功能。帳號的功能僅是紀錄觀看歷史和訂閱列表,不會讓Google知道使用者的動向。訂閱列表還能匯出為RSS,與其他軟體共享。
使用者能從網頁端下載影片,不過最高畫質可能不會太高,其他畫質要手動合併影音檔案。
即使是自架伺服器,也有小機率被Youtube暫時封鎖,這時能夠點選網頁底部切換其他站台。不過也有可能其他公共站台也跟著被封就是了XD
3. Invidious客戶端APP#
如果你認為網頁不好用,那麼請使用支援Invidious技術的APP。你可以用這些客戶端,連線到自架的Invidious站台。
Android請用Clipious
iOS請用Yattee
電腦請用FreeTube
根據Invidious官方推薦的APP,瀏覽器安裝擴充元件Privacy Redirect便能將所有Youtube連結自動導向自架的Invidious站點。
如果你有興趣自架代理搜尋引擎SearXNG,它也支援將影片搜尋結果導向自己架的Invidious站點。