MeTube: Program pengunduh YouTube yang di-self-host
(github.com/alexta69)-
Penghentian build ARM 32-bit
- Versi Node yang baru tidak mendukung ARM 32-bit
- Karena pembaruan keamanan dan masalah dependensi, perlu migrasi ke OS 64-bit
-
Pengenalan MeTube
- GUI web untuk youtube-dl (menggunakan fork yt-dlp)
- Mendukung pengunduhan video dari YouTube dan berbagai situs lain
Menjalankan dengan Docker
-
Perintah Docker
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube -
Contoh docker-compose
version: "3" services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads
Konfigurasi dengan variabel lingkungan
- UID: ID pengguna yang akan menjalankan MeTube (default: 1000)
- GID: ID grup yang akan menjalankan MeTube (default: 1000)
- UMASK: nilai umask (default: 022)
- DEFAULT_THEME: tema default (
light,dark,auto, default:auto) - DOWNLOAD_DIR: path penyimpanan unduhan (default:
/downloads) - AUDIO_DOWNLOAD_DIR: path penyimpanan unduhan khusus audio (default:
DOWNLOAD_DIR) - DOWNLOAD_DIRS_INDEXABLE: apakah direktori unduhan dapat diindeks (default:
false) - CUSTOM_DIRS: apakah unduhan ke direktori kustom diaktifkan (default:
true) - CREATE_CUSTOM_DIRS: apakah pembuatan direktori otomatis didukung (default:
true) - STATE_DIR: path penyimpanan file persistensi antrean (default:
/downloads/.metube) - TEMP_DIR: path penyimpanan file unduhan sementara (default:
/downloads) - DELETE_FILE_ON_TRASHCAN: apakah file yang dihapus dari UI juga dihapus dari server (default:
false) - URL_PREFIX: path dasar server web (default:
/) - PUBLIC_HOST_URL: URL dasar untuk tautan unduhan yang ditampilkan di UI
- PUBLIC_HOST_AUDIO_URL: URL dasar untuk tautan unduhan audio
- OUTPUT_TEMPLATE: template nama file unduhan (default:
%(title)s.%(ext)s) - OUTPUT_TEMPLATE_CHAPTER: template nama file video yang dibagi per chapter (default:
%(title)s - %(section_number)s %(section_title)s.%(ext)s) - YTDL_OPTIONS: opsi tambahan yang diteruskan ke youtube-dl (format JSON)
- YTDL_OPTIONS_FILE: path file JSON untuk mengisi
YTDL_OPTIONS
Menggunakan cookie browser
-
Tambahkan ke docker-compose.yml
volumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} -
Pasang ekstensi ekstraksi cookie
- Firefox
- Chrome
Ekstensi browser
- Chrome: dapat dipasang dari Google Chrome Webstore
- Firefox: dapat dipasang dari Firefox Addons
Pintasan iOS
- Pintasan iOS: mengirim URL dari Safari ke MeTube
- Perlu memasukkan alamat server dan port
Kompatibilitas iOS
- Persyaratan file video iOS: memerlukan codec video h264 atau h265 dan codec audio aac
- Saat mengunduh format MP4, dapat memilih opsi "Best (iOS)"
Bookmarklet
- Bookmarklet Chrome: mengirim halaman web yang sedang dibuka ke MeTube
- Saat digunakan di halaman HTTPS, diperlukan reverse proxy HTTPS
Menjalankan di balik reverse proxy
-
Contoh konfigurasi NGINX
location /metube/ { proxy_pass http://metube:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } -
Contoh konfigurasi Apache
<Location /metube/> ProxyPass http://localhost:8081/ retry=0 timeout=30 ProxyPassReverse http://localhost:8081/ </Location> <Location /metube/socket.io> RewriteEngine On RewriteCond %{QUERY_STRING} transport=websocket [NC] RewriteRule /(.*) ws://localhost:8081/socket.io/$1 [P,L] ProxyPass http://localhost:8081/socket.io retry=0 timeout=30 ProxyPassReverse http://localhost:8081/socket.io </Location> -
Contoh konfigurasi Caddy
example.com { route /metube/* { uri strip_prefix metube reverse_proxy metube:8081 } }
Pembaruan yt-dlp
- Build nightly otomatis: jika ada versi yt-dlp baru, build dan image Docker akan diperbarui secara otomatis
- Disarankan memasang dan mengonfigurasi watchtower
Pemecahan masalah dan pengajuan issue
- MeTube adalah UI untuk yt-dlp: masalah terkait yt-dlp sebaiknya tidak diajukan ke proyek MeTube
- Disarankan menggunakan perintah yt-dlp secara langsung: uji opsinya lalu terapkan ke
YTDL_OPTIONS
Build dan jalankan secara lokal
-
Alat yang dibutuhkan: node.js dan Python 3.11
cd metube/ui npm install node_modules/.bin/ng build cd .. pip3 install pipenv pipenv install pipenv run python3 app/main.py -
Build image Docker secara lokal
docker build -t metube .
Catatan pengembangan
- Berjalan di Windows, macOS, Linux
- Saat menjalankan server dari VSCode, folder unduhan adalah folder Downloads milik pengguna
Ringkasan GN⁺
- MeTube adalah GUI web untuk youtube-dl yang menyediakan kemampuan mengunduh video dari berbagai situs
- Dapat dideploy dan dikonfigurasi dengan mudah menggunakan Docker, serta mendukung kustomisasi melalui berbagai variabel lingkungan
- Pengunduhan video dapat dilakukan dengan nyaman melalui ekstensi browser dan pintasan iOS
- Selalu diperbarui ke versi yt-dlp terbaru secara otomatis
- Proyek dengan fungsi serupa mencakup JDownloader dan Video DownloadHelper
1 komentar
Komentar Hacker News
Tube Archivist berguna untuk mengarsipkan dan mengindeks kanal teknis
Menginginkan fitur seperti YouTube TiVo
Sedang berpikir untuk membuat aplikasi sederhana menggunakan yt-dlp
Akan bagus jika ada antarmuka yang terintegrasi dengan Jellyfin
Agak heran ada banyak alat mirroring YouTube
Server berbasis yt-dlp bisa jadi populer jika dikemas seperti PiHole dengan image sederhana dan aplikasi klien frontend
Sedang menggunakan TubeSync
Sedang menggunakan Cobalt.tools
Mengunduh video yang ditambahkan ke playlist lalu menyimpannya ke server Plex bersama
Sebagai alat terkait ada Yark: YouTube Archiver with Offline UI