use remote cipher, disable oauth, rename lavalink config to .yaml
CI/CD / build (push) Successful in 46s
CI/CD / deploy (push) Successful in 14s

This commit is contained in:
2026-08-30 13:27:00 +02:00
parent a299eca732
commit 81bab82b36
4 changed files with 23 additions and 12 deletions
+71
View File
@@ -0,0 +1,71 @@
# Lavalink v4 server config. Keep the password in sync with LAVALINK_PASSWORD
# in the bot's environment (.env).
server:
port: 2333
address: 0.0.0.0
lavalink:
plugins:
# YouTube support was removed from Lavalink core in v4 and now lives in a
# plugin. Bump the version if playback breaks (YouTube changes often).
#
# Pinned to a snapshot, not a release: YouTube broke every client at once
# and the fixes (TV client User-Agent, newer client versions) aren't in a
# tagged release yet. Move back to one as soon as they are.
- dependency: "dev.lavalink.youtube:youtube-plugin:f45bbb7aebfcbc1c553769e04af6cd43afa8b7c3"
snapshot: true
server:
# Sourced from the LAVALINK_SERVER_PASSWORD env var (set by docker-compose
# from LAVALINK_PASSWORD in .env). Required — the server won't start without it.
password: "${LAVALINK_SERVER_PASSWORD}"
sources:
youtube: false # handled by the plugin below, not the core source
bandcamp: true
soundcloud: true
twitch: true
vimeo: true
http: true # direct media URLs (mp3/mp4/stream links)
local: false
plugins:
youtube:
enabled: true
allowSearch: true # enables the "ytsearch:" queries the bot falls back to
# Tried in order; the first one that can load the track wins. TV is last
# because it's the heaviest option, but it's the only client that plays
# age-restricted / "sign in to confirm you're not a bot" tracks, so it's
# the fallback when the others get rejected.
clients:
- MUSIC
- WEB
- WEBEMBEDDED
- ANDROID_VR
- TV
oauth:
# Links a Google account to the TV client. On first start with no refresh
# token, Lavalink logs a google.com/device code — open it, enter the code,
# and the plugin then logs a refresh token. Put that token in .env as
# PLUGINS_YOUTUBE_OAUTH_REFRESHTOKEN (docker-compose already passes .env
# into the Lavalink container, and Spring binds that name onto this key)
# so the device flow is skipped on every later start.
#
# Use a throwaway Google account. Google does ban accounts for this.
#
# Off for now: TV clears the login check anonymously for ordinary tracks,
# so a token only buys age-restricted ones. Flip to true (and do the
# device flow) if those turn out to matter.
enabled: false
# YouTube serves some regions a localized player script the plugin can't
# parse, which fails playback with "must find sig function". Hand the
# deciphering to a cipher server instead of doing it locally.
remoteCipher:
url: "https://cipher.kikkia.dev"
userAgent: "botinator"
logging:
level:
root: INFO
lavalink: INFO
# Prints the device code and, after you authorize, the refresh token.
dev.lavalink.youtube.http.YoutubeOauth2Handler: INFO