Deploy Bot Telegram di VPS Debian 13

Mengembangkan bot Telegram di komputer lokal memang mudah, tapi untuk produksi dibutuhkan server yang selalu aktif 24/7. VPS Debian 13 adalah pilihan ideal untuk men-deploy bot Telegram karena murah, stabil, dan mudah dikonfigurasi. Artikel ini membahas cara deploy bot Telegram di VPS Debian 13 secara lengkap.

Pengertian Deploy Bot Telegram di VPS

Deploy bot Telegram ke VPS adalah memindahkan bot dari komputer lokal ke server virtual (VPS) yang berjalan di data center. VPS selalu menyala, memiliki IP statis, dan tidak memerlukan komputer pribadi untuk berjalan.

Mengapa VPS untuk Bot Telegram?

  • Uptime 24/7: Bot tidak pernah mati, bahkan saat komputer offline
  • IP Statis: Telegram membutuhkan IP yang konsisten untuk webhook
  • Port Terbuka: Mudah membuka port untuk webhook tanpa NAT
  • Keamanan: VPS bisa diamankan dengan firewall dan SSH key
  • Skalabilitas: VPS bisa ditingkatkan sesuai kebutuhan
  • Biaya Rendah: VPS mulai dari Rp 30.000/bulan

Alat yang Dibutuhkan

  • Akun VPS Debian 13 (DigitalOcean, Vultr, AWS, dll.)
  • Aplikasi Telegram dan BotFather
  • SSH client (PuTTY, Terminal, atau Git Bash)
  • Akses SSH key ke VPS

Langkah 1: Setup VPS Debian 13

1. Login ke VPS

bash
ssh root@SERVER_IP

2. Update Sistem

bash
apt update && apt upgrade -y

3. Buat User Non-Root

bash
adduser botuser
usermod -aG sudo botuser

4. Setup SSH Key

bash
# Di komputer lokal, copy public key ke VPS
ssh-copy-id botuser@SERVER_IP

5. Amankan SSH

bash
nano /etc/ssh/sshd_config
ini
PasswordAuthentication no
PermitRootLogin no
Port 2222
bash
systemctl restart sshd

6. Setup Firewall

bash
apt install ufw -y
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Langkah 2: Instal Node.js

bash
# Install NodeSource
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

# Verifikasi
node -v
npm -v

Langkah 3: Clone dan Setup Bot

1. Clone Repository

bash
su - botuser
mkdir ~/bots
cd ~/bots

# Clone dari GitHub atau upload file bot
git clone https://github.com/user/bot-telegram.git
cd bot-telegram

2. Install Dependensi

bash
npm install

3. Konfigurasi Environment

bash
cp .env.example .env
nano .env
env
BOT_TOKEN=TOKEN_DARI_BOTFATHER
CHAT_ID=123456789
NODE_ENV=production
PORT=3000

Langkah 4: Jalankan Bot dengan PM2

1. Install PM2

bash
npm install -g pm2

2. Jalankan Bot

bash
# Jalankan bot
pm2 start index.js --name "my-bot" --env production

# Buat startup otomatis
pm2 startup
pm2 save

# Cek status
pm2 status my-bot

3. Perintah PM2 Dasar

bash
# Restart bot
pm2 restart my-bot

# Lihat log
pm2 logs my-bot
pm2 logs my-bot --lines 100

# Stop bot
pm2 stop my-bot

# Delete bot
pm2 delete my-bot

# Monitor real-time
pm2 monit

Langkah 5: Setup Systemd (Alternatif PM2)

Jika lebih suka systemd daripada PM2:

bash
nano /etc/systemd/system/telegram-bot.service
ini
[Unit]
Description=Telegram Bot Service
After=network.target

[Service]
Type=simple
User=botuser
WorkingDirectory=/home/botuser/bots/bot-telegram
EnvironmentFile=/home/botuser/bots/bot-telegram/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=telegram-bot

[Install]
WantedBy=multi-user.target
bash
systemctl daemon-reload
systemctl enable telegram-bot
systemctl start telegram-bot
systemctl status telegram-bot

