네이버 이웃 추가 / GitHub Profile / 카카오톡 채널 추가 / 방명록 / 이용 안내

라즈베리파이4B Ubuntu Server로 마인크래프트 자바에디션 바닐라 서버 여는 법

수성컴 | 2024. 08. 03.
라즈베리파이4B Ubuntu Server로 마인크래프트 자바에디션 바닐라 서버 여는 법

수성컴전자방입니다. 오늘은 Ubuntu Server가 설치된 Raspberry Pi 4 Model B로 마인크래프트 자바에디션 바닐라 서버 여는 법에 대해서 알려드리겠습니다. 마인크래프트 바닐라 서버는 가장 기본적인 서버라고 생각하시면 됩니다.(단, 바닐라 서버에서는 모드 설치가 불가능합니다.) 24시간 서버를 열면 전기가 많이 나갈테니 전력 소모가 적은 라즈베리파이를 사용하겠습니다.

목차

1. 라즈베리파이 준비
1.1. Raspberry Pi 4 Model B에 Ubuntu Server 설치, SSH 연결
1.2. (공유기 사용 시)라즈베리파이4B Ubuntu Server 고정 IP 설정

2. 마인크래프트 바닐라 서버 구동기 내려받기
3. 라즈베리파이에 JDK 설치
4. 서버 열기 및 server.properties 수정
5. (공유기 사용 시)포트포워딩
6. (방문자 입장)서버에 접속하는 방법
7. 서버 운영자가 알아두면 좋은 명령어
8. screen 사용하기(VS Code를 꺼도 서버가 안 꺼지게 하는 방법)
9. 세이브 파일 사용하는 방법(기존에 만든 맵으로 서버 열기)
10. 글 마무리
11. 참고 자료

1. 라즈베리파이 준비

각각의 링크를 참고하여 준비합니다.

1.1. Raspberry Pi 4 Model B에 Ubuntu Server 설치, SSH 연결

라즈베리파이를 조작하는 방법은 여러 가지가 있겠지만, 저는 Visual Studio Code를 이용하여 SSH 접속하겠습니다.

1.2. (공유기 사용 시)라즈베리파이4B Ubuntu Server 고정 IP 설정

서버를 여러 번 열 것이라면 서버 컴퓨터의 IP는 고정되어 있는 것이 편합니다. 공유기를 사용하신다면 위의 링크를 참고하여 설정하시기 바랍니다. 참고로 사설 IP만 고정하는 것이므로, 공인 IP는 여전히 동적 IP입니다.(공인 IP를 고정하려면 추가 요금을 내야 합니다. 그냥 사설 IP만 고정합시다.)

2. 마인크래프트 바닐라 서버 구동기 내려받기

마인크래프트 바닐라 서버 구동기는 Minecraft Launcher에서 내려받으실 수 있습니다.

Minecraft Launcher
2.1. Minecraft Launcher를 실행합니다.
2.2. Minecraft: Java Edition을 클릭합니다.
2.3. 설치 설정을 클릭합니다.
2.4. 새 설치 설정을 클릭합니다.

새 설치 설정 만들기
2.5. 버전을 확인하시고 버전 오른쪽에 작게 서버라고 쓰인 것을 클릭합니다.
(서버 버전과 플레이어의 게임 버전이 다르면 플레이어가 접속할 수 없습니다.)

웹 브라우저 열림
2.6. 그러면 웹 브라우저가 열리며 server.jar를 내려받겠냐는 창이 뜹니다. 내려받아 주세요.

경고
2.7. 장치를 손상시킬 수 있다는 경고가 뜨면 유지를 클릭합니다.

vscode-open-folder
2.8. 이제 Visual Studio Code SSH를 이용하여 라즈베리파이에 접속하고, Open Folder(폴더 열기) 또는 파일폴더 열기를 클릭한 후 홈 디렉토리를 엽니다(OK 클릭).

vscode-암호입력
2.9. 폴더를 열기 위해서 암호를 입력합니다.

