−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 里吊销它、发一个新的。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。