Configuration

October 21, 2020 ยท View on GitHub

Andesite can be configured from 2 sources, from highest to lowest priority

  • A HOCON file named application.conf in the application working directory
  • System environment variables (doesn't support arrays)

All andesite keys must be prefixed with andesite.. When using a HOCON file, they can be put inside a block named andesite. Plugins may choose to use a different prefix.

An example config can be found here

Settings

keytypedescriptiondefault
extra-pluginsstring[]array of paths to load plugins from, besides the default path[]
passwordstringpassword to use for http/websocket access. No filtering is done if nullnull
debug-passwordstringpassword to use for debug routes. If missing or null, the regular password is used instead.null
log-levelstringlowest level to logINFO
auto-ytsearchbooleanwhether or not andesite should automatically prepend ytsearch: to identifiers that don't match known prefixes when loading trackstrue
audio-handlerstringaudio handler implementation to use. By default, magma and koe are supported. Plugins may add more implementations, in which case the fully qualified class name must be usedkoe
node.regionstringregion of the node"unknown"
node.idstringid of the node"unknown"
transport.http.bind-addressstringaddress to bind the http/websocket server. 0.0.0.0 means all network interfaces on the machine0.0.0.0
transport.http.portintegerport to run the http/websocket server5000
transport.http.restbooleanwhether or not to enable the http apitrue
transport.http.wsbooleanwhether or not to enable the websocket apitrue
prometheus.enabledbooleanwhether or not to enable prometheus metricsfalse
prometheus.pathstringpath to collect prometheus metrics, uses the http port/metrics
prometheus.update-perioddurationinterval for collecting periodic stats with JFR3s
sentry.enabledbooleanwhether or not to enable sentryfalse
sentry.dsnstringsentry dsn to report errorsnull
sentry.tagsstringcomma separated list of key:value pairs for sentry tagsnull
sentry.log-levelstringlowest level to send to sentryWARN
lavaplayer.frame-buffer-durationintegerduration of the frame buffer, in milliseconds. changes in filters/volume take at least this time to start applying5000
lavaplayer.non-allocatingbooleanwhether or not to use the non allocating frame buffertrue
lavaplayer.youtube.max-playlist-page-countintmaximum number of pages loaded from one playlist. There are 100 tracks per page.6
lavaplayer.youtube.rotation.ipsstring[]IP blocks to use for rotation. IP rotation is disabled if empty[]
lavaplayer.youtube.rotation.excluded-ipsstring[]IP addresses to exclude from rotation[]
lavaplayer.youtube.rotation.strategystringstrategy to use for rotation. Valid options are RotateOnBan, LoadBalance, NanoSwitch, RotatingNanoSwitchRotateOnBan
lavaplayer.youtube.rotation.search-triggers-failbooleanwhether a search 429 should trigger marking the IP as failingtrue
lavaplayer.youtube.rotation.retry-limitint-1 = use default lavaplayer value, 0 = infinity, >0 = retry will happen this numbers times-1
source.bandcampbooleanwhether or not to enable playing and resolving tracks from bandcamptrue
source.beambooleanwhether or not to enable playing and resolving tracks from beamtrue
source.httpbooleanwhether or not to enable playing and resolving tracks from http urlsfalse
source.localbooleanwhether or not to enable playing and resolving tracks from local filesfalse
source.soundcloudbooleanwhether or not to enable playing and resolving tracks from soundcloudtrue
source.twitchbooleanwhether or not to enable playing and resolving tracks from twitchtrue
source.vimeobooleanwhether or not to enable playing and resolving tracks from vimeotrue
source.youtubebooleanwhether or not to enable playing and resolving tracks from youtubetrue
lavalink.ws-pathstringroute to run the lavalink websocket on./
magma.send-system.type*stringtype of send system to use. Valid options are nio, jda and nasnas on supported environments, nio otherwise
magma.send-system.nas-bufferintegerbuffer duration, in milliseconds, to keep in native code. Ignored if type isn't nas400
koe.gatewaystringversion of the gateway to use. Valid options are v4 and v5v4
koe.transportstringtransport to use. Valid options are epoll, kqueue, nio and defaultfirst one available of epoll, kqueue, nio (always available)
koe.byte-buf-allocatorstringByteBufAllocator to use. Valid options are default (aka pooled), netty-default, unpoolednetty-default
koe.high-packet-prioritybooleanwhether or not sent packets should be marked as high prioritytrue
koe.udp-queue.enabled*booleanwhether or not the native UDP queue should be enabledtrue if udp queue is available, false otherwise
koe.udp-queue.bufferintegerbuffer duration, in milliseconds, to keep in native code400
koe.udp-queue.threadsintegernumber of threads for the native sending pool. If negative, the value is set to the number of CPU cores available-1

* When running on architectures not supported by jda-nas, such as ARM or Darwin devices, you must use either jda or nio for the send system. For production, nio is preferred as it doesn't spawn a thread per voice connection. The default is changed to nio when running on unsupported architectures. Note that lavaplayer has no arm natives, so you may encounter errors on some tracks. Most youtube tracks won't have issues, but YMMV.