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).
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
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
Id tadi (contoh 587102934). Itu Chat ID kamu — kita pakai di langkah berikutnya.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:~$ cd ~/blogdeploy@vps:~$ nano .envTempel dua baris ini (ganti dengan token & ID milikmu). Tampilannya di editor seperti ini:
1TELEGRAM_TOKEN=123456789:AAE-ContohTokenKamu_RAHASIA2TELEGRAM_CHAT_ID=587102934Simpan & keluar (Ctrl+O, Enter, Ctrl+X). Lalu pastikan file ini tidak ikut ter-upload ke GitHub:
deploy@vps:~$ echo ".env" >> .gitignoredeploy@vps:~$ cat .envTELEGRAM_TOKEN=123456789:AAE-...TELEGRAM_CHAT_ID=587102934Kirim 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:~$ chmod +x deploy.shdeploy@vps:~$ ./deploy.shAlready up to date.✓ Compiled successfullyDeploy berhasil!Blog Deploy Bot
bot
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...')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.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:~$ 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 │└─────┴─────────────┴─────────┴────────┘deploy-bot berstatus online? Berarti bot sudah siap menerima perintah dari HP kamu.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
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:
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.shLalu di GitHub buka repo kamu → Settings → Secrets and variables → Actions → tombol New repository secret, dan tambahkan dua secret ini:
| Nama secret | Isinya |
|---|---|
| VPS_HOST | Alamat IP VPS kamu (mis. 203.0.113.10) |
| VPS_SSH_KEY | Isi 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$ 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 -> mainBlog Deploy Bot
bot
Kalau ada masalah
| Gejala | Solusi |
|---|---|
| Bot tidak membalas sama sekali | Cek 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 terkirim | Token salah/terbalik, atau lupa source ~/blog/.env di deploy.sh |
| GitHub Actions gagal connect | VPS_HOST / VPS_SSH_KEY salah, atau kunci publik belum ada di ~/.ssh/authorized_keys |
| Deploy jalan tapi blog tak berubah | Pastikan 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.