Hosting: VPS

Virtual Private Server, atau biasa dikenal dengan VPS, adalah sebuah perangkat virtual yang berjalan di cloud, dimana pemiliknya memiliki kendali penuh atas perangkat tersebut.

Di panduan kali ini, kamu akan mempelajari bagaimana menjalankan bot di sebuah VPS, menjaga bot agar tetap online 24/7, serta memulai bot secara otomatis ketika VPS kamu mengalami crash.

systemd

systemd adalah sebuah service manager yang sudah terinstal secara bawaan di berbagai distribusi Linux, khususnya yang berbasis Debian.

Menyiapkan Command Start

  1. Memperoleh path lengkap runtime:
# Jika menggunakan Deno
which deno

# Jika menggunakan Node.js
which node
  1. Kamu harus tahu path lengkap file entry-nya juga.

  2. Command start kamu kurang lebih terlihat seperti ini:

<path_lengkap_runtime> <opsi> <path_lengkap_file_entry>

# Contoh untuk Deno:
# /home/user/.deno/bin/deno --allow-all /home/user/bot1/mod.ts

# Contoh untuk Node.js:
# /home/user/.nvm/versions/node/v16.9.1/bin/node /home/user/bot1/index.js

Membuat Service

  1. Arahkan pointer ke direktori service-nya:
cd /etc/systemd/system
  1. Buka file service baru kamu di sebuah text editor:
nano bot1.service
  1. Isi dengan konten berikut:
[Service]
ExecStart=<start_command>
Restart=on-failure

[Install]
WantedBy=multi-user.target

Ganti <start_command> dengan command yang telah kamu buat di atas tadi.

  1. Mulai ulang systemd setiap kali service mengalami perubahan:
systemctl daemon-reload

Mengelola Service

Start

systemctl start <service_name>

Ganti <service_name> dengan nama file service-nya. Contoh: systemctl start bot1

Jalankan Setiap Kali Melakukan Boot

systemctl enable <service_name>

Cek Log

systemctl status <service_name>

Restart

systemctl restart <service_name>

Stop

systemctl stop <service_name>

Jangan Dijalankan ketika Boot Dilakukan

systemctl disable <service_name>

PM2 (Khusus Node.js)

PM2 adalah sebuah daemon process manager untuk Node.js yang berfungsi untuk menjaga aplikasi kamu online 24/7.

Pemasangan

npm install pm2@latest -g

# Jika menggunakan Yarn
yarn global add pm2

Mengatur Aplikasi

Start

pm2 start --name <app_name> <entry_point>

<app_name> diisi dengan nama id dari aplikasimu, misalnya: bot1. <entry_point> diisi dengan path index file kamu (file yang menjalankan bot kamu).

Restart

Dengan melakukan restart, aplikasimu akan dihentikan, lalu dimulai ulang kembali.

pm2 restart <app_name>

Reload

Dengan melakukan reload, kamu akan mengganti proses aplikasi yang sedang berjalan dengan yang baru. Aksi ini tidak menghasilkan waktu downtime sedikitpun (0 detik waktu downtime). Langkah ini direkomendasikan untuk aplikasi stateless.

pm2 reload <app_name>

Stop

# Satu aplikasi
pm2 stop <app_name>

# Semua aplikasi
pm2 stop all

Delete

Dengan melakukan delete, kamu akan menghentikan aplikasi lalu menghapus semua log beserta metric-nya.

pm2 del <app_name>

Informasi Lanjutan

Untuk informasi lebih lanjut, silahkan lihat https://pm2.keymetrics.io/docsopen in new window.