server.jar 복사
2.10. 아까 내려받은 server.jar 파일을 라즈베리파이의 적당한 폴더에 복사합니다.(저는 ‘mcjeserver’ 폴더를 만들어서 그 안에 넣었습니다.)

3. 라즈베리파이에 JDK 설치

마인크래프트 자바 에디션 서버를 구동하기 위해서는 Java Development Kit(JDK)를 설치해야 합니다.

Oracle
3.1. https://www.oracle.com/java에 접속합니다.
3.2. Download Java를 클릭합니다.

Java Downloads
3.3. 설치할 JDK의 버전을 확인합니다. 저는 지원 기간이 가장 긴 버전을 골랐습니다.

apt install
3.4. 라즈베리파이 터미널(VS Code SSH 터미널)로 돌아와서 터미널에 sudo apt install openjdk-버전-jdk를 입력 및 실행하고 암호를 입력합니다.

jdk install
3.5. ‘Do you want to continue?’라고 뜨면 y를 입력하고 엔터를 누릅니다.
3.6. 기다리면 JDK 설치가 완료됩니다.

4. 서버 열기 및 server.properties 수정

free-h
4.1. 서버를 열기 전 free -h 명령을 실행하여 메모리 공간을 확인합니다. 저는 free가 6.1GiB, available이 6.9Gib이네요. 여러분은 다를 것입니다.

우리가 서버 구동기를 실행할 때 할당할 최대 RAM 용량을 xGB라고 가정합시다.
그런데 사실 우리가 서버 구동기에 할당하는 용량은 엄밀히 말하면 Heap 영역이라서, 실제 사용량인 (heap 사용량)+(메소드 영역 사용량)+(스레드 영역 사용량)을 합하면 1.5배 정도 됩니다.

따라서 1.5x≤(사용 가능한 RAM 용량)으로 일차부등식을 세워서 풀어야 합니다.

예) 사용 가능한 RAM 용량이 6GB일 경우
1.5x≤6
x≤4

java 첫 실행
4.2. cd 명령어로 server.jar이 있는 폴더(이하 ‘mcjeserver 폴더’)에 들어옵니다.
4.3. java -Xms용량G -Xmx용량G -jar server.jar 명령을 실행합니다.

첫 파일들
4.4. mcjeserver 폴더에 몇 가지 파일들이 생겼습니다.

eula.txt
4.5. 먼저 eula.txt를 열고 3행의 false를 true로 변경합니다.

server.properties
4.6. 서버 관련 설정을 바꾸기 위해서는 server.properties 파일을 수정해야 합니다.

  • 필자의 server.properties 수정 요령
    • gamemode 변경하기(그런데 이건 맵을 새로 만들 때 적용되는 거라서 사실 기존에 제작하신 맵으로 플레이하실 분은 맵 자체 gamemode를 원하는 대로 설정해 두셔야 합니다.)
    • difficulty=원하는 난이도
    • enable-command-block 변경하기(true: command block 사용을 허용 / false: 비허용)
    • max-players=20(최대 접속자 수: 20명. 최대 접속자 수를 변경하려면 숫자를 수정.)
    • motd=서버 메시지(60자 미만)
    • 그 외의 항목은 나무위키 server.properties 문서를 참고하세요.

java 2번째 실행
4.7. java -Xms용량G -Xmx용량G -jar server.jar 명령을 실행합니다.

서버 실행됨
4.8. 로딩이 다 될 때까지 기다리시기 바랍니다. 시간이 오래 걸립니다. 스폰 지점 준비가 다 끝나면 아래와 같은 문구가 뜰 겁니다.
Done (s)! For help, type “help”

5. (공유기 사용 시)포트포워딩

포트포워딩 예시
공유기를 사용하는 경우 각 장치에 사설 IP가 부여됩니다. 같은 네트워크 안에서는 사설 IP를 입력하여 서버에 접속할 수 있지만, 외부 네트워크에서 서버에 접속하려면 공인 IP를 입력해야 하므로 공유기에서 포트포워딩을 해 주어야 외부 접속이 가능합니다.

  • 내부 IP 주소: 라즈베리파이의 사설 IP
  • 프로토콜: TCP
  • 외부 포트: 외부에서 접속할 때 입력할 포트를 임의로 설정하세요.
  • 내부 포트: 25565(단, server.properties 파일에 있는 포트 번호를 변경하지 않았을 경우)

