Lavalink

Standalone audio sending node based on Lavaplayer.
Alternatives To Lavalink
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Mall66,590
3 days ago35apache-2.0Java
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Spring Boot Examples28,980
6 days ago7Java
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。
Generator Jhipster20,6204,6661867 hours ago267September 02, 2022289apache-2.0TypeScript
JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
Piggymetrics12,361
8 days ago14mitJava
Microservice Architecture with Spring Boot, Spring Cloud and Docker
Mall Learning12,045
15 days ago25apache-2.0Java
mall学习教程,架构、业务、技术要点全方位解析。mall项目(50k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。
Mall Swarm10,317
5 days ago43apache-2.0Java
mall-swarm是一套微服务商城系统,采用了 Spring Cloud 2021 & Alibaba、Spring Boot 2.7、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。
Pig4,728
9 days ago272apache-2.0Java
↥ ↥ ↥ 点击关注更新,基于 Spring Cloud 2021 、Spring Boot 2.7、 OAuth2 的 RBAC 权限管理系统
Favorites Web4,609
9 months ago7HTML
云收藏 Spring Boot 2.X 开源项目
Blog_demos3,697
2 days ago169apache-2.0Java
CSDN博客专家程序员欣宸的github,这里有六百多篇原创文章的详细分类和汇总,以及对应的源码,内容涉及Java、Docker、Kubernetes、DevOPS等方面
Microservices Demo3,385
a month ago109apache-2.0Python
Deployment scripts & config for Sock Shop
Alternatives To Lavalink
Select To Compare


Alternative Project Comparisons
Readme

Lavalink

Lavalink logo

A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.

Being used in production by FredBoat, Dyno, LewdBot, and more.

A basic example bot is available.

Lavalink Guild

Table of Contents

Features

  • Powered by Lavaplayer
  • Minimal CPU/memory footprint
  • Twitch/YouTube stream support
  • Event system
  • Seeking
  • Volume control
  • REST API for resolving Lavaplayer tracks, controlling players, and more
  • Statistics (good for load balancing)
  • Basic authentication
  • Prometheus metrics
  • Docker images
  • Plugin support (beta)

Requirements

  • Java 11* LTS or newer required.
  • OpenJDK or Zulu running on Linux AMD64 is officially supported.

Support for Darwin (Mac), Windows AMD64, and Linux ARM (Raspberry Pi) is provided on a best-effort basis. This is dependent on Lavaplayer's native libraries.

Lavaplayer currently supports following architectures:

Darwin (M1 & Intel), Linux aarch32, Linux aarch64, Linux ARMv7+ 32/64, Linux ARMHF(v6) 32, Linux i386 32, Linux x86 64, Windows i386 32 and Windows x86 64

JDA-NAS(Native Audio Buffer) & the Timescale filter are currently not supported on following architectures:

Linux ARMHF(v6) 32 and Linux aarch32

Support for other JVMs is also best-effort. Periodic CPU utilization stats are prone not to work everywhere.

*Java 11 appears to have some issues with Discord's TLS 1.3. Java 14 has other undiagnosed HTTPS problems. Use Java 13. Docker images have been updated. See #258, #260

Changelog

Please see here

Versioning policy

Lavalink follows Semantic Versioning.

Given a version number MAJOR.MINOR.PATCH, the following rules apply:

MAJOR breaking API changes
MINOR new backwards compatible features
PATCH backwards compatible bug fixes

Additional labels for release candidates are available as extensions to the MAJOR.MINOR.PATCH-rcNUMBER(3.6.0-rc1) format.

Client libraries:

Client Platform Compatible With REST API Support Additional Information
Lavalink-Client Java JDA/Any
Lavalink.kt Kotlin JDA/Kord/Any Kotlin Coroutines
Lavalink.py Python Any
lavasnek_rs Python Any* *asyncio-based libraries only
lavaplay.py Python Any* *asyncio-based libraries only
Mafic Python discord.py V2/nextcord/disnake/py-cord
Wavelink Python discord.py V2
Pomice Python discord.py V2
discord-ext-lava Python discord.py
Lavapy Python discord.py Unmaintained
Magma Python discord.py Unmaintained
interactions-lavalink Python interactions.py
Lavadeno Deno Any
LavaJS Node.js Any Unmaintained
LavaClient Node.js Any
Lavacoffee Node.js Any Unmaintained
Lavacord Node.js Any
FastLink Node.js Any
Moonlink.js Node.js Any
@skyra/audio Node.js discord.js Archived
Poru Node.js Any
Shoukaku Node.js Any
Lavaudio Node.js Any
Gorilink Node.js discord.js Archived/Unmaintained
SandySounds Node.js Any Unmaintained
eris-lavalink Node.js eris Unmaintained
Victoria .NET Discord.Net
Lavalink4NET .NET Discord.Net/DSharpPlus
DSharpPlus.Lavalink .NET DSharpPlus
Lavalink.NET .NET Any Unmaintained
SharpLink .NET Discord.Net Unmaintained
DisCatSharp.Lavalink .NET DisCatSharp
Nomia .NET DSharpPlus
DisGoLink Go Any
waterlink Go Any
gavalink Go Any Unmaintained
Lavalink-rs Rust Any* *tokio-based libraries only
Coglink C Concord

Or alternatively, you can create your own client library, following the implementation documentation. Any client libraries marked with Unmaintained have been marked as such as their repositories have not received any commits for at least 1 year since time of checking, however they are listed as they may still support Lavalink, and/or have not needed maintenance, however keep in mind that compatibility and full feature support is not guaranteed.

Server configuration

Config

The server configuration is done in application.yml. You can find an example configuration here.

Alternatively, you can also use environment variables to configure the server. The environment variables are named the same as the keys in the application.yml file, but in uppercase and with . replaced with _. For example, server.port becomes SERVER_PORT. For arrays, the index is appended to the key, starting at 0. For example, LAVALINK_PLUGINS_0_DEPENDENCY refers to the dependency key of the first plugin.

List of all env keys
SERVER_PORT
SERVER_ADDRESS

LAVALINK_PLUGINS_0_DEPENDENCY
LAVALINK_PLUGINS_0_REPOSITORY

LAVALINK_PLUGINS_1_DEPENDENCY
LAVALINK_PLUGINS_1_REPOSITORY

LAVALINK_SERVER_PASSWORD
LAVALINK_SERVER_SOURCES_YOUTUBE
LAVALINK_SERVER_SOURCES_BANDCAMP
LAVALINK_SERVER_SOURCES_SOUNDCLOUD
LAVALINK_SERVER_SOURCES_TWITCH
LAVALINK_SERVER_SOURCES_VIMEO
LAVALINK_SERVER_SOURCES_HTTP
LAVALINK_SERVER_SOURCES_LOCAL

LAVALINK_SERVER_FILTERS_VOLUME
LAVALINK_SERVER_FILTERS_EQUALIZER
LAVALINK_SERVER_FILTERS_KARAOKE
LAVALINK_SERVER_FILTERS_TIMESCALE
LAVALINK_SERVER_FILTERS_TREMOLO
LAVALINK_SERVER_FILTERS_VIBRATO
LAVALINK_SERVER_FILTERS_DISTORTION
LAVALINK_SERVER_FILTERS_ROTATION
LAVALINK_SERVER_FILTERS_CHANNEL_MIX
LAVALINK_SERVER_FILTERS_LOW_PASS

LAVALINK_SERVER_BUFFER_DURATION_MS
LAVALINK_SERVER_FRAME_BUFFER_DURATION_MS
LAVALINK_SERVER_OPUS_ENCODING_QUALITY
LAVALINK_SERVER_RESAMPLING_QUALITY
LAVALINK_SERVER_TRACK_STUCK_THRESHOLD_MS
LAVALINK_SERVER_USE_SEEK_GHOSTING

LAVALINK_SERVER_PLAYER_UPDATE_INTERVAL
LAVALINK_SERVER_YOUTUBE_SEARCH_ENABLED
LAVALINK_SERVER_SOUNDCLOUD_SEARCH_ENABLED

LAVALINK_SERVER_GC_WARNINGS

LAVALINK_SERVER_RATELIMIT_IP_BLOCKS
LAVALINK_SERVER_RATELIMIT_EXCLUDE_IPS
LAVALINK_SERVER_RATELIMIT_STRATEGY
LAVALINK_SERVER_RATELIMIT_SEARCH_TRIGGERS_FAIK
LAVALINK_SERVER_RATELIMIT_RETRY_LIMIT

LAVALINK_SERVER_YOUTUBE_CONFIG_EMAIL
LAVALINK_SERVER_YOUTUBE_CONFIG_PASSWORD

LAVALINK_SERVER_HTTP_CONFIG_PROXY_HOST
LAVALINK_SERVER_HTTP_CONFIG_PROXY_PORT
LAVALINK_SERVER_HTTP_CONFIG_PROXY_USER
LAVALINK_SERVER_HTTP_CONFIG_PROXY_PASSWORD

METRICS_PROMETHEUS_ENABLED
METRICS_PROMETHEUS_ENDPOINT

SENTRY_DSN
SENTRY_ENVIRONMENT
SENTRY_TAGS_SOME_KEY
SENTRY_TAGS_ANOTHER_KEY

LOGGING_FILE_PATH
LOGGING_LEVEL_ROOT
LOGGING_LEVEL_LAVALINK

LOGGING_REQUEST_ENABLED
LOGGING_REQUEST_INCLUDE_CLIENT_INFO
LOGGING_REQUEST_INCLUDE_HEADERS
LOGGING_REQUEST_INCLUDE_QUERY_STRING
LOGGING_REQUEST_INCLUDE_PAYLOAD
LOGGING_REQUEST_MAX_PAYLOAD_LENGTH

LOGGING_LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE
LOGGING_LOGBACK_ROLLINGPOLICY_MAX_HISTORY

Binary

Download binaries from the Download Server, GitHub releases (specific versions prior to v3.5 can be found in the CI Server) or GitHub actions.

Put an application.yml file in your working directory. (Example here)

Run with java -jar Lavalink.jar from the same directory

Docker

Docker images can be found under packages with old builds prior to v3.7.4 being available on Docker Hub.


Install Docker & Docker Compose

Create a docker-compose.yml with the following content:

version: "3.8"

services:
    lavalink:
        image: ghcr.io/lavalink-devs/lavalink:3 # pin the image version to Lavalink v3
        container_name: lavalink
        restart: unless-stopped
        environment:
            - _JAVA_OPTIONS=-Xmx6G # set Java options here
            - SERVER_PORT=2333 # set lavalink server port
            - LAVALINK_SERVER_PASSWORD=youshallnotpass # set password for lavalink
        volumes:
            - ./application.yml:/opt/Lavalink/application.yml # mount application.yml from the same directory or use environment variables
            - ./plugins/:/opt/Lavalink/plugins/ # persist plugins between restarts, make sure to set the correct permissions (user: 322, group: 322)
        networks:
            - lavalink
        expose:
            - 2333 # lavalink exposes port 2333 to connect to for other containers (this is for documentation purposes only)
        ports:
            - 2333:2333 # you only need this if you want to make your lavalink accessible from outside of containers
networks:
    lavalink: # create a lavalink network you can add other containers to, to give them access to Lavalink
        name: lavalink

Run docker compose up -d. See Docker Compose Up

If your bot also runs in a docker container you can make that container join the lavalink network and use lavalink (service name) as the hostname to connect. See Docker Networking & Docker Compose Networking

Popular Docker Projects
Popular Spring Boot Projects
Popular Virtualization Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Docker
Spring Boot