Panas musim panas — semuanya meleleh, bahkan harga kami.−25%−25% pada setiap paket tahunan, hingga 31 AgustusLihat paket
EQVPS
Mulai

Jalankan bot Telegram 24/7 di VPS: aiogram, systemd, polling vs webhook

4 Jul 2026 · 5 mnt baca · EQVPS Team

Anda menulis bot Telegram dengan aiogram, menguji secara lokal, dan ia bekerja. Sekarang ia harus tinggal di suatu tempat yang tidak tidur saat Anda menutup laptop. VPS kecil adalah rumah alaminya — tapi ada kesenjangan antara python bot.py di sesi SSH dan bot yang benar-benar tetap menyala melewati crash, reboot, dan koneksi Anda putus.

Ini versi produksinya: virtualenv, token dijaga keluar dari kode Anda, layanan systemd yang membangkitkan bot sendiri, dan jawaban jernih untuk pertanyaan yang akhirnya semua orang tanyakan — polling atau webhook?

Mengapa tidak menjalankannya di laptop saja

Bot butuh koneksi keluar yang stabil ke Telegram. Laptop Anda tidur, reboot untuk pembaruan, dan berpindah antar jaringan — setiap satunya menjatuhkan bot, dan pengguna menabrak tembok keheningan. VPS memegang koneksi itu sepanjang waktu. Itulah seluruh alasan memindahkannya dari mesin Anda, dan itu alasan yang sama mengapa bot Discord pantas di server juga.

Jika Anda hanya ingin jalur "buat online" tercepat dengan bot minimal, panduan hosting-bot-Telegram menutupi itu. Karya ini masuk satu tingkat lebih dalam: aiogram, penanganan token yang aman, dan tahu kapan menskala.

Bot, dalam virtualenv

SSH masuk dan jaga bot terisolasi di venv-nya sendiri — jangan memasang paket sistem-luas, itu membuat pembaruan dan pembersihan berantakan nanti:

sudo apt update && sudo apt install -y python3-venv
mkdir ~/tgbot && cd ~/tgbot
python3 -m venv venv && source venv/bin/activate
pip install -U aiogram

Bot aiogram 3 minimal yang membaca tokennya dari lingkungan, bukan dari string yang di-hardcode:

# bot.py
import asyncio, logging, os
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from aiogram.filters import CommandStart

logging.basicConfig(level=logging.INFO)
dp = Dispatcher()

@dp.message(CommandStart())
async def start(m: Message):
    await m.answer("Alive and running on a VPS.")

async def main():
    bot = Bot(os.environ["BOT_TOKEN"])
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

Jaga token keluar dari kode Anda

Jangan pernah menempel token BotFather ke bot.py — satu push ke repo publik dan ia bocor. Taruh di berkas env yang bisa dibaca-root saja:

sudo tee /etc/tgbot.env >/dev/null <<'EOF'
BOT_TOKEN=123456:your-token-from-botfather
EOF
sudo chmod 600 /etc/tgbot.env

Token yang bocor sejauh satu /revoke di BotFather dari diperbaiki — tapi apa pun yang lain yang bocor di mesin bersama lebih buruk. VPS khusus untuk bot jujurnya rumah yang lebih aman untuk token daripada laptop harian Anda: jika bocor, Anda memutar satu token, bukan seluruh setup Anda.

Bagian yang menjaganya hidup: systemd

Inilah yang memisahkan bot yang berjalan dari bot yang tetap berjalan. Buat layanannya:

# /etc/systemd/system/tgbot.service
[Unit]
Description=Telegram bot (aiogram)
After=network-online.target
Wants=network-online.target

[Service]
User=botuser
WorkingDirectory=/home/botuser/tgbot
EnvironmentFile=/etc/tgbot.env
ExecStart=/home/botuser/tgbot/venv/bin/python bot.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Jalankan sebagai pengguna non-root (botuser di atas), bukan root — jika bot pernah disusupi, Anda mau ia terkurung. Lalu:

sudo systemctl daemon-reload
sudo systemctl enable --now tgbot

Restart=always dengan RestartSec=3 berarti crash — pembaruan buruk dari Telegram, eksepsi tak-tertangani, OOM — mengembalikan bot dalam tiga detik alih-alih membiarkannya mati sampai Anda menyadari. Awasi langsung:

journalctl -u tgbot -f

Itulah seluruh setup logging Anda. Tanpa berkas log untuk dirotasi, tanpa perkakas tambahan — journald sudah memilikinya.

Memperbarui tanpa drama waktu-henti

Saat Anda mengubah kode atau menaikkan aiogram:

cd ~/tgbot && source venv/bin/activate
pip install -U aiogram          # jika meningkatkan pustaka
sudo systemctl restart tgbot
journalctl -u tgbot -n 30 --no-pager   # konfirmasi ia kembali bersih

