use remote cipher, disable oauth, rename lavalink config to .yaml
This commit is contained in:
@@ -52,13 +52,13 @@ jobs:
|
|||||||
# Ship the compose file and Lavalink config to the server. .env and
|
# Ship the compose file and Lavalink config to the server. .env and
|
||||||
# catchphrases.txt live on the server and are intentionally not copied.
|
# catchphrases.txt live on the server and are intentionally not copied.
|
||||||
# Plugins live in a named Docker volume (see docker-compose.yaml), so
|
# Plugins live in a named Docker volume (see docker-compose.yaml), so
|
||||||
# only the lavalink/ dir for application.yml is needed here.
|
# only the lavalink/ dir for application.yaml is needed here.
|
||||||
ssh -i ~/.ssh/key $HOST "mkdir -p $DIR/lavalink"
|
ssh -i ~/.ssh/key $HOST "mkdir -p $DIR/lavalink"
|
||||||
scp -i ~/.ssh/key docker-compose.yaml $HOST:"$DIR/docker-compose.yaml"
|
scp -i ~/.ssh/key docker-compose.yaml $HOST:"$DIR/docker-compose.yaml"
|
||||||
scp -i ~/.ssh/key lavalink/application.yml $HOST:"$DIR/lavalink/application.yml"
|
scp -i ~/.ssh/key lavalink/application.yaml $HOST:"$DIR/lavalink/application.yaml"
|
||||||
|
|
||||||
# Lavalink's config is a bind mount, and compose only recreates a
|
# Lavalink's config is a bind mount, and compose only recreates a
|
||||||
# service when its own config changes — not when a mounted file's
|
# service when its own config changes — not when a mounted file's
|
||||||
# contents do. Restart it explicitly so application.yml is re-read.
|
# contents do. Restart it explicitly so application.yaml is re-read.
|
||||||
ssh -i ~/.ssh/key $HOST \
|
ssh -i ~/.ssh/key $HOST \
|
||||||
"cd $DIR && docker compose pull && docker compose up -d && docker compose restart lavalink"
|
"cd $DIR && docker compose pull && docker compose up -d && docker compose restart lavalink"
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ bot with a few fun slash commands and music playback powered by
|
|||||||
|
|
||||||
The bot is just a **Lavalink client** — actual audio is streamed by a separate
|
The bot is just a **Lavalink client** — actual audio is streamed by a separate
|
||||||
**Lavalink v4 server** that runs alongside it (started with Docker). YouTube support
|
**Lavalink v4 server** that runs alongside it (started with Docker). YouTube support
|
||||||
comes from the `youtube-plugin`, configured in `lavalink/application.yml`.
|
comes from the `youtube-plugin`, configured in `lavalink/application.yaml`.
|
||||||
|
|
||||||
- Bot: Java + Gradle (JDA 6, `lavalink-client`)
|
- Bot: Java + Gradle (JDA 6, `lavalink-client`)
|
||||||
- Music server: Lavalink v4 via `docker-compose.yaml`
|
- Music server: Lavalink v4 via `docker-compose.yaml`
|
||||||
@@ -120,7 +120,7 @@ you don't set `LAVALINK_URI` yourself here.
|
|||||||
Some tracks — age-restricted ones, and anything YouTube decides to gate behind
|
Some tracks — age-restricted ones, and anything YouTube decides to gate behind
|
||||||
"Sign in to confirm you're not a bot" — won't load on the anonymous clients. The
|
"Sign in to confirm you're not a bot" — won't load on the anonymous clients. The
|
||||||
`TV` client can play them, but only with a linked Google account, so
|
`TV` client can play them, but only with a linked Google account, so
|
||||||
`lavalink/application.yml` enables the plugin's OAuth flow. **Use a throwaway
|
`lavalink/application.yaml` enables the plugin's OAuth flow. **Use a throwaway
|
||||||
Google account: Google does ban accounts for this.**
|
Google account: Google does ban accounts for this.**
|
||||||
|
|
||||||
One-time setup:
|
One-time setup:
|
||||||
@@ -154,4 +154,4 @@ in the client list and only gets used when the others are refused.
|
|||||||
|
|
||||||
- Queue state is kept in memory, so it resets if the bot restarts.
|
- Queue state is kept in memory, so it resets if the bot restarts.
|
||||||
- YouTube occasionally breaks playback when Google changes its player. The fix is usually
|
- YouTube occasionally breaks playback when Google changes its player. The fix is usually
|
||||||
bumping the `youtube-plugin` version in `lavalink/application.yml` and restarting the server.
|
bumping the `youtube-plugin` version in `lavalink/application.yaml` and restarting the server.
|
||||||
|
|||||||
+2
-2
@@ -34,11 +34,11 @@ services:
|
|||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
- _JAVA_OPTIONS=-Xmx1G
|
- _JAVA_OPTIONS=-Xmx1G
|
||||||
# Lavalink reads this for lavalink.server.password in application.yml.
|
# Lavalink reads this for lavalink.server.password in application.yaml.
|
||||||
# Keep it equal to LAVALINK_PASSWORD (what the bot uses to connect).
|
# Keep it equal to LAVALINK_PASSWORD (what the bot uses to connect).
|
||||||
- LAVALINK_SERVER_PASSWORD=${LAVALINK_PASSWORD}
|
- LAVALINK_SERVER_PASSWORD=${LAVALINK_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- ./lavalink/application.yml:/opt/Lavalink/application.yml:ro
|
- ./lavalink/application.yaml:/opt/Lavalink/application.yaml:ro
|
||||||
# Named volume (managed by Docker) rather than a host bind mount. Docker
|
# Named volume (managed by Docker) rather than a host bind mount. Docker
|
||||||
# initializes it from the image, so it's owned by Lavalink's container user
|
# initializes it from the image, so it's owned by Lavalink's container user
|
||||||
# and the plugin jars download without permission errors. No root-owned (or
|
# and the plugin jars download without permission errors. No root-owned (or
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ plugins:
|
|||||||
enabled: true
|
enabled: true
|
||||||
allowSearch: true # enables the "ytsearch:" queries the bot falls back to
|
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
|
# Tried in order; the first one that can load the track wins. TV is last
|
||||||
# because it needs a signed-in account (see oauth below), but it's the only
|
# because it's the heaviest option, but it's the only client that plays
|
||||||
# client that plays age-restricted / "sign in to confirm you're not a bot"
|
# age-restricted / "sign in to confirm you're not a bot" tracks, so it's
|
||||||
# tracks, so it's the fallback when the others get rejected.
|
# the fallback when the others get rejected.
|
||||||
clients:
|
clients:
|
||||||
- MUSIC
|
- MUSIC
|
||||||
- WEB
|
- WEB
|
||||||
@@ -50,7 +50,18 @@ plugins:
|
|||||||
# so the device flow is skipped on every later start.
|
# so the device flow is skipped on every later start.
|
||||||
#
|
#
|
||||||
# Use a throwaway Google account. Google does ban accounts for this.
|
# Use a throwaway Google account. Google does ban accounts for this.
|
||||||
enabled: true
|
#
|
||||||
|
# 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:
|
logging:
|
||||||
level:
|
level:
|
||||||
Reference in New Issue
Block a user