본문 바로가기
Game/Minecraft

마인크래프트 24시간 학교 서버 만들기 -2 GCP로 무료 서버 열기

by 고간디 2023. 12. 5.

전편에 이어집니다

#2 한12331남들의 동기 부여

더보기

PC방에서 올린 인스타그램 수요 조사 게시물이 상당히 많은 좋아요 수를 받은 것을 다음 날 학교에서 확인했다

서버는 친구들과 GCP로 열기로 마음을 먹었다

단축 수업으로 일찍 끝났지만 우리는 3학년 건물의 한 교실에 남아 친구들과 1시간째 노가리를 까고 있었다 

 

갑자기 창밖이 소란스럽다

건물과 창문 구조상 2층에서 창문을 열어놓고 있으면 창문 아래 사람들의 소리가 아주 잘 들린다

밖을 보니 2학년 여학생들이 이야기를 하고 있다

 

장난으로 친구가 밖으로 고함을 한번 지르고 난 뒤 밖을 다시 보니 우리 학교에서 제일 이쁜 여학생이 같이 있다

다행히 그 학생들은 고함을 듣지 못 한 것 같았다

약간 한91.8남스러운 모멘트지만 바로 창문을 닫고 우리들의 관심은 모두 그쪽으로 쏠리게 된다

 

그 학생이 사라지고 우리는 다시 노가리로 돌아와서 열심히 까다가 학교 서버 얘기로 들어간다

갑자기 인스타 그 게시물에 그 학생이 좋아요를 눌렀는지 궁금해졌다

그 말을 듣고 친구는 바로 확인에 들어갔고 좋아요를 누른 게 확인됐다!!

 

우리는 서버에 그 학생이 올 수도 있다는 생각에 펄쩍펄쩍 뛰며 신났다

그 소리가 컸는지 다른 교실에 남아있던 몇몇 학생들이 무슨 일인가 싶어 찾아 오기도 했다

우리는 모두 인스타그램 좋아요 누른 사람 목록에서 그 학생을 확인하고서는 바로 우리반 교실로 돌아가 가방을 싸고 마크 주커버그와 스티브 잡스에 빙의해 당장 서버를 만들러 가게 된다

내가 3년 동안 학교를 다니면서 그렇게 빨리 가방을 싸고 집에 간 적이 없었다

 

그 학생이 그냥 좋아요를 누른 건지 아니면 진짜 관심이 있어서 누른 건지도 모르는데 우리에게 그런 것 따위 중요하지 않았다

서버에 그 학생이 올 지도 미지수인데 0.1퍼센트의 가능성도 놓치지 않고 머릿속으로 행복회로만 돌리면서 집에 갔다

 

아무래도 DNA에 각인된 코리안맨 본능은 숨기고 싶어도 숨길 수가 없는 것 같다

어떻게 보면 우리 서버 제작 비하인드라고도 할 수 있겠다

추진력 없는 우리가 만약 그 학생을 밖에서 못 봤거나 좋아요를 누른 걸 확인 안 했다면 아마 서버는 더 늦게 열렸을 것이다

 

당시 서버 디스코드 메세지다

오후 2시부터 새벽 3시까지 정보들을 쓸어모으고 서버를 여는 데에 성공했다

 


#3 서버 열기

이제 본격적으로 마인크래프트 서버 만들기에 돌입해보자

 

글 작성에 앞서 모든 글은 2023년 12월 기준으로 작성되었음을 알려드립니다

서버 버전, JDK 버전, 구글 콘솔 UI 등은 시점에 따라 변화할 수 있습니다

 


구글 클라우드 메인

https://cloud.google.com/?hl=ko

위의 링크를 통해 접속하면 위 사진과 같은 페이지가 나타난다

300달러를 90일 동안 사용할 수 있다는 알림과 함께 메인 페이지가 나온다

 

아마 대부분의 구글 계정이라면 90일 무료 체험이 가능하다

다만 본인 학교 계정의 경우는 90일 무료 체험이 불가능했다

 

그냥 gmail.com으로 끝나는 계정이라면 웬만하면 다 되는 듯하다

 

무료로 시작하기를 눌러보자

 


서비스 약관에 모두 동의하고 국가는 대한민국으로 이미 설정되어 있을 것이다

계속을 눌러 이어서 진행한다

 


