Prerequiresites
Sebelum mengikuti tutorial pada artikel ini, pastikan Anda memenuhi Syarat berikut untuk memastikan tutorial diikuti dengan lancar
Goals
Setelah mengikuti artikel ini. Anda diharapkan berhasil mempelajari cara:
- Melakukan instalasi Java jdk 17
- Melakukan Instalasi Lavalink
- Melakukan Port Forwading menuju NAT VPS
- Mengoperasikan terminal melalui SSH
Login Ke Client Area
Untuk dapat mengakses NAT VPS, silakan masuk terlebih dahulu ke Client Area NAT VPS. Anda dapat merujuk pada petunjuk login ke NAT VPS melalui panduan ini Cara Membeli dan Login NAT VPS. Setelah berhasil login, Anda akan melihat tampilan berikut di Client Area NAT VPS:
Untuk mendapatkan kredensial Anda di Client Area, harap cek email yang telah diterima setelah menyelesaikan pemesanan NAT VPS. Cek Informasi kredensial yang telah dikirimkan melibatkan username, password, dan tautan login ke Client Area, Lalu kurang lebih akan terlihat seperti berikut:
Cara Install SpringBoot Lavalink pada Linux Ubuntu NAT VPS
Masuk Terminal NAT VPS melalui SSH
Gunakan aplikasi SSH client seperti Terminal, Termius, Termux, Putty, dan sejenisnya untuk terhubung ke terminal NAT VPS. Dalam kasus ini, kami menggunakan NAT SSH dengan PORT ssh yang telah kami lakukan domain forwading menjadi 24448:
ssh [email protected] -p 24448
Selanjutnya, masukkan password. Jika kredensial yang dimasukkan benar, maka Anda akan melihat pesan selamat datang pada shell terminal.
Update Dependesi Linux
Pastikan bahwa dependensi Linux Anda sudah diperbarui ke versi terbaru. Jalankan kode berikut untuk melakukan pembaruan dependensi dan instalasi beberapa aplikasi yang diperlukan pada Ubuntu NAT VPS:
sudo apt update && sudo apt install nano screen curl wget htop gnupg ca-certificates -y
Tampilan di bawah ini adalah preview pada saat proses pembaruan pada Ubuntu NAT VPS.
Instalasi Azul JavaJDK 17
Selanjutnya, Lakukan Instalasi Java. Versi Java yang akan digunakan adalah java-jdk-17 dengan versi java adalah Azul. Pada Langkah Instalasi Ini menggunakan apt install, namun diperlukan untuk mengimport GPG public key dan linux address repository azul dahulu. Masukkan Script berikut untuk melakukan Instalasi:
curl -s | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg echo "deb [signed-by=/usr/share/keyrings/azul.gpg] stable main" | sudo tee /etc/apt/sources.list.d/zulu.list
Setelah itu Update kembali dependesi Linux
sudo apt update
Install Zulu-java-jdk17
sudo apt install zulu17-jdk -y
Untuk memastikan java sudah terinstall, Anda dapat gunakan command java -version
untuk melihat versi java
Instalasi Lavalink
Sebelum Masuk Instalasi, Silakan buat folder dengan fungsi sebagai workspace untuk Lavalink. Pada kasus ini Saya membuat folder dengan nama lavalink menggunakan mkdir:
mkdir lavalink
Lalu masuk ke folder lavalink dengan command cd
cd lavalink
Buat sesi terminal baru dengan aplikasi screen. Fungsi disini untuk menghindari aplikasi berhenti saat sudah keluar dari sesi. Gunakan command berikut untuk membuat sesi screen dengan nama sesi lavalink
screen -S lavalink
Saatnya masuk ke Instalasi Lavalink. Pada Artikel kali ini Kita akan menggunakan Lavalink dengan Latest versi 3.x . Anda dapat kunjungi Link releases pada github lavalink
Link Releases:
Atau anda bisa download langsung java file pada releases dengan curl atau wget. untuk contoh kami gunakan wget sebagai downloadernya. File dengan nama Lavalink.jar terdownload.
wget
Selanjutnya buat file bernama application.yml. pastikan nama file adalah application.yml. File ini harus ditaruh satu folder dengan Lavalink.jar
, dikarenakan application.yml akan digunakan sebagai konfigurasi untuk Lavalink.jar
touch application.yml # buat file untuk konfigurasi lavalink.jar
Selanjutnya, Copy Kode berikut pada file application.yml. Anda dapat gunakan nano text editor untuk melakukan edit
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: " # 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: " # optional, defaults to the Lavalink release repository # defaultPluginSnapshotRepository: " # optional, defaults to the Lavalink snapshot repository server: password: "youshallnotpass" sources: youtube: true bandcamp: true soundcloud: true twitch: true vimeo: true http: true 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
Atau Anda bisa cek link berikut untuk sample dari application.yml
Beberapa value penting yang bisa dijadikan perhatian dalam application.yml ini:
password: "youshallnotpass"
digunakan sebagai password untuk autentikasi lavalink. Ubah Password “youshallnotpass” ini agar lebih aman. Field selanjutnya adalah:
port: 2333 address: 0.0.0.0 # 0.0.0.0:2333
Port yang digunakan adalah Port 2333 dan listen address 0.0.0.0
. address ini digunakan untuk melakukan expos port sehingga client bisa melakukan akses yang di inginkan port 2333. Save application.yml. Untuk Struktur folder lavalink
kurang lebih akan seperti berikut:
Jalankan Program Lavalink dengan command berikut:
java -jar Lavalink.jar
Tunggu proses Booting aplikasi selesai dilakukan
Lavalink sudah siap berjalan apabila port sebuah pesan “Lavalink is ready to accept connections” muncul. Masih ada satu Langkah lagi, yaitu Melakukan Port forwading ke port 2333.
Melakukan Port / Domain Forwading menuju Lavalink Ubuntu NAT VPS
Pada langkah ini adalah melakukan Domain Forwading TCP ke port 2333. Anda bisa ikuti panduan Penjelasan Domain Forwarding di NAT VPS dan cara melakukannya. Pada konfig ini Saya melakukan Domain forwading dari port 49392 dan diarahkan ke port 2333:
Kemudian lakukan Add dan Silakan Akses port 49392 melalui IP Address NAT Anda.
Sebuah Blank Page akan dimunculkan. jangan khawatir. hal ini menandakan Aplikasi lavalink sudah berjalan. Namun untuk menggunakan Lavalink, Anda perlu menggunakan Lavalink Client. kunjungi Link Dokumentasi Lavalink untuk melihat beberapa contoh lavalink client https://lavalink.dev/clients.html.
Penutup
Begitulah Cara Install SpringBoot Lavalink pada Linux Ubuntu NAT VPS. Jika ada pertanyaan atau kesulitan, silahkan bertanya di grup Telegram @IPv6Indonesia. Kami sangat mengapresiasi Feedback dari Pembaca.