Synology NAS 에서 마인크래프트 베드락 서버 구축

이번 글은 제가 사용중인 NAS 인 Synology 사의 DS920+ 에서 마인크래프트 베드락 서버를 운용하는 방법에 대해 소개시켜 드릴까합니다. NAS 가 아니라도, Docker 패키지 설치 가능한 곳이라면 전부 적용 가능하구요.

설치에 앞서, 베드락 에디션 대해 가볍게 말씀드릴께요.


베드락 에디션(이하 BE)이란?

여러 플랫폼들에서 C++ 개발되던 에디션들, 데스크탑의 윈도우 10 에디션, 모바일의 포켓 에디션, 여러 콘솔 기기들의 콘솔 에디션들을 통합한 버전입니다. C++ 로 작성된 만큼 초기 버전인 자바 에디션 대비 최적화가 매우 좋다고 하며, 보다 자세한 내용은 위키 백과(여기)에 기술 되어 있습니다.

멀티 플랫폼 통합, 좋은 최적화... 좋네요. 몇년전 꽤 괜찮은 성능의 데스크탑에서 자바 에디션(이하 JE) 서버를 운용해본 적 있는데, 생각보다 리소스를 잡아먹었던 기억이 있습니다. 이번엔 별도 플러그인이나 모드 없이 바닐라 BE 서버를 운용할꺼라 당연히 리소스를 덜 소모하겠지만, 어느 정도일지 궁금하네요.

가족, 지인들과 데스크탑, 모바일, 플스 등 플랫폼 구분 없이 함께 즐기려는데 DS920+ 에서 잘 돌릴 수 있었으면 좋겠습니다. 설치 방법은 다음과 같습니다.


Docker 로 베드락 서버 설치 및 구동 하기

Synology 에서 제공하는 Docker 패키지는 Docker 관련된 기능들을 사용할 수 있는 별도의 UI 를 제공합니다만, CLI 를 사용하는게 편합니다. 따라서 설치는 CLI 로 진행할예정입니다.  CLI 로 다운 받은 이미지나 생성된 컨테이너들은 UI 로 작업한 것과 동일하며, 따라서 추후 UI 에서 관리할 수도 있습니다.

서버로 사용할 이미지는 Docker Hub 에서 minecraft, bedrock 등의 키워드로 검색 후 가장 별점이 높았던 이미지인 itzg/minecraft-bedrock-server 입니다.

다음은 이미지 다운부터, 컨테이너 생성 및 수행까지 한번에 수행하는 명령입니다. 또한 환경 변수로 BE 서버 설정값들을 전달해주고 있고, 이미지의 엔트리포인트 스크립트에 서버 구동까지 포함되어 있어, 설정한 서버 설정값대로 서버 구동까지 자동으로 수행됩니다.

여기서 수정이 필요하거나 가능한 옵션들은 빨간색 글씨로 표시했고, 아래 설명에 따라 목적에 맞게 수정 또는 삭제 해주시면 됩니다. 보기편하게 \ 으로 개행했고, 수행시에는 이대로 또는 \ 지우고 한줄로 수행하셔도 됩니다.

Docker 호스트(여기선 NAS)의 터미널에 접속한 후 다음과 같이 수행합니다. 단, 저와 같이 DS920+ 등의 Synology NAS 에서 수행하는 경우, sudo 로 root 권한 일시 획득이 아닌 root 계정으로 스위칭한 후 수행해야 DSM 의 Docker UI 에서도 생성된 컨테이너를 확인할 수 있습니다.

$ sudo su -
Password:
# docker run -d -it \
-p 19132:19132/udp \
-v /volume1/docker/minecraft_server:/data \

-e EULA=TRUE \
-e SERVER_NAME="이룸's 세상" \
-e GAMEMODE=survival \
-e DIFFICULTY=normal \
-e LEVEL_TYPE=DEFAULT \
-e ALLOW_CHEATS=false \
-e VIEW_DISTANCE=24 \
-e TICK_DISTANCE=8 \
-e MAX_THREADS=0 \
-e LEVEL_SEED=-27149278 \
-e DEFAULT_PLAYER_PERMISSION_LEVEL=member \