결제 정보를 확인해야 한다

무료 체험이 끝나도 자동으로 청구되지 않으며 크레딧을 모두 사용하면 저절로 알림이 오기 때문에 안심하고 등록하자

계좌 유형은 개인으로 하고 이름 주소를 입력하고 다음 단계로 이동해보자

 


그러면 이렇게 무료 체험이 시작된다

앞으로 90일 남았으니 알차게 써보도록 하자

 

처음 무료 체험이 시작됐다면 My First Project라는 것이 기본적으로 존재할 것이다

좌측 상단 구글 클라우드 로고 옆의 컨테이너에서 확인할 수 있다

 


구글 클라우드 로고 왼쪽 줄 세 개 버튼을 눌러 Compute Engine -> VM 인스턴스로 이동하자

 


계정 결제 설정 >> 내 결제 설정 

계정 결제 설정을 해야 하는데 계정에 결제 카드가 이미 설정되어 있다면 내 결제 설정을 누르고 설정되어 있지 않다면 제공하는 매뉴얼대로 결제 설정을 하면 된다

 

카드가 필요한데 그리 오래 걸리지는 않는다

본인은 학교 학생증 체크카드로 해봤더니 되는 것 같다

 

VM 인스턴스에 도착했다면 Compute Engine API 사용 버튼을 누른다

약 1분 정도 소요된다

 


이렇게 VM 인스턴스 공간이 마련되었다

인스턴스 만들기 버튼을 눌러보자

 


이름은 원하는 걸로 해주자

너무 길면 나중에 힘드니까 적당하게 이름을 설정해주고 리전영역을 설정해주어야 한다

서버는 한국에서 운영하고 한국에서 플레이할 거니까 빠른 속도를 위해서 한국과 가장 가까운 서울로 리전을 설정했다

 

도쿄와 싱가폴로 설정해도 속도에 있어서 큰 차이는 나지 않지만 서울로 하기를 추천한다

영역은 a, b, c가 있을 텐데 뭘로 하든 상관 없다

리전과 영역은 나중에 바꿀 수 없으니 신중하게 고르자

 


아래를 조금 내리면 머신 구성이 있다

클라우드 서버로 사용할 컴퓨터의 사양을 설정하는 것이라고 보면 되는데 본인 학교 서버의 경우는 코어 4개 램 35GB로 설정했다

(서버 램 할당은 램 16GB 정도로 해도 원할하긴 했는데 나중에 그냥 32GB로 올림)

친구들과 간단하게 하는 거라면 간단하게 코어 2개 램 6GB 정도만 해도 충분할 것 같긴 하다

 

머신 구성이 크레딧 사용량에서 가장 큰 비중을 차지하기 때문에 오른쪽의 월별 예상 금액을 잘 봐가면서 조절해야 한다

90일 동안 300달러 크레딧을 효율적으로 잘 써보자

우리는 초기에 서버 준비할 때 길어야 2~3주 정도로 보고 했기 때문에 과감하게 지르긴 했다

 

나도 잘 모르긴 하는데 좀 찾아보니까 마인크래프트는 멀티 코어를 제대로 활용하지 못 한다

그래서 싱글 스레드 성능이 좋은 CPU로 설정하라는데 정확한 건 나도 잘 모른다

 

나중에 더 공부해와서 여러 가지 지식들이 쌓이면 써보도록 하겠다

 


조금 아래로 내리면 부팅 디스크 탭이 있는데 변경 버튼을 눌러보자

그냥 간단하게 운영 체제나 디스크 설정하는 건데 우린 Ubuntu를 사용할 거다

 

한번도 써본 적이 없어 무섭긴 한데 경험이라 생각하고 해봤다 

생각보다 많은 도움이 되었던 것 같다

 

참고로 윈도우 서버는 90일 무료 체험에서는 쓸 수 없다

 

(본 글은 Ubuntu 20.04 LTS를 기준으로 작성할 것이다)

 

부팅 디스크는 SSD 영구 디스크로 하는 것이 빠르다

디스크 크기는 사실 15~20GB정도만 되도 여유 있지만 혹시 모르니 우리는 50GB로 했다

너무 많이 설정해놓은 것 같기는 하다

 

설정을 마쳤다면 선택을 눌러 마무리해준다

 


