파일 업로드로 디스코드 봇 호스팅하기

2026년 3월 21일·2개 메시지

이 글에서는 로컬에 있는 디스코드 봇 프로젝트 파일을 압축해 업로드하고, 디스호스트에서 정상적으로 호스팅하는 절차를 정리한다. 깃 저장소를 정리하기 어렵거나 코드가 섞여 있는 상황에서 간단히 배포하는 방법을 안내한다.

증상

로컬에서 디스코드 봇 코드는 완성되어 있지만 깃 저장소로 정리하기 어렵다.
직접 파일을 업로드해 바로 실행하려고 할 때 시작 파일이나 종속성 목록이 없거나, 토큰이 코드에 하드코딩되어 있어 배포가 실패한다.

원인

  • **시작 엔트리(Entry point)**가 명시되어 있지 않음(start 스크립트 또는 실행 명령 없음).
  • 종속성 목록이 누락됨(package.json 또는 requirements.txt 부재).
  • 민감 정보(봇 토큰 등)가 코드에 하드코딩되어 보안 · 설정 충돌 발생.
  • 불필요하게 큰 디렉터리(node_modules, .git)가 함께 업로드되어 업로드 실패 또는 느린 배포 발생.
  • 런타임 설정(노드/파이썬 버전, 실행 명령)을 호스팅 플랫폼에 알리지 않음.

해결 방법

1단계: 프로젝트 준비 (공통)

  1. 프로젝트 루트에 엔트리 파일(예: index.js, bot.py)이 있는지 확인.
  2. 민감 정보는 절대 코드에 하드코딩하지 말고 환경 변수로 전달하도록 변경. 예:
// Node.js (discord.js 예)
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
const token = process.env.BOT_TOKEN;
client.login(token);
# Python (discord.py 예)
import os
from discord.ext import commands
bot = commands.Bot(command_prefix='!')
token = os.getenv('BOT_TOKEN')
bot.run(token)
  1. 불필요한 파일 제외를 위해 .gitignore 준비(특히 node_modules/, venv/, .env).

2단계: 런타임과 종속성 명시

  • Node.js 프로젝트:
    • package.jsonstart 스크립트 추가:
{
  "name": "my-discord-bot",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "discord.js": "^14.0.0"
  }
}
  • Python 프로젝트:
    • 루트에 requirements.txt 생성:
discord.py==2.0.0
requests==2.28.0
  • 필요 시 Procfile 또는 플랫폼에 맞는 실행 명령 지정:
web: python bot.py

3단계: 압축 및 업로드

  • 루트에서 불필요 폴더 제외하고 압축:
zip -r bot-deploy.zip . -x "node_modules/*" ".git/*" ".venv/*" ".env"
  • 디스호스트 대시보드에서 새 애플리케이션 생성 후 파일 업로드 기능을 사용해 bot-deploy.zip 업로드.

4단계: 디스호스트에서 설정

  1. 업로드 후 런타임(예: Node.js 버전, Python 버전)시작 명령을 설정.
    • Node.js: npm start 또는 node index.js
    • Python: python bot.py
  2. 환경 변수BOT_TOKEN(봇 토큰) 등 민감 값을 등록. 권한(인텐트) 설정에 필요한 값도 환경 변수로 관리 가능.
  3. 빌드/설치 단계에서 npm install 또는 pip install -r requirements.txt가 자동 실행되는지 확인하거나, 수동 빌드 명령을 입력.

5단계: 실행 확인 및 로그

  • 배포 후 로그를 확인해 패키지 설치 오류, 엔트리 파일 에러, 환경 변수 누락 여부를 점검한다.
  • 오류가 있으면 로그의 스택트레이스를 보고 해당 파일과 라인 수정 후 재압축 · 재업로드한다.
  • 배포 성공 시 봇이 정상적으로 로그인하고 명령에 응답하는지 테스트한다.

마무리

파일 업로드 방식은 깃 정리 없이 빠르게 디스코드 봇디스호스트호스팅할 때 유용하다. 핵심은 엔트리와 종속성 명시, 민감 정보의 환경 변수 관리, 불필요 파일 제외이다.