Nukkit은 Java로 구동되는 마인크래프트 서버입니다.  사촌이 마인크래프트 PE 시작한다길래 시놀로지 나스에 서버를 설치해봤습니다.  삽질하신 많은 분들의 블로그를 참고하여 저는 단 이틀만 삽질해서 성공했습니다.

처음에는 정은성님 블로그를 보고 따라하다가 막혀서, 그분 블로그를 보고 따라하다가 막혀서 중간에 살짝 다른방법으로 우회한 분의 블로그를 보고 따라하다가… 결국 잘 안되서 어쩌다보니 다른 방법으로 직접 성공했습니다.  정말 많은 시행착오가…

1. 설치할 패키지

Docker

JAVA8

도커로 설치할거니까 도커받고… Java로 구동되는거니까 Java도 받았습니다.

2. 마인크래프트 세이브 파일이 저장될 폴더 만들기

이 폴더를 만들고 나중에 도커와 연결시켜줘야 서버를 껐다킬때 맵도 안날아갑니다.

원하는 경로에 원하는 이름으로 만드시면 되는데 저는 /volume1/docker경로에 mcpe라는 이름으로 만들었습니다.

3. 만든 폴더의 권한 설정하기

SSH로 루트권한으로 접속하여 아래와 같은 코드를 넣어 권한설정해주면 됩니다.

/volume1/docker/mcpe 부분은 본인이 만든 폴더의 경로를 넣어주세요.

chmod -R 775 만든폴더경로
chown -R NAS아이디:administrators 만든폴더경로

SSH로 접속하는 법과 루트권한 획득하는법 모르겠으면 아래 포스팅 참고하세요.
시놀로지 나스 SSH로 접속하기.

https://chelly.kr/wp-content/uploads/sites/3/mcpe2.png

4. 도커로 nukkit 서버 설치하기

준비되셨으면 도커로 nukkit 서버를 설치해봅시다.

hub.docker.com에 nukkit을 검색하니 ixilon 님이 만든게 제일 위에 뜨는군요.  전 이걸로 설치했습니다.

위 이미지에 제가 하이라이트한 부분을 보시면 일단 첫번째 줄은 해당이미지를 설치하고 컨테이너를 실행하는 커맨드고, 두번째 줄은 마인크래프트 세이브파일이 저장되는 경로입니다.  일단 설치부터 해볼게요.  위 단계에서 켰던 putty를 끄지 마시구… 첫 번째 줄의 커맨드를 입력해줍니다.

docker run -it -p 19132:19132/udp ixilon/nukkit

run = 컨테이너를 새로 만드는 명령어
-it = 컨테이너 터미널로 들어가는 명령어
-p 19132:19132/udp = 도커밖 19132 udp포트를 도커안 19132 udp 포트로 포워딩하는 명령어

쨘~ 정상적으로 서버가 실행되고 언어를 선택하라고 합니다.  하지만 아직 할게 많이 남았어요.

5. 컨테이너 세이브파일 폴더 마운트하기

시놀로지 웹화면으로 돌아가서 docker패키지를 켜줍시다.  거기서 비디오형식(컨테이너) 탭에 들어가보시면 랜덤으로 생성된 컨테이너 이름이 하나 보입니다.  전 romantic_booth라는 이름으로 생겼네요.

스위치처럼 생긴 버튼을 눌러 컨테이너를 끄고 컨테이너를 선택한 뒤 편집을 눌러줍시다.

자동 재시작 활성화는 체크해주는게 좋겠죠?  저는 컨테이너 이름도 mcpe로 변경하겠습니다.

전 단계에서 봤던 두번째 하이라이트 했던 부분을 보시면.. /srv/nukkit 이라는 경로가 보입니다.  이걸 2단계에서 만든 폴더에 연결해줘야 서버를 껐다 켜도 데이터가 남아있습니다.

볼륨 탭에 들어가서 폴더 추가를 누르고 2단계에서 만드신 폴더를 선택하고 오른쪽 칸에 /srv/nukkit 을 넣어줍시다.

확인을 누르고 컨테이너를 다시 켭니다.

컨테이너를 선택하고 세부사항을 클릭한 뒤 로그 탭으로 이동하면 로그를 볼 수 있습니다.  저랑 똑같이하셨다면 아래와 같은 로그가 보일텐데 이 시점에서는 아직 언어를 선택하지 않아 마크서버가 시작이 안되었을겁니다.  실행중인 컨테이너에 들어가봅시다.

ssh에 루트권한으로 접속하여 다음 코드를 칩니다.

docker attach mcpe