이렇게 오른쪽에 월별 예상 금액이 나올 텐데 최대한 효율적으로 맞춰서 설정해보자

어디까지나 예상 가격이기 때문에 나중에 어떻게 될 지 모르니 어느 정도 여유는 두고 계산해야 한다

 


좀 더 내리면 방화벽을 설정하는 탭이 나오는데 HTTPS 트래픽 허용, HTTPS 트래픽 허용 두 가지를 모두 체크해준다

 


네트워킹 탭 오른쪽 화살표를 눌러 탭을 확장시키면 다양한 설정이 나온다

아래 네트워크 인터페이스 탭을 찾아 default 탭의 화살표를 눌러 옵션을 확장해보자

 


외부 IPv4 주소 탭을 누르면 목록이 나오는데 아래의 고정 외부 IP 주소 예약을 눌러보자

 


그럼 이렇게 고정 외부 IP 주소 예약 팝업이 나타난다

이름을 나중에 쓸 일은 없을 것 같지만 혹시 모르니 이것도 비교적 간단하게 설정하고 예약 버튼을 누르자

여기서 부여되는 외부 IP 주소가 우리의 서버 주소가 된다

 


VM 인스턴스 설정을 완료한 후 만들기를 누르면 이렇게 VM 인스턴스 탭에 방금 만든 인스턴스가 나타난다

우리가 서버를 돌릴 클라우드 컴퓨터가 생성된 것이다

 


다음으로 방화벽 설정을 해주어야 한다

내비게이션 바를 열어 VPC 네트워크 -> 방화벽 탭으로 이동한다

 


방화벽 정책 탭이 나올 텐데 방화벽 규칙 만들기를 누른다

 


혹시 모르니까 이름은 간단하게 해주고

알아보기 쉽게 하자

 


아래로 좀 더 내려서

 

대상: 지정된 서비스 계정

소스 IPv4 범위에 0.0.0.0/0 추가

지정된 프로토콜 및 포트에 TCP 체크, 포트: 25565 입력

 

설정을 모두 마쳤으면 완료해주시고 VM 인스턴스로 돌아오자

 


이제 우리가 할 거는 클라우드에 있는 서버 컴퓨터에 자바와 서버 버킷 등을 설치할 것이다

아까 만든 인스턴스 줄을 보면 SSH라는 것이 있는데 클릭해준다

 


이렇게 조금 기다리면 SSH 팝업창이 나오는 것을 확인할 수 있다

이메일 계정 골뱅이 옆 server는 아까 우리가 생성한 VM 인스턴스 이름이다

 


$ sudo passwd root
New password:
Retype new password:
passwd: password updated successfully

일단 시작하기에 앞서 root 권한이 필요하다

위 명령어를 입력해서 비밀번호를 먼저 설정하자

 

참고로 비밀번호를 입력할 때 내가 입력 중인 비밀번호는 안 보인다

난 처음에 이게 비밀번호가 안 쳐지고 있는 줄 알고 시간을 좀 버렸다

 


$ su
Password:
root@server:/home/address#

susubstitute user의 약자인데 현재 사용자에서 로그아웃하지 않고 다른 사용자의 권한을 가져오는 명령어다

안 궁금하겠지만 내가 공부하는 목적으로 이런 거 좀 끄적이겠다

 

su를 치고 비밀번호를 입력하면 루트 권한을 획득할 수 있게 된다

 


$ sudo apt update && sudo apt upgrade

apt Advance Packaging Tools의 약자라고 한다

패키지 설치를 위해 우분투에서 사용하는 명령어인데 update는 업데이트 패키지 목록을 최신을 업데이트하는 것이고, upgrade는 업데이트된 패키지 목록을 확인하고 업데이트할 것을 업데이트하거나 설치하는 명령어이다

 

아무튼 apt를 update하고 upgrade도 해주도록하자

 


$ sudo apt install wget apt-transport-https gnupg nano screen

위 명령어를 치면 아래와 같은 문구가 나올 것이다

 

Do you want to continue? [Y/n]

 

대문자 또는 소문자 Y를 입력 후 엔터를 눌러주도록 하자

 

이건 나도 뭔지 잘 모른다 검색해봤는데 뭐 제대로 뜨는게 없다 

wget이 web get의 약자로 웹 상에 존재하는 파일을 다운로드한다는 의미라고 한다

 

