우분투 마인크래프트 24시간 서버 - ubuntu mainkeulaepeuteu 24sigan seobeo

리눅서수다 마인크래프트 서버 설치 (Ubuntu 18.04) 8

2

얼마전 아이들이 마인크래프트를 하기 시작해서 마인크래프트 서버를 설치하면서 참고했던 자료들을 정리해 보았습니다.

저는 마인크래프트를 해 본 적이 없어 어떻게 시작해야 하는지 잘 모르는 상태에서 자바 에디션이 좋다는 글들을 보고 두 아이용으로 구매 하고 설치해 줬습니다. 그렇게 아이들 플레이 하는 것을 보고 뿌듯해하면서 그게 다인 줄 알았었는데 멀티 플레이를 하려면 서버가 있어야 된 다는 것을 알게 되어 집에서 Plex 서버와 Nextcloud 로 사용하고 있는 우분투 서버(CPU: J4105, 램: 8GB)에 마인크래프트 서버를 설치하게 되었습니다. 아마 이미 서버를 구축하고 사용하고 계신 분들이 계실텐데 제 경우 마인크래프트와 리눅스에 대한 이해가 부족한 상태에서 이래저래 자료만 보면서 작업을 진행했다 보니 여러모로 부족한 부분이 있을텐데 그런 부분에 대한 조언 부탁드립니다.

1. 마인크래프트 클라이언트

Java Edition

2. 마인크래프트 서버 선택

처음 마인크래프트 서버 설치는 https://www.minecraft.net/en-us/download/server 에 있는 minecraft_server.1.16.3.jar 를 다운받아 설치했었습니다. 그런데 설치해 놓고 인터넷을 검색하다 보니 plugin을 사용하려면 다른 서버 Paper, Spigot, Bukkit 등을 사용하는 것이 좋다는 글들을 보게 되었습니다.

(1) Paper

Paper, Spigot, Bukkit 서버들 중에 어떤 서버를 사용해야 할지 몰라 좀더 살펴보니 Spigot에서 시작된 Paper가 최적화가 잘되어 있어 성능면에서 좋다는 글들을 보게되어, 제 서버 사양을 생각해서 Paper 설치를 진행하였습니다.

3. 마인크래프트 서버 설치

※ 참고: https://www.fosslinux.com/18063/how-to-install-minecraft-server-on-ubuntu.htm

※ 참고: https://www.vultr.com/docs/setup-paperspigot-on-ubuntu

(1) 서버 설치

1) 우분투 서버 업데잇

먼저 우분투 서버를 최신 상태로 만들어 줍니다.

sudo apt update
sudo apt upgrade

2) Java Package 설치

만약 자바가 설치되어 있지 않다면 자바를 설치해줘야 합니다.

java -version 명령어를 통해 자바 설치 여부를 확인하시고, 설치되어 있지 않을 경우 아래 명령을 수행합니다.

①  Java 설치

sudo apt install openjdk-8-jdk -y

3) 마인크래프트 서버를 위한 사용자 추가

① 사용자 추가

sudo adduser minecraft

② minecraft라는 사용자를 추가하고 sudo 그룹에 추가

sudo usermod -aG sudo minecraft

③ minecraft 사용자로 전환 

su - minecraft

4) screen 설치

백그라운드에서 실행되는 마인크래프트 서버를 확인하기 위해 screen을 설치합니다.

sudo apt install screen

screen을 통해 마인크래프트 서버 실행 중 서버종료(stop), 권한주기(op 사용자 아이디) 등의 작업을 할 수 있습니다. 또한 로그를 확인할 수 있어 누가 접속했는지, 접속한 사용자가 게임 내에서 어떤 명령어(teleport 등)를 사용하였는지를 볼 수 있습니다.

5) 마인크래프트 디렉토리 만들기

디렉토리 이름은 원하시는 것으로 작성하시면 됩니다. 만약 다양한 서버(Paper, Spigot, Bukkit)를 설치하고 싶으시다면, minecraft 디렉토리 밑에 paper(혹은 spigot, bukkit) 디렉토리를 만들어서 각 서버를 관리하실 수 있습니다.