itzg/minecraft-bedrock-server

각 옵션별 의미는 다음과 같습니다.

  • -p 19132:19132/udp - Docker 호스트(여기선 NAS)와 컨테이너간 포트 맵핑 설정. BE 서버는 19132 포트를 디폴트로 사용하므로(필요 시 변경은 가능함), 빨간색 필드의 값만 목적에 따라 수정. 마인크래프트 클라이언트에서 서버 접속 시 사용할 포트임.
  • -v /volume1/docker/minecraft_server:/data - Docker 호스트(여기선 NAS)와 컨테이너 간 월드 등의 데이터 공유를 위한 볼륨 맵핑 설정. 컨테이너 내 /data 경로에 서버 프로그램과 월드가 저장되므로, 해당 경로와 맵핑될 Docker 호스트의 경로를 빨간색 필드의 값으로 설정. 이때, 존재하는 경로를 설정해야 함.
  • -e {필드명}:{필드값} - 본 옵션들은 BE 서버의 server.properties 내의 설정 항목들에 대응하는 옵션들임. 위 명령의 설정값들은 예시이고, 목적에 따라 본 이미지의 매뉴얼(링크)을 참고하여 추가 및 변경.

명령 수행 후 컨테이너가 잘 구동되었는지 다음 명령으로 확인이 가능합니다. STATUS 컬럼의 값이 Up 인 경우 정상적으로 구동 중이라는 뜻입니다.

$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
...
999a451405f2 itzg/minecraft-bedrock-server "/usr/local/bin/entr…" 6 minutes ago Up 6 minutes (healthy) 0.0.0.0:19132->19132/udp youthful_kepler
...



서버 커맨드 수행

특정 유저의 롤 변경(op 권한 부여 등) 같은 서버 명령을 수행하고 싶은 경우 docker attach 명령으로 컨테이너에 접속 후 수행하면 됩니다. 명령 중 빨간색 필드는 docker ps 로 확인한 컨테이너의 ID 또는 NAME 을 입력하면 되고, 구분만 된다면 각 값의 일부분만 입력하셔도 됩니다. 종료는 Ctrl + p, Ctrl + q 를 순서대로 눌러서 컨테이너를 detach 시키면 됩니다.

다음은 docker attach 로 서버 컨테이너에 접속하여 'help 1' 이라는 명령을 수행한 결과입니다.

$ sudo docker attach 999a451405f2
DEBU[0585] Forwarding signal signal="window changed"
DEBU[0585] Forwarding signal signal="window changed"
help 1
§2--- Showing help page 1 of 3 (/help ) ---
/? [command: CommandName]
/?
/deop
/gamerule
/gamerule [value: Boolean]
/gamerule [value: int]
/help [command: CommandName]
§2Tip: Use the key while typing a command to auto-complete the command or its arguments



서버 버전 업데이트

이번 글에서 사용하는 BE 서버 이미지(itzg/minecraft-bedrock-server)는 특정 서버 버전으로 운용할 수도 있지만(GitHub 의 매뉴얼 참조), 저처럼 바닐라 서버로만 운용하는 경우는 항상 최신 버전으로 운용하는게 일반적일꺼예요. 해당 이미지는 컨테이너 구동 시마다 매번 서버 업데이트를 시도하기 때문에, 다음 명령으로 컨테이너만 재구동 시켜주면 됩니다. 명령 중 빨간색 필드는 서버 컨테이너의 ID 또는 NAME 을 입력해주시면 됩니다.

$ sudo docker restart 999a451405f2



포트 포워딩 설정

대부분 아시겠지만 혹시몰라 내용 추가합니다. BE 서버를 구동중인 망 외부에서 접근하는 경우, 포트 포워딩 설정이 필요할 수 있습니다. 포트 포워딩 설정은 공유기마다 다르기에 자세히는 기술하지 않겠지만 설정되어야 하는 값은 다음과 같습니다.

  • IP      : Docker 호스트(여기선 NAS)의 IP.
  • 포트    : 서버 구동 시 설정했던 포트 옵션 중 빨간색 필드의 값으로 설정했던 포트를 지정.
  • 프로토콜: UDP.