대충 뭐 어떤 웹 상의 프로그램을 다운하는 명령어인 것 같다

 


$ sudo ufw allow OpenSSH

 

 

ufw(Uncomplicated Firewall)는 리눅스의 방화벽 관리 프로그램이다

ufw를 이용해서 OpenSSH를 허용하라는 명령어이다

 


 

$ sudo ufw allow 25565

이건 방화벽에서 25565 포트를 허용하라는 명령어이다

외부에서 마인크래프트 JE에 접속하는데에 25565 포트를 사용한다고 한다

 


$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

맨 윗줄 명령어를 입력하면 아래와 같은 문구가 뜰 텐데 y 치고 엔터

그러면 방화벽이 활성화되었다는 문구가 나온다

 


$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
25565                      ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
25565 (v6)                 ALLOW       Anywhere (v6)

방화벽 상태를 확인하는 명령어다

위와 같이 나온다면 제대로 된 것이다

 


$ sudo apt install openjdk-17-jre-headless

우리는 이 명령어를 통해서 openjdk 17버전을 리눅스에 다운받아야 한다

 


 

$ java --version
openjdk 17.0.9 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.9+9-Ubuntu-120.04, mixed mode, sharing)

다운이 완료되면 자바 버전을 확인해 다운로드가 성공적으로 되었는지 확인해보자

위와 비슷한 형식으로 나왔다면 성공이다

 


$ sudo apt install git

git을 설치하는 명령어다

버전 관리 시스템이라고 한다

 


$ sudo adduser minecraft

minecraft라는 사용자를 추가해줄 것이다

왜 추가하라는 지는 잘 모르겠지만 일단 하라고 하니 해보자

 


$ sudo su - minecraft

아까 추가한 minecraft라는 사용자로 로그인을 하는 명령어다

그러면 사용자명이 아까 root 사용자에서 minecraft로 바뀐 것을 확인해볼 수도 있다

 


$ mkdir buildtools && cd buildtools

buildtools 라는 디렉토리를 생성하고 그 디렉토리로 이동하라는 명령어이다

 

 


$ wget -O BuildTools.jar  https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

아까 봤던 wget이 또 나왔다 

저 웹주소를 통해서 파일을 다운 받는 것인가보다

 


$ java -jar BuildTools.jar --rev latest

위 명령어를 마저 실행해보자

아마 시간이 좀 걸릴 것이다

기다리는 동안 노래 2~3곡 정도 듣고 오면 완료가 되어 있을 것이다

 

