如果你想把 Telegram Bot 跑在 VPS 上,并且接上 AI 能力(比如 OpenAI、Claude、本地 Ollama),那这篇Telegram AI Bot VPS 部署教程就是为你准备的。从申请 Bot Token、配置 Webhook,到用 Nginx 做反向代理,一步步走通,避开常见坑。主机选这篇教程基于 Ubuntu 22.04 + Python 3.10 + Nginx,其他发行版思路一样。

一、准备工作:VPS 环境和 Bot Token
先确认你的 VPS 能跑 Python 和 Nginx,并且 80/443 端口开放(Webhook 需要公网可达)。如果你用的是新机器,先更新系统:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip nginx certbot python3-certbot-nginx -y
1.1 申请 Bot Token
在 Telegram 里搜 `@BotFather`,发 `/newbot`,按提示起名、设置用户名,最后你会拿到一串 token,类似 `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`。保管好,别泄露到公开仓库。
1.2 写一个简单的 AI Bot 脚本
这里用 python-telegram-bot 库 + OpenAI API 做演示。先装依赖:
pip3 install python-telegram-bot openai
创建一个 `bot.py`,内容如下(替换你的 token 和 API key):
python
import asyncio
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
import openai
TELEGRAM_TOKEN = "你的BOT_TOKEN"
OPENAI_API_KEY = "你的OPENAI_API_KEY"
openai.api_key = OPENAI_API_KEY
async def start(update: Update, context):
await update.message.reply_text("你好!我是 AI Bot,直接发消息给我吧。")
async def handle_message(update: Update, context):
user_text = update.message.text
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_text}]
)
reply = response.choices[0].message.content
await update.message.reply_text(reply)
def main():
app = Application.builder().token(TELEGRAM_TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.run_webhook(
listen="127.0.0.1",
port=8443,
url_path=TELEGRAM_TOKEN,
webhook_url=f"https://你的域名/{TELEGRAM_TOKEN}"
)
if __name__ == "__main__":
main()
注意:`webhook_url` 需要 HTTPS,所以我们下一步配置 Nginx 反代。
二、Webhook 配置与 Nginx 反向代理
Telegram Bot 的 Webhook 要求公网 HTTPS 端点,且端口必须是 443、80、88、8443 之一。我们让 Bot 监听本地 8443,然后用 Nginx 把 `/BOT_TOKEN` 路径代理过去。
2.1 配置 Nginx
创建 `/etc/nginx/sites-available/telegram-bot`:
nginx
server {
listen 80;
server_name 你的域名; # 例如 bot.example.com
location /你的BOT_TOKEN {
proxy_pass http://127.0.0.1:8443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
return 404;
}
}
启用站点并申请 SSL:
sudo ln -s /etc/nginx/sites-available/telegram-bot /etc/nginx/sites-enabled/
sudo certbot –nginx -d 你的域名
sudo nginx -t && sudo systemctl reload nginx
2.2 设置 Webhook
用 curl 告诉 Telegram 把消息发到你的域名:
curl -F "url=https://你的域名/你的BOT_TOKEN" https://api.telegram.org/bot你的BOT_TOKEN/setWebhook
返回 `{"ok":true,"result":true,"description":"Webhook was set"}` 就成功了。验证:
curl https://api.telegram.org/bot你的BOT_TOKEN/getWebhookInfo
2.3 启动 Bot
在 VPS 上运行:
python3 bot.py
如果一切正常,给 Bot 发消息,它会回复 AI 生成的内容。
三、老鸟叮嘱:避坑清单
1.Token 不要硬编码在代码里:用环境变量或 .env 文件,避免 git 泄露。推荐 `python-dotenv`。
2.Webhook 路径必须和 Token 一致:Telegram 要求 URL 末尾是 Token,且不能有额外参数。
3.防火墙放行:如果 VPS 有 ufw,记得放行 80/443:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
4.Bot 不能同时用 Polling 和 Webhook:如果之前用 Polling 测试过,先调用 `deleteWebhook` 再设置新的。
5.HTTPS 证书必须有效:Telegram 不会接受自签名证书(除非你用 IP 方式,但生产不推荐)。
6.日志监控:建议用 systemd 管理 Bot 进程,方便查看日志和自动重启:
sudo nano /etc/systemd/system/telegram-bot.service
sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot
四、FAQ
Q1:Webhook 设置成功但 Bot 不回复?
A:检查 Nginx 日志 `/var/log/nginx/error.log`,看代理是否正常。同时确认 Bot 脚本监听的端口和路径与 Nginx 一致。可以用 `curl -X POST https://你的域名/你的BOT_TOKEN -d "test"` 测试本地连通性。
Q2:可以用 Polling 代替 Webhook 吗?
A:可以,但 Polling 需要 Bot 一直运行并主动拉取消息,适合内网或低流量场景。生产环境建议 Webhook,延迟更低,服务器负载更小。
Q3:不想用 OpenAI,想接本地 Ollama 模型怎么改?
A:把 `openai.ChatCompletion.create` 换成 Ollama 的 API 调用(Ollama 默认监听 localhost:11434),修改请求 URL 和参数即可。记得在 Bot 脚本里安装 `requests` 库。
Q4:如何让 Bot 支持多轮对话?
A:需要维护会话上下文。可以用 Redis 存储用户消息历史,每次请求时读取并拼接。简单做法是用 Python 字典(生产环境不持久化)。
Q5:Nginx 反代后 Bot 收不到消息,返回 404?
A:检查 `location` 路径是否精确匹配 Token。如果 Token 包含特殊字符,建议用 `location ~ ^/你的BOT_TOKEN$` 正则匹配。
Q6:VPS 内存只有 512MB,能跑这个 Bot 吗?
A:纯 API 调用型 Bot 占用内存很小(几十 MB),可以跑。如果本地加载模型(比如 Ollama),建议至少 2GB 内存。
总结
这篇Telegram AI Bot VPS 部署教程从 Bot Token 申请、Webhook 配置到 Nginx 反代,覆盖了上线一个 AI Bot 的完整链路。核心就是:Token 别写死、Webhook 路径别拼错、HTTPS 证书别自签。照着步骤走,半小时就能让你的 Bot 在 VPS 上跑起来。
—
**相关阅读:**
– [1 核 1G VPS 能跑 Ollama 吗?低配服务器可行场景分析](https://www.zhujixuan.com/jishujiaocheng/9864.html)
– [Open WebUI VPS 部署教程:给 Ollama 配一个网页聊天界面](https://www.zhujixuan.com/jishujiaocheng/9855.html)
– [Ollama VPS 部署教程:在服务器上运行本地大模型](https://www.zhujixuan.com/jishujiaocheng/9849.html)
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9900.html 商家投稿邮箱:zhujixuanblog@qq.com
