ノートPCが開いている間だけ動く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. なぜドメインも開放ポートも要らないのか
ボットはロングポーリングを使います — 更新を求めてTelegramへ手を伸ばすので、何も中へ届く必要はありません。公開URLも、インバウンドのファイアウォール規則も、専用IPもなし。だからこそNAT VPS(共有IP、ポート上のSSH)がボットには良く安い住処なのです。webhookは非常に大量向けにありますが、始めるにはまず必要ありません。
正直な注意点
- トークンの衛生: ここでは明快さのためユニットファイルにインライン — 締めた箱では問題ないですが、共有される何かには、代わりにroot専用の
EnvironmentFileから読み込み、決してgitにコミットしないこと。漏れた?BotFatherで失効させ、新しいのを発行。 - 重いボット: ボットが自分で仕事をするなら(画像生成、ローカルモデル)、もう小さくありません — それに応じてサイズアップを。
それだけです。まずセキュリティチェックリストで箱を締め、サービスを置けば、あなたがいようといまいとボットはオンラインのまま。暗号決済のVPSなら、決めた1分後には動かせます。
コメント
まだコメントはありません。最初になりましょう。