(추천곡: 엠씨더맥스 (M.C the MAX) - One Love // (여자)아이들((G)I-DLE) - Uh-Oh)

더보기

마인크래프트 최신 버전이 업데이트되어 서버의 버전을 높이고 싶다면 $ cd buildtools를 통해서 디렉토리를 이동하고 이 단계부터 시작하면 된다

 


Success! Everything completed successfully. Copying final .jar files now.
Copying spigot-1.20.2-R0.1-SNAPSHOT-bootstrap.jar to /home/minecraft/buildtools/./spigot-1.20.2.jar
  - Saved as ./spigot-1.20.2.jar

위와 같은 문구가 나온다면 성공적으로 마친 것이다

참고로 위 코드 박스에서 spigot-1.20.2는 현재 2023년 12월 5일 기준 마인크래프트 최신 버전이기 때문에 1.20.2로 나타난다

이 글을 보는 여러분들이 언제 이 글을 보느냐에 따라 저 문구 또는 버전은 바뀌어 있을 수 있다

 


 

 

$ ls apache-maven-3.6.0  BuildData  BuildTools.jar  BuildTools.log.txt  Bukkit  CraftBukkit  Spigot  spigot-1.20.2.jar  work

위 명령어를 쳐주자

다만 조심해야 할 것이 있다

위 명령어에서 1.20.2로 되어 있는 버전은 각자 알아서 아까 코드블럭을 참고해서 잘 맞춰 알맞게 수정해주도록 하자

 


$ cd ~ && mkdir server && cd server

server라는 파일을 만들어 이동한다

 


mv ~/buildtools/spigot-1.20.2.jar ~/server/spigot.jar

파일 위치를 옮기는 명령어인 것 같다

 


$ su

$ vi /etc/sudoers

su를 입력하고 아까 설정해둔 비밀번호를 입력한다

root 사용자로 전환되면 두 번째 명령어를 입력해준다

 


$ vi /etc/sudoers

이러면 sudoers가 열리게 되는데 i를 누르면 편집 모드로 전환된다

여기서 아래 코드블럭과 같은 부분을 찾아 수정해주자

root ALL=(ALL:ALL) ALL
(username) ALL=(ALL:ALL) ALL

(username)에는 아까 우리가 만들었던 사용자인 minecraft를 집어넣어야 한다

완료했다면 ESC -> :w! 입력 후 Enter 후 Ctrl+Z 로 편집기에서 나올 수 있다


$ su minecraft
$ cd server
$ sudo nano start.sh

 

start.sh라는 파일을 만들어보자

 


#!/bin/sh

java -Xms16G -Xmx16G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar spigot.jar nogui

그러면 빈 공간이 새로 나타날텐데 위 코드블럭을 복사해 붙여넣자

위 코드블럭에서 -Xms 뒤의 16G는 최소 메모리 할당을 16Gb로 하는 것이고, -Xmx 뒤는 최대 메모리 할당량을 나타낸다

자신의 서버 컴퓨터 사양에 알맞게 설정해주도록 한다

 

위 내용을 붙여넣었다면 Ctrl + X를 누르고 Y 와 Enter를 눌러 나올 수 있다

 


$ su
$ chmod +x start.sh
$ su minecraft
$ ./start.sh

마지막 ./start.sh를 입력하면 서버가 실행되기 시작할 것이다

 


$ nano eula.txt

하지만 서버는 제대로 시작되지 않을 것이다

우리는 eula에 동의를 해야 하는데 위 코드블럭 속 명령어를 입력해 eula.txt 파일을 수정해보자

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun Dec 26 13:29:15 UTC 2021
eula=true

 

간단하게 false를 true로 변경해주기만 하면 된다

나오는 방법은 아까처럼 Ctrl + X 로 나오면 된다

 


 

다시 ./start.sh를 입력하면 이렇게 성공적으로 서버가 실행된다

콘솔에 Done 이라는 단어가 마지막줄에 나타나면 성공적으로 서버가 열린 것이다

이 상태에서 우리는 서버에 접속할 수 있게 되었다

 


stop을 입력해 서버를 종료할 수도 있다

아니면 ssh창을 닫으면 자동으로 서버도 꺼진다

하지만 저장이 되지 않을 수 있으니 stop을 꼭 치고 ssh창을 닫아 서버를 끄도록 하자

 


이렇게 서버를 성공적으로 열어보았다

이 글을 보고 얼마나 많은 사람들이 따라해보고 참고했을 지는 모르겠지만 많은 도움을 얻어갔으면 좋겠다는 바람이다

 

당신이 이 글을 보고 있는 시점에는 구글 클라우드 정책이 바뀌어 300달러 크레딧을 쓰지 못 할 수도 있고 어쩌면 무료 체험 서비스가 종료되었을 지도 모른다

 

마인크래프트 버전이나 버킷 또는 자바의 버전도 달라져 작동 방식이나 서버 여는 방법이 변화될 수도 있으니 이 글은 2023년 12월 기준으로 작성되었다는 것을 알아두었으면 한다

더보기

https://www.howtoforge.com/how-to-install-spigot-minecraft-server-on-ubuntu-20-04/

이 글을 많이 참고해서 썼다

 

참고라는 표현이 맞는지 모르겠다.. 거의 베낀 거나 다름 없는 것 같기도 한데.. 흠

그래도 나 나름대로 위 사이트를 따라하면서 있었던 오류나 문제들을 해결하는데 꽤나 애를 먹었기 때문에 나와 비슷한 오류나 문제가 일어나지 않도록 최대한 설명을 자세하고 추가적인 내용들을 덧붙여서 써보려고 노력했다

 

그래도 오류나 문제가 발생한다면 위 사이트를 참고해보는 것도 나쁘지 않을 것 같다는 말씀을 드리고 싶다

 


 

다음으로는 우리가 학교 서버를 열기 위해 추가로 설정한 것들에 대해서도 이야기를 해보겠다

아직 플러그인, 시스템도 추가하지 않았고 서버 설정이라고는 아무것도 하지 않은 정말 순수한 서버이기 때문이다

 

 

728x90
반응형

댓글