포트포워딩 방법

위에 본인의 공유기가 없을 경우 인터넷에 공유기 이름을 검색해 보면 포트포워딩 하는 방법이 나오므로 검색해 보시기 바랍니다.

포트포워딩이 완료되면 서버에 방문할 외부인에게 공인 IP 주소와 외부 포트 번호를 알려주시면 됩니다.(6번 문단 참고)

다음 내 아이피
공인 IP 주소는 네이버 또는 다음에 ‘내 아이피’라고 검색하시면 확인하실 수 있습니다.
가정집에서 공인 IP 주소는 대부분 동적 IP일 것입니다. 서버를 열 때마다 공인 IP 주소를 확인하시기 바랍니다.

6. (방문자 입장)서버에 접속하는 방법

외부에서 방문자가 서버에 접속하여 게임을 플레이하는 방법을 알려드리겠습니다.

Minecraft Java Edition
6.1. Minecraft Java Edition을 실행합니다.
6.2. Multiplayer를 클릭합니다.

Caution: Third-Party Online Play
6.3. Caution: Third-Party Online Play 창이 뜨면 Proceed를 클릭합니다.

Play Multiplayer
6.4. Add Server를 클릭합니다.

Edit Server Info
6.5. Server Address에 서버공인IP:외부포트를 입력합니다.
가령, 서버의 공인 IP 주소가 123.45.67.8이고, 외부 포트를 38383으로 설정했다면, 123.45.67.8:38383을 입력하시면 됩니다.(5번 문단의 이미지 상황)
그 다음 Done을 클릭합니다.

Play Multiplayer에 서버 추가됨
6.6. 이제 저 서버를 클릭(더블 클릭)해서 접속하시면 됩니다.

접속 성공
6.7. 이제 게임을 즐기시면 됩니다.

7. 서버 운영자가 알아두면 좋은 명령어

라즈베리파이 터미널(VS Code SSH 터미널) 또는 마인크래프트 게임 채팅창에 입력하시면 됩니다.

  • op <플레이어>: <플레이어>에게 관리자(op) 권한을 부여합니다. 이 권한이 있는 사람은 게임 안에서 명령어를 사용할 수 있습니다. 가령, steve라는 플레이어에게 op 권한을 주려면 op steve라고 입력한 후 엔터 치시면 됩니다.
  • deop <플레이어>: <플레이어>에게 있는 관리자(op) 권한을 해지합니다.
  • save-all: 서버 데이터를 저장합니다.
  • save-on: 자동 저장을 활성화합니다.
  • save-off: 자동 저장을 비활성화합니다.
  • stop: 서버를 종료합니다. 이 명령어를 입력하면 잠시 시간이 흐른 후 서버가 꺼집니다.

8. screen 사용하기(VS Code를 꺼도 서버가 안 꺼지게 하는 방법)

그냥 이렇게 서버를 열어서 운영하면 Visual Studio Code 창을 닫을 때 서버가 꺼질 것입니다. 만약 라즈베리파이로 24시간 서버를 운영한다면 원격 접속하는 PC는 중간중간 꺼야 할 텐데 Visual Studio Code를 닫는다고 해서 서버가 꺼지면 안 됩니다. 따라서 screen이라는 것을 사용해서, Visual Studio Code를 닫아도 서버가 안 꺼지게 해 보겠습니다.

stop
8.1. 일단 마인크래프트 서버가 열려 있다면 stop 명령어를 입력하여 서버를 정지해 주세요.

screen 생성
8.2. screen -S 세션명 명령을 실행합니다.

screen에서 서버 실행
8.3. 서버 구동기를 실행합니다.(java -Xms용량G -Xmx용량G -jar server.jar)

서버 구동
그러면 문제없이 서버가 구동됩니다. 이제 Visual Studio Code를 꺼도 이 세션은 살아 있으며 서버가 꺼지지 않습니다. 24시간 서버를 돌릴 수 있는 것입니다.(물론, 라즈베리파이의 전원을 끄면 서버가 꺼집니다.)

