DYLARIS: 자체 호스팅 마인크래프트 서버 패널 (단일 박스부터 다중 노드 Docker Swarm까지 지원하며, 내장 DDNS 업데이트
요약
DYLARIS는 Go 백엔드와 Next.js 패널로 구성된 자체 호스팅 마인크래프트 서버 관리 패널입니다. Docker Compose부터 다중 노드 Docker Swarm까지 지원하며, PostgreSQL과 Redis를 활용해 안정적인 아키텍처를 제공합니다. 모드팩 설치, 권한 시스템, DDNS 업데이트 등 전문적인 기능을 갖추고 있습니다.
핵심 포인트
- Docker Compose 및 Swarm을 지원하여 유연하고 확장 가능한 배포 환경을 제공합니다.
- PostgreSQL과 Redis/Valkey를 사용하여 Core와 노드 간의 안정적인 통신을 보장합니다.
- Modrinth 통합 기능을 통해 모드팩 검색, 설치 및 자체 팩 구축이 용이합니다.
- Beam 데스크톱 앱은 인증서 고정형 gRPC로 안전하고 효율적인 노드 연결을 지원합니다.
- DDNS 업데이트 기능과 S3 호환 백업을 내장하여 운영 편의성을 높였습니다.
제가 개발자입니다. DYLARIS는 사용자가 직접 운영하는 마인크래프트 서버 패널입니다. Go 백엔드(Core), Next.js 패널, 그리고 각 기기(노드)에서 서버를 Docker 컨테이너로 실행하는 작은 Go 에이전트로 구성되어 있습니다.
스택 및 설정 (Stack and setup):
설치: 사용자의 환경에 대해 질문하고 스택을 생성해주는 설치 스크립트를 사용하거나, Docker Compose(단일 호스트) 또는 Swarm 스택 파일(여러 호스트)로 수동 설정할 수 있습니다.
데이터베이스 (Database): PostgreSQL을 사용하며, 메트릭스 기록에는 TimescaleDB가 권장됩니다. 내장되거나 기존에 가지고 있는 것을 사용할 수 있습니다.
Redis/Valkey: Core와 노드 간의 통신을 담당합니다. ACL(Access Control List)은 필수입니다. 모든 노드는 자신만의 Redis 사용자를 할당받아 자신의 키만 건드릴 수 있고 필요한 명령어만 실행할 수 있도록 합니다.
Docker 및 경량화 (Docker and lightweight):
Core와 패널은 단일 컨테이너이며, 상태 비저장(stateless)이므로 로드 밸런서 뒤에 여러 개를 운영할 수 있습니다. 파일 저장을 위해 여러 복제본(replica)을 허용하기 전에 Core는 실제로 공유하는지 확인합니다.
기능 (Features):
다중 노드, 다중 사용자: 서버를 Swarm의 여러 기기에 분산 배치하고, 특정 서버 또는 모든 서버에 사람들을 초대할 수 있습니다.
권한 시스템: 승인/거부(grant/deny) 기능과 함께 약 50개의 개별 권한, 스태프용 서버 역할 및 패널 역할을 제공합니다.
패널 내 Modrinth: 모드와 플러그인을 검색하고 서버에 바로 설치할 수 있으며, 로더 인식 업데이트 및 설치 전 Java 확인 기능을 제공합니다.
모드팩 (Modpacks): Modrinth 모드팩을 한 번의 단계로 서버에 설치하거나, 패널에서 자체 팩을 구축하여 Modrinth에 게시할 수 있습니다.
모드 로더 (Mod loaders): Paper, Vanilla, Fabric, Forge, NeoForge 및 일반적인 프록시를 라이브 버전 목록에서 지원합니다.
파일 관리: 에디터가 포함된 브라우저 파일 관리자, 노드에서의 SFTP, 또는 Beam 데스크톱 앱을 사용할 수 있습니다.
Beam 데스크톱 앱: 인터넷이나 로컬 네트워크(LAN)를 통해 인증서 고정형 gRPC(certificate-pinned gRPC)로 노드와 직접 통신합니다. 만약 노드의 LAN 주소에 접근 가능하다면 자동으로 이를 사용하므로, 가정 네트워크에서 대용량 업로드 시 데이터가 외부로 나갔다가 다시 들어오는 일이 없습니다.
DDNS 업데이트기: 서버에 survival.example.com과 같은 이름을 부여할 수 있습니다.
코어는 DNS 제공업체(Cloudflare, Hetzner, deSEC, Porkbun, OVH 등, libdns를 통해)에 A 및 SRV 레코드를 작성하고 공인 IP가 변경될 때 이를 이동시킵니다. 자신이 생성하지 않은 레코드에는 절대 손대지 않습니다. 또는 사용자가 직접 DNS를 가져오면 패널이 해당 레코드를 확인해 줍니다.
사용자 지정 탭 및 공유 링크: 지도 플러그인의 웹 UI(squaremap, BlueMap, Dynmap)나 모든 URL을 패널에 탭으로 넣고, 공개 또는 로그인 전용 링크로 공유할 수 있습니다.
백업 및 S3: 로컬 디스크 또는 모든 S3 호환 버킷으로 예약된 백업이 가능하며, 플레이어가 온라인 상태일 때는 속도가 느려집니다. 원격 연결 없음(No phoning home): 계정, 라이선스 키, 텔레메트리(telemetry)가 없습니다. 업데이트는 새로운 이미지로 이루어집니다.
제한 사항: Docker가 필수입니다. 마인크래프트 전용입니다. Pterodactyl 가져오기 기능은 없습니다. Modrinth를 사용하며, CurseForge는 아닙니다(아직). 노드는 서로 직접 연결되어야 하며, NAT 뒤에 있는 장치를 위한 자체 호스팅 터널은 아직 없습니다.
AI 공개: 코드는 Claude Code(Anthropic의 Claude Opus 모델)를 사용하여 작성되었습니다. 저는 제품과 아키텍처를 설계하고, 사양을 작성하며, 변경 사항을 검토하고 수동 테스트를 실행했습니다. 모델이 구현 및 테스트를 작성했습니다.
레포 및 문서: https://github.com/dylaris-dev/platform, 제출자: /u/callmeBartis [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기