디스코드 봇 무료 호스팅 시작 직후 크래시 해결법

2026년 2월 10일·6개 메시지

무료 호스팅 환경에서 디스코드 봇을 올렸을 때 시작 후 몇 초 만에 꺼지는 현상과 로그에서 can't open file '/home/container/app.py' 에러가 나오는 문제를 직접 겪고 정리한 가이드다. 원인 파악부터 패치까지 단계별로 따라 하면 빠르게 복구할 수 있다.

증상

  • 서버가 시작 직후(약 3초 이내) 자동으로 종료(크래시)됨.
  • 로그에 패키지 설치 메시지 이후 다음과 같은 에러가 출력됨:
    /usr/local/bin/python: can't open file '/home/container/app.py': [Errno 2] No such file or directory
    
  • 호스팅 데몬에서 Exit code: 2 로 종료 처리됨(자동 재시작이 중단됨).

원인

  • 시작 명령에서 실행할 파이썬 파일을 절대 경로 /home/container/app.py로 지정했는데 해당 경로에 파일이 없어서 발생.
  • 배포할 때 메인 파일명이 bot.py, main.py, index.py 등으로 다르거나, 파일이 하위 디렉터리(예: src/)에 존재해 경로 불일치가 발생함.
  • 호스팅 패널의 시작 변수(STARTUP_FILE 또는 패널별 "App py file") 기본값이 app.py로 설정되어 있어 파일명이 맞지 않으면 같은 에러가 난다.
  • 대소문자 구분, 확장자 오타, 파일 위치(루트가 아닌 서브폴더)도 원인이 될 수 있다.

해결 방법

1단계: 파일 존재 여부와 위치 확인

컨테이너 쉘 접근 또는 호스팅 파일 관리자에서 현재 파일 구조를 확인한다.

  • 쉘에서 확인:
# 컨테이너 루트에서 파일 확인
ls -la /home/container
# 특정 이름 검색
find /home/container -maxdepth 3 -type f -name "*.py"
  • 확인 항목:
    • 메인 봇 파일명(예: bot.py, main.py) 확인
    • 파일이 /home/container 루트에 있는지, 하위 폴더에 있는지 확인
    • 파일명 대소문자 및 확장자 .py 체크

2단계: 간단한 패치 — 파일명 맞추기 또는 심볼릭 링크

가장 빠른 해결은 호스팅이 기대하는 파일명으로 바꾸는 것.

  • 파일명 변경:
# 예: bot.py -> app.py
mv /home/container/bot.py /home/container/app.py
  • 심볼릭 링크로 연결(파일을 그대로 두고 실행 파일명만 맞출 때):
cd /home/container
ln -s bot.py app.py

이 방법으로 즉시 /usr/local/bin/python /home/container/app.py 호출 시 파일을 찾게 된다.

3단계: 권장 방법 — 호스팅 시작 설정 수정

파일명을 변경하지 않으려면 호스팅 패널의 시작 설정을 본인의 메인 파일명으로 바꾼다.

  • 패널에서 찾을 항목: Startup 또는 Start 설정 → App py file 또는 STARTUP_FILE 변수 항목.
  • 예: app.py 대신 bot.py 또는 src/main.py 등 실제 경로로 변경.
  • 변경 후 서버 재시작.

4단계: 추가 점검 사항

  • 파이썬 버전: 호스팅에서 사용하는 Python 버전이 코드 요구사항(예: 3.12 등)과 일치하는지 확인.
  • 의존성: 로그에 pip 설치가 정상인지 확인. 부족하면 requirements.txt로 설치하거나 PY_PACKAGES 변수에 패키지 추가.
  • 실행 권한: 스크립트를 직접 실행하는 경우 chmod +x app.py 또는 올바른 shebang 사용 확인.
  • 환경 변수: 디스코드 봇 토큰 등 필수 환경변수가 설정되어 있는지 확인.
  • 로컬에서 확인:
python bot.py
# 또는
python /home/container/app.py

로컬에서 정상 실행되는지 먼저 확인하면 원인 파악이 쉬워진다.

마무리

시작 직후 크래시의 핵심 원인은 시작 명령이 가리키는 파일 경로와 실제 파일 위치/이름 불일치다. 파일을 app.py로 맞추거나 호스팅의 App py file 설정을 실제 파일명으로 변경하면 빠르게 해결된다. 디스코드 봇을 무료 호스팅에 올릴 때는 파일 구조와 시작 변수값을 항상 먼저 확인하자. 디스호스트 환경에서도 동일한 절차로 복구 가능하다.