OffshoreVps
チュートリアル2026年10月8日読了時間 5 分執筆:OffshoreVps チーム

VPS で Telegram ボットをホストする方法

ボットトークンの取得、Python ボットの作成、トークンの安全な保管、systemd サービスによる 24/7 の稼働までを説明します。

Telegram ボットは、メッセージに応答するために常に稼働している必要があります。ノート PC で動かすと、蓋を閉じるたびにオフラインになります。月数ドルの小さな VPS があれば解決します。このガイドでは、Python ボットを systemd サービスとして動かし、起動時に自動で開始し、クラッシュ後に再起動されるようにします。

Telegram ボットをホストするために使うコマンドを、「sudo apt update && sudo apt install -y python3 p」から始めて表示している VPS のターミナルウィンドウ
このガイドでサーバー上で実行するコマンドの例。

どのサイズの VPS か

ほとんどのボットは軽量です。1 〜 2 vCPU と 2 GB の RAM のプランで十分です。おすすめのプランは Telegram ボットホスティングをご覧ください。

ステップ 1:ボットトークンを取得する

Telegram で @BotFather と話し、/newbot を送信して、名前と bot で終わるユーザー名を選び、トークンをコピーします。トークンを持っていれば誰でもボットを操作できるため、パスワードと同じように扱ってください。

ステップ 2:サーバーを準備する

sudo apt update && sudo apt install -y python3 python3-venv
sudo adduser --disabled-password --gecos "" botuser
sudo -iu botuser
mkdir ~/mybot && cd ~/mybot
python3 -m venv .venv
. .venv/bin/activate
pip install python-telegram-bot

ステップ 3:小さなボットを書く

# bot.py
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Hello! I am running on a VPS.")

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

ポーリングは開いているポートを必要としないため、ドメインや Webhook を設定する必要はありません。

このガイドの手順(順番どおり):1. どのサイズの VPS か;2. ボットトークンを取得する;3. 小さなボットを書く;4. トークンを安全に保管する;5. 更新と監視;6. ポーリングか Webhook か
このガイドの手順(順番どおり)。

ステップ 4:トークンを安全に保管する

echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env

ステップ 5:サービスとして実行する

管理者ユーザーに戻って、/etc/systemd/system/mybot.service を作成します:

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

[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot/.env
ExecStart=/home/botuser/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f

更新と監視

  • コードを更新してから、sudo systemctl restart mybot を実行します。
  • journalctl -u mybot -n 100 でログを確認します。
  • ボットがデータを保存する場合は、バックアップを使いましょう。

ポーリングか Webhook か

ポーリングが最も簡単で、ほとんどのボットには十分です。大量のメッセージを即座に配信する必要がある場合は Webhook を使います。ドメインと HTTPS が必要です。Nginx と HTTPS によるホスティングをご覧ください。