2017. 2. 12. 01:51

google cloud로 저렴하게 minecraft 서버 구축하기

게임 서버를 만들려면, 항상 실행중인 서버, 즉, PC가 있어야 합니다. 집에서 사용하는 PC나 노트북을 항상 실행하는건 무리가 따릅니다. 고정 IP 서비스도 받아야 하구요. 이를 대신할 수 있는 것이 최근의 cloud 서비스 이고, 대표적으로 아마존의 aws가 있습니다. 대표 서비스라서 그런지 aws는 업계에서 상대적으로 고가(?) 정책을 따르고 있습니다. 이에 반해, google은 대략 절반의 가격으로 서비스하고 있습니다. 본 post에서는 google cloud 서비스로 저렴하게 마인크래프트 서비스를 구동하는 방법을 공유하겠습니다. 자세한건 링크를 따르기 바랍니다.


우선 google에서 "google cloud"를 검색하여 서비스로 이동합니다. 물론, google.com에서 로그인한 상태를 가정하겠습니다. 아마도 https://cloud.google.com 주소로 이동할 것입니다.

그러면, 우선 "TRY IT FREE"로 이동하기 바랍니다.

그럼 아래와 같이 진행하고, "동의 및 계속하기"를 선택합니다.

그리고, 아래와 같이, 고객정보가 나오고, "무료 평가판 시작하기"를 선택합니다. 앞/뒤 순서에서 신용 카드 정보 입력이 필요합니다. 물론, ActiveX 설치등은 없습니다. 본 과정은 Windows 10 Edge 브라우저에서 진행되었습니다.

아래와 같이 60일 무료 평가판이 시작되었습니다 !


(만일, 다시 로그인하여 진행하는 경우 아래와 같이 "콘솔"을 누르시면, 아래 부터 바로 진행할 수 있습니다.)



그럼, 이후 콘솔화면에서 "새 프로젝트"를 진해하도록 합니다.


프로젝트 생성후 "프로젝트 설정"에 들어가 봅니다.


몇몇 권한이 표시됩니다. 참고 하세요.


이제, 아래의 메뉴 버튼을 누릅니다.


그리고, 이제 드디어 "Compute Engine"에 들어갑니다 !


그럼, VM 인스턴스를 만드는데, 시간이 조금 걸립니다.

1분 정도 기다리면,...

즉, "인스턴스 만들기"를 실행합니다.

이제부터가 중요합니다.


위 붉은 색 부분을 주목하세요. 왜냐하면, 과금과 관련있기 때문입니다.

google cloud price calculator에서 가격을 참고할 수 있습니다.

우선, 미국(USA) 지역을 선택했고, f1-micro라는, 600MB RAM 정도의 극악(?)의 서버로 선택했습니다.

월 4.49$ 정도가 예상되네요 일본이나 대만도 있는데, 가격이 조금 올라가서, USA로 선택했습니다.


위 부팅 디스크의 "변경"을 눌러 디스크 설정에 들어갑니다.

보통 새로운 디스크를 추가할 수 있으나, 가격을 낮추기 위해 부팅 디스크에 운영을 추가하도록 합니다.

SSD로 하면 더 빠를 수 있으나, 일단, 일반 HDD(표준 영구 디스크)로 진행합니다.

디스크 가격은 큰 차이가 없어서, 10G 기본값에서 20G로 조금 올려줍니다

즉, 아래와 같이 됩니다.

월 4.89$정도 가격 책정이 이뤄지네요. 금일자 환율로 5,623원 정도 되네요. 카드 결재시 10%정도 추가 금액이 발생할 수 있을텐데, 어떻든 월 6천원 정도, 점심 식사 값 정도 예상 됩니다.


그다음 네트워크 설정으로 들어가는데, 보통 google cloud에 여러 인스턴스를 만들고, 대표 1대의 인스턴스를 "외부 고정 IP"를 사용하여 보안을 향상시킵니다. (인스턴스 끼리는 내부망으로 접속). 우리는 일단, 1대의 인스턴스만 유지하므로, 바로 "외부 고정 IP"를 사용하도록 합니다.

그럼 아래와 같이 "예약"합니다.

조금 기다립니다.

아래와 같이 고정 IP가 공개되며, "만들기"를 진행합니다.

아래 고정 IP를 잘 기억해 두시기 바랍니다. 왜냐하면, 서버 IP가 될 예정이기 때문입니다.


그럼 아래와 같이 최종 정리됩니다.


드디어 서버가 구축되었습니다 !

이제 minecraft 서버를 설치해서 동작시킵시다 !


위와 같이 SSH를 브라우저 창에서 열기를 합니다. 새로운 창이 열리게 됩니다.

위와 같이, sudo apt-get update를 실행합니다.


그리고, sudo apt-get install -y default-jre-headless를 실행하여, java runtime을 설치합니다.


이제, home 경로에서, mkdir minecraft, cd minecraft, sudo su를 차례대로 실행합니다.