구동 확인

마인크래프트 클라이언트에서 확인해보면 잘 동작하는것을 알 수 있습니다.

마인크래프트 서버 선택 화면
[마인크래프트 서버 선택 화면]
마인크래프트 게임 화면
[마인크래프트 인게임 화면]


성능 확인

운용중인 서버의 설정 중 성능에 많은 영향을 미치는 항목들은(VIEW, TICK_DISTANCE, MAX_THREADS) 전부 최고로 설정해둔 상태에서, 클라이언트 하나만 붙여서 DSM 에서 성능 측정을 해보았습니다. (제 DS920+ 의 상세 스펙은 아래 * Environment 참고 부탁드립니다.)

CPU 의 경우, 붙이기 전후의 IDLE 상태 비교 시 2~3% -> 16~20% 으로 약 15% 정도 상승했고, 메모리의 경우는 15% -> 16% 으로 약 1% 정도 상능했습니다.

측정 결과로 보면 이 서버 설정에서의 동시 접속 인원은 대여섯명 정도가 한계일 것 같습니다. 제 경우 동시 접속 인원은 많아야 세명이라 충분할 것 같습니다만... 생각보다는 적은 수치네요.


* Environment

- HW: DS920+ (Synology NAS)
   - CPU: Intel Celeron J4125
   - RAM: 12 GB


* References

- 위키 백과: 마인크래프트 베드락 에디션
- Docker Hub: itzg/minecraft-bedrock-server
- GitHib: itzg/docker-minecraft-bedrock-server

