Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions docs/canonical/operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,34 @@ For a resolution failure, start with a plugin update — cheap and often enough

`docker compose up -d --force-recreate lavalink`

### The plugin is pinned to a snapshot, not a release

`lavalink/application.yml` pins `youtube-plugin` to a `main`-branch commit with `snapshot: true`,
because a release carrying the fix does not exist yet. Around 2026-08-18 YouTube began rejecting
Cobalt-family User-Agents on the TVHTML5 player endpoint, answering `UNPLAYABLE` /
"The page needs to be reloaded." `TV` is the only OAuth-capable client, so that killed
authenticated playback outright even with a valid refresh token — bot joins, announces, silence.
Upstream [issue #226](https://github.com/lavalink-devs/youtube-source/issues/226), fixed by
[#233](https://github.com/lavalink-devs/youtube-source/pull/233) (PlayStation 4 User-Agent),
merged 2026-08-19; 1.18.2 predates it.

Move back to a released version once one ships the fix (>= 1.18.3), so the deployment is not
tracking an unreleased build indefinitely. Snapshot versions are commit SHAs, listed at
<https://maven.lavalink.dev/snapshots/dev/lavalink/youtube/youtube-plugin/maven-metadata.xml>.

Only Lavalink needs recreating after a plugin change — the file is volume-mounted:

`docker compose up -d --force-recreate lavalink`

**Changes to the bot's own code need an image rebuild.** `--force-recreate lavalink` restarts
Lavalink alone, and `docker compose up -d bot` reuses the existing image, so a `git pull` that
touched `src/` is not live until:

`docker compose up -d --build bot`

Check `docker compose ps` — the `CREATED` column shows the image age. A bot container created
long before the last deploy is running old code.

### Completing the YouTube OAuth login

`plugins.youtube.oauth` is enabled in `lavalink/application.yml`, but it does nothing until an
Expand Down
13 changes: 11 additions & 2 deletions lavalink/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@ server:

lavalink:
plugins:
- dependency: "dev.lavalink.youtube:youtube-plugin:1.18.2"
snapshot: false
# Pinned to a main-branch snapshot rather than a release, on purpose. Around 2026-08-18
# YouTube started rejecting Cobalt-family User-Agents on the TVHTML5 player endpoint,
# answering UNPLAYABLE / "The page needs to be reloaded." Because TV is the only
# OAuth-capable client, that takes out authenticated playback entirely - the exact symptom
# is every /play joining the channel and staying silent. Upstream issue #226; fixed by #233
# (PlayStation 4 User-Agent), merged 2026-08-19. No release carries it yet: 1.18.2 is from
# 2026-07-27. This commit also carries #235 (recover total length when contentLength is
# omitted). Go back to a released version as soon as one ships the fix (>= 1.18.3):
# https://github.com/lavalink-devs/youtube-source/issues/226
- dependency: "dev.lavalink.youtube:youtube-plugin:f45bbb7aebfcbc1c553769e04af6cd43afa8b7c3"
snapshot: true
- dependency: "com.github.topi314.lavasrc:lavasrc-plugin:4.8.3"
repository: "https://maven.lavalink.dev/releases"
snapshot: false
Expand Down
Loading