Host a Lavalink-Server

There is an official Getting-started Guide from Lavalink, I recommend checking it out!

  1. Install Java 17 or higher. You can download it here.

    1. I recommend Java 20 or higher

  2. Download the latest Lavalink.jar from GitHub-Releases-Page. or directly via my download-lavalink-server script

  3. Now configure the Lavalink-Server via an application.yml file or env-variables. For that check out the configuration page to learn out how.

  4. Run Lavalink with java -jar Lavalink.jar.

    • To perma-host lavalink you can use multiple ways:

      1. pm2 (node process manager package)

      2. systemd (linux distro background process manager)

      3. screen (old)

  5. Now test if you can use the lavalink server:

curl -H "Authorization: yourverystrongpassword" http://localhost:2333/v4/info | json_pp

http://localhost:2333 is the url-domain of the lavalink server, aka on the same machine where it's hosted that's why localhost, and 2333 is the port. if you have a remote ip, you can use the ip / domain.

/v4/info is the request path, and -H "Authorization: yourverystrongpassword" is the Authorization header, aka password configured in lavalink server. That request-path returns all information of the lavalink-server which is same as player.node.info

| json_pp is a default linux package, to pretty-print the output (json) [optional]

Max Memory Limit

when you provide -Xmx4G for example, you tell java to allocate 4gigs of memory to that java-process, aka lavalink can't use more

Spotify, Deezer, Apple-Music, etc. etc.

There are Lavalink-Server Plugins, check out my example

Following BASH (Linux *.sh) Script, downloads the latest lavalink version, including pre-releases. It also deletes the old, pre-existing Lavalink.jar file, if available

updateLavalink.sh
# Delete old Lavalink.jar if available
if [[ -f "./Lavalink.jar" ]]
then
  rm Lavalink.jar
fi
# get the content of all releases
content=$(curl --silent https://api.github.com/repos/lavalink-devs/Lavalink/releases)
# get latest release (incl. pre-releases)
releaseName=$(jq -r 'map(select(.prerelease)) | first | .tag_name' <<< "${content}")
# download latest release
wget "https://github.com/lavalink-devs/Lavalink/releases/download/${releaseName}/Lavalink.jar" -O Lavalink.jar

Or just browse through the Releases Page or download the latest stable release

Last updated