Langkah 6: Setup Webhook (Opsional)

Jika bot menggunakan webhook, setup Caddy reverse proxy:

bash
apt install caddy -y
bash
nano /etc/caddy/Caddyfile
kode
bot.masyarakat.id {
    tls [email protected]
    reverse_proxy localhost:3000
}
bash
systemctl restart caddy

Setel webhook Telegram:

bash
curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" \
  -d "url=https://bot.masyarakat.id/bot"

Langkah 7: Backup Otomatis

Buat script backup untuk code bot:

bash
nano /usr/local/bin/backup-bot.sh
bash
#!/bin/bash
BACKUP_DIR="/backup/bot"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
cp -r /home/botuser/bots/bot-telegram $BACKUP_DIR/bot-${DATE}
find $BACKUP_DIR -name "bot-*" -mtime +7 -exec rm -rf {} \;
echo "$(date): Backup bot selesai" >> /var/log/bot-backup.log
bash
chmod +x /usr/local/bin/backup-bot.sh
crontab -e
# Tambahkan:
0 3 * * * /usr/local/bin/backup-bot.sh

Langkah 8: Monitoring Bot

1. Cek Status via PM2

bash
pm2 status
pm2 logs my-bot --lines 50

2. Cek via Systemd

bash
systemctl status telegram-bot
journalctl -u telegram-bot -f

3. Monitoring Otomatis

bash
# Script cek sederhana
nano /usr/local/bin/check-bot.sh
bash
#!/bin/bash
if ! pgrep -f "index.js" > /dev/null; then
    pm2 restart my-bot
    echo "$(date): Bot direstart otomatis" >> /var/log/bot-monitor.log
fi
bash
crontab -e
# * * * * * /usr/local/bin/check-bot.sh

Troubleshooting

1. Bot Tidak Mulai

bash
# Cek log
pm2 logs my-bot
# Atau
journalctl -u telegram-bot -e
# Coba jalankan manual
cd ~/bots/bot-telegram && node index.js

2. Bot Crash Berulang

bash
# Cek memori
free -h
# Cek disk
df -h
# Restart
pm2 restart my-bot

3. Webhook Tidak Bekerja

bash
# Pastikan Caddy jalan
systemctl status caddy
# Cek port
ss -tlnp | grep 443
# Cek webhook
curl https://bot.masyarakat.id/bot

4. Bot Lambat

bash
# Cek resource
top
htop
# Batasi resource
pm2 start index.js --name "my-bot" --max-memory-restart 256M

Kesimpulan

Mendeploy bot Telegram di VPS Debian 13 memberikan stabilitas, keamanan, dan uptime yang lebih baik dibanding menjalankan bot di komputer lokal. Dengan PM2 atau systemd sebagai service manager, bot akan otomatis restart jika crash dan berjalan 24/7.

Kunci utama:

  • Selalu gunakan user non-root untuk menjalankan bot
  • Gunakan SSH key dan nonaktifkan password authentication
  • Deploy dengan PM2 atau systemd untuk auto-restart
  • Setup backup otomatis untuk code bot
  • Gunakan reverse proxy (Caddy/Nginx) untuk webhook
  • Monitor bot secara rutin
  • Amankan VPS dengan UFW dan update berkala
Catatan penting: Jangan pernah menjalankan bot sebagai root di VPS. Jika bot diretas, attacker mendapatkan akses root ke server Anda. Selalu buat user khusus dengan permission seminimal mungkin. Jangan menyimpan bot token di repository Git publik — gunakan .env dan file environment yang hanya bisa dibaca oleh user bot.
Ingat: VPS yang menjalankan bot Telegram harus dijaga keamanannya seperti halnya server produksi lainnya. Update sistem rutin, firewall aktif, dan monitoring berkala adalah kewajiban Anda sebagai administrator. Bot yang aman adalah bot yang berjalan di server yang aman.
Dipublikasikan untuk membantu para pengembang bot Telegram dalam mendeploy bot mereka di VPS Debian 13 secara profesional.

Artikel Terkait