기본 콘텐츠로 건너뛰기

Synology DSM 6.1 마인크래프트 PE 서버 설치하기

아이들이 핸드폰으로 마인크래프트를 즐겨합니다.

아빠를 위해서 뭐를 지어주냐고 해서 흡연실을 만들어 달라고 했습니다. (담배 참은지 8개월째...ㅠㅠ)

핸드폰에 남겨져 있는게 아까워서 사설 서버를 들이고 싶었습니다.

개발용으로 PC 서버가 있긴한데 전기료 아까워서 매일 켤 수는 없고, 항상 켜져 있는 시놀로지 나스에서 구동하고자 하였고, 또 기억력이 좋지 않아 아래 삽질기를 남깁니다.


1. 서버 프로그램 선택
   java 로 구동되는 nukkit (https://nukkit.io) 으로 선택했습니다.
   패키지센터 (패키지 소스에 http://www.hildinger.us/sspks/ 추가해야 함) 에 있는 마인크래프트 서버를 설치하다가 java 8 설치 만으로 구동되는것을 보고 설치가 편할 것 이라 판단하였습니다. 처음에는 이 버전이 PE 도 되는건 줄 알고 엄청난 삽질을 했네요.


2. 설치
   먼저 패키지센터를 통해 java 8 을 설치합니다.

   해당 url 에서 서버 프로그램을 다운받아 디렉토리에 복사합니다.
   디렉토리는 아무 계정의 홈디렉토리에 생성합니다.

   admin 계정이나 root 계정 아무거나 상관 없습니다. 일반 계정도 상관없을 듯 합니다.
   제 경우 admin 을 주로 사용하므로 putty 를 이용해서 admin 홈디렉토리에 mcpe 디렉토리를 생성하여 위 사이트에서 nukkit-1.0-SNAPSHOT.jar 를 받아 nukkit.jar 로 파일명을 변경하여 복사하였습니다. (이 단계까지는 File Station 으로도 가능합니다.)

   구동되는지 테스트합니다.
   putty 등을 사용하여 접속하고 위에 만든 디렉토리로 이동하여 명령어를 입력합니다.
   java -jar nukkit.jar
   처음 실행시 설치 언어를 물어보는데 하고 싶은 언어를 입력합니다. kor 또는 eng
   그러면 여러 파일들이 해당 폴더에 생기면서 서버가 구동됩니다. java 8 만 설치돼 있으면 별탈 없이 구동되며, 설정은 server.properties, nukkit.yml 을 통해 변경가능합니다.
   잘못 설정했다고 다시 설치할 필요는 없습니다. server.properties, nukkit.yml 로 모든 설정이 가능합니다.

   모바일 또는 Windows 10 PE 버전으로 접속 테스트를 해봅니다. 기본 포트는 19132 로 설정되어 있어 nas 내부 주소만 입력해 보면 시간이 좀 걸리지만 접속됩니다.


3. 관리
   서버 프로그램이 콘솔 형태이므로 누군가는 콘솔로 구동 명령어를 줘야 합니다. 그리고 콘솔을 닫으면 서버가 종료되기 때문에 서비스 형태의 구동이 필요합니다.
   검색 결과 http://openwiki.kr/game/mc/mcm 에 스크립트가 있습니다. 이 스크립트는 일반 버전 craftbukkit 용 이나 nukkit 도 java 로 만들어져 있기 때문에 조금만 손보면 사용 가능합니다. 가능해야 합니다. ㅠㅠ

   start, stop, restart 등 명령어가 필요한것 들이 있어서 이거만 있으면 괜찮을 것 같습니다.
   저 내용을 긁어서 notepad++ 등에 붙여 넣습니다. 그리고 반드시 unix 형식으로 저장합니다. 화일명은 임의로 s.sh 로 합니다.
   위의 서버 설치 디렉토리에 넣고 putty 로 접속하여 실행할 필요 없습니다. ^^ 어차피 오류가 많이 납니다.

 
4. 해결
   저도 개발경력 20년 이상이지만 unix/linux 계열은 완전 초보입니다. ls, cd, vi 정도...
   잘 아시는 분들은 해결 방법이 우습겠지만, 저는 심각하기 때문에 저와 같은 수준의 아버지들이 애들을 위해서 삽질 없이 구축 할 수 있도록 하는게 이 글을 작성하는 이유입니다. ^^

   먼저 변수들 선언부 입니다.
SERVICE='craftbukkit.jar'
USERNAME="mine"
MCPATH='/home/mine/mcone'
INVOCATION='java -XX:UseSSE=4 -server -d64 -XX:+CMSIncrementalPacing -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=16 -XX:+UseParNewGC -XX:ParallelGCThreads=2 -Xmx4G -Xms2G -jar craftbukkit.jar nogui'
BACKUPPATH='/mnt/data/backup'
   아래와 같이 변경합니다. 제 경우이므로 상황에 맞게 변경하세요.
   INVOCATION 부분에 -Xmx1G -Xms1G 부분은 제거하셔도 됩니다.
SERVICE='nukkit.jar'
USERNAME="admin"
MCPATH='/home/mcpe'
INVOCATION='java -Xmx1G -Xms1G -jar nukkit.jar'
BACKUPPATH='/mnt/data/backup'

   소스를 아래로 좀 더 보시면 다른건 괜찮아 보이는데 screen 이란게 있습니다.

   검색해 보면

Screen이란? #

Screen이란 Linux에서 물리적인 터미널을 여러 개의 가상 터미널로 다중화해주는 도구입니다. 각 가상 터미널은 독립적으로 동작하며 사용자 세션이 분리되어도 동작합니다. 간단히 말하면 이 도구는 백그라운드로 동작하는 다중 터미널을 만들어 줍니다. 이걸 이용해서 백그라운드 작업을 간단히 수행할 수도 있고 회사에서 작업하던 터미널 화면을 집에 가서도 같은 터미널 화면을 보며 작업을 이어 할 수도 있습니다.

출처 : http://www.incodom.kr/Linux/기본명령어/screen


   라고 되어 있습니다.

   당연히 DSM 에는 없는 기능입니다.
   설치해야 합니다만, 우리는 linux 명령어를 잘 모릅니다. 어디서 줏어들은 apt-get 이나 ipkg 를 사용해야 할 것 같습니다.
   ipkg install screen 해보면 ipkg 도 없기 때문에 설치해야 합니다.

   https://nas.moe/archives/1372
   에 패키지센터를 통해 설치하는 방법이 있습니다마는 저 같은 경우는 커맨드를 사용해서 설치하는 방법을 택하였습니다.

   http://howden.net.au/thowden/2014/10/synology-installation-of-ipkg-dsm-yum-or-apt-get-equivalent/
   를 방문해 보면 설치하는 방법이 있습니다.
 
   먼저 cpu 타입을 판단해야 합니다.
   cat /proc/cpuinfo | grep cpu 라고 입력하면 숫자로 나와서 grep model 이라고 입력합니다. 제 nas 모델은 DS216+II 이고 Intel Celeron 계열 이므로 제일 하단에 있는 파일을 선택합니다. (각자가 판단해주셔야 합니다.)

Intel Atomhttp://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh
   알려주는 데로 wget 으로 받거나 직접 사이트를 이동하여 받아도 됩니다. 그리고 실행합니다,
   ipkg 명령어 사용이 가능해 지는데 알려주는데로 path 등록하라고 합니다만 귀찮으니까 putty 종료 후 다시 로그인 하면 ipkg 가 실행 가능하게 됩니다. (nas 리부팅까지는 아닐겁니다. ^^)

   먼저 ipkg update 를 실행해 주시고, ipkg install screen 을 실행하면 screen 이 설치됩니다. 권한때문에 안될 경우 앞에 sudo 를 붙여 주시거나, 먼저 sudo -i 해주고 다시 실행하면 정상적으로 실행됩니다.

   설치된 디렉토리로 가서 ./s.sh start 라고 해주면 왠만하면 잘 실행되면서 커맨드 화면이 아닌 프롬프트 상태로 나오게 됩니다.

   커맨드 중에 status 라고 있는데 해보면 tput 이 없다고 오류가 발생합니다.
   ipkg install ncurses 로 설치하면 tput 오류 없이 가능합니다.

   또 update 명령어 부분이 수정이 필요한데, 딱히 필요할 것 같지 않기도 하고 그렇습니다만 일단 수정해봅니다.

mc_update() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "$SERVICE is running! Will not start update."
  else
    MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\</a\> | cut -d \" -f 2`
    as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
    if [ -f $MCPATH/minecraft_server.jar.update ]
    then
      as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
      echo "Minecraft successfully updated."
    else
      echo "Minecraft update could not be downloaded."
    fi
  fi
}
   MC_SERVER_URL 부분을 아래와 같이 변경하고, (클릭시 파일이 받아지면 올바른 주소입니다.)
 http://ci.mengcraft.com:8080/job/nukkit/lastSuccessfulBuild/artifact/target/nukkit-1.0-SNAPSHOT.jar

   mv ... 부분에 minecraft_server.jar 를 nukkit.jar 로 변경합니다.

   잘 되겠죠. 뭐 -_-;

   그리고 서버에서 커맨드도 보내야 하고 해야하는데 방법이 rcon 이라고 mcrcon 이라는 프로그램으로 접속해서 커맨드 처리가 가능합니다만, 서버를 한글로 설정하였을 경우 한글이 정상적으로 표시가 되지 않아서 사용안하게 되더군요.
   그냥 스크립트에서 사용한 screen 명령을 통해서 하는것이 제일 깔끔합니다.

   위에 스크립트중에 screen ... minecraft 라는 문장이 있습니다. 그게 힌트인데 프롬프트에서 screen -x minecraft 를 입력하면 서버 커맨드 화면으로 가게 됩니다. ctrl+a 후에 d 를 누르면 프롬프트로 복귀하게 됩니다.


5. 완료 및 외부 접속
   내부에서는 접속이 잘 됩니다. 그러나!! 아이들이 원하는 것은 친구를 우리집 서버로 초대하는것 입니다.
   server.properties 의 server-port=19132 (기본값) 로 설정하고 공유기 포트 포워딩도 했는데 안됩니다. 당황하지 마시고 udp 도 같이 추가해 주세요!!!.


ps. 시놀로지 제어판에서 부트업때 스케줄 넣어주면 나스가 죽었다 살아나도 서버는 구동되겠습니다.


이상 몇일간의 삽질을 통해서 해결한 내용을 정리하였습니다.
도움되시길 바랍니다.

 
------------------------------------- 2021.1.14 ---------------------------------------

헛.. 제가 블로그가 서툴러서 댓글이 바로 게시되는 줄 알았습니다 ㅠㅠ
질문 주신분들께 죄송스럽습니다. 벌써 4년이 넘어가는 질문이 있으시네요.

요즘 Docker 로 가능한걸로 알고 있어서 그걸로 전환하셨겠죠?

질문 주신분들께 다시 한번 죄송하다고 말씀 드립니다.


댓글

  1. 저는 큐냅에서 마크 서버 설치하는데...

    마인크래프트 서버를 설치하다가 java 8 설치 만으로 구동되는것을 보고 설치가 편할 것 이라 판단하였습니다. 처음에는 이 버전이 PE 도 되는건 줄 알고 엄청난 삽질을 했네요. -> 저도 당했습니다. ㅠㅠ

    누킷 업로드 해서 java 명령어로 서버 구동은 성공했는데 막상 클라이언트로 접속하니까 에러를 뿜뿜해서 실패중입니다. 이게 성공해야 다음으로 넘어갈텐데...

    답글삭제
  2. 헐.. ㅠ

    혹시 최신 버전의 PE까지 가능한가요?

    지금 몇 버전의 PE를 해보신건가요? ㅠㅠ

    답글삭제
  3. 죄송한데 스크린설치부터 막히는데 조금만 자세히 알려주실수있나요?

    답글삭제
  4. 혹시 가능하시면 부트업때 스케쥴 스크립트 어떻게 넣으셨는지 공유좀 가능할까요 ㅜㅜ

    답글삭제
  5. 시놀로지 마크설치하는법 올리시는분들의 공통점
    막상 방문해 보면 조금 아는사람들의 알만한 정보만 좀더 안다고 내용 추가한다.
    몰라서 오는분들은 처음부터 막힌다. 조사 다 빼고 자기 할말만 한다.
    시놀로지 완전 아무것도 없는 상태에서 처음과정은 없고 글쓰는 사람이 혹시잊을 기억을 되살리기 위해서 기록해 놓은것뿐! 그냥 자신만 알거나 아는사람만 알거나 할 뿐
    모르는 사람은 그냥 한숨만 내쉬고 다른블로그 찾아본다.

    답글삭제
    답글
    1. 안녕하세요.
      그렇게 느끼셨다면 죄송하네요.
      어느정도 시놀로지 DSM 사용 가능한 분들을 대상으로 쓴것도 있고, 제가 삽질한 내용이라도 좀 적어놔야 딱 필요한 분들이 참고하실 수 있도록 쓴 글입니다.
      처음부터 끝까지 다 적으면 너무 많은 내용이라 문의 주시면 답글을 달아드릴텐데요.

      그리고 지금은 저렇게 어렵게 할 필요도 없게 되버려서 다른 게시글을 찾아보시는게 나을겁니다.
      Docker 라는 패키지를 설치하고 거기에서 설치하는 방법이 있는데, 검색해보니 자료과 꽤 있는 터라 굳이 여기에서 오래된 게시물을 업데이트 할 필요성이 없었네요.

      즐거운 하루 되세요.

      삭제

댓글 쓰기

이 블로그의 인기 게시물

단독형 키오스크 [1차 완료]

  포스 개발 일을 하고 있습니다. 기존 포스 솔루션에 별도 UI 를 추가하여 (C# Winform) 포스 프로그램 위에서 구동되는 버전이 있습니다만, 좀 더 타겟팅을 하여 포스를 사용하지 않는 매장을 타겟으로 단독으로 구동되는 키오스크를 개발 중에 있습니다. 키오스크의 특성상 다양한 해상도를 지원해야 하고 해서 이번 기회에 WPF 를 이용하여 개발할 계획을 세우고, 12월 말 부터 WPF 기술 습득하고, 본격적으로 2월 정도 부터 프로젝트를 진행하였습니다. 아직 포장 중이긴 합니다만 WPF 로 작성한 첫 프로그램인 만큼 저의 개발 블로그에 올려봅니다.

ORACLE Instant Client 설치

2006/09/15 14:22 에 작성한 내용 이전 등록 적용방법 (VB6 테스트 기준) 오라클사이트에서 다음 같은 화일을 다운로드 한다. instantclient-basic-win32-10.2.0.2-20060508.zip instantclient-odbc-win32-10.2.0.2-20060508.zip C:\InstantClient 로 압축해제 후 복사한다. 시스템변수 PATH 에 C:\InstantClient 를 추가한다. 시스템변수 TNS_ADMIN 를 추가하고 C:\InstantClient 를 설정한다. 리부팅... (또는 그냥 CMD 로 추가... 전자 추천) C:\InstantClient 폴더에서 odbc_install.exe 를 실행한다. 기존 오라클클라이언트에서 사용하던 tnsnames.ora 를 가져다 InstantClient 폴더에 넣는다. C:\Oracle\Ora81\NETWORK\ADMIN 에 있다. (없으면 비슷하게 생긴거 구글에서 찾아보자) 이게 있어야 DSN 설정이 가능한 듯 제어판->관리도구->ODBC 에서 사용자DSN 에 추가한다. 드라이버 : Oracle in instantclient10_2 선택 그리고 화면 나오는데로 입력 Test Connection 한번 눌러서 연결되는지 확인 하고 마지막으로 한글을 사용하려면 하단탭의 Workarounds 에서 Force SQL_WCHAR Suppot 를 선택 (이걸 모르고 해보다 한글이 ?? 게 나오는거 보고 시껍함) 프로그램 루틴 Connection String 을 변경한다. DATA SOURCE=dsn_name;User ID=user;Password=password 만 등록했음