Kembali ke Panduan Deploy

Lanjutan — deploy dari HP pakai Telegram

Auto-deploy blog lewat bot Telegram

Setelah blog tayang di VPS, kamu bisa memperbaruinya cukup dengan mengirim pesan /deploy dari Telegram di HP — lalu bot akan membalas "Deploy berhasil". Kita juga akan mengatur agar setiap kali kamu push ke GitHub, server otomatis update sendiri dan mengabari kamu lewat Telegram. Ikuti dan cocokkan dengan gambar di tiap langkah.

Mode 1 — Manual

Ketik /deploy ke bot, server langsung update.

Mode 2 — Otomatis

Push ke GitHub → server update sendiri + notifikasi.

Prasyarat

Blog sudah jalan di VPS (lihat panduan utama).

1
Mulai di sini

Buat bot di BotFather

Di Telegram, cari kontak bernama @BotFather (ada centang biru). Buka chat-nya, ketik /newbot, lalu jawab dua pertanyaan: nama bot dan username bot (harus diakhiri kata bot). BotFather akan memberi kamu token — ini seperti kunci rahasia bot.

BotFather

bot

/newbot20:14
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Blog Deploy Bot20:14
Good. Now let's choose a username for your bot. It must end in `bot`.
blogdeploy_bot20:15
Done! Congratulations on your new bot. Use this token to access the HTTP API: 123456789:AAE-ContohTokenKamu_RAHASIA Keep your token secure and store it safely.
Jangan bagikan token ini ke siapa pun. Siapa pun yang punya token bisa mengendalikan bot kamu. Salin dan simpan dulu di tempat aman.
2

Ambil Chat ID kamu

Bot perlu tahu siapa yang boleh menyuruhnya deploy — yaitu kamu. Caranya ambil Chat ID akun Telegram-mu. Cari bot @userinfobot, buka chat-nya, lalu ketik /start. Bot itu akan menampilkan ID kamu (berupa angka).

userinfobot

bot

/start20:17
👤 Kamu Id: 587102934 First: Andri Lang: id
Catat angka Id tadi (contoh 587102934). Itu Chat ID kamu — kita pakai di langkah berikutnya.
3

Simpan token & Chat ID di VPS

Sekarang masuk ke VPS lewat SSH (seperti di panduan utama), masuk ke folder blog, lalu buat file .env untuk menyimpan token dan Chat ID:

deploy@vps: ~
deploy@vps:~$ cd ~/blogdeploy@vps:~$ nano .env

Tempel dua baris ini (ganti dengan token & ID milikmu). Tampilannya di editor seperti ini:

GNU nano 7.2/home/deploy/blog/.env
1TELEGRAM_TOKEN=123456789:AAE-ContohTokenKamu_RAHASIA2TELEGRAM_CHAT_ID=587102934
^O Write Out^X Exit^W Where Is^K Cut

Simpan & keluar (Ctrl+O, Enter, Ctrl+X). Lalu pastikan file ini tidak ikut ter-upload ke GitHub:

deploy@vps: ~
deploy@vps:~$ echo ".env" >> .gitignoredeploy@vps:~$ cat .envTELEGRAM_TOKEN=123456789:AAE-...TELEGRAM_CHAT_ID=587102934
4

Kirim notifikasi tiap kali deploy

Ingat file deploy.sh dari panduan utama? Kita tambahkan fungsi kecil agar setiap deploy mengirim pesan ke Telegram. Buka nano deploy.sh dan jadikan isinya seperti ini:

#!/usr/bin/env bash
set -e
 
# muat token & chat id dari file .env
set -a; source ~/blog/.env; set +a
 
# fungsi kirim pesan ke Telegram
notify() {
  curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
    -d chat_id="$TELEGRAM_CHAT_ID" -d text="$1" > /dev/null
}
 
notify "⏳ Deploy dimulai..."
cd ~/blog
git pull
pnpm install
pnpm build
pm2 restart blog
notify "✅ Deploy berhasil! Blog sudah diperbarui."
echo "Deploy berhasil!"

Sekarang coba jalankan sekali dari VPS — kamu akan langsung menerima pesan di Telegram:

deploy@vps: ~
deploy@vps:~$ chmod +x deploy.shdeploy@vps:~$ ./deploy.shAlready up to date.✓ Compiled successfullyDeploy berhasil!

Blog Deploy Bot

bot

⏳ Deploy dimulai...20:22
✅ Deploy berhasil! Blog sudah diperbarui.20:23
5

Buat bot pemicu deploy

Sampai sini bot baru bisa memberi tahu. Sekarang kita buat bot yang bisa diperintah: kalau kamu kirim /deploy, server menjalankan deploy.sh tadi. Buat file bot.js di folder blog dengan isi berikut — tanpa install apa pun, cukup fitur bawaan Node.js:

// bot.js — bot Telegram sederhana untuk memicu deploy
// Tidak perlu install apa pun: pakai fitur bawaan Node.js 20+
const { exec } = require('node:child_process')
 
const TOKEN = process.env.TELEGRAM_TOKEN
const OWNER = process.env.TELEGRAM_CHAT_ID
const API = `https://api.telegram.org/bot${TOKEN}`
let offset = 0
 
async function send(chatId, text) {
  await fetch(`${API}/sendMessage`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ chat_id: chatId, text }),
  })
}
 
