# 네이버 클라우드/Ubuntu 18.04 : 마인크래프트 JE 24시간 서버 열기

- Author: @laetipark
- Published: 2023-06-10
- Updated: 2023-06-10
- Source: http://blex.me/@laetipark/%EB%84%A4%EC%9D%B4%EB%B2%84-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9Cubuntu-1804-%EB%A7%88%EC%9D%B8%ED%81%AC%EB%9E%98%ED%94%84%ED%8A%B8-je-24%EC%8B%9C%EA%B0%84-%EC%84%9C%EB%B2%84-%EC%97%B4%EA%B8%B0
- Tags: 리눅스, 마인크래프트, 우분투, 마인크래프트서버, ubuntu, 네이버클라우드

---

## 개요
외부에서 받은 네이버 클라우드 크레딧이 남아있어, 이를 사용해볼 겸 **네이버 클라우드**로 **24시간 돌아가는 마인크래프트 JE(자바 에디션) 서버**를 만들어보았다.

## 서버 환경 설정
### VM 서버 생성
![](https://static.blex.me/images/content/2023/6/10/20236100_pEZ2xt0D3SIw1SuUZn6o.png)
**네이버 클라우드 플랫폼 사이트**에서 오른쪽 상단에 있는 **콘솔** 페이지로 접속해 왼쪽 메뉴 리스트에 **Server 메뉴**의 **Server**로 들어가 **서버 생성**을 클릭한다.  
[네이버 클라우드 플랫폼](https://www.ncloud.com)
[네이버 클라우드 콘솔](https://console.ncloud.com/dashboard)

![](https://static.blex.me/images/content/2023/6/10/20236100_dnvxhp7taFuWCB9slkbn.png)
**서버 OS 이미지**의 경우 `ubuntu-18.04`를 이용하였다. 서버 타입의 경우 다음에도 설정할 수 있기 때문에 서버 이미지 설정하고 '다음'을 눌러도 문제 없다.

![](https://static.blex.me/images/content/2023/6/10/20236100_vuFFncRvKYX3lPTo7VGV.png)
**서버 설정**에서는 **서버 세대**와 **서버 타입**, **서버 타입 세부 성능** 등의 정보를 설정해주면 된다.  
내 경우는 **Classic 1세대(서버 세대 : g1)**의 **Standard**를 이용하였다.  
해당 서버 타입의 경우 최소 `vCPU 2개`, `메모리 4GB`, `SSD 50GB`를 가지고 있다.  
보통 마인크래프트 서버 메모리는 1GB 이상이 필요하기 때문에, **g1**의 **Compact**(`메모리 2GB`)로 생성해도 괜찮다고 생각한다. 실제 소수 인원으로 돌아가는 서버를 이러한 방식으로 생성해 열었을 때도 크게 문제가 없었다.

**서버 서비스**에 대한 자세한 설명은 **네이버 클라우드 플랫폼**에도 잘 정리되어 있다.  
[네이버 클라우드 플랫폼 서버 서비스 소개](https://www.ncloud.com/product/compute/server)

![](https://static.blex.me/images/content/2023/6/10/20236101_QhrKntff0Q7ZHUNsukCS.png)
**인증키 설정**에서 **새로운 인증키**를 생성한다. 관리자로 SSH 접속할 때 비밀번호로 사용하기 때문에 안전한 곳에 저장하는 것이 좋다.

![](https://static.blex.me/images/content/2023/6/10/20236101_VJZNxBOdkgZZgywIvcYU.png)
![](https://static.blex.me/images/content/2023/6/10/20236101_sa2H96gX1zRW1EuFxw28.png)
**네트워크 접근 설정**에서 **신규 ACG**를 생성한다. `ACG 생성` 버튼을 클릭하면 ACG 정보 설정 창이 뜨는데, 아래와 같이 추가한다. 
> 프로토콜 : `TCP`, 접근 소스 :	`0.0.0.0/0`,  허용 포트 : `22`(SSH 접속을 위한 포트)  
> 프로토콜 : `TCP`, 접근 소스 :	`0.0.0.0/0`,  허용 포트 : `25565`(마인크래프트 기본 포트)

![](https://static.blex.me/images/content/2023/6/9/20236921_3GVKT0VxvpkABFFIO7ic.png)
**서버 생성 후** 상태가 `운영중`으로 되면, 다음 과정을 진행한다.


## 서버 열기

### 공인 IP 신청
![](https://static.blex.me/images/content/2023/6/10/20236101_h1FnWRoEstsJ6bKi0ozg.png)
왼쪽 메뉴 리스트에 **Server 메뉴**의 **Public IP**에서 `공인 IP 신청`해 생성한 서버에 적용한다. 추가 비용이 들어가기 때문에 상단의 `네이버 클라우드 플랫폼 서버 서비스 소개` 링크를 참고하길 바란다.

### SSH 연결
SSH 연결은 PuTTY 프로그램을 이용한다. PuTTY는 아래 사이트에서 다운 받으면 된다.  
[PuTTY 다운로드 사이트](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)

![](https://static.blex.me/images/content/2023/6/10/20236100_DZ65xKbM4UXiD8M9h7gQ.png)
![](https://static.blex.me/images/content/2023/6/10/20236100_HPh2RzBcwo37weNx92g2.png)
**Package files**에서 `PuTTY 패키지`를 받을 수 있고, **Alternative binary files**에서 `PuTTY`만 따로 받을 수 있다.

![](https://static.blex.me/images/content/2023/6/10/20236100_4FRfE6Qlknutt5MgWMmt.png)
PuTTY를 실행하면 위와 같은 화면이 나오는데 적용한 **공인 IP 주소**를 입력해 `Open` 버튼을 클릭한다.

![](https://static.blex.me/images/content/2023/6/10/202361011_0DV5J6Ale5G4UrmHucUM.png)  
콘솔 창이 열리면 계정과 비밀번호는 아래와 같이 입력한다.
> login as: `root`  
> root@IP's password: `(서버 생성 때 받은 인증키 관리자 비밀번호)`

![](https://static.blex.me/images/content/2023/6/10/202361011_lWp8QL7Z75Jm7mnw3v8A.png)
관리자 비밀번호는 **Server 메뉴**의 **Server**에서 생성한 서버를 클릭하고 **관리자 비밀번호 확인**을 클릭해 **서버 생성 때 받은 인증키** 파일을 올리면 비밀번호를 확인할 수 있다.

![](https://static.blex.me/images/content/2023/6/10/202361012_SQiipnvH62JnNuY1xnoi.png)  
SSH 접속에 성공하면 다음과 같이 출력되는 것을 확인할 수 있다.  
서버 생성 시 `wget`, `screen`이 기본적으로 설치되어 있지만 안될 경우를 대비해 다음과 같은 명령어를 입력한다.
> `# apt update`  
> `# apt upgrade`  
> `# apt install wget screen`

### server.jar 다운로드
![](https://static.blex.me/images/content/2023/6/10/202361012_fc95IV6WAvIBUoSbkIyI.png)  
마인크래프트 서버를 저장할 폴더를 만들고 해당 폴더로 이동한다.
> `# mkdir server-je`   
> `# cd server-je`

![](https://static.blex.me/images/content/2023/6/10/202361012_Bpp3gZE8oaeqIbO1rDZn.png)
마인크래프트 홈페이지로 가서 서버를 server.jar 링크를 복사한다.  
위 이미지의 경우 `minecraft_server..jar`를 오른쪽 마우스 클릭한 뒤 `링크 복사` 한다.

![](https://static.blex.me/images/content/2023/6/10/202361012_UxKuH3j5WJgGcx71S37f.png)
그리고 `wget`로 server.jar 파일을 다운로드 한다. 아래 링크는 `마인크래프트 1.20 버전` 기준이다.
> `# wget https://piston-data.mojang.com/v1/objects/15c777e2cfe0556eef19aab534b186c0c6f277e1/server.jar`


### Java JRE 설치 및 server.jar 실행
![](https://static.blex.me/images/content/2023/6/10/202361013_Ut3M2cvZrc86jDDOKekv.png)
설치 가능한 OpenJDK 17을 확인하고, 그 중 `OpenJDK 17 JRE`를 설치한다.
> `# apt-cache search openjdk | grep openjdk-17`  
> `# apt install openjdk-17-jre`

OpenJDK 버전이 낮으면 마인크래프트 서버가 아래와 같은 `오류`가 뜨면서 실행이 안될 수 있기 때문에 여유있게 `OpenJDK 17`을 설치해주었다.
```java
...
java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0
...
```

그리고 `server.jar`을 한 번 실행해준다.
> `# java -jar server.jar` 

![](https://static.blex.me/images/content/2023/6/10/202361013_V1dJE5B5EPsmFNptIscN.png)
정상적으로 실행되면 `ls`를 통해 아래와 같은 파일들이 생성된 것을 확인할 수 있다.

서버를 열기 전 `vi`편집기로 `eula.txt` 파일을 아래와 같이 편집한다.
> `# vi eula.txt`  
> `insert`키를 누르고 `eula=false`로 되어있다면 `eula=true`로 변경  
> `esc`키를 누르고 `:wq` 입력 후 `enter`키 누름


### screen을 통한 서버 백그라운드 실행
위 과정까지 거쳤다면 `screen`을 통해 백그라운드 실행하는 과정을 진행해 서버를 24시간 열 수 있다.
콘솔에서도 서버를 실행할 수 있지만, 콘솔을 끄면 서버도 종료되기 때문에 `백그라운드로 실행`해주는 과정이 필요하다.
screen 생성과 마인크래프트 서버를 여는 법은 아래와 같다.
> `# screen -S (screen 이름)`  
> `# java -Xms(최소 사용 메모리, 단위 MB)M -Xmx(최대 사용 메모리, 단위 MB)M -jar server.jar nogui`  
> 예시) `java -Xms1024M -Xmx2048M -jar server.jar nogui`  

![](https://static.blex.me/images/content/2023/6/10/202361014_d0J90MWa4AscIzbzfdRt.png)
위와 같은 화면이 나오면 마인크래프트 서버를 여는데 성공한 것으로 백그라운드를 빠져나가고 콘솔을 종료해도 계속 서버가 실행된다.
> `ctrl+a d`키 : 백그라운드를 종료시키지 않으면서 `screen`에 빠져나간다.

나중에 다시 콘솔로 들어가 마인크래프트 서버를 종료하거나 서버 설정하고 싶은 경우 해당 명령어로 다시 `screen` 백그라운드에 접근할 수 있다.
> `# screen -r (screen 이름)`

### server.properties 화이트리스트 설정
이제 시간 제약없이 외부에 있는 모든 사람들이 마인크래프트 서버를 이용할 수 있기 때문에, 내가 초대하지 않은 손놈(?)들이 와서 서버를 테러하고 갈 수 있다.

나의 경우도 실제로 마인크래프트에 모르는 사람들이 와서 당황한 경험이 있다.

마인크래프트 서버 폴더에 `server.properties`를 편집해 `화이트리스트`를 활성화 시킬 수 있고, 마인크래프트 서버 콘솔에서 `화이트리스트`를 추가할 수 있다.  
이미 위 과정을 진행해서 서버를 열였다면 서버를 닫고(`ctrl + c`키 또는 `/stop` 입력) 해당 설정을 해준 다음 다시 여는 것을 **권장**한다.
> `# vi server.properties`  
> `insert`키를 누르고 `white-list=false`로 되어있다면 `white-list=true`로 설정  
> `esc`키를 누르고 `:wq` 입력 후 `enter`키 누름
> 마인크래프트 서버를 실행해 `/whitelist add <닉네임>`으로 화이트리스트 추가, `/whitelist remove <닉네임>`으로 화이트리스트에서 제외 가능

## 참고
- [OpenJDK 버전과 관련한 문제, Stack Overflow](https://stackoverflow.com/questions/70538987/how-to-fix-minecraft-server-error-where-files-are-compiled-by-an-older-version-o)
- [Linux 리눅스 백그라운드 실행 방법 nohup와 screen, koos808](https://koos808.tistory.com/90)
