−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

如何在 VPS 上託管一個 Telegram 機器人(並讓它保活)

2026年6月15日 · 1 分鐘閱讀 · EQVPS Team

一個只在您筆電開著時才跑的 Telegram 機器人,其實不算在跑——它在演示。要它真正線上、凌晨三點也應答、熬過您的重新啟動和它自己的崩潰,它得住在一台伺服器上。這是完整的路徑,從頭到尾,附指令。

先說好訊息:機器人是一個極小的負載。它大多空閒著等訊息,所以最便宜的機器就跑得好好的——不用獨立IP、不用網域、什麼花哨的都不用。

1. 從 BotFather 拿一個 token

在 Telegram 裡,給 @BotFather 發訊息、發 /newbot、挑一個名字和使用者名稱。它遞給您一個像 12345:AAH... 這樣的 token。把它當密碼對待——任何拿到它的人都控制您的機器人。

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()

注意它從一個環境變數讀 token——不是硬編碼。這在下一步很重要。

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. 為什麼不用網域或開放埠

機器人用長輪詢——它主動去 Telegram 拿更新,所以沒有東西需要連進來。不用公用 URL、不用對內防火牆規則、不用獨立IP。這正是為什麼一台 NAT VPS(沒有專屬 IP、SSH 在某個埠上)是機器人一個不錯又便宜的家。webhook 是給非常高流量存在的,但您開始時幾乎肯定不需要它們。

誠實的注意事項

  • Token 衛生: 這裡為清楚起見把它內聯在 unit 檔案裡——在一台鎖死的機器上沒問題,但對任何共享的場景,改從一個只有 root 可讀的 EnvironmentFile 載入它,永遠別提交到 git。洩露了?在 BotFather 裡撤銷、發一個新的。
  • 重型機器人: 如果您的機器人自己做活(影像產生、本機模型),它就不再是小的了——相應地往上配。

就這樣。先用安全清單鎖當機器、把服務放進去,您的機器人無論您在不在都保持線上。在一台加密付款的 VPS 上,您決定後一分鐘它就能跑起來。

常見問題

一個 Telegram 機器人需要什麼 VPS?

最小的那台。一個 Telegram 機器人大多空閒、等著更新,所以 1 GB 記憶體和 2 核對大多數機器人——甚至相當忙的——都綽綽有餘。只有當機器人自己做繁重的活(影像處理、本機模型、大資料庫)時您才需要更多。

關掉 SSH 後怎麼讓 Telegram 機器人繼續跑?

把它作為一個 systemd 服務來跑。跟在終端裡啟動它不同,systemd 在您登出後讓它活著、崩潰時重新啟動它、重新啟動後再次啟動它。那就是一個玩具和一個保持線上的東西之間的差別。

為什麼我一斷開機器人就停?

因為您在 SSH 工作階段裡啟動了它,所以那個工作階段一結束它就死。用一個 systemd 服務(或做快速測試用 tmux)把它包起來,它就獨立於您的登入執行。

Telegram 機器人需要網域或 webhook 嗎?

不需要。長輪詢(getUpdates)不需要公用 URL、不需要網域、不需要對內埠——是機器人主動去聯絡 Telegram。這就是為什麼一台沒有獨立IP 的 NAT VPS 對機器人完全沒問題。webhook 是給高流量的可選最佳化。

把我的機器人 token 放到 VPS 上安全嗎?

安全,只要您把它當密碼對待:放在一個環境變數裡、或一個只有機器人使用者可讀的檔案裡,永遠別提交到 git,並用 SSH 金鑰鎖死伺服器。如果 token 洩露了,在 BotFather 裡撤銷它、發一個新的。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。