screen 리스트
현재 열린 세션들의 목록을 확인하려면 screen -ls 명령어를 사용합니다.

-R
터미널을 닫았다가 다시 열어서 열려 있는 세션에 들어가려면 screen -R 세션명 명령을 실행합니다.

아래는 screen과 관련하여 사용할 수 있는 명령어와 단축키입니다.

  • screen 명령어
    • screen -S 세션명: 세션명으로 세션을 생성합니다.
    • screen -ls: 현재 열린 세션들의 목록을 확인합니다.
    • screen -R 세션명: 입력한 세션명의 세션에 다시 접속합니다.
    • screen -X -S 세션명 quit: 입력한 세션명의 세션을 종료합니다.
    • exit: 현재 세션을 종료합니다.
  • screen 단축키
    • Ctrl+A+D: 현재 세션을 종료하지 않고 빠져나옵니다.(Windows로 치면 최소화 같은 것)

9. 세이브 파일 사용하는 방법(기존에 만든 맵으로 서버 열기)

기존에 만든 맵으로 멀티를 하고 싶다면 어떻게 해야 할까요?
9.1. 일단 마인크래프트 서버가 열려 있다면 stop 명령어를 입력하여 서버를 정지해 주세요.

세이브파일 옮기기
9.2. mcjeserver 폴더 안에 world 폴더가 있습니다. world 폴더 안에 있는 파일들을 모두 삭제하시고, 맵 세이브파일 폴더 안에 있는 파일들을 모두 서버 폴더 안에 있는 world 폴더 안으로 복사하시면 됩니다.
9.3. 서버를 엽니다.(java -Xms용량G -Xmx용량G -jar server.jar)

세이브파일 접속
9.4. 서버에 접속하면 세이브파일이 적용된 것을 확인하실 수 있습니다.

참고로 백업은 설치의 역순입니다.^^ mcjeserver 폴더 안의 world 폴더를 백업하시면 서버 세이브파일을 백업하실 수 있습니다.

10. 글 마무리

제 글을 읽어 주셔서 감사합니다. 마인크래프트가 단순 오락이 아니라 공부가 필요한 게임이라는 것을 느낄 수 있는 부분이 서버인 것 같습니다. 여러분도 잘 공부하셔서 재미있게 노시기 바랍니다.
다음에 만나요!

11. 참고 자료

1) Minecraft Wiki. n. d. “Server/Requirements”, Minecraft Wiki. (2024. 08. 01. 방문). https://minecraft.fandom.com/wiki/Server/Requirements
2) 정재부. 2019. “JVM 메모리의 이해와 케이스 스터디”, SAMSUNG SDS. (2024. 08. 01. 방문). https://www.samsungsds.com/kr/insights/1232761_4627.html
3) goodGid. 2020. “Java 8에서 JVM의 변화 : PermGen이 사라지고 Metaspace가 등장하다.”, Gidhub. (2024. 08. 01. 방문). https://goodgid.github.io/Java-8-JVM-Metaspace/
4) 카이트. 2018. “마인크래프트 서버 램 할당”, 카이트의 블로그. (2024. 08. 01. 방문). https://blog.naver.com/kites_/221315333372
5) 코딩스타트. 2019. “Java - JVM이란? JVM 메모리 구조”, 코딩스타트. (2024. 08. 01. 방문). https://coding-start.tistory.com/205
6) Lee Jaewon. 2024. “[Tips] Ubuntu(Linux) screen 사용법”, Lee-Jaewon’s Blog. (2024. 08. 01. 방문). https://lee-jaewon.github.io/ubuntu/screen/
7) woobi. 2022. “우분투(Ubuntu) screen 명령어”, 우비넷. (2024. 08. 01. 방문). https://www.woobi.net/board2/2096
8) Dev Teddy. 2024. “Linux/Ubuntu에서 Screen 설치 및 사용하기”, 몰입과 소통. (2024. 08. 01. 방문). https://tae5ung.tistory.com/14