Python 봇 배포하기
Daki Hosting에서 Python Discord 봇(discord.py 또는 py-cord)을 배포하는 단계별 가이드.
이 가이드에서는 Daki Hosting에 Python Discord 봇을 배포하는 과정을 안내해 드려요 — 서버를 만드는 것부터 봇 토큰을 안전하게 읽고 온라인으로 올리기까지요.
배울 내용
- 봇을 위한 Python 서버를 만드는 방법
- 코드를 업로드하는 방법
- 설치 명령, 시작 명령, Python 버전을 설정하는 방법
.env파일로 봇 토큰을 안전하게 설정하는 방법- 봇을 시작하고 정상 작동하는지 확인하는 방법
준비물
- Daki 계정(Free Tier 또는 유료) — 계정 만들기를 참고하세요
- 봇 토큰이 있는 Discord 봇 — Discord Developer Portal에서 만들 수 있어요
- 모든 의존성을 나열한
requirements.txt가 있는 봇 소스 코드(예:discord.py또는py-cord, 그리고python-dotenv)
Discord 봇은 Discord 서버로 아웃바운드 연결을 하며, 인바운드 포트가 필요하지 않아요. 그래서 Discord 봇은 Free Tier와 유료 플랜 모두에서 작동해요. 봇이 HTTP 서버도 실행한다면(예: 웹훅이나 웹 대시보드), 공개 포트는 유료 플랜에서만 사용할 수 있으므로 유료 플랜이 필요해요. 네트워크 & 할당을 참고하세요.
배포 과정
Python 서버 만들기
- free.daki.cc에서 Free Tier Dashboard에 로그인하거나, billing.daki.cc에서 Billing Panel에 로그인하세요.
- 새 서버를 만들고 Python egg를 선택하세요.
- 서버에 이름을 붙이세요(예:
MyPythonBot).
전체 과정은 첫 무료 서버 만들기를 참고하세요.
Portal 접속하기
SSO로 Portal에 로그인하거나 portal.daki.cc에 직접 접속하세요. Portal 개요를 참고하세요.
봇 코드 업로드하기
방법 A — ZIP으로 업로드 (가장 간단함):
- 프로젝트 폴더를
.zip파일로 압축하세요. - Portal에서 Files 탭으로 이동한 뒤 Upload를 클릭하세요.
.zip파일을 마우스 오른쪽 버튼으로 클릭하고 Extract를 클릭하세요.
방법 B — SFTP 사용 (파일 크기 제한 없음): Settings 탭에 있는 SFTP 자격 증명으로 폴더를 직접 업로드하세요. 파일 관리자를 참고하세요.
프로젝트 루트에
requirements.txt를 포함하세요. 설치 명령이 이 파일을 사용해 의존성을 설치해요.- 프로젝트 폴더를
Startup 탭 설정하기
Startup 탭을 열고 세 가지 항목을 모두 설정하세요:
1. Docker Image — 봇에 필요한 Python 버전을 선택하세요(예: Python 3.13). 잘 모르겠다면 Python 3.13이 안전한 기본값이에요. 모든 라이브러리가 지원한다면 더 최신 버전도 작동해요. EOL로 표시된 버전은 더 이상 보안 업데이트를 받지 못하므로 피하세요.
2. Install Command — 의존성을 자동으로 설치하도록 설정하세요:
Shellpip install -r requirements.txt3. Startup Command — 봇을 실행하는 명령으로 설정하세요:
python main.py— 진입 파일이main.py인 경우python bot.py— 진입 파일이bot.py인 경우python -m mypackage— 프로젝트가 패키지 구조인 경우
프로젝트 구조와 요구 사항에 맞게 이 명령들을 자유롭게 바꿔도 돼요.
자세한 설명은 시작 설정을 참고하세요.
.env 파일로 봇 토큰 추가하기
Discord 봇 토큰은 소스 코드에 나타나지 않도록 서버의
.env파일에 저장하세요.- Files 탭에서 New File을 클릭하고 이름을
.env로 지정하세요. - 토큰을 추가하세요:
.env
BOT_TOKEN=your_discord_bot_token_here - Save를 클릭하세요.
requirements.txt에python-dotenv가 있는지 확인한 다음, 코드에서 파일을 불러오세요:Pythonfrom dotenv import load_dotenv import os import discord load_dotenv() TOKEN = os.environ.get("BOT_TOKEN") intents = discord.Intents.default() client = discord.Client(intents=intents) @client.event async def on_ready(): print(f"Logged in as {client.user}") client.run(TOKEN).env파일 사용에 대한 자세한 내용은 환경 변수를 참고하세요.- Files 탭에서 New File을 클릭하고 이름을
봇 시작하기
Console 탭에서 Start를 클릭하세요. 정상적으로 실행되면 다음이 출력돼요:
TextLogged in as MyBot#1234오류가 보이면 문제 해결 가이드를 확인하세요.
자주 발생하는 문제
ModuleNotFoundError: No module named 'discord'
의존성이 설치되지 않은 상태예요. requirements.txt에 discord.py 또는 py-cord가 있는지 확인하고, Startup 탭의 설치 명령이 pip install -r requirements.txt로 설정되어 있는지 확인하세요. 서버를 재시작하면 설치가 다시 실행돼요.
ModuleNotFoundError: No module named 'dotenv'
requirements.txt에 python-dotenv를 추가하고 서버를 재시작하세요.
discord.errors.LoginFailure: Improper token has been passed
.env 파일의 토큰이 잘못되었거나 없어요. Files 탭에서 .env 파일을 열고 값을 주의해서 확인하세요. 불필요한 공백이나 따옴표를 지우세요.
PrivilegedIntentsRequired 오류
봇이 Discord Developer Portal에서 활성화되지 않은 인텐트를 요청하고 있어요. 봇 애플리케이션 설정에서 필요한 특권 인텐트(예: Message Content Intent)를 활성화하고, 코드에서도 같은 인텐트를 요청하는지 확인하세요.
시작하자마자 서버가 충돌해요
Console의 출력에서 오류를 확인하세요. 흔한 원인은 잘못된 시작 명령(파일 이름 오타나 잘못된 경로), requirements.txt 누락, 또는 패키지 누락이에요. 문제 해결을 참고하세요.
다음 단계
- 환경 변수 —
.env파일과 코드에서 변수를 읽는 방법에 대한 전체 가이드예요. - 무료 서버 계속 실행하기 — 광고를 정기적으로 보고 Free Tier 서버를 계속 실행하세요.
- 파일 관리자 — 변경한 뒤 코드를 업데이트하세요.