이 글은 디스호스트에서 디스코드 봇을 배포할 때 “시작”을 눌렀는데 서비스가 오프라인으로 남는 상황을 진단하고 해결하는 절차를 정리한 가이드다. 필요한 로그를 모으는 방법과 직접 점검할 항목, 자주 쓰는 명령을 예제로 제공한다.
증상
- 디스호스트 웹 콘솔에서 인스턴스가
오프라인상태로 표기됨. - 시작 버튼을 눌러도 상태 변화 없음 또는 곧바로 다시 오프라인으로 전환됨.
- 콘솔 로그에 에러 메시지 출력 또는 로그가 전혀 남지 않음.
- 디스코드 봇이 접속하지 않음(봇 상태 오프라인).
원인
내 경험상 가장 흔한 원인들은 다음과 같다.
- 시작 커맨드가 잘못 설정되어 있음 (
package.json의start스크립트나 디스호스트에 등록한 커맨드가 틀림). - 환경변수(예: 봇 토큰)가 누락되거나 이름이 잘못됨 (
DISCORD_TOKEN등). - 필요한 의존성이 설치되지 않음(배포 환경에서
npm install또는pip install누락). - 프로세스가 즉시 크래시(런타임 에러로 앱이 기동 직후 종료됨).
- 파일 경로/권한 문제 혹은 엔트리 파일 이름 오류.
- 포트 충돌이나 자원(메모리/CPU) 부족으로 프로세스가 시작하지 못함.
해결 방법
1단계: 핵심 정보와 로그 수집
문제를 해결하려면 우선 정확한 로그와 환경 정보를 준비해야 한다. 아래 항목을 포함해서 제공하면 원인 파악이 빨라진다.
- 사용 언어/런타임: 예:
Node.js 18,Python 3.10 - 발생한 오류(전체 로그, 에러 스택): 반드시 코드블록으로 첨부
- 시도해 본 해결 방법: 예:
npm install실행, 환경변수 재설정 등 - 원하는 결과: 예: 봇이 온라인으로 접속
예시 템플릿:
1) 언어/환경: Node.js 18
2) 로그(전체): <여기에 로그를 붙여주세요, 백틱 3개 사용>
3) 시도한 방법: npm install, package.json start 확인
4) 원하는 결과: 봇이 온라인으로 켜지길 원함
로그를 붙일 때는 반드시 triple backticks 사용:
# 예: 디스호스트 콘솔 로그 복사 예시
[2026-04-22T10:00:00Z] Error: Cannot find module './src/index.js'
at Module._resolveFilename (internal/modules/cjs/loader.js:...)
2단계: 직접 점검 절차
-
시작 커맨드 확인
package.json이 있는 Node.js라면scripts.start확인:{ "scripts": { "start": "node src/index.js" } }- 디스호스트에 등록한 커맨드가 이와 일치하는지 확인.
-
로컬에서 동일 명령 실행
- Node.js:
node src/index.js또는npm start - Python:
python bot.py - 실행 시 발생하는 에러를 복사해 디스호스트 로그와 비교.
- Node.js:
-
의존성 설치 확인
- Node:
npm install - Python:
pip install -r requirements.txt
- Node:
-
환경변수(토큰) 점검
- 봇 토큰이 배포 환경에 정확히 설정되어 있는지 확인(
DISCORD_TOKEN등). - 코드 내에서 환경변수 접근 방식(
process.env.DISCORD_TOKEN)이 올바른지 확인.
- 봇 토큰이 배포 환경에 정확히 설정되어 있는지 확인(
-
로그 레벨 올리기
- 추가 로그(
console.log, 로깅 라이브러리)를 넣어 어느 지점에서 종료되는지 확인. - 디스호스트 콘솔에서 실시간 로그를 복사해서 붙여 분석.
- 추가 로그(
-
권한·파일경로·포트 확인
- 엔트리 파일 경로가 정확한지 확인.
- 포트를 사용하는 애플리케이션은 디스호스트 정책에 맞는지 검토.
- 파일 권한 문제라면 권한을 수정.
-
재배포 및 모니터링
- 수정 후 재배포하고 콘솔 로그를 모니터링. 프로세스가 즉시 종료되면 에러 스택을 붙여서 재검토.
마무리
핵심은 전체 로그와 환경 정보를 정확히 수집해 단계별로 재현하는 것이다. 디스코드 봇 호스팅을 디스호스트에 올릴 때는 시작 커맨드, 의존성 설치, 환경변수(토큰) 세 가지를 먼저 점검하면 대부분 문제를 빠르게 해결할 수 있다.