Skip to content
VDS · ऐप्स और बॉट

सर्वर पर Telegram बॉट: लॉन्च और ऑटोस्टार्ट

VPS पर Telegram बॉट कैसे होस्ट करें: अपने यूज़र के तहत आइसोलेशन, systemd सर्विस, टोकन स्टोरेज, लॉग, और नेटवर्क आउटेज से निपटना।

23 अगस्त 2026 को अपडेट किया गया

बॉट के लिए लगातार चलने वाली प्रोसेस ज़रूरी है — यहीं फ़्री होस्टिंग खत्म होती है और VDS शुरू होता है। बॉट को संसाधनों की लगभग ज़रूरत ही नहीं होती: VDS-1 (1 कोर, 2 GB) भी हज़ारों यूज़र वाले बॉट को संभाल लेता है।

प्लेसमेंट

अलग यूज़र और डायरेक्टरी — ताकि बॉट root के तौर पर न चले:

useradd -r -m -d /srv/bot -s /usr/sbin/nologin botuser
cd /srv/bot && sudo -u botuser git clone https://github.com/you/bot.git .
sudo -u botuser python3 -m venv venv
sudo -u botuser venv/bin/pip install -r requirements.txt

Node.js के लिए: venv की जगह npm ci --omit=dev।

टोकन को कोड में नहीं, एनवायरनमेंट फ़ाइल में रखें:

install -o botuser -g botuser -m 600 /dev/null /srv/bot/.env
echo 'BOT_TOKEN=123456:ABC...' > /srv/bot/.env

टोकन वाली फ़ाइल रिपॉज़िटरी में न पहुँचे: पहले कमिट से पहले ही उसे .gitignore में जोड़ दें।

सर्विस

/etc/systemd/system/tgbot.service:

[Unit]
Description=Telegram bot
After=network-online.target
Wants=network-online.target

[Service]
User=botuser
WorkingDirectory=/srv/bot
EnvironmentFile=/srv/bot/.env
ExecStart=/srv/bot/venv/bin/python -u bot.py
Restart=always
RestartSec=10
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now tgbot
journalctl -u tgbot -f

Python में -u फ़्लैग आउटपुट बफ़रिंग बंद कर देता है — इसके बिना लॉग journal में कई मिनट की देरी से दिखेंगे, या बिल्कुल नहीं दिखेंगे।

लॉन्ग पोलिंग या वेबहुक

लॉन्ग पोलिंग ज़्यादा आसान है: बॉट खुद Telegram से पूछता रहता है, और आपको कुछ भी बाहर खोलने की ज़रूरत नहीं। ज़्यादातर कामों के लिए यही काफ़ी है।

वेबहुक तेज़ है और ट्रैफ़िक पर सस्ता पड़ता है, लेकिन इसके लिए डोमेन और सर्टिफ़िकेट चाहिए:

location /bot/token {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
}

आपको Let's Encrypt और रिवर्स प्रॉक्सी की ज़रूरत पड़ेगी। Telegram सेल्फ-साइन्ड सर्टिफ़िकेट अनिच्छा से स्वीकार करता है — सामान्य सर्टिफ़िकेट इस्तेमाल करें।

एक ही समय पर बॉट की दो कॉपी कभी नहीं चलनी चाहिए: Telegram अपडेट सिर्फ़ एक ही रिसीवर तक पहुँचाता है, और बॉट रुक-रुक कर जवाब देने लगेंगे। बदलाव के बाद दोबारा लॉन्च नहीं, restart करें।

डेटा

सेटिंग्स और स्टैटिस्टिक्स के लिए SQLite काफ़ी है — बॉट के पास ही एक फ़ाइल। अलग डेटाबेस सर्वर की ज़रूरत तभी पड़ती है जब बॉट का वेब पैनल हो या कई प्रोसेस चल रहे हों।

आम गलतियाँ

लक्षणकारण
Conflict: terminated by other getUpdatesबॉट की दो कॉपी चल रही हैं
रात भर बाद बॉट चुप हो जाता हैRestart=always सेट नहीं है, और नेटवर्क ड्रॉप पर प्रोसेस क्रैश हो गई
Unauthorizedटोकन रद्द हो गया या ज़्यादा स्पेस के साथ कॉपी हुआ
लॉग नहीं दिखतेआउटपुट बफ़रिंग, या stdout की जगह फ़ाइल में लिखा जा रहा है
मैन्युअली चलता है, सर्विस के तौर पर क्रैश हो जाता हैsystemd में एनवायरनमेंट वेरिएबल नहीं हैं

जो टोकन किसी स्क्रीनशॉट, पब्लिक रिपॉज़िटरी या किसी और की चैट में दिख चुका है, वह लीक माना जाता है। उसे BotFather से रद्द करें और .env फ़ाइल बदलें — यह न सोचें कि किसी ने ध्यान नहीं दिया।