async function poll() {
  try {
    const res = await fetch(`${API}/getUpdates?timeout=30&offset=${offset}`)
    const data = await res.json()
    for (const up of data.result) {
      offset = up.update_id + 1
      const msg = up.message
      if (!msg || !msg.text) continue
      const chatId = String(msg.chat.id)
 
      // hanya kamu yang boleh memicu deploy
      if (chatId !== OWNER) {
        await send(chatId, 'Maaf, kamu tidak punya akses.')
        continue
      }
 
      if (msg.text.startsWith('/deploy')) {
        await send(chatId, '⏳ Memulai deploy...')
        exec('bash ~/blog/deploy.sh', (err) => {
          send(chatId, err ? '❌ Deploy gagal: ' + err.message : '✅ Deploy berhasil!')
        })
      } else if (msg.text.startsWith('/status')) {
        await send(chatId, '✅ Blog sedang online.')
      }
    }
  } catch (e) {
    console.error('Polling error:', e)
  }
  poll() // ulangi terus
}
 
poll()
console.log('Bot deploy berjalan...')
Baris if (chatId !== OWNER) penting: itu memastikan hanya kamu (Chat ID di file .env) yang bisa memicu deploy, bukan orang lain yang kebetulan menemukan bot kamu.
6

Jalankan bot 24 jam dengan PM2

Sama seperti blog, bot juga dijaga oleh PM2 supaya terus menyala. Kita jalankan sambil memuat file .env tadi:

deploy@vps: ~
deploy@vps:~$ cd ~/blogdeploy@vps:~$ pm2 start "node --env-file=.env bot.js" --name deploy-botdeploy@vps:~$ pm2 savedeploy@vps:~$ pm2 status┌─────┬─────────────┬─────────┬────────┐│ id  │ name        │ status  │ uptime ││ 0   │ blog        │ online  │ 2h     ││ 1   │ deploy-bot  │ online  │ 3s     │└─────┴─────────────┴─────────┴────────┘
Lihat deploy-bot berstatus online? Berarti bot sudah siap menerima perintah dari HP kamu.
7
Saatnya tes!

Coba dari HP: kirim /deploy

Buka chat bot kamu sendiri di Telegram (cari username yang tadi dibuat, misal @blogdeploy_bot). Ketik /deploy dan tekan kirim. Dalam beberapa detik bot akan membalas:

Blog Deploy Bot

online

/deploy20:30
⏳ Memulai deploy...20:30
✅ Deploy berhasil!20:31
/status20:32
✅ Blog sedang online.20:32
Selesai! Sekarang kamu bisa memperbarui blog dari mana saja hanya lewat Telegram — tanpa membuka laptop atau mengetik perintah SSH.
8
Otomatis penuh

Bonus: auto-deploy tiap push ke GitHub

Mau lebih otomatis lagi? Atur agar setiap kali kamu push ke GitHub, server langsung menjalankan deploy.sh sendiri (yang juga mengirim notifikasi Telegram). Caranya pakai GitHub Actions. Buat file berikut di repo kamu:

GNU nano 7.2.github/workflows/deploy.yml
1name: Deploy ke VPS2on:3  push:4    branches: [main]5jobs:6  deploy:7    runs-on: ubuntu-latest8    steps:9      - name: Jalankan deploy lewat SSH10        uses: appleboy/ssh-action@v1.0.311        with:12          host: ${{ secrets.VPS_HOST }}13          username: deploy14          key: ${{ secrets.VPS_SSH_KEY }}15          script: bash ~/blog/deploy.sh
^O Write Out^X Exit^W Where Is^K Cut

Lalu di GitHub buka repo kamu → Settings → Secrets and variables → Actions → tombol New repository secret, dan tambahkan dua secret ini:

Nama secretIsinya
VPS_HOSTAlamat IP VPS kamu (mis. 203.0.113.10)
VPS_SSH_KEYIsi kunci privat SSH (file id_ed25519) milik user deploy

Sekarang cukup push seperti biasa dari laptop — GitHub yang akan menyuruh VPS update, dan bot mengabari kamu saat selesai:

kamu@laptop: ~/blog
kamu@laptop:~/blog$ git add .kamu@laptop:~/blog$ git commit -m "Tulisan baru"kamu@laptop:~/blog$ git pushEnumerating objects: 5, done.To github.com:username-kamu/blog-saya.git   a1b2c3d..e4f5g6h  main -> main

Blog Deploy Bot

bot

⏳ Deploy dimulai...21:05
✅ Deploy berhasil! Blog sudah diperbarui.21:06

Kalau ada masalah

GejalaSolusi
Bot tidak membalas sama sekaliCek pm2 status — pastikan deploy-bot online; lihat log dengan pm2 logs deploy-bot
Pesan "kamu tidak punya akses"TELEGRAM_CHAT_ID di .env belum cocok dengan ID kamu (langkah 2)
Notifikasi tidak terkirimToken salah/terbalik, atau lupa source ~/blog/.env di deploy.sh
GitHub Actions gagal connectVPS_HOST / VPS_SSH_KEY salah, atau kunci publik belum ada di ~/.ssh/authorized_keys
Deploy jalan tapi blog tak berubahPastikan deploy.sh memanggil pnpm build lalu pm2 restart blog

Pantau log bot kapan saja dengan pm2 logs deploy-bot.

Auto-deploy aktif!

Kamu sekarang bisa update blog dari HP lewat Telegram, atau otomatis tiap push. Kembali ke panduan utama.

Mau bikin bot yang lebih dari sekadar deploy? Bot jualan produk →

Belajar coding bot toko dari nol: menu bertingkat (tree), tombol, katalog, keranjang, sampai checkout — semua bisa dikustomisasi.

Mau bot yang bisa "mikir"? Bot AI Agent (versi trigger) →

Tiru workflow AI Agent gaya n8n (Trigger → AI Agent → If → Success/Failure) jadi bot Telegram: pakai memori, pencarian Google, dan tombol salin di setiap kode.