-
Notifications
You must be signed in to change notification settings - Fork 0
Connect Lavalink and congfigure Lavalink
CPS edited this page Aug 21, 2024
·
1 revision
To integrate Lavalink with your Discord bot, follow these steps to configure and connect Lavalink properly.
-
Download Lavalink:
- Go to the Lavalink GitHub Releases page and download the latest
.jar
file.
- Go to the Lavalink GitHub Releases page and download the latest
-
Install Java:
- Lavalink requires Java 17 or newer.
-
Create Lavalink Configuration File:
- In the directory where you placed the Lavalink
.jar
file, create anapplication.yml
file with the following configuration:
- In the directory where you placed the Lavalink
server: # REST and WS server
port: 2333
address: 0.0.0.0
http2:
enabled: false # Whether to enable HTTP/2 support
plugins:
# name: # Name of the plugin
# some_key: some_value # Some key-value pair for the plugin
# another_key: another_value
lavalink:
plugins:
# - dependency: "com.github.example:example-plugin:1.0.0" # required, the coordinates of your plugin
# repository: "https://maven.example.com/releases" # optional, defaults to the Lavalink releases repository by default
# snapshot: false # optional, defaults to false, used to tell Lavalink to use the snapshot repository instead of the release repository
# pluginsDir: "./plugins" # optional, defaults to "./plugins"
# defaultPluginRepository: "https://maven.lavalink.dev/releases" # optional, defaults to the Lavalink release repository
# defaultPluginSnapshotRepository: "https://maven.lavalink.dev/snapshots" # optional, defaults to the Lavalink snapshot repository
server:
password: "youshallnotpass"
sources:
# The default Youtube source is now deprecated and won't receive further updates. Please use https://github.com/lavalink-devs/youtube-source#plugin instead.
youtube: false
bandcamp: true
soundcloud: true
twitch: true
vimeo: true
nico: true
http: true # warning: keeping HTTP enabled without a proxy configured could expose your server's IP address.
local: false
filters: # All filters are enabled by default
volume: true
equalizer: true
karaoke: true
timescale: true
tremolo: true
vibrato: true
distortion: true
rotation: true
channelMix: true
lowPass: true
bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration <= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce pauses.
frameBufferDurationMs: 5000 # How many milliseconds of audio to keep buffered
opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.
resamplingQuality: LOW # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.
trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.
useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.
youtubePlaylistLoadLimit: 6 # Number of pages at 100 each
playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds
youtubeSearchEnabled: true
soundcloudSearchEnabled: true
gc-warnings: true
#ratelimit:
#ipBlocks: ["1.0.0.0/8", "..."] # list of ip blocks
#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
#youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.
#email: "" # Email of Google account
#password: "" # Password of Google account
#httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked
#proxyHost: "localhost" # Hostname of the proxy, (ip or domain)
#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
#proxyPassword: "" # Password for basic authentication
metrics:
prometheus:
enabled: false
endpoint: /metrics
sentry:
dsn: ""
environment: ""
# tags:
# some_key: some_value
# another_key: another_value
logging:
file:
path: ./logs/
level:
root: INFO
lavalink: INFO
request:
enabled: true
includeClientInfo: true
includeHeaders: false
includeQueryString: true
includePayload: true
maxPayloadLength: 10000
logback:
rollingpolicy:
max-file-size: 1GB
max-history: 30
-
Run Lavalink:
- Open a terminal in the directory containing Lavalink
.jar
and run:
java -jar Lavalink.jar
- Lavalink should now be running on port
2333
(or your configured port).
- Open a terminal in the directory containing Lavalink
-
Edit
config.json
:- Open your
config.json
file and configure the Lavalink node settings. Use the details you set up inapplication.yml
:
{ "clientId": "", "prefix": "!", "messages": { "COOLDOWN_MESSAGE": "You are on <duration> cooldown!" }, "ownerID": [""], "adminId": [""], "uri": "", "nodes": [ { "host": "localhost", // Lavalink host (e.g., 'localhost' if running locally) "port": 2333, // Lavalink port "password": "youshouldpass", // Lavalink password "identifier": "LavalinkNode1", // A unique name for this node "retryAmount": 1000, "retrydelay": 10000, "resumeStatus": true, "resumeTimeout": 1000, "secure": false // Set to true if using SSL } ] }
- Open your
- Start your bot and check the logs for successful connection messages from Lavalink. Ensure that no errors are logged related to node connection issues.
-
Cannot Connect to Lavalink:
- Verify Lavalink is running and accessible at the configured host and port.
- Check if the
password
and other settings inconfig.json
match those inapplication.yml
.
-
Bot Not Playing Music:
- Ensure your bot is connected to a voice channel and Lavalink is properly configured.
-
Lavalink Logs:
- Review
lavalink.log
for detailed error messages or connection issues.
- Review
By following these instructions, you should be able to successfully connect and configure Lavalink for your Discord bot.
-
- Introduction and Overview
- Features and Capabilities
-
Installing and Configuring the Bot
- Prerequisites
- Installation Steps
- Configuration Guide
-
.env
Configuration -
config.json
Configuration
-
-
- Setting Up MongoDB
- Connecting MongoDB via Driver URL
- Configuring MongoDB in Your Bot
-
- Downloading and Setting Up Lavalink
- Configuring Lavalink in Your Bot
- Connecting the Bot to Lavalink
- Troubleshooting Lavalink Connections
-
- Common Issues and Solutions
- How to Enable Message Content Intent
- Bot Permissions and Command Issues
- Music Playback and Node Configuration
- Admin Management and Token Changes