minecraft@server:/data$ mkdir minecraft
minecraft@server:/data$ cd minecraft

6) 마인크래프트 Paper 서버 파일 다운로드

아래의 링크에서 Paper 서버 파일을 다운로드 할 수 있습니다.

※ 참고: https://papermc.io/downloads

※ 참고:  https://papermc.io/ci/job/paper-1.16/

제 경우 두번째 링크에서 paperclip-206.jar 파일을 다운로드 경로를 복사해서 다운로드 하였습니다.(parperclip.jar와 동일) 그리고 업데이트가 빠른 편인 것 같으니 항상 최신버전을 다운로드하시면 될 것 같습니다.

① 다운로드

제 경우 minecraft 경로에서 위 명령을 수행했습니다. 마인크래프트 클라이언트가 업데잇 되면 버전이 낮은 서버 버전은 사용할 수 없게되니 참고 링크를 확인하셔서 최신 버전으로 설치해주셔야 합니다.

minecraft@server:/data/minecraft$ wget https://papermc.io/ci/job/paper-1.16/lastSuccessfulBuild/artifact/paperclip-206.jar

② 다운로드한 파일에 권한주기

sudo chmod +x paperclip-206.jar

7) 라이센스 동의를 위한 eula.txt 파일 만들기

서버 실행시 필요한 라이센스 동의와 관련된 파일을 만들어둡니다.

minecraft@server:/data/minecraft$ vi eula.txt

이렇게 만든 파일에 동의관련 체크를 위해 다음의 

eula=true 

를 입력하고 저장합니다.

8) 마인크래프트 서버 실행 스크립트

마인크래프트 서버 실행을 위한 스크립트를 작성합니다.

minecraft@server:/data/minecraft$ vi start.sh

start.sh 파일에는 다음의 내용을 기록합니다.

#!/bin/sh
java -Xmx4G -Xms4G -jar paperclip-206.jar  nogui

제가 이부분에 대해서는 적절한 설정값(아마도 PC 사양과 사용자 수에 따른 적절한 공식이 있을 듯 싶습니다.)을 몰라 우선 아이들이 게임하기에 원활했으면 하는 생각이 들어 램 4G를 잡아놓았습니다. 아마 갖고 계신 서버 사양에 맞게 조절하시면 좋을 것 같습니다.

9) 마인크래프트 실행

minecraft@server:/data/minecraft$ ./start.sh

위 명령어를 수행하시면 마인크래프트 서버가 로딩되는 것을 확인하실 수 있을 것입니다. 모두 정상적으로 로딩이 되었다면 우선 stop을 입력해서 서버를 정지시킵니다.

> stop

10) server.properties 설정

마인크래프트가 정상적으로 실행된 상태라면 minecraft 디렉토리에서 server.properties 파일을 확인하실 수 있습니다.

※ 참고: https://minecraft.gamepedia.com/Server.properties

minecraft@server:/data/minecraft$ vi server.properties

server.properties 에서 필요한 설정을 진행합니다. 

제 경우 아이들이 아직 어린관계로 gamemode를 creative로 변경하였습니다. gamemode에는 survival, creative, adventure 값을 설정할 수 있는데 기본값은 survival 입니다. 그런데 조금 시간 지나고 나니 아이들이 게임 내에서 gamemode 명령어를 사용해서 알아서 모드를 이리저리 변경했었습니다.

①  gamemode

gamemode=creative

②  difficulty

difficulty 는 peaceful, easy, normal, hard 값을 설정할 수 있습니다.

difficulty=peaceful

③ motd

게임 서버 연결시 보여지는 서버의 이름(메시지) motd(Message of the Day)를 설정할 수 있습니다. 

motd=New World

만약 motd에 색상을 넣고 싶으시다면 아래 참고 링크에 보여지는 색상표를 가지고 표현할 수 있습니다. 

※ 참고: https://www.bisecthosting.cowww.clients/knowledgebase/77/How-to-change-your-server-MOTD.html

motd=\u00A7b\u00A7lAll Star Weekend! \u00A7e\u00A7lLet's Play!

④ server-ip

server-ip=

는 공백으로 되어 있는데,  그대로 두면 마인크래프트 서버가 실행되고 있는 서버의 IP를 설정하여 사용합니다.

⑤  server-port

server-port=25565

마인크래프트 서버는 25565 포트를 사용하고 있습니다. 외부에서 해당 서버에 접근을 원하시면 공유기에 로그인하셔서 포트 포워딩을 설정해주셔야 합니다. 제 경우 ASUS 공유기를 사용중인데 http://192.168.29.1/ 에 로그인하여 WAN > Virtual  Server / Port Forwarding 의 Port Forwarding List에 25565 포트를 추가하고, 사용중인 도메인 서비스에 minecraft.xxxx.com 을 만들어서 외부에서 접근하도록 하였습니다.

⑥ white-list 

만약 제한된 사용자만 해당 서버에 들어올 수 있게 하시려면 white-list 를 true 하고, 사용자 아이디를 등록해줍니다. 제 경우 처음 설정의 white-list=false 상태로 두었더니 아이들이 플레이 하는 중에 모르는 사람이 서버에 들어와서 아이들이 놀랐던 경우가 있어 해당 옵션을 true로 설정하였습니다. (op는 자동적으로 whitelist에 등록됩니다.)

※ 참고:  https://apexminecrafthosting.com/how-to-set-up-a-whitelist/

white-list=true

⑦ white-list에 사용자 추가

white-list=true 상태에서 서버가 실행되면 사용자를 추가합니다. 추가 명령은 다음과 같습니다.

>  whitelist add playername

> whitelist add clooney

이렇게 추가한 사용자는 whitelist.json 에서 확인하실 수 있습니다.

minecraft@server:/data/minecraft$ vi whitelist.json

11) EssentialsX Plugin 설치

사실 어떤 플러그인이 사용하기 좋은지 잘 모르는 상태라 우선 EssentialsX 플러그인을 설치해보았습니다.

※ 참고: https://ci.ender.zone/job/EssentialsX/

위 사이트에 접근하시면 EssentialsX 관련 플러그인들을 확인하실 수 있습니다. 저는 우선 EssentialsX-2.18.1.13.jar 플러그인 만을 설치해보았습니다.

① 플러그인 폴더로 이동

minecraft@server:/data/minecraft/plugins$

② 플러그인 다운로드

plugins 폴더로 이동한 상태에서 다운로드를 수행합니다.

minecraft@server:/data/minecraft/plugins$ wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/Essentials/target/EssentialsX-2.18.1.13.jar

다운로드가 완료되면 start.sh가 있는 상위 폴더로 이동하여 마인크래프트 서버를 실행합니다. 

minecraft@server:/data/minecraft$ ./start.sh

이렇게 실행하고 나면 서버로 로딩되면서 플러그인 정보를 함께 적용하게 됩니다. 서버 로딩이 완료되고 나면 stop 을 통해 서버를 중지합니다. 그런데 로딩 정보를 살펴보니 제 경우 아래와 같은 메시지를 볼 수 있었습니다.

[01:10:43 WARN]: [Essentials] Missing userdata folder, aborting

해당 폴더가 없다는 메시지로 (접속한 사용자가 없어서인지) 어떤 이유에 의해 이렇게 된 건지는 모르지만 저는 plugins/Essentials 디렉토리로 이동해서 userdata 폴더를 만들어 주니 해당 경고가 사라졌었습니다.

minecraft@server:/data/minecraft/plugins/Essentials $ mkdir userdata  

나중에 보니 이 userdata 디렉토리에는 서버에 접속했던 사용자들의 정보(아이디, 시간, 좌표)가 기록되어 있던 것을 볼 수 있었습니다.

③ Essentials 디렉토리 config.yml

plugins 디렉토리 아래 Essentials 디렉토리에서 config.yml 파일을 확인하실 수 있습니다.이 설정 파일을 통해 Essentials 플러그인을 설정할 수 있습니다. 저도 아직 이부분은 많이 변경하지 못한 상태이며, 유투브를 보면서 몇개 정도 변경만 해보았습니다. 메시지 색상 변경이라던지 이런 부분들과 다른 것들을 설정할 수 있는데, 게임에 대한 이해도가 많이 부족하다 보니 아직 어떻게 써야하는지 잘 몰라 좀더 살펴보고 있습니다.

※ 참고: https://github.com/SpigotMC/SpigotCraft/blob/master/plugins/Essentials/config.yml

※ 참고: https://wiki.mc-ess.net/wiki/Configuration_file

※ 참고: https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/mods-discussion/1402959-bukkit-colour-codes

④ motd.txt

게임 접속 시에 게임창에 보여지는 첫 메시지를 색상과 함께 표시할 수 있습니다.

minecraft@server:/data/minecraft/plugins/Essentials$ vi motd.txt
&6Welcome, &c{PLAYER}&b!
&6Type &a/help&6 for a list of commands.
&6Type &a/list&6 to see who else is online.
&6Type &a/rules&6 to check game rules.
&6Players online:&c {ONLINE} &6- World time:&c {WORLDTIME12}

⑤ rules.txt

rules를 실행하게 되면 보여지는 게임내 룰들을 관리할 수 있습니다.

minecraft@server:/data/minecraft/plugins/Essentials$ vi rules.txt
[1] Be respectful
[2] &aUse kind words only
[3] &bTreat others fairly
[4] &eShare your knowledge with others
[5] &fDon't hurt others
[6] &dApologize when you are sorry
[7] &6Have fun! Enjoy the game!

4. 마인크래프트 서버 실행

앞서 start.sh 를 통해 마인크래프트를 실행하였는데, 조금 이상한 것이 있었습니다. putty로 서버에 접근하여 마인크래프트를 실행하고 나서 putty를 종료하였더니 마인크래프트 서버가 종료된 것을 볼 수 있었습니다. 검색해 보니 putty가 종료되면서 끊김 신호를 보내는데 이로 인해 마인크래프트 서버가 함께 종료될 수 있다는 것이었습니다. 제 경우 서버 실행 후, screen 상태에서 노트북을 닫았었는데, 시간이 지나면서 putty 세션이 끊기면서 서버가 종료된 것으로 생각됩니다.

※ 참고: https://unix.stackexchange.com/questions/309056/linux-minecraft-server-closes-when-i-exit-putty

(1) 마인크래프트 실행

참고 자료에서 제안한 마인크래프트 서버 실행 방법은 다음과 같았는데 putty를 종료해도 마인크래프트 서버가 잘 동작하는 것을 확인했었습니다.

1) screen 명령 수행 

minecraft@server:/data/minecraft$  screen

screen 명령 후에 엔터키를 입력하여 쉘로 다시 돌아옵니다.

2) 서버실행

minecraft@server:/data/minecraft$  ./start.sh

마인크래프트 서버가 정상 실행되고 나면 > 표시를 보실 수 있을 것입니다.

3) screen을 detatch (Ctrl + a + d)

> 

화면의 위 > 상태에서 Ctrl 키와 a 를 누른 상태에서 d 를 누릅니다. 이는 screen을 detatch 합니다.

4) putty를 종료

putty를 재실행하여 마인크래프트 서버 실행여부를 확인해 보았는데, 잘 동작하고 있었습니다.

(2) putty 접속 후 마인크래프트가 실행 중인 screen으로 가기

1) screen 확인

minecraft@server:/data/minecraft$  screen -ls

위 명령을 통해 현재 screen 들을 확인합니다.

There is a screen on:
        15168.pts-0.server        (09/28/2020 06:29:09 AM)        (Detached)
1 Socket in /run/screen/S-minecraft.

2) screen으로 돌아 가기

minecraft@server:/data/minecraft$  screen -r 15168.pts-0.server

screen -r 명령을 통해 원하는 screen으로 돌아 갈 수 있습니다.

이 명령을 통해 마인크래프트 서버로 돌아오시면 현재 로딩되어 있는 상태를 보실 수 있습니다.

3) screen 종료하기

screen 을 통해 작업하다 보면 사용하지 않는 여러 항목들을 볼 수 있는데 이 항목들 중 필요없는 것은 다음의 명령어를 통해 종료할 수 있습니다. 

minecraft@server:/data/minecraft$  screen -XS 15168.pts-0.server quit

5. op 권한주기

위와 같이 서버를 실행하고 아이들이 멀티 플레이를 할 수 있는 환경을 만들어줘 모든게 끝난 줄 알았었는데, 아이로 부터 '아빠 텔레포트를 할 수 없어'라는 말을 듣고 다시 헤매기 시작했었습니다.  '텔레포트? 그게 뭔데?' 이 수준이다 보니 아이에게 조금만 기다려 아빠가 찾아볼게 하고 검색을 진행했었습니다. 이를 통해 처음 서버를 수행하고 나서는 op(operator) 가 없기 때문에 이를 설정해줘야 한다는 것을 알게 되었습니다.

(1) op 권한 주기 

screen 명령을 통해 현재 실행되고 있는 마인크래프트 서버로 돌아 갑니다.

1) > op playername

> op clooney

위와 같이 op 플레이어 이름을 입력하고 엔터를 치면, 해당 사용자가 op가 되어 갖가지 치트키를 사용하게 되는 것을 알게되었습니다. 아직은 op 외에 다른 사용자에게 어떻게 키를 주는지 몰라 우선 접속했던 모든 사용자에게 op 를 부여해놓은 상태입니다.

6. 아이들 플레이

아이들은 함께 게임을 한다는 것에 상당히 만족해 했었습니다. 특히 둘째 녀석은 큰 아이와 함께 하는 걸 무척이나 좋아하더라구요. 그리고 주말에는 큰 아이 친구네 부모님과 얘기해서 아이들이 함께 게임을 하도록 했었는데, 한쪽에는 아이패드로 페이스타임을 켜 놓고 아이들끼리 시끄럽게 웃고 얘기하면서 게임을 하는 것을 보니 보기 좋았었습니다. 

7. J4105 성능

J4105가 몇 명까지 원활한 게임을 지원해 줄지 조금 걱정이었는데 현재 4명이 플레이를 하는데는 전혀 지장이 없는 것을 확인했습니다.

8. 네트웍 맛보기

서버를 구성해 놓고, 큰아이 친구가 접속할 수 있도록 '친구한테 Server Address를 minecraft.xxxx.com 을 넣고 접속하라구 해' 라고 얘기했더니, 큰 아이가 '아빠, 친구가 IP 어드레스 숫자를 넣어야 한데' 라고 해서 이부분에 대해 게임이 끝난 후에 아이와 함께 알아 보았었습니다. 각각의 기기들은 우리집 식구가 서로 다른 이름을 갖고 있는 것처럼 내부에서 사용하는 서로 다른 IP가 있고, 외부에서 보는 하나의 IP가 있는데 친구한테 minecraft.xxxx.com 를 알려주면 DNS(제가 간략하게 설명해주고, 유투브에서 설명이 잘되어 있는 것을 찾아 함께 보았습니다.)를 통해 우리집 IP를 찾아내서 우리 집에 접속할 수 있게 된다는 설명을 간략하게 해줘었습니다. 이야기를 하면서 마인크래프트 서버가 돌아가고 있는 컴퓨터, 그리고 구석에 있어서 아이가 그동안 보지 못했던 공유기와 공유기에 접속해서 WAN IP랑 제가 사용하고 있는 도메인 서비스 웹페이지에 들어가서 minecraft.xxxx.com와 연결되어 있는 IP를 보여주니 왜 아빠가 IP 대신 도메인을 알려주었는지 조금은 이해하는 것 같았습니다.

SIGNATURE

What is not started today is never finished tomorrow - Joshua Reynolds

서명 더 보기 서명 가리기

GIF 파일 다운로드

0 0 0 0

GIF 파일을 다운로드 받으려면
화면에 표시된 4자리 번호를 입력해주세요.