[Google Cloud] 마인크래프트 서버 만들기
시작
2일 전 1월 16일 드디어 훈련소를 마치고 사회에 나왔다
물론 a형 독감과 함께라는 문제가 있었지만 일단 나오고 나니 너무 기분이 좋다
훈련소에서 만난 사람들과 마크 24시간 마크 서버
를 간단하게 열어서 놀아볼까 하는 생각에 시작한다
선택
마인크래프트 서버를 여는 방법에는 여러가지가 있다
- 개인 컴퓨터
- 미니 컴퓨터
- 외부 서비스
일단 내가 고려해볼 것은 24시간 돌릴 것이지만 개인 컴퓨터를 켜놓고 있기에는 잠 자는 시간동안에도 컴퓨터를 옆에 켜 놓고 팬 돌아가는 소리를 들어야하니 나에게 선택지는 외부 서비스와 미니 컴퓨터 중 하나가 되겠다
외부 서비스에는 Microsoft Azure
과 Google Cloud
가 있다
미니 컴퓨터로는 따로 구매하거나 내가 전에 작업했던 Rpi 4B
가 있다
처음에는 라즈베리파이
를 이용하려고 했었다. 그런데 생각해보니
우리 집이 좀 많이 오래된 곳인지라 랜선을 끌어오려면 벽을 통해서가 아닌 거실을 통과하여 라우터에서 직접 가져와야하는데 하필이면 출입문이 막고 있어 선을 끌어오는데 미관적으로 별로일 것 같아 라즈베리파이는 일단 미뤘다
하지만 뭐 결국에는 라우터도 오래된지라(4년) 무선인터넷 속도가 느리니 랜선을 끌어오기는 할 것이다. 하지만 지금은 몸이 아프니 좀 나중에나 하겠지
그렇다면 이제 외부 서비스
를 이용하는 방법만이 남았는데 난 이미 Microsoft Azure
을 재미사마 안드로이드 구동
을 위한 VM 서비스로 한달 동안 썼기에 이제 무료 토큰은 남아있지 않았다 (그런데 이렇게 만들어 놓고 기어코 라즈베리파이에 Android Lineage 버전을 설치 한뒤에 게임 구동에 까지 성공했었다. 그래서 VM에는 Windows를 설치하여 객체검출에 사용했다는 이야기가…)
그럼 지금 당장 할 수 없는 방법들을 열외해 보면 Google Cloud
를 써야겠지?
Google Cloud 무료 서비스 등록하기
만약 처음 구글 계정으로 서비스를 이용하고자 한다면 무료로 시작하기
가 있을 것이다. 그럼 구글 계정만 계속 만들면 무한으로 쓸 수 있나? 싶은 생각이 들기도 하지만 아니겠지
300달러의 크레딧을 무료로 90일 동안 쓸 수 있다고 한다
일단 써보고 90일 안에 따로 서버를 구성한다면 옮기면 되고 아니면 다른 방법을 찾아보던가 하자, 일단은 간단히 가지고 놀 생각이니까
간단한 본인 정보를 넣고 나면 바로 사용할 수 있다
당연지사 결제는 자동 이체로 전환되지 않는다고 한다
자 모든 정보를 입력하면 이제 곧 바로 서비스를 이용할 수 있게 된다
서버 생성하기
꽤 많은 크레딧이 들어왔다
시작하면 바로 My First Project
에 들어와있을 것이다
데시보드에서 가상 VM 인스턴스
에 들어가 서버를 생성하자
처음 들어가면 위와 같은 사진이 뜰 텐데 사용을 누르면 2분 정도의 시간이 지난 후
무한 로딩에 빠졌다.. 뭐지? 컴퓨터에 랜선이 아닌 무선랜을 쓰고 있어서 그런가? 아닐텐데 뭐가 문제인지 모르겠다
페이지를 다시 로딩(F5)
하니 제대로 페이지에 들어가졌다. 버그였던걸로
이제는 나 처럼 이미 한번 Azure
서비스나 다른 서비스를 이용해 본 사람이라면 쉽게 할 수 있을 것이다
머신 구성
- 리전 : 서울
- 영역 : 자유
- N2 CPU (마크 서버는 싱글 코어를 사용한다고 한다)
- 코어 : 2
- 메모리 : 16GB
만약에 이 세팅에서도 잘 돌아가고 메모리를 8GB로 맞춰도 잘 돌아간다면 라즈베리파이로 도전해 봐도 좋을 듯 하다
만들기 전 OS 및 스토레지에서 기본 설정인 Devian
에서 내게 더 익숙한 Ubuntu
로 변경 후 SSD스토레지로 설정하여 25GB의 크기를 할당해 주었다 (일단 둘 다 Linux기반이기는 하다. 게다가 우리는 딱히 VM에 들어가 GUI를 쓸 일은 없다)
아니 그냥 50GB로 설정해 주었다. 이건 내맘
90일이면 3달 월 114.22를 쓰게 되고 내가 가진 크레딧은 442.18 꽤나 잘 책정된 것 같다
이 때 내가 찾아보던 사이트들에서는 네트워크 탭에서 위 두 트래픽을 허용해 주라는데 나는 왜인지 이해하지 못했다
마인크래프트 방화벽을 여는데 HTTP, HTTPS가 필요한가?
예약 버튼을 눌러 서버 IP도 할당해보자. 결과에 나오는 IP는 이제 친구들과만 공유하길 바란다
만들기 버튼을 누르면 서버를 생성할 수 있다
머신(서버용) 생성 성공
방화벽 설정
외부에서 이 서버에 접속하기 위해서는 당연히 방화벽을 설정해줘야 한다
하다못해 라즈베리파이도 FTP, VNC 쓰려고 방화벽을 설정하기도 한다
좌측 탭에서 방화벽 설정을 해보자
방화벽 정책에서 방화벽 규칙 만들기를 하자
이름은 본인이 기억하기 쉽게 설정
포트는 TCP 포트로 열고 마인크래프트 서버를 위한 포트인 25565
을 넣어주자
진짜 HTTPS랑 HTTP는 왜 필요한거지? 모드용 서버와 바닐라 서버를 모두 완성한 후 서버에서 잘 놀고있는 지금도 글을 다듬고 있는 지금도 이해하지 못했다
만들고 나면 이렇게 VPC 방화벽 규칙
에서 볼 수 있다
마인크래프트 서버 구동 준비
다시 Computer Engine
탭에서 VM 인스턴스
로 들어가 SSH
에 접속하자
새로운 창에서 SSH에 접속할 수 있다
root
권한 설정을 위해 비밀번호를 결정했다
내 생일로 설정
매번 리눅스를 키면 하곤 했던 apt update
와 apt upgrade
를 하자
마인크래프트 서버용 포트인 25565
와 OpenSSH
를 쓰기 위한 포트를 열어주자
이제 방화벽을 활성화 시켜주면 끝!
상태를 확인해 보아도 포트가 잘 열려있음을 알 수 있다
마인크래프트 서버 구동 설치 (paperMC) - 바닐라
이제 정말로 마크 서버를 구동시키기 위한 마지막 단계를 시작하자
나는 바닐라 서버 구동을 위해 PaperMC
를 이용하고자 한다. 마크 버전은 가장 최신 버전을 쓸 것이다
일단 시작으로는 OpenJDK 21
버전을 받아주자
그 후 마인크래프트 계정을 생성하여 Root 에서 일반 계정으로 전환한다
그 후 서버를 생성할 폴더를 만들자
가장 최근 버전의 Paper MC
를 설치할 것인데 paper사이트에 들어가 Build를 우클릭하고 링크를 복사해서 다운받을 수 있다
설치된 것을 확인했다면 서버를 열어보자
라고 하기에는 문제가 발생하였다
아무래도 다운로드 상에 문제인지 76KB만 다운이 되고 내가 원하는 서버 실행 파일을 얻지 못했음으로 wget https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/117/downloads/paper-1.21.4-117.jar
명령어를 통해 다른 방식으로 다운로드 하였다
이제 서버 실행에 성공했고 eula 동의
를 해야한다
nano eula.txt
명령어로 파일에서 false
값을 true
로 변경하고 다시 실행하자
서버 실행에 성공했다!!
그리고 매번 java -Xms8G -Xmx16G -jar paper-1.21.4-117.jar nogui
을 치기 귀찮아서 그냥 bash 실행파일을 만들었다
이제 아주 쉽게 서버를 열 수 있게 되었다
만 문제가 생겼다. SSH를 닫으면 서버가 꺼진다
왜냐? SSH 터미널에서 실행시키고 있었는데 그 터미널이 꺼졌으니 당연히 서버도 꺼질 수 밖에
서버 24시간 유지하기
뭐 방법은 여러가지가 있다
- tmux
- screen
- 백그라운드 실행
이 중에 나는 screen을 써보기로 했다
chat gpt가 이걸 추천하더라고
참고로 서버 종료 명령어는 stop
이다
서버 시작
1
screen ./start.sh
스크린 리스트 확인
1
screen -ls
스크린 접속
1
screen -r (이름)
스크린 삭제
1
screen -S (이름) -X quit
접속해보자 1차
일단 성공이다.. 와!
다른 사람들도 들어와서 사용 가능 확인 완료!
서버 관리를 위해 플러그인 설치하기 (봇 생성) - PaperMC
계속 Google Cloud에 들어가서 서버 상태를 확인하는 것 보다는 디스코드를 이용해서 서버와 통신을 통해 확인하는 것이 훨씬 빠르고 편할 것 이라고 생각해 플러그인을 추가하고자 한다
DiscordSRV을 추가 할 생각이다
정리하는 지금(25-1-24)에 와서 서버를 써보면서 안 사실이지만 DiscordSRV
는 서버 상태를 알려주지는 않는다
채팅이나 도전과제 달성, 서버에 들어오거나 나갈 때 봇을 통해 알려준다
방법은 매우 간단하다
1
cd /server/plugins
플러그인 파일에 들어가 wget
명령어로 가장 최신 .jar파일을 다운받으면 된다
한번 다운받은 후에는 서버를 다시 실행시켜 Discord 봇 토큰을 넣으라는 메세지가 뜰 때 까지 기다리다 서버를 종료한 뒤에 봇 설정에 들어가자
이렇게 봇을 생성하고 나면 이제 다시 서버로 돌아가 토큰을 넣어주자. 복사한 토큰은 서버의 ./config.yml
에 넣어주면 된다
봇 토큰을 발급 받은 후 ./plugins/DiscordSRV/config.yml
에 넣었다면 봇 초대 링크를 생성해 디스코드 서버에 봇을 초대할 차례이다
OAuth2
에 들어가 맨 아래로 페이지를 내려보자
여기서는 서버에서 어떤 권한들을 쥐여줄지 선택할 수 있는 페이지 이다. 나는 여기서 SCOPES
는 BOT
으로 BOT PERMISSIONS
은 Send Messages
, Manage Messages
두가지 기능을 사용하겠다
이제 가장 아래 있는 링크 생성기에서 링크를 만들고 브라우저에 입력하면 봇을 어떤 서버에 부를지 정할 수 있게 되고 생성된 봇에 설정을 해줄 시간이다
서버 관리를 위해 플러그인 설치하기 (봇 세팅)
먼저 디스코드에서 봇이 사용할 채널을 옮겨주자
사실 이 외에도 많은 다른 코드가 있겠으나 사실 이젠 끝이다 이 상태로 서버를 활성화시켜주면 봇도 같이 활성화가 된다
서버가 실행될 때 알아서 플러그인을 잡아주니 얼마나 좋은가
아닌가? 이런.. 봇의 권한이 조금 더 필요했었다
이제는 되겠지?
오오오오오 됬나!
성공이다
채팅도 확인되었다
계속 알람이 울리면 좀 그래서 아예 따로 채널을 하나 만들었다. 이제 마인크래프트 서버는 쉽게 만들 수 있겠다
명령어는 안뜨는 걸로 확인되었다. 일단 당분간 이 서버는 이렇게 냅두는 걸로 하자
마인크래프트 서버 구동 설치 (Fabric)
모드를 사용하기 위해서는 Fabric
이나 Forge
를 이용해야 한다
또한 Forge
는 훨씬 많은 모드를 보유하고 있지만 조금 무겁고
Fabric
은 모드의 수가 적지만 훨씬 가벼운 서버에 친화적이다 고로 Fabric
너로 정했다
(25-1-24 : 라고 해놓고 모드팩을 설치하는 바람에 결국 싹 다시 날렸다는.. 그러니 처음 모드 서버를 만드는 사람은 Forge 탭으로 가시길)
VM 설정은 위와 동일하다
또한 서버 구동 준비 까지의 과정은 완전 동일하다
이번에는 모드의 버전이 낮기에 OpenJDK의 버전은 17이 될 것이다
설치가 끝나면 minecraft 계정으로 돌아간다. 그리고 이제부터가 진짜 Fabric
을 설치하는 과정이 되겠다
공식 문서에 나온 대로 CLI 설치를 하고 실행을 해주면 서버는 실행하는데 성공한 것이다
1
java -Xmx12G -jar fabric-server-mc.1.20.1-loader.0.16.10-launcher.1.0.1.jar nogui
다시한번 실행용 start.sh
를 만들고 eula.txt
에서 동의로 바꿔주면
아 맞다 권한을 안줬네
권한을 주고 처음 실행시키게 되면
이렇게 맵을 만들고 있는 것을 볼 수 있다
좋아 이제 서버를 만드는 작업은 끝났고 모드를 설치하고 맵을 다시 뒤엎어보자
내가 설치할 모드는 Prominence II RPG: Hasturian Era라는 모드팩이다
일단 설치해 보고 나중에 싹 다 갈아엎을 수도?
1
wget https://mediafilez.forgecdn.net/files/6088/184/Prominence%20II%20RPG%20Hasturian%20Era-v3.0.30hf.zip
모드 설치 경로는 위와 같다
다른 모드들도 그렇지만 파일 다운로드 경로를 못 찾겠다면 그냥 본인 컴퓨터에 한번 다운 받아보고 다운로드 링크를 써넣으면 된다
월드를 새로 갈아 엎을 때에는 world
파일을 그냥 통째로 날려버려라 그럼 다시 만들어질 것이다
그.. 그만.. 이번 오류는 바로 의존성 모드가 필요하다고 한다..
1
2
3
4
5
wget https://mediafilez.forgecdn.net/files/4731/991/Luna-FABRIC-MC1.19.X-1.0.1.jar
wget https://mediafilez.forgecdn.net/files/6036/402/fabric-api-0.92.3%2B1.20.1.jar
wget https://mediafilez.forgecdn.net/files/5772/682/Necronomicon-Fabric-1.6.0%2B1.20.1.jar
그래도 문제가 계속 생긴다. 일…단은 다 삭제하고 내일 다시 해봐야겠다. 어쩌면 그냥 모드팩이 아니라 모드만 까는 것이 훨씬 쉬울지도, 라고 생각했으나
충격적이게도 내 본 마인크래프트를 설치하였을 때에 curse forge
앱에 서버용 다운로드가 뜨는 것을 발견하였다
설마 이거를 따로 써야하나?
맞았다! 파일을 다운 받은 후 zip파일을 풀고 start.sh
파일에 권한을 부여한 후 실행시키면 알아서 서버를 열어준다
그리고 확인해 보니 확실히 모드 서버가 실행하는데 있어 엄청나게 오래 걸린 다는 것을 알 수 있었다
모드 서버에 접속하는데 성공은 했으나 아무래도 내가 설정한 VM이 모드팩을 못 버티는 듯 하다 이건 뭐 나중에 좀 더 바꾸기로 하자
(25-1-24 : 사실 생각보다 오류가 뜨지만 맵 확장 시에만 조금 느렸지 모드팩을 즐기는데에는 무리가 없었다)
마인크래프트 서버 구동 설치 (Forge)
서버를 갈아 엎고 Forge용 서버로 필요한 모드만 넣기로 하였다
1. 서버 갈아엎기
파일 내부를 전부 삭제 후 Forge 사이트에 들어가 원하는 버전을 선택한 후 위 Fabric
에서 하던 방법을 다시 하면 된다
이렇게 서버 준비가 끝이 나면 시작은 run.sh
파일로 하면 된다. 위에 보이는 start.sh
는 서버를 처음 만들 때 필요해서 만들어 둔 것이기에 사실 한 번 실행 했다면 삭제해도 무방하다
2. 모드 선정 후 다운로드 하기
일단 이번 서버의 버전은 1.20.1로 결정했다
모드를 선택할 때에는 curseforge에 들어가 다운로드 하면 되고 이 때 Forge
인지 Fabric
용 인지 확인하고 버전도 맞춰서 다운하길 바란다
이번에 나는 이정도의 모드를 설치해 보고자 한다
뭐 하는 모드인지는 나중에 시간이 남는다면 적어볼 수도?
이제 나는 이 파일을 나의 마크 서버에 보내야 한다
25-1-24
- aether : 천국모드
- alexsmobs : 새로운 몬스터, 동물 추가
- animal_armor_trims : 동물 갑옷
- appleskin : 음식 먹었을 때 추가 효과
- betterfpsdist : 서버의 FPS 증가
- BetterThirdPerson : 3인칭 추가 기능
- BiomesOPlenty : 바이옴 추가
- carryon : 물건 들 수 있음
- chat_heads : 채팅치면 얼굴 나옴
- Clumps : 경혐치 구슬 덩어리로 모아줌 - 랙 감소
- embeddium : 이게 쉐이더였나?
- EnchantmentDescriptions : 이름 그대로 인첸트 설명
- gravestone : 무덤
- irons_spellbooks : 마법책 모드
- Jade : 누구세요?
- jei : 아이템 검색 등등
- journeymap : 지도
- JustEnoughResources : jei랑 합쳐져서 추가 정보
- modernfix : 움직임 인가? 기억이 안나네
- moonlight : 다른 모드에 필요
- mowziesmobs : 모찌라고 불리는 모드, 여러 몬스터 및 바이옴 추가
- NatureCompass : 지형 찾기 나침반 추가
- polymorph : 모드마다 조합법 안 썪이게 정리
- skinlayers3d : 스킨 3d로 구현
- sodiumdynamiclights : 이게 쉐이던데?
- sophisticatedbackpacks : 가방 추가
- twilightforest : 황혼의 숲
- waystones : 텔레포트 할 수 있는 웨이포인트 비석 추가
3. 모드 전송
일단 한번 scp
명령어를 사용해 보자
는 시작부터 문제네
아무래도 내가 서버측에서 마크용 포트만 열어놔서 막히는 듯 하다. 이러면 또 다른 방법을 써야지
github
서버에 올린 뒤에 이걸 다운받으면 되겠지?
오케이 바로 실패. 뭐 당연한 거였겠지만 용량의 문제일 것이다
그렇다면 그냥 외부 서비스를 이용하자
그런데 file.io
는 또 뭔가 lime
이랑 합병 되면서 이상해졌다. wget
사용 불가
그냥 github 레포지토리
에 올린 뒤에 다운 받자
zip
파일로 올리게 되면 용량에 문제가 생기니 원래 있던 레포지토리에 하나씩
파일을 쪼개 넣으면 된다
git clone
으로 다운 받으면 성공
끝!?
실행시키면 필요한 라이브러리가 매우 많다는 것을 알 수 있다.. 아이고
다시 설치를 끝내고 실행을 해보면?
월드 생성이 시작된다!
서버 구동 성공!
25-1-24
는 했지만 아직도 우리는 바닐라 서버를 즐기는 중이다
필요에 따라 다르겠지만 동시에 쓸게 아니라면 토큰도 아낄겸 서버 하나만 열어서 구동하여도 좋을듯 하다
마인크래프트 (클라이언트) 모드 설치
서버측 보다 훨씬 쉽다. 아니 사실상 과정이 동일하다 CLI가 아닌 GUI로 이루어진다는 것만 빼면 말이다
파일 내부를 전부 삭제 후 Forge 사이트에 들어가 원하는 버전을 선택한 후 설치를 진행하자
쭉 진행하면 된다
마크 설치도 완료된다면 모드를 전부 넣어주자
모드를 몇가지 더 추가했다
모드 서버 접속 성공!!
끝?
4주의 훈련소 과정을 할 때에 한번쯤은 다시 한번 시도해 보고 싶다는 생각이 들었던 마크 서버 만들기
결국에는 하루만에 성공했네요
어릴땐 이게 어찌나 어렵던지.. 그만큼 최근 나오는 도구들이 더 쉽게 도와준다는 뜻도 있겠죠
다들 독감 조심하시길..
진짜 끝 1차
서버를 Forge용도로 변경하기 위해 Forge 관련 내용이 추가되었다
2025-01-24 끝 2차
다듬기까지 끝