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
- Memperoleh path lengkap runtime:
# Jika menggunakan Deno
which deno
# Jika menggunakan Node.js
which node
Kamu harus tahu path lengkap file entry-nya juga.
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
- Arahkan pointer ke direktori service-nya:
cd /etc/systemd/system
- Buka file service baru kamu di sebuah text editor:
nano bot1.service
- Isi dengan konten berikut:
[Service]
ExecStart=<start_command>
Restart=on-failure
[Install]
WantedBy=multi-user.target
Ganti
<start
dengan command yang telah kamu buat di atas tadi._command>
- Mulai ulang systemd setiap kali service mengalami perubahan:
systemctl daemon-reload
Mengelola Service
Start
systemctl start <service_name>
Ganti
<service
dengan nama file service-nya. Contoh:_name> 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
diisi dengan nama id dari aplikasimu, misalnya:_name> bot1
.<entry
diisi dengan path index file kamu (file yang menjalankan bot kamu)._point>
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://