14 thoughts on “Synology NAS 에서 마인크래프트 베드락 서버 구축”

  1. 안녕하세요.

    딸과 함께 마인크래프트를 하려고 검색을 하려다 방문하게 되었습니다.

    다름이 아니라 위 내용이 상당히 흥미롭고 뒤 내용처럼 하고 싶지만, 터미널이라던지 기타 설정을 하기에는 실력이 모자른 상태입니다.

    혹시나 괜찮으시다면 좀 더 쉽게 할수 있는 내용을 조금만 이라도 힌트같은 걸 주시면 안될까요?

    초면에 죄송합니다.

    코로나 조심하시고 좋은 하루 보내시기 바라겠습니다.

    응답
      • 우선 NAS 쪽에서 아래 두 단계 준비 필요하구요
        1) 패키지 센터에서 Docker 패키지 설치
        2) 제어판 - 터미널 및 SNMP - SSH 서비스 활성화

        다음으로는 NAS 터미널에 접속 위해 같은 네트웍 상에 있는 PC 에서 작업 필요합니다
        1) putty 나 xshell 같은 터미널 설치
        2) 터미널 프로그램에서 NAS 로 ssh 연결

        ssh 연결 방법은 터미널 프로그램마다 조금씩 다를껀데, 접속할 서버 주소(NAS 주소)와 접속 타입(ssh) 만 설정해주시면 될꺼예요
        ssh 연결 시 사용되는 계정은 NAS 계정이고, 접속 이후에는 본문 내용대로 진행해주시면 될 것 같습니다

        아.. 혹시 NAS가 외부망에서 직접 연결이 가능하다면 혹시 모를 공격 위험이 있으니 ssh 연결 활성화는 필요할 때만 하시고 평소에는 꺼두시는걸 권장드립니다.

        응답
        • 안녕하세요.
          시놀로지 916+ 유저이고
          6살 아들과 사촌 조카(외부접속)와 마크를 같이 즐길 수 있게 해주고 싶습니다.
          컴맹수준이여서 putty와 xshell 차이점과 설치는 NAS에 어떻게 설치 해야는지 등등
          궁금한게 많습니다. 뭐 다른 설정하는 방법도 하나도 모르겠구요.

          익명 718 유저님은 잘 작동시켰나 모르겠네요.
          어떻게 쉽게 설명이 안될까요?

          응답
        • 정말 감사합니다.

          덕분에 무사히 설치 완료했습니다.
          (설정 옵션도 같이 배웠습니다.)

          항상 좋은일 가득하시기 바라겠습니다.

          응답
  2. 막상 해보시면 크게 어렵지는 않으실꺼예요

    NAS 에서 준비
    1) 패키지 센터에서 Docker 패키지 설치
    2) 제어판 - 터미널 및 SNMP - SSH 서비스 활성화

    NAS 와 같은 네트웍 상에 있는 PC 에서 작업
    1) putty 또는 xshell 같은 터미널 설치
    -> 일단은 구하기 쉬운 putty 추천드립니다
    2) 터미널 프로그램에서 NAS 로 ssh 연결

    putty 수행시키신 후 접속할 서버 주소는 NAS 를, 접속 방법은 ssh 로 설정 하시면 NAS 터미널에 접속하실 수 있어요.

    NAS 터미널 접속되었다면, 본문 참고하셔서 진행하시면 되는데요 본문 중 docker run -d... 이렇게 시작하는 명령이 마크 서버 다운부터 구동까지를 한번에 수행하는 명령입니다. 나머지는 관리자 명령수행, 서버 업데이트등의 추가적인 동작에 필요한 명령 들이구요

    응답
  3. 너무 황당하시겠지만 너무 궁금하고 답답해서 여쭙니다..ㅠ.ㅠ
    나스를 구입하고 가족사진 올리고 보는용도로 밖에 사용 못하느 나린이 입니다...
    나스에 docker 라는 것을 깔았습니다.
    그다음부터 뭔 말인지 하나도 모르겠습니다....
    나스서버를 운영해본 사람들이야 간단한 과정 다 빼버려도 대충 무슨 말 하는지 아시겠지만
    저 처럼 나스서버 초보에게는 대체 도커허브에 들어가서 서버 다운받는 방법이라든가
    이미지를 다운받아서 어디에 설치하라던가 나스와 컴퓨터를 어떻게 연결해서 어떤창에 저런 명령어를 한꺼번에 입력하거나 한줄한줄 입력하고 엔터치고 하라는건지... 그냥 기초이론이야 하나하나 정리하자면 힘드니 왠만한 기초지식은 알고 봐야하는건지...
    쉽게 말씀드리자면 너무 죄송하게도 나린이 서버린이같은 제가 보기에는 문장에 중간중간 조사가 하나도 없게 보입니다...이건 좀 공부해본 사람들의 컨닝페이퍼 처럼 암기한 내용 떠올리는데 도움이 될만한 중요부분만 나열된거라 공부안한 제겐 그저 그림에 떡이네요... 참 슬픕니다.
    줘도 못먹는 심정이라 할까요...쩝쩝...ㅠ.ㅜ
    이렇게 하면 마크서버가 열리는건가요?
    마크 아들이 하는것 보고 나스가 있어서 구동 시켜보고 싶은 마음에 님 글을 보게 되었네요

    응답
  4. 안녕하세요.

    배드락 서버 구축과 접속은 다 정상적으로 작동을 합니다..

    그런데 서버 설정은 attach 명령어로 어떻게 하는지 알려주시면 감사하겠습니다.

    현재 하고 싶은건 유저에게 관리자 권한을 주고 싶은데,, 어떻게 하는지 모르겠네요..

    관리자 권한을 주면 게임설정을 변경할수 있는거죠?

    응답
  5. 1.17.1 버전인데, 19132로 포트포워딩 해도 외부에서는 접속이 되지 않네요. 혹시 동일증상 겪으신적 있으세요?

    응답
    • 저도 같은 증상이에요. telnet 으로 테스트 해보면 바로 튕기고요.
      포트 열려있는지 확인 하는 사이트에서도 포트는 열려 있다고 나오는데
      외부 접속이 안되네요.

      응답
  6. 아주 흥미롭네요..
    이게임을 하지는 않으나 나스를 이런용도로도 사용할수 있다니 정말대단합니다..
    아참 그리고 아랫글 'docker ubuntu 및 ssh 서버 설정' 많은 도움 되었습니다. 감사합니다.

    응답

Leave a Comment

%d 블로거가 이것을 좋아합니다: