노트북이 열려 있는 동안에만 돌아가는 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분 뒤에 돌릴 수 있습니다.
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.