mcpe는 제가 아까 설정한 컨테이너 이름입니다.  본인의 컨테이너 명을 대신 넣으세요.
attach는 실행중인 컨테이너로 들어가는 명령어입니다.
한국어는 kor 이었죠.  들어가면 kor 을 칩니다.

여기서 help를 누르시면 사용가능한 커맨드를 보실 수 있습니다.  커맨드에 대해서는 직접 보고 필요하신거 쓰시면 될 거 같습니다.

6. 플러그인 설치하기

제가 뭐 nukkit 플러그인에 별로 관심이 없어서 플러그인별 설치방법까지는 모르지만 테스트삼아 EssentialsNK 플러그인을 설치해보겠습니다.

우선 아래 링크에서 EssentialsNK 플러그인을 다운받아줍시다.

https://nukkitx.com/resources/essentialsnk.15/

다운받은 파일을 초반에 만든 폴더에 생성된 Plugins 폴더 안에다가 넣어줍시다.

그리고 컨테이너를 껐다가 킵니다.  ssh로 접속하여 docker restart mcpe (mcpe는 제가 설정한 컨테이너 이름) 를 입력하여 재시작 시킬수도 있고 그냥 시놀로지의 도커 패키지화면에서 비디오 형식탭에서 스위치모양 버튼을 눌러서 껐다가 켜도 됩니다.

그리고 터미널에서 docker attach mcpe를 입력하여 해당 컨테이너에 드간뒤, help를 눌러봅니다.

EssentialsNK는 사용할 수 있는 커맨드를 추가해주는 플러그인인데 확실히 커맨드가 훨씬 많아진게 보입니다.

이렇게 플러그인 적용도 완료해봤습니다.

7. 포트포워딩하기

외부접속하려면 포트포워딩도 하셔야합니다.
집 공유기 관리화면으로 접속하여 19132 udp 외부포트를 19132 udp 내부포트랑 연결해주시면 됩니다.
공유기별 포트포워딩 하는법이 다 다른데 개념만 알고있으면 하나씩 메뉴 드가다 보면 나옵니다.  하랑님이 쓴 공유기 포트포워딩하는법 공유합니다.
공유기 포트포워딩 하는 법

8. 마인크래프트 PE에서 접속하기

마인크래프트 PE 를 샀다고 가정하고 설명드리겠습니다.  제가 해보니까 우선 xbox 계정이 필요한데 이미 가지고 있는 마이크로소프트 계정으로 안되더군요… 그래서 검색해보고 새로 계정 만들었습니다.

아래 주소로 접속해서 로그인
https://www.xbox.com/ko-KR/
계정을 만드세요
새 전자메일 주소받기
원하는 메일주소 입력
원하는암호입력
동의하고계정만들기
성,이름입력
국가:미국, 생년월일:1990년 이전에 태어난걸로 아무거나
스팸방지문자입력
동의함

이렇게 만든 계정으로 접속하시면 됩니다.  만19세 이상은 그냥 한국계정 쓰고 아이핀인증하면 된다고 했는데 이상하게 저는 안되네요.

계정 로그인하고 폰으로 마크를 켜서 서버탭으로 갑니다.

맨위에 서버추가가 있습니다.

서버이름:아무거나
서버주소:나스의 외부아이피나 만약 공유기나 나스에 DDNS설정되어 있다면 ddns명을 넣어도 좋습니다. 외부아이피 모르겠으면 네이버가서 내아이피라고 치면 바로 뜹니다.
포트:19132
저장

이제 서버탭 맨아래에 추가된 서버를 눌러 들어갈 수 있습니다.

9. 접속하면 서버가 꺼지는 경우 해결방법

저 같은 경우는 자바 세큐리티쪽에 문제가 있어서 그랬던 건데 다른 이유로 서버가 다운되는 분들은 참고 안되실듯. 해결법은 여기에서 찾았습니다.
일단 ssh로 나스에 접속하고 루트권한을 획득한 후 아래 커맨드를 입력합니다.
vi /volume1/@appstore/Java8/j2sdk-image/jre/lib/security/java.security
경로찾느라 힘들었습니다..
※추후 자바 패키지또는 dsm 업그레이드시 경로가 바뀔 수도 있습니다.

그리고 키보드 ↓키를 눌러 내려가다보면 다음과 같은게 보일겁니다.

아마 security.provider.9 까지 있으실텐데, 10을 추가해줍시다.  9밑에 그림과 같이 입력해줍시다.
security.provider.10=sun.security.ec.SunEC

그리고 :wq를 입력하여 빠져나갑니다.
:wq는 저장하고 종료하는 명령어입니다.
여기까지하면 정상적으로 접속될겁니다.