Restart mengedipkan bot selama satu-dua detik. Untuk bot polling itu tak terlihat bagi pengguna — Telegram mengantrekan pembaruan dan mengirimkannya begitu bot tersambung kembali.

Polling vs webhook — versi jujur

Ini keputusan yang orang terlalu pikirkan. Berikut versi sederhananya:

Polling (start_polling, yang dipakai kode di atas) membuat bot bertanya ke Telegram "ada yang baru?" pada koneksi berumur-panjang. Ia tidak butuh apa pun selain internet keluar — tanpa domain, tanpa TLS, tanpa port masuk terbuka. Ia berjalan baik di balik NAT. Untuk mayoritas besar bot, ini benar dan Anda harus berhenti di sini.

Webhook membuat Telegram mendorong pembaruan kepada Anda, yang berarti Anda harus mengekspos endpoint HTTPS publik. Itu memerlukan domain dan port masuk yang dapat dijangkau — jadi entah IP publik khusus atau reverse proxy di depan. Lebih banyak penyiapan, lebih banyak hal yang rusak. Imbalannya adalah latensi lebih rendah dan overhead lebih sedikit pada skala besar — ribuan pengguna serentak, volume pembaruan berat.

Aturan praktisnya: mulai dengan polling pada paket NAT. Pindah ke webhook hanya saat Anda benar-benar sudah melampaui polling — dan jika demikian, saat itulah IP khusus mendapat tempatnya, karena Anda butuh endpoint HTTPS masuk itu.

Berapa biayanya menjalankan

Bot polling itu ringan. Ia menganggur pada long-poll Telegram dan bereaksi terhadap pesan, jadi mesin kebanyakan menunggu:

Pendaftaran cukup email dan Anda bayar dengan USDC atau USDT di Base atau Ethereum — tanpa kartu, tanpa identitas. Kartu juga bisa, tapi on-ramp punya minimum ~$27, jadi untuk paket $3 lebih mulus mengisi saldo kecil sekali dan membiarkan perpanjangan menariknya. Ini hanya CPU, satu pusat data di Jerman — bukan masalah untuk bot, layak diketahui jika Anda butuh GPU atau wilayah tertentu.

Kesimpulan jujur

Bot Telegram adalah salah satu hal termurah yang bisa Anda swa-hosting: mesin $3, unit systemd, dan polling memberi Anda bot yang online melewati crash dan reboot tanpa Anda mengasuhnya. Raih webhook dan paket lebih besar hanya saat skala benar-benar memaksanya — bukan karena tutorial memberi tahu Anda webhook "lebih baik". Dapatkan mesin kecil, jaga token di berkas env, biarkan systemd menangani uptime, dan — sebelum apa pun — jalankan daftar periksa keamanan VPS baru agar mesinnya sendiri terkunci.


Siap hosting milik Anda? Bot Telegram nyaris tidak memakai sumber daya — paket Nano ($3/bln) menjalankannya 24/7 tanpa ribet.

Pertanyaan umum

Polling atau webhook — mana yang harus saya pakai?

Mulai dengan polling. Ia bekerja dari mesin mana pun dengan internet keluar — tanpa domain, tanpa port terbuka, tanpa TLS — dan sudah cukup untuk kebanyakan bot. Beralih ke webhook hanya saat Anda berjalan pada skala (ribuan pengguna) atau butuh latensi serendah mungkin; webhook butuh endpoint HTTPS publik, yang berarti domain dan port masuk yang dapat dijangkau (IP khusus, atau reverse proxy), jadi ia lebih banyak bagian bergerak. Untuk 95% bot, polling di VPS kecil adalah jawaban yang tepat.

Apakah saya butuh IP khusus atau domain untuk bot Telegram?

Tidak untuk polling — bot hanya membuat panggilan keluar ke Telegram, jadi paket NAT dengan SSH diteruskan-port sudah cukup. Anda butuh endpoint HTTPS publik (domain + port masuk, yaitu IP khusus atau reverse proxy) hanya jika Anda beralih ke mode webhook. Kebanyakan bot tidak pernah membutuhkannya.

Ukuran VPS apa yang dibutuhkan bot aiogram?

Yang terkecil. Bot polling kebanyakan menunggu long-poll Telegram, jadi 1 vCPU / 1 GB (Nano $3) menangani kebanyakan bot dengan nyaman. Naikkan ukuran hanya saat bot sendiri melakukan kerja berat — basis data, pemrosesan media, atau model lokal — yang mendorong Anda ke 2 GB ($5) atau lebih.

Bagaimana saya menjaga bot berjalan setelah saya keluar?

Jalankan sebagai layanan systemd dengan Restart=always. Diluncurkan di terminal Anda ia mati saat SSH tertutup; di bawah systemd ia bertahan dari keluar, restart saat crash, dan kembali setelah reboot. Itu garis antara demo dan sesuatu yang bisa Anda andalkan.

← Kembali ke blogLihat paket dan harga →

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.