NodeLink
NodeLink copied to clipboard
Performant LavaLink alternative written with Node.Js
NodeLink
Performant LavaLink replacement written in Node.js.
Features
- Lightweight
- Real-time audio processing
- Direct source access
- Anonymous by default
Dependencies
-
@performanc/pwsl-server
-
@performanc/voice
-
prism-media
-
opusscript
or@discordjs/opus
-
libsodium-wrappers
orsodium-native
ortweetnacl
-
ffmpeg
oravconv
orffmpeg-static
[!NOTE] For most sources FFmpeg isn't required. It is current required for timescale, seek and endTime filter. Required for
local
andhttp
sources.
Installation
1. Clone the repository
$ git clone https://github.com/PerformanC/NodeLink
$ cd NodeLink
2. Install the dependencies
$ npm i
[!NOTE] If you to use pure JavaScript, replace
sodium-native
withlibsodium-wrappers
. Keep in mind that pure JavaScript will offer a worse performance.
3. Run NodeLink
$ npm start
Using with Docker
For information on how to install NodeLink using Docker, see the NodeLink Docker guide.
Usage
NodeLink is compatible with most LavaLink clients, as it implements most of the LavaLink API. However, some clients may not be compatible with NodeLink, as it implements changes some behaviors and endpoints.
Client | Platform | v2 supported? | NodeLink Features? | NodeLink major version |
---|---|---|---|---|
Lavalink-Client | JVM | Yes | No | v1 and v2 |
Lavalink.kt | Kotlin | No | No | v1 |
DisGoLink | Go | Yes | No | v1 and v2 |
Lavalink.py | Python | Yes | No | v1 and v2 |
Mafic | Python | Yes | No | v1 and v2 |
Wavelink | Python | Yes | No | v1 and v2 |
Pomice | Python | Yes | No | v1 and v2 |
Hikari-ongaku | Python | Yes | No | v1 and v2 |
Moonlink.js | Typescript | Yes | Partial | v1 and v2 |
Magmastream | Typescript | No | No | v1 |
Lavacord | Typescript | Yes | No | v1 and v2 |
Shoukaku | Typescript | Yes | No | v1 and v2 |
Lavalink-Client | Typescript | No | No | v1 |
Rainlink | Typescript | Yes | Yes | v1 and v2 |
FastLink | Node.js | Yes | Yes | v1 and v2 |
Riffy | Node.js | Yes | No | v1 and v2 |
TsumiLink | Node.js | Yes | Yes | v1 and v2 |
DisCatSharp | .NET | Yes | No | v1 and v2 |
Lavalink4NET | .NET | Yes | No | v1 and v2 |
Nomia | .NET | Yes | No | v1 and v2 |
CogLink | C | Yes | No | v1 and v2 |
Lavalink-rs | Rust, Python | Yes | No | v1 and v2 |
nyxx_lavalink | Dart | No | No | v1 |
[!NOTE] The data is gotten from LavaLink documentation, updated with manual checks.
Documentation
NodeLink only documents the differences between LavaLink and NodeLink. For the rest of the documentation, please refer to LavaLink's documentation.
Troubleshoot
"Expected 200, received 403." error
In some regions like Europe, you may receive a 403 error when trying to connect to YouTube. The real reason is unknown, but The PerformanC team managed to create a proper workaround for this issue.
To fix this issue, you must login to your Google/YouTube account. The proccess of retrieving the neccessary information is explained in config.js file.
Support
Any question or issue related to NodeLink or other PerformanC projects can be can be made in PerformanC's Discord server.
For verified issues, please also create a GitHub issue for tracking the issue.
Contributing & Code of Conduct
NodeLink follows the PerformanC's contribution guidelines. It is necessary to follow the guidelines to contribute to NodeLink and other PerformanC projects.
License
NodeLink is licensed under BSD 2-Clause License. You can read more about it on Open Source Initiative.
- This project is considered as: standard compliant.