이제 minecraft 서버 프로그램을 다운로드 해야 하는데, 최신 버전의 minecraft의 서버는, 이곳에서 확인 바랍니다. 중요한건, minecraft의 게임 버전과 서버 버전이 일치해야 게임을 즐길수 있다는점이 중요합니다. 만일, 게임 버전이 올라가면, 서버 버전도 함께 체크해야 합니다.


알단, 현재의 가장 최신 버전인 1.11.2의 다운로드를 위해,

wget https://s3.amazonaws.com/Minecraft.Download/versions/1.11.2/minecraft_server.1.11.2.jar

를 실행합니다. (즉, 위 wget 경로는 최신의 minecraft 버전에 따라 변경될 수 있습니다. 이곳 의 다운로드 URL을 복사하여 사용하시기 바랍니다.)


그럼, java -Xms500M -Xmx7G -d64 -jar minecraft_server.1.11.2.jar nogui를 실행하여 서버를 가동시킵니다.

(f1-micro 서버의 성능상... 500M를 최저로 하였습니다.)


그럼, eula.txt 설정을 변경해라고 오류가 발생합니다.

nano eula.txt를 진행하여 eula 부분의 설정을 True로 변경하세요.


nano 편집툴은,

[Research/Ubuntu] - Pico, nano 편집기 사용하기

를 참고하세요.

그리고, nano server.property를 사용하서, 서버명같은 상세 설정을 변경할 수 있으니, 참고하세요.


위와 같이 java -... 를 실행하고, 만일 SSH 창을 close하면 세션이 종료되어 서버도 함께 종료되게 됩니다. 이를 방지하기 위해 linux의 screen을 이용합니다. 해당 screen 명령은 SSH 창을 닫더라도, 즉 SSH 세션이 종료되더라도 screen 내부에서 실행한 명령은 계속 진행하도록 도와줍니다.


아래와 같이 screen을 설치하세요. (apt-get install -y screen)


그리고, screen -S mcs java -Xms500M -Xmx7G -d64 -jar minecraft_server.1.11.2.jar nogui를 통해 새로운 screen 세션에서 java 명령을 실행합니다. screen 세션의 id는 mcs로 지정합니다.


그럼 화면이 초기화되어, java가 실행되는 모습을 보게 됩니다.

이제 java가 실행중인 screen 세션을 유지한채 복귀하려면, CTRL+a, d를 차례대로 누릅니다.

그럼, 위와 같이, 이전 화면으로 복귀됩니다. 그리고, 실행중인 java는 screen 내부에서 실행되고 있습니다. screen으로 java가 실행중이기 때문에, 이제 안정적으로 SSH는 종료할 수 있습니다. 브라우저를 닫던지 아니면 exit로 나갈 수 있습니다.

만일, 다시 SSH로 접속하는 경우 screen -r mcs를 누르면, java를 실행했던 screen화면으로 복귀할 수 있으니, 참고하세요.


이제 방화벽을 설정해야 하는데, minecraft는 멀티 플레이시 25565 포트를 기본으로 사용하게 됩니다. 현재 google cloud에서, 방화벽을 설정하지 않으면, 기본으로 25565 포트는 차단되어, 접속할 수 없게 됩니다. 따라어 아래와 같이 25565 포트를 허용하는 방화벽 규칙을 추가합니다.

그러면 아래와 같이 네트워킹 설정이 뜹니다.

아래와 같이 규칙 추가를 실행하세요.

아래와 같이 설정하고, 만들기를 누르세요.

그럼 25565 포트가 허용되어, 서버 접속이 가능하게 됩니다.

축하합니다. 이제 서버 설정이 완료되었습니다.


이제 아래와 같이 minecraft 게임의 multiplayer에서, 서버를 추가하고, 게임을 시작하세요.

물론, 물어보는 서버 IP는 앞에서 알려준 IP를 그대로 입력합니다.


이제, 정말 축하합니다 !

google cloud 서버로, 멀티플레이가 시작되었습니다.

넓은 minecraft 세상에서 당신 혼자만 있네요. TAB 키를 누르면 확인이 됩니다.

이제 해당 IP를 친구들에게 알려줘서, 함께 minecraft를 플레이 하세요.

매우 낮은 성능의 f1-micro 서버이지만, 적은 수의 플레이어라면, 큰 무리가 없을듯 보입니다.

만일, 서버의 홍보가 잘 되어서 매우 큰 서비스로 확장을 원한다면, f1-micro에서 좋은 CPU로 그냥 옮겨 타세요. 간단하게 서버가 확장됩니다. 물론 디스크도 SSD로 옮겨타면 더 좋겠구요.


혹시, google cloud 서버에 minecraft 이외 다른 http 서버(apache등)을 올리고 싶으세요?

그러면, 앞선 SSH에서 sudo apt-get install apache2, service apache2 restart등을 이용할 수 있습니다. 즉, minecraft 서버와 동시에 늘 살아있는 본인만의 http 서버를 구축할 수 도 있습니다.

그래도, f1-micro 서버임을 명심하세요. 많은 접속은 지연이 발생을 유발합니다.