단, 도커가 이미 설치되어 있고 원격으로 지인끼리 즐기기 위해서 클라우드는 방화벽 설정 또는 공유기에서 포트 포워딩 설정이 추가로 필요합니다.

개요

코로나로 외출이 쉽지 않은 상황에서 아이들은 집에서 탁주쪼꼬 마인크래프트 유튜브를 즐겨 보고 있는 중이었다. 동네 친구로 부터 아이들이 각자 집에서 원격으로 함께 게임할 수 있는 서버 하나 만들어 보라는 말에 선뜻 구축을 시작합니다. 결론은 제목처럼 10초 만에 만들 수 있었지만 정보를 찾고 공유하기 까지는 하루정도 많은 시행착오를 거쳤다. 결국 아이들이 아빠가 만들어준 서버에 접속해서 친구들과 신나게 게임을 하면서 아빠 최고! 라는 는 말을 듣고 뿌듯함과 하루의 노력이 아깝지 않았다. 저와 같이 필요한 분들에게 도움이 되면 좋겠습니다 :)

결론

최종으로 선택해서 즐기고 있는 도커 옵션은 다음과 같다. 실행하면 로컬에서는 바로 친구 목록에 서버가 보여지고 클라우드에서 실행하거나 포트 포워딩까지 해주면 서버 추가를 통해 전세계 어디서든 접속해서 게임을 즐길 수 있습니다.

$ docker run -d \
 --name mc \
 -p 19132:19132/udp \
 -v $HOME/bedrock_data:/data \
 -e EULA=TRUE \
 -e ALLOW_CHEATS=true \
 -e SERVER_NAME="마크서버" \
 -e GAMEMODE=creative \
 -e DIFFICULTY=easy \
 -e DEFAULT_PLAYER_PERMISSION_LEVEL=operator \
 itzg/minecraft-bedrock-server
  • --name mc : 실행할 도커 컨테이너명을 심플하게 mc 로 해서 편리하게 컨테이너 서버를 관리하기 위함
  • -p 19132:19132/udp : 컨테이너(서버)와 Host PC(로컬 머신) 간의 포트 포워딩 설정하고 참고로 마크서버는 19132 udp 포트를 사용합니다. (공유기나 방화벽 설정시 참고)
  • -v $HOME/bedrock_data:/data : 도커 컨테이너는 하나의 완전한 서버처럼 동작하므로 컨테이너 서버 안쪽에 마크 데이터가 쌓이게 되면 컨테이너를 삭제할 경우 게임 데이터까지 잃어버리게 됩니다. 따라서 안전하게 로컬 머신의 디렉토리를 마운트 해서 로컬 머신에 데이터가 생성되게 하고 필요시 다른 컴퓨터로 데이터를 백업하거나 이전할 수 있도록 합니다. 로컬 머신이 Ubuntu라고 가정하면 $HOME/bedrock_data 설정은 /home/ubuntu/bedrock_data 에 데이터를 저장하게되고 도커 컨테이너 안쪽에서는 /data 디렉토리에 해당 폴더가 마운트 되어 보여지게 됩니다. 윈도우 기준으로는 (C:\Users\사용자명\bedrock_data)
  • -e EULA=TRUE : 마크 서버 사용에 대한 End User License Agreement 에 동의한다는 뜻 (이후 -e 옵션은 컨테이너에 전달할 환경변수 - 마크 서버가 이 정보를 사용해 게임 옵션을 정함)
  • -e ALLOW_CHEATS=true : 게임시 채팅을 통해 치트키 사용 허용(예: 좌표보기, 순간이동등등.. 참고사이트)
  • -e SERVER_NAME= 서버 목록에 보여질 이름 - 자신만의 서버명을 정해보세요
  • -e GAMEMODE= survival, creative, or adventure 중에 선택
  • -e DIFFICULTY= peaceful, easy, normal, or hard  중 난이도 선택
  • -e DEFAULT_PLAYER_PERMISSION_LEVEL= visitor, member, or operator 중에 선택 operator 로 하면 게임 옵션, 난이도 등을 게임설정에서 변경 가능
  • itzg/minecraft-bedrock-server : 내려받아서 실행할 도커 이미지 (만들어 주신분 감사합니다!! 전체 옵션들도 참고: Github Minecraft Bedrock Dedicated Server)
로컬에서 실행중이 마크 서버 목록
서버 탭에서 추가 서버 등록하는 화면
추가 서버에 등록 후 서버 접속자와 상태 확인

서버 실행 조회

$ docker ps
CONTAINER ID IMAGE                           COMMAND                  CREATED             STATUS                  PORTS                      NAMES
ce86eb11a4a2 itzg/minecraft-bedrock-server   "/usr/local/bin/entr…"   10 hours ago        Up 10 hours (healthy)   0.0.0.0:19132->19132/udp   mc

추가 정보

  • 서버 업데이트: 앱이 최신으로 업데이트 되면 서버도 업데이트가 필요합니다. 현재(2021-01-10) 기준 서버버전: 1.16.201.02 이고 도커 재 시작시 자동 업데이트
# 서버 재 시작
$ docker restart mc

# 실행중인 서버 강제 삭제
$ docker rm -f mc
# 서버 실행 및 접속 로그보기(취소는 Ctrl + C)
$ docker logs -f mc

2021/01/09 23:56:08 Setting server-name to 마크서버-test in server.properties
Starting Bedrock server...
NO LOG FILE! - setting up server logging...
[2021-01-09 23:56:11 INFO] Starting Server
[2021-01-09 23:56:11 INFO] Version 1.16.201.2
[2021-01-09 23:56:11 INFO] Session ID 86a76a38-b7a5-49be-8090-ebd14ff1a72c
[2021-01-09 23:56:11 INFO] Level Name: Bedrock level
[2021-01-09 23:56:11 INFO] Game mode: 1 Creative
[2021-01-09 23:56:11 INFO] Difficulty: 1 EASY
[INFO] opening worlds/Bedrock level/db
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 not supported
[INFO] IPv4 supported, port: 33766
[INFO] IPv6 not supported
[INFO] Server started.
[INFO] Player connected: hibuz, xuid: 2532272938126403
[INFO] Player disconnected: hibuz, xuid: 2532272938126403