Eggs & Docker 이미지
Daki Portal의 egg와 Docker 이미지 차이, 둘이 함께 작동하는 방식, 그리고 사용할 수 있는 보안 패치된 Daki Yolks 이미지를 알아보세요.
Portal에서 서버를 설정할 때 서로 관련된 두 개념인 egg와 Docker 이미지를 만나게 돼요. 둘의 차이를 이해하면 서버를 올바르게 설정할 수 있어요.
배울 내용
- egg가 무엇이고 무엇을 제어하는지
- Docker 이미지가 무엇이고 어떻게 알맞은 것을 고르는지
- egg와 Docker 이미지가 함께 작동하는 방식
- 사용할 수 있는 Node.js 및 Python 버전과 Daki가 이들에 패치를 적용하는 방법
- 각각 언제 바꿔야 하는지
egg란 무엇인가요?
egg는 실행 중인 서버의 전반적인 종류를 정의하는 서버 템플릿이에요. 다음을 지정해요:
- 어떤 프로그래밍 언어나 프레임워크를 사용하는지
- 고를 수 있는 Docker 이미지가 무엇인지
- 기본 시작 명령 템플릿
- 어떤 시작 변수와 기본값이 미리 설정되어 있는지
- 새로 설치할 때 어떤 파일이 만들어지는지
Daki에서 사용할 수 있는 egg의 예:
- Node.js — JavaScript 애플리케이션과 Discord 봇용
- Python — Python 애플리케이션과 Discord 봇용
- Java — Java 애플리케이션용 (유료 플랜에서 사용 가능)
- Rust — Rust 애플리케이션용 (유료 플랜에서 사용 가능)
- Minecraft Java — Minecraft 게임 서버용 (게임 서버 플랜)
서버를 만들 때 egg를 고르게 돼요. Free Tier에서는 Node.js와 Python egg만 사용할 수 있어요. 유료 플랜에서는 추가 egg를 사용할 수 있어요.
기존 서버의 egg를 바꾸려면 Settings 탭으로 이동하세요. egg를 바꾸면 재설치가 실행되므로, 그 전에 파일 백업을 만들어 두기를 강력히 권장해요.
Docker 이미지란 무엇인가요?
Docker 이미지는 서버가 그 안에서 실행되는 런타임의 특정 버전이에요. egg가 언어를 정한다면, Docker 이미지는 버전을 정해요.
예를 들어 Node.js egg는 Node.js 22, 24, 26을 제공하고, Python egg는 Python 3.11부터 3.15까지 제공해요. Docker 이미지는 Startup 탭에서 선택해요.
Daki Yolks: 보안 패치된 이미지
Free Tier와 유료를 포함한 Daki의 모든 Node.js 및 Python 서버는 Daki Yolks에서 실행돼요. 대부분의 Pterodactyl 호스트가 사용하는 커뮤니티 이미지를 그대로 대체할 수 있도록 저희가 직접 만든 Docker 이미지예요. 커뮤니티 이미지는 아주 드물게만 다시 빌드되기 때문에 보안 수정이 몇 달씩 늦어질 수 있어요.
- 항상 패치됨. 6시간마다 새로운 공식 Node.js 또는 Python 기본 이미지가 나왔는지 확인하고, 영향을 받는 버전을 다시 빌드해요. 일주일에 한 번은 모든 이미지를 다시 빌드해 운영체제 업데이트(Debian 13)를 반영해요.
- 호환됨. 이전과 같은 도구, 진입점, 동작을 제공하므로 봇은 계속 작동해요. Node.js 이미지에는
git,ffmpeg,sqlite3,build-essential,python3,typescript,ts-node가 포함되어 있고, Python 이미지에는gcc,g++,git,ffmpeg가 포함되어 있어요. - 검증됨. 모든 이미지는 공개되기 전에 Portal이 시작하는 방식 그대로 실제 TypeScript 또는 Python 프로그램을 시작하고 실행해야 해요.
- 오픈 소스. 이미지는 MIT 라이선스에 따라 GitHub에 공개되어 있어요.
| 런타임 | 버전 | 지원 종료일 |
|---|---|---|
| Node.js | 26 | 2029년 4월 |
| Node.js | 24 | 2028년 4월 |
| Node.js | 22 | 2027년 4월 |
| Python | 3.15 | 2031년 10월 |
| Python | 3.14 | 2030년 10월 |
| Python | 3.13 | 2029년 10월 |
| Python | 3.12 | 2028년 10월 |
| Python | 3.11 | 2027년 10월 |
재시작하면 업데이트돼요. 다시 빌드해도 이미지 이름은 그대로예요. 실행 중인 서버는 재시작하기 전까지 현재 이미지를 유지하고, 다음 시작 때 자동으로 최신 패치 버전을 받아요. 파일은 건드리지 않아요.
이전 (지원 종료) 버전
Node.js 18~21, 23, 25와 Python 3.9, 3.10은 개발사로부터 더 이상 보안 수정을 받지 못해요. 기존 프로젝트가 계속 실행될 수 있도록 여전히 선택할 수 있지만, 이미지 목록에서 EOL - no security updates로 표시되며 저희가 다시 빌드하지 않아요. 가능하면 지원되는 버전으로 옮기세요.
새 메이저 버전으로 바꿀 때(예: Node.js 20 → 24 또는 Python 3.10 → 3.13)에는 의존성을 다시 설치하세요. npm rebuild를 실행하거나 node_modules를 삭제한 뒤 npm install을 다시 실행하고, Python 가상 환경도 다시 만드세요.
둘이 함께 작동하는 방식
이렇게 생각하면 쉬워요:
| 개념 | 비유 | 설정 위치 |
|---|---|---|
| egg | Python으로 작성하기로 선택하는 것 | Settings 탭 (또는 서버 생성 시) |
| Docker 이미지 | Python 3.12와 3.13 중 고르는 것 | Startup 탭 |
egg는 한 번 고르고(또는 드물게 바꾸고), 프로젝트에 다른 버전이 필요할 때마다 Docker 이미지를 조정하면 돼요.
각각 언제 바꿔야 할까요?
Docker 이미지를 바꿔야 할 때:
- 더 새로운 런타임 버전이 필요할 때(예: 지원이 끝난 Node.js 20에서 Node.js 24로 올릴 때)
- 프로젝트가 호환성을 위해 특정 마이너 버전을 요구할 때
egg를 바꿔야 할 때:
- 프로그래밍 언어를 완전히 바꾸고 싶을 때(예: Node.js에서 Python으로)
- 다른 기본 설정이나 미리 정의된 설치 구성이 필요할 때
egg를 바꾸면 재설치가 실행돼요. 보통 파일이 자동으로 삭제되지는 않지만, 일부 파일이 덮어쓰기 될 수 있고 호환되지 않는 설정이 생길 수 있어요. egg를 바꾸기 전에 백업을 강력히 권장해요. 서버 설정을 참고하세요.
자주 묻는 질문
Discord 봇에는 어떤 egg를 써야 하나요?
Discord.js/JavaScript 봇에는 Node.js egg를, discord.py/Python 봇에는 Python egg를 사용하세요.
필요한 Docker 이미지가 목록에 없으면 어떻게 하나요?
사용 가능한 이미지는 egg에 따라 정해져 있어요. 필요한 버전이 보이지 않으면 지원팀에 문의하세요 — 요청하면 추가 이미지를 제공할 수도 있어요.
이미지에 'EOL - no security updates'라고 나와요. 어떻게 해야 하나요?
해당 버전은 개발사가 더 이상 유지하지 않아요. 서버는 계속 작동하지만 보안 패치를 받지 못해요. Startup 탭에서 지원되는 버전(Node.js 22, 24, 26 또는 Python 3.11~3.15)을 선택하고, 의존성을 다시 설치한 뒤 재시작하세요.
최신 보안 패치는 어떻게 받나요?
서버를 재시작하세요. 수정이 나오면 Daki Yolks가 자동으로 다시 빌드되고, 서버는 다음 시작 때 새 빌드를 받아요.
Docker 이미지를 바꾸면 파일이 삭제되나요?
아니요. (Startup 탭에서) Docker 이미지만 바꾸는 것은 파일에 영향을 주지 않아요. (Settings 탭에서) egg를 바꿀 때만 재설치가 실행돼요.
다음 단계
- 시작 설정 — Docker 이미지를 선택하고 시작 명령을 설정하세요.
- 서버 설정 — egg를 바꾸거나 서버를 재설치하세요.
- Discord.js 봇 배포하기 — Node.js용 처음부터 끝까지의 배포 가이드예요.
- Python 봇 배포하기 — Python용 처음부터 끝까지의 배포 가이드예요.