Lavalink 4 odtwarza YouTube przez plugin, a nie sam z siebie: jego wbudowane źródło YouTube jest przestarzałe i powinno zostać wyłączone. Zainstaluj plugin źródła YouTube (dev.lavalink.youtube:youtube-plugin), ustaw youtube: false w lavalink.server.sources i włącz plugin w plugins.youtube. Na naszych serwerach to nie wystarczyło: YouTube wymagał logowania, więc zaloguj plugin raz na zapasowe konto Google i zachowaj refresh token. Przy wydaniu 1.18.2 samo logowanie też nie wystarcza (zobacz „Wersja 1.18.2 i logowanie” niżej). Na jednym z naszych własnych serwerów Lavalink, 6 listopada 2026, z wersją 1.18.2, niewydanymi poprawkami i serwerem cipher, plugin znalazł wszystkie 12 utworów testowych, ale przed zalogowaniem nie uruchomił żadnego z nich, a po zalogowaniu uruchomił każdy z 10 ukończonych testów (po 15 sekund, bez kanału głosowego).
Dlaczego YouTube zawodzi na serwerze Lavalink
Dokumentacja pluginu mówi, że YouTube oznacza niektóre żądania i prosi o „zalogowanie się, aby potwierdzić, że nie jesteś botem”. To właśnie widzieliśmy na naszych serwerach. Bez logowania plugin znajdował każdy utwór testowy wyszukiwaniem i linkiem, ale potem każdy z jego klientów był odrzucany przy próbie odtworzenia:
Client [WEB] failed: This video requires login.
Client [TVHTML5_SIMPLY] failed: Sign in to confirm you’re not a bot
Client [TVHTML5] failed: This video requires login.
Client [WEB_EMBEDDED_PLAYER] failed: This video is unavailable
dev.lavalink.youtube.AllClientsFailedException: (yts.version: 1.18.2) All clients failed to load the item.
W naszym teście wyszukiwanie działało bez logowania, odtwarzanie nie. Twój bot widzi, że utwór startuje i od razu kończy się wyjątkiem ścieżki (track exception).
Dwie inne rzeczy co jakiś czas psują odtwarzanie, a dokumentacja pluginu opisuje obie:
- Szyfr podpisu. YouTube często zmienia kod, który odblokowuje jego strumienie. Plugin może zlecić tę pracę zdalnemu serwerowi cipher (
remoteCipher), takiemu jak otwartoźródłowy yt-cipher. - Klienci. Plugin rozmawia z YouTube jako kilka aplikacji (
WEB,MWEB,ANDROID_VR,TVi inne) i próbuje ich w kolejności, jaką podasz. TylkoTVużywa logowania do odtwarzania, a wyszukiwać mogą tylko klienci do tego oznaczeni.
Wersja 1.18.2 i logowanie
Z logowania korzysta klient TV, a klient TV w wydaniu 1.18.2 ma znany problem: od sierpnia 2026 YouTube odpowiada mu „The page needs to be reloaded” (zgłoszenie #226 w repozytorium pluginu na GitHubie, wciąż otwarte 6 listopada 2026). Twórcy pluginu scalili poprawkę 19 sierpnia 2026, tego samego dnia poprawkę dla strumieni bez podanej długości, a 17 września 2026 poprawkę połączeń z cipherem, ale do 6 listopada 2026 nie wyszło żadne wydanie z nimi. README pluginu wyjaśnia, jak zamiast wydania załadować build konkretnego commitu: hash commitu jako wersja, z snapshot: true. Najpierw sprawdź stronę wydań, czy nie ma nowszej wersji.
Konfiguracja pluginu na własnym Lavalink
- Dodaj plugin do
application.ymlwlavalink.plugins, z wersją z wydań pluginu na GitHubie. 1.18.2 (27 lipca 2026) jest najnowszym wydaniem na 6 listopada 2026. Ma opisany wyżej problem klienta TV, więc przeczytaj tę sekcję przed wyborem wersji:
lavalink:
plugins:
- dependency: "dev.lavalink.youtube:youtube-plugin:1.18.2"
snapshot: false
server:
sources:
youtube: false
- Włącz plugin i podaj mu klientów:
plugins:
youtube:
enabled: true
allowSearch: true
clients:
- MUSIC
- ANDROID_VR
- WEB
- WEBEMBEDDED
- TV
oauth:
enabled: true
- Opcjonalnie dodaj serwer cipher w
plugins.youtube.remoteCipher(urlipassword), jak opisuje README pluginu. - Uruchom Lavalink. Konsola wypisze kod i adres: otwórz
https://www.google.com/device, wpisz kod i zezwól na dostęp zapasowym kontem Google. Autorzy pluginu ostrzegają, że konto może zostać zamknięte, więc nigdy nie używaj głównego. - Konsola wypisze wtedy
OAUTH INTEGRATION: Token retrieved successfully. Store your refresh token as this can be reused.z tokenem w nawiasach. Skopiuj go doapplication.yml, żeby node nie pytał ponownie po restarcie:
oauth:
enabled: true
refreshToken: "PASTE_THE_TOKEN_HERE"
- Zrestartuj Lavalink. Przy działającym tokenie zapisuje w logu
YouTube access token refreshed successfully.
Refresh token otwiera to konto Google: trzymaj application.yml w tajemnicy.
W planie Lavalink w PlayNHost
Instalacja robi już część dotyczącą pluginu: plugin YouTube 1.18.2 z poprawkami PlayNHost leży w plugins jako youtube-plugin-1.18.2-playnhost1.jar, własne źródło YouTube Lavalink jest wyłączone, logowanie jest włączone, a plugin używa serwera cipher, który prowadzimy we własnej sieci. Poprawki to zmiany w kliencie TV, cipherze i długości strumieni, które twórcy pluginu scalili w sierpniu i wrześniu 2026, ale jeszcze nie wydali. Ty robisz jedno: logowanie.
- Otwórz swój serwer w panelu i kliknij Uruchom w Console.
- Znajdź linię
OAUTH INTEGRATION: To give youtube-source access to your account, go to https://www.google.com/device and enter code XXXX-XXXX, otwórz adres, wpisz kod i zezwól na dostęp zapasowym kontem Google. - Gdy konsola wypisze
Token retrieved successfully, skopiuj token z nawiasów, zatrzymaj node i dodaj go woauth:wapplication.ymlw Files, jak w kroku 5 wyżej. Zachowaj wcięcia. - Uruchom node ponownie i sprawdź, czy pojawia się
YouTube access token refreshed successfully.
Zostaw plugins.youtube.remoteCipher.url bez zmian: panel zapisuje go przy każdym starcie, a adres działa tylko z naszych serwerów. Ponowna instalacja zachowuje twój application.yml razem z tokenem.
To, czy YouTube poda dany utwór serwerowi, zależy od YouTube i zmienia się bez zapowiedzi. My dbamy, by node i plugin działały; nie możemy obiecać, na co pozwoli YouTube. Jeśli w ogóle nie chcesz YouTube, ustaw enabled: false w plugins:, youtube:.
Komunikaty YouTube w konsoli
| Komunikat | Co oznacza i co zrobić |
|---|---|
OAUTH INTEGRATION: To give youtube-source access to your account, go to https://www.google.com/device and enter code ... | Plugin czeka na logowanie. Wykonaj kroki wyżej. |
OAUTH INTEGRATION: The device token has expired. OAuth integration has been canceled. | Kod nie został wpisany na czas. Zrestartuj node, aby dostać nowy. |
YouTube access token refreshed successfully | Zapisany refresh token działa. |
Refreshing YouTube access token failed | Token już nie działa, często dlatego, że konto zostało wylogowane albo token skopiowano źle. Usuń refreshToken, zrestartuj i zaloguj się ponownie. |
This video requires login. lub Sign in to confirm you’re not a bot po Client [...] failed: | YouTube odmawia obsługi serwera bez logowania. Zaloguj plugin albo sprawdź, czy zapisany token nadal działa. |
All clients failed to load the item. | Każdy klient z twojej listy został odrzucony. Linie Client [...] failed: obok podają powód dla każdego z nich. |
The page needs to be reloaded od klienta TVHTML5 | Opisany wyżej problem klienta TV z wydania 1.18.2. |
Inne sposoby na muzykę bez YouTube
Ten sam node może odtwarzać ze źródeł, które nie wymagają logowania. W naszych planach Bandcamp, Twitch, Vimeo, Niconico i bezpośrednie linki http są włączone od początku. Pluginy takie jak LavaSrc dodają kolejne serwisy, z których część wymaga twoich własnych kluczy API: Jak dodać pluginy do Lavalink.
Dalej
- Skonfiguruj node: Jak hostować serwer Lavalink 24/7.
- Połącz swojego bota: Jak połączyć bota Discord z Lavalink.
- Inne błędy: Błędy Lavalink i co oznaczają.
- Plany: Hosting Lavalink.



