−25%

Windows के सालाना भुगतान पर, 31 अक्टूबर तक। प्लान देखें

EQVPS
शुरू करें

VPS पर Telegram बॉट कैसे होस्ट करें (और उसे चलता रखें)

15 जून 2026 · 3 मिनट पढ़ने में · EQVPS Team

एक Telegram बॉट जो सिर्फ़ तब चलता है जब आपका लैपटॉप खुला हो, वह सच में चल नहीं रहा — वह डेमो दे रहा है। इसे असल में ऑनलाइन रखने के लिए, 3 बजे जवाब देते, आपके रीबूट और अपने ख़ुद के क्रैश झेलते, इसे एक सर्वर पर रहना होगा। यहाँ पूरा रास्ता है, शुरू से आख़िर तक, कमांड के साथ।

पहले अच्छी ख़बर: एक बॉट एक नन्हा कार्यभार है। यह ज़्यादातर संदेशों का इंतज़ार करता निष्क्रिय बैठता है, तो सबसे सस्ता बॉक्स इसे ठीक चलाता है — कोई डेडिकेटेड IP नहीं, कोई डोमेन नहीं, कुछ भी दिखावटी नहीं।

1. BotFather से एक टोकन लें

Telegram में, @BotFather को संदेश करें, /newbot भेजें, एक नाम और यूज़रनेम चुनें। यह आपको 12345:AAH... जैसा दिखने वाला एक टोकन देता है। इसे एक पासवर्ड की तरह लें — जिसके पास यह हो वह आपके बॉट को नियंत्रित करता है।

2. एक न्यूनतम बॉट

सर्वर में SSH करें, Python और लाइब्रेरी सेट करें:

sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot

एक बॉट जो जवाब देता है — ~/mybot/bot.py:

import os
from telegram.ext import ApplicationBuilder, CommandHandler

async def start(update, ctx):
    await update.message.reply_text("Alive and on a server. 🟢")

app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()

ध्यान दें यह टोकन एक एनवायरनमेंट वेरिएबल से पढ़ता है — हार्डकोड नहीं। यह अगले क़दम में मायने रखता है।

3. वह हिस्सा जो असल में इसे चलता रखता है: systemd

अगर आप बस python bot.py चलाते हैं, यह उस पल मर जाता है जब आप SSH बंद करते हैं। एक systemd सेवा वह है जो इसे लॉगआउट, क्रैश और रीबूट झेलने योग्य बनाती है। /etc/systemd/system/mybot.service बनाएँ:

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

[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser

[Install]
WantedBy=multi-user.target

फिर:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot      # active (running) कहना चाहिए
journalctl -u mybot -f           # लाइव लॉग

Restart=always वह लाइन है जो असली काम करती है — क्रैश हो, और यह 5 सेकंड में वापस है। enable मतलब यह रीबूट के बाद ऊपर आता है। यही पूरा फ़र्क़ है "मैंने एक बार एक बॉट चलाया" और "मेरा बॉट चालू है" के बीच।

4. कोई डोमेन या खुले पोर्ट क्यों नहीं

बॉट long polling इस्तेमाल करता है — यह अपडेट के लिए Telegram तक बाहर पहुँचता है, तो कुछ भी अंदर पहुँचने की ज़रूरत नहीं। कोई सार्वजनिक URL नहीं, कोई इनबाउंड फ़ायरवॉल नियम नहीं, कोई डेडिकेटेड IP नहीं। यही ठीक वजह है कि एक NAT VPS (साझा IP, एक पोर्ट पर SSH) एक बॉट के लिए एक ठीक और सस्ता घर है। Webhooks बहुत उच्च वॉल्यूम के लिए मौजूद हैं, पर शुरू करने के लिए आपको लगभग निश्चित रूप से उनकी ज़रूरत नहीं।

ईमानदार चेतावनियाँ

  • टोकन स्वच्छता: यहाँ यह स्पष्टता के लिए यूनिट फ़ाइल में इनलाइन है — एक बंद बॉक्स पर ठीक, पर किसी भी साझा चीज़ के लिए, इसे बजाय एक root-only EnvironmentFile से लोड करें, और इसे कभी git में कमिट न करें। लीक हुआ? BotFather में रद्द करें, एक नया जारी करें।
  • भारी बॉट: अगर आपका बॉट ख़ुद काम करता है (इमेज जनरेशन, एक स्थानीय मॉडल), यह अब नन्हा नहीं — तदनुसार आकार बढ़ाएँ।

बस इतना ही। पहले सुरक्षा चेकलिस्ट से बॉक्स को बंद करें, सेवा डालें, और आपका बॉट ऑनलाइन रहता है चाहे आप हों या न हों। एक क्रिप्टो-भुगतान वाले VPS पर आप इसे तय करने के एक मिनट बाद चला सकते हैं।

FAQ

एक Telegram बॉट के लिए मुझे कौन सा VPS चाहिए?

सबसे छोटा। एक Telegram बॉट ज़्यादातर निष्क्रिय रहता है, अपडेट का इंतज़ार करता, तो 1 GB RAM और 2 कोर ज़्यादातर बॉट के लिए बहुत हैं — काफ़ी व्यस्त वाले भी। आपको ज़्यादा सिर्फ़ तब चाहिए जब बॉट ख़ुद भारी काम करे (इमेज प्रोसेसिंग, एक स्थानीय मॉडल, एक बड़ा डेटाबेस)।

SSH बंद करने के बाद एक Telegram बॉट को चलता कैसे रखूँ?

इसे एक systemd सेवा के रूप में चलाएँ। इसे अपने टर्मिनल में लॉन्च करने के विपरीत, systemd इसे लॉग आउट के बाद ज़िंदा रखता है, क्रैश होने पर पुनः शुरू करता है, और रीबूट के बाद फिर शुरू करता है। यही एक खिलौने और ऐसी चीज़ के बीच फ़र्क़ है जो चालू रहती है।

मेरे डिस्कनेक्ट होने पर मेरा बॉट क्यों रुक जाता है?

क्योंकि आपने इसे अपने SSH सत्र में शुरू किया, तो यह तब मर जाता है जब वह सत्र ख़त्म होता है। इसे एक systemd सेवा में लपेटें (या एक झटपट परीक्षण के लिए tmux) और यह आपके लॉगिन से स्वतंत्र चलता है।

क्या Telegram बॉट के लिए मुझे एक डोमेन या webhook चाहिए?

नहीं। Long polling (getUpdates) को कोई सार्वजनिक URL, कोई डोमेन, कोई इनबाउंड पोर्ट नहीं चाहिए — बॉट Telegram तक बाहर पहुँचता है। यही वजह है कि बिना डेडिकेटेड IP वाला एक NAT VPS एक बॉट के लिए बिलकुल ठीक है। Webhooks उच्च वॉल्यूम के लिए एक वैकल्पिक अनुकूलन हैं।

क्या अपना बॉट टोकन एक VPS पर रखना सुरक्षित है?

हाँ, अगर आप इसे एक पासवर्ड की तरह लें: इसे एक एनवायरनमेंट वेरिएबल या सिर्फ़ बॉट के उपयोगकर्ता द्वारा पठनीय एक फ़ाइल में रखें, इसे कभी git में कमिट न करें, और सर्वर को SSH कुंजियों से बंद करें। अगर एक टोकन लीक हो, इसे BotFather में रद्द करें और एक नया जारी करें।

टिप्पणियाँ

अभी तक कोई टिप्पणी नहीं। पहले बनें।

एक टिप्पणी छोड़ें

टिप्पणियाँ दिखने से पहले मॉडरेट की जाती हैं।