Google Compute Engine에서 Minecraft 서버 설정

이 가이드는 Mojang 또는 Minecraft와 관련이 없으며 승인을 받지 않았습니다.

전용 Minecraft 서버를 실행하려면 전용 서버 머신, 충분한 RAM, 충분한 대역폭이 필요합니다. Google이 이러한 요구사항을 처리해 드릴 수 있습니다. 이 가이드에서는 Google Compute Engine에 표준 자바 Minecraft 서버를 설치, 구성, 실행하는 방법을 알아봅니다. 이 서버는 표준 자바 기반 데스크톱 Minecraft 클라이언트와 호환됩니다.

Minecraft 서버 소프트웨어는 Google의 인프라에서 실행되는 가상 머신Compute Engine 인스턴스에서 실행됩니다. 이 가이드에서는 Compute Engine 인스턴스의 기본 머신 유형n1-standard-1을 사용합니다. n1-standard-1 머신 유형은 10GB의 부팅 디스크, 1개의 가상 CPU(vCPU), 3.75GB의 RAM을 포함하며 기본적으로 Debian Linux를 실행합니다.

Minecraft 서버의 월드 데이터를 위한 충분한 여유 공간을 확보하기 위해 고성능 50GB SSD(솔리드 스테이트 드라이브)를 인스턴스에 연결합니다. 이 영구 SSD를 추가하면 인스턴스가 전용 Minecraft 서버의 시스템 요구사항을 충족시켜 최대 50명까지 안정적으로 지원할 수 있습니다.

목표

  • Google Compute Engine 가상 머신 인스턴스 생성
  • Minecraft 서버 설치 및 구성
  • Minecraft 월드 데이터의 자동 백업 설정

비용

This tutorial uses the following billable components of Google Cloud Platform:

  • Compute Engine 가상 머신
  • Compute Engine Persistent Disk
  • Google Cloud Storage

You can use the pricing calculator to generate a cost estimate based on your projected usage. New GCP users might be eligible for a free trial.

시작하기 전에

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Select or create a Google Cloud Platform project.

    Go to the Manage resources page

  3. 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

Compute Engine 인스턴스 생성 및 구성

새 Compute Engine 인스턴스를 만들고 구성하여 시작합니다.

  1. GCP 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지

    새로운 Compute Engine 인스턴스를 생성하라는 대화상자가 나타납니다.

  2. 만들기를 클릭하여 시작합니다.

  3. 인스턴스 만들기 페이지에서 다음과 같이 인스턴스를 구성합니다.
    • 인스턴스의 이름을 지정합니다. 이 가이드에서는 인스턴스 이름으로 mc-server를 계속 사용합니다.
    • 인스턴스를 호스팅할 영역을 선택합니다. 이 가이드에서는 계속 us-central1-f 영역을 사용합니다.
    • 부팅 디스크 섹션에서 변경을 클릭합니다. 부팅 디스크 대화상자가 나타납니다.
    • 디스크 유형을 SSD 영구 디스크로 변경합니다.
  4. 선택을 클릭하여 변경 사항을 커밋하고 대화상자를 닫습니다.

기본 구성을 완료했습니다. 아직은 Minecraft 전용 서버에 대한 요구사항을 충족시키기 위해 새 인스턴스를 만들지 마세요. 몇 가지 고급 설정도 구성해야 하기 때문입니다.

인스턴스에 대한 Google Cloud Storage 액세스 사용 설정

이 가이드의 뒷부분에서는 월드 데이터를 Google Cloud Storage에 백업하는 방법을 알아봅니다. 이 경우 인스턴스에 Cloud Storage에 대한 읽기 및 쓰기 권한이 있어야 합니다. 액세스를 사용하려면 다음을 수행하세요.

  1. ID 및 API 액세스에서 서비스 계정 드롭다운을 클릭하고 Compute Engine 기본 서비스 계정을 선택합니다.
  2. 액세스 범위각 API에 액세스 설정합니다.
  3. 저장소 드롭다운에서 읽기 쓰기를 선택합니다.

인스턴스에 태그 지정

이제 인스턴스에 태그를 지정하세요. 이 가이드의 뒷부분에서는 이 태그를 사용하여 외부 Minecraft 클라이언트가 서버에 액세스할 수 있는 방화벽 규칙을 만듭니다.

  1. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭하면 고급 설정을 위한 탭이 표시됩니다.
  2. 네트워킹 탭에서 네트워크 태그 필드에 minecraft-server 태그를 추가합니다.

인스턴스에 고정 IP 주소 설정

인스턴스로 들어오는 요청을 안정적으로 전달하려면 인스턴스에 고정 IP 주소가 있어야 합니다. 인스턴스에 고정 IP 주소를 추가하려면 다음을 수행하세요.

  1. 네트워킹 탭의 네트워크 인터페이스 섹션에서 기본값을 클릭합니다. 네트워크 인터페이스 구성 메뉴가 나타납니다.
  2. 외부 IP 드롭다운을 클릭하고 IP 주소 생성을 선택하세요. 다음과 같은 대화상자가 나타납니다.

    새 고정 IP 주소 만들기

  3. IP 주소를 mcs-ip로 지정합니다.

  4. 예약을 클릭하여 주소를 만듭니다.
  5. 완료를 클릭하여 변경 사항을 커밋하고 네트워크 인터페이스 구성 메뉴를 닫습니다.

인스턴스에 영구 디스크 추가

다음으로 인스턴스에 영구 디스크를 연결합니다. 부팅 디스크와 달리 영구 디스크는 Compute Engine 인스턴스의 수명과 관련이 없습니다. 예를 들어 시간이 지남에 따라 호스팅 요구사항이 변경되면 나중에 더 적합한 머신 유형으로 디스크를 이동할 수 있습니다.

이 가이드에서 사용할 영구 디스크의 구체적인 유형은 영구 SSD입니다. 이러한 유형의 영구 디스크는 매우 빠른 I/O 작업을 지원하여 서버 지연을 줄이는 데 도움이 됩니다.

인스턴스에 영구 디스크를 추가하려면 다음을 수행하세요.

  1. 디스크 탭의 추가 디스크 섹션에서 새 디스크 추가를 클릭합니다. 디스크 생성 페이지가 나타납니다.

    새 디스크 만들기

  2. 대화상자에서 다음과 같이 양식을 작성하세요.

    • 이름: minecraft-disk
    • 디스크 유형: SSD 영구 디스크
    • 소스 유형: 빈 디스크
    • 크기(GB): 50
  3. 만들기를 클릭하여 새 디스크를 만듭니다. 인스턴스를 만들면 디스크가 자동으로 연결됩니다.

인스턴스 만들기

인스턴스 구성을 완료했습니다. 페이지 하단의 만들기 버튼을 클릭하여 새 인스턴스를 만듭니다. 이 작업을 수행하면 VM 인스턴스 페이지로 돌아갑니다.

영구 디스크 포맷 및 마운트

이 시점에서 디스크는 인스턴스에 연결되어 있지만 아직 인스턴스에 마운트되지 않았습니다. 그러나 지금 디스크를 마운트한다면 디스크로 그다지 많은 일을 할 수 없을 것입니다. 왜냐하면 다른 모든 디스크와 마찬가지로 영구 디스크는 우선 운영체제(이 경우 Debian Linux)가 이해할 수 있는 파일 시스템으로 포맷되어야 하기 때문입니다.

인스턴스를 사용하여 SSH 연결을 시작하세요. VM 인스턴스 페이지의 mc-server 행에서 SSH를 클릭하여 브라우저 기반 SSH 터미널을 엽니다.

SSH 터미널

SSH 터미널이 열리면 인스턴스의 home 디렉토리에 minecraft라는 새 디렉토리를 만듭니다.

user@mc-server: sudo mkdir -p /home/minecraft

이 디렉토리를 영구 디스크의 마운트 지점으로 사용합니다.

다음으로 디스크를 포맷합니다.

user@mc-server: sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/google-minecraft-disk

마지막으로 디스크를 마운트합니다.

user@mc-server: sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft

인스턴스에 Minecraft 서버 설치 및 실행

영구 디스크가 공식적으로 마운트되었습니다. 이제 Minecraft 서버를 설치하고 실행하세요.

자바 런타임 환경(JRE) 설정

Minecraft 서버는 자바 가상 머신(JVM)을 기반으로 실행되므로 자바 런타임 환경(JRE)이 실행되어야 합니다. 서버에는 그래픽 사용자 인터페이스가 필요 없기 때문에 이 가이드에서는 헤드리스 JRE 버전을 사용합니다. 이 접근 방식은 머신에서의 JRE 리소스 사용을 줄여주므로, 필요한 경우 Minecraft 서버가 자체 리소스 사용을 확장할 수 있는 여지를 충분히 확보할 수 있도록 도와줍니다.

헤드리스 버전의 JRE를 다운로드하고 설치하기 전에 Debian 설치에서 Debian 저장소를 업데이트해야 합니다. 이렇게 하려면 SSH 터미널에서 다음 명령어를 실행하세요.

user@mc-server: sudo apt-get update

저장소가 업데이트되면 헤드리스 JRE를 설치할 수 있습니다.

user@mc-server: sudo apt-get install -y default-jre-headless

Minecraft 서버 설치

이제 JRE를 설정했으므로 Minecraft 서버를 다운로드해서 설치해야 합니다. minecraft 디렉토리로 이동하여 시작하세요.

user@mc-server: cd /home/minecraft

minecraft 디렉토리에는 마운트된 영구 디스크가 있기 때문에 명령어를 실행하려면 루트 사용자 액세스라는 특별한 수준의 액세스가 필요합니다. 루트 사용자가 되려면 다음을 실행하세요.

user@mc-server: sudo su

그런 다음 현재 Minecraft 서버의 자바 아카이브 파일(JAR)을 인스턴스로 다운로드합니다.

root@mc-server: wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/minecraft_server.1.12.2.jar

처음에 서버를 시작하세요.

root@mc-server: java -Xms1G -Xmx3G -d64 -jar minecraft_server.1.12.2.jar nogui

첫 번째 실행은 약간 점강적 성격을 보입니다. 서버가 시작되면 몇 가지 빠른 작업을 실행하고 중지됩니다. 그러나 다음 명령어를 실행하면 minecraft 디렉토리에 몇 개의 새로운 파일이 생성된 것을 알 수 있습니다.

root@mc-server: ls -l

이 새로운 파일 중에는 eula.txt라는 파일이 있습니다. 편집을 위해 이 파일을 엽니다.

root@mc-server: nano eula.txt

이 파일에는 단일 부울 변수 eula가 포함되어 있습니다. Minecraft 서버를 사용하려면 Minecraft 최종 사용자 라이선스 계약(EULA)의 조건에 동의해야 합니다. EULA의 조건에 동의하면 eula 값을 false에서 true로 설정한 다음 저장하고 종료하세요.

Minecraft 서버 구성

Minecraft 서버를 실행하기 전에 서버의 기본 속성을 편집할 수 있습니다. 이를 위해서는 server.properties 파일을 편집하면 됩니다.

$ nano server.properties

각 속성 유형 및 가능한 값에 대한 자세한 설명은 Minecraft 위키서버 속성 페이지를 참조하세요.

Minecraft 서버 실행

이 시점에서 Minecraft 서버를 다시 시작하면 SSH 세션의 수명과 연결됩니다. 즉, SSH 터미널을 닫으면 서버도 종료됩니다. 이 문제를 해결하기 위해 가상 터미널을 만들 수 있는 애플리케이션인 screen을 사용하여 가상 터미널을 '분리된' 백그라운드 프로세스로 만들거나 '다시 연결된' 포그라운드 프로세스로 만들 수 있습니다. 가상 터미널이 백그라운드로 분리되면 로그인 여부에 상관없이 실행됩니다.

SSH 터미널에서 다음을 실행하여 screen을 설치하세요.

root@mc-server: apt-get install -y screen

그 다음 screen 가상 터미널에서 Minecraft 서버를 시작하세요. -S 플래그를 사용하여 터미널 이름을 mcs로 지정합니다.

root@mc-server: screen -S mcs java -Xms1G -Xmx3G -d64 -jar minecraft_server.1.12.2.jar nogui

Ctrl + a를 누른 다음 d를 입력하여 screen 터미널을 분리합니다. 터미널은 백그라운드에서 계속 실행됩니다. 터미널을 다시 연결하려면 다음과 같이 screen -r <terminal_name>을 실행하세요.

root@mc-server: screen -r mcs

마지막으로 필요한 경우 screen 터미널을 다시 분리합니다. 루트 사용자 모드에서 나가려면 exit을 한 번 입력하고, exit을 다시 입력하여 SSH 연결을 닫습니다.

수고하셨습니다. 이제 Minecraft 서버를 실행할 수 있습니다. 그러나 아직 공유할 준비가 된 것은 아닙니다. 서버를 공유하기 전에 사람들이 액세스할 수 있도록 방화벽 규칙을 설정해야 합니다.

클라이언트가 Minecraft 서버에 액세스하도록 허용

인스턴스로 들어오는 요청을 안정적으로 전달하려면 방화벽 규칙을 만들어야 합니다. 이렇게 하려면 다음 단계를 따르세요.

  1. GCP 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크 페이지로 이동

  2. 사용 가능한 네트워크 테이블의 이름 열에서 기본 네트워크를 클릭합니다.

  3. VPC 네트워크 세부정보 페이지의 방화벽 규칙 탭에서 방화벽 규칙 추가를 클릭합니다.

방화벽 규칙 만들기 페이지에서 다음과 같이 양식을 작성합니다.

  • 이름: minecraft-rule
  • 대상 태그: minecraft-server
  • 소스 필터: IP 범위
  • 소스 IP 범위: 0.0.0.0/0
  • 프로토콜 또는 포트: tcp:25565

만들기를 클릭하여 새 방화벽 규칙을 만듭니다. 이제 사용자는 자체 로컬 Minecraft 클라이언트에서 서버에 액세스할 수 있습니다.

정기 백업 예약

로컬 Minecraft 클라이언트를 실행하든 Minecraft 서버를 실행하든 Minecraft 월드 데이터를 정기적으로 백업하는 것이 좋습니다. 이 섹션에서는 Google Cloud Storage를 사용하여 월드 데이터의 정기적인 백업을 설정하는 방법을 보여줍니다.

백업 스크립트 만들기

GCP 콘솔의 VM 인스턴스 페이지에서 인스턴스를 사용하여 SSH 연결을 시작하세요. 터미널이 열리면 루트 사용자가 됩니다.

user@mc-server: sudo su

새 Cloud Storage 버킷을 만듭니다. 이 버킷을 사용하여 백업을 저장합니다.

root@mc-server: gsutil mb gs://<project_id>-minecraft-backup

그런 다음 minecraft 폴더에 새로운 셸 스크립트 파일인 backup.sh를 만들고 편집을 위해 엽니다.

root@mc-server: nano /home/minecraft/backup.sh

다음 스크립트를 파일에 붙여넣습니다. <bucket>을 Google Cloud Storage 버킷으로 바꿉니다.

#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://<bucket>/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'

이 스크립트는 월드 데이터의 현재 상태를 저장하고 서버의 자동 저장 기능을 일시중지하는 것으로 시작됩니다. 그런 다음 스크립트는 서버의 월드 데이터 디렉토리(world)를 백업하고 Google Cloud Storage 버킷의 타임스탬프 디렉토리(<timestamp>-world)에 해당 내용을 저장합니다. 스크립트가 데이터 백업을 완료하면 Minecraft 서버에서 자동 저장을 다시 시작합니다.

저장하고 종료한 후 다음을 실행하여 스크립트를 실행하게 합니다.

root@mc-server: chmod 755 /home/minecraft/backup.sh

스크립트를 테스트합니다.

root@mc-server: /home/minecraft/backup.sh

스크립트가 완료된 후 GCP 콘솔의 저장소 브라우저를 방문하여 버킷을 클릭합니다. world 디렉토리의 타임스탬프 백업을 볼 수 있습니다.

크론 작업 예약

각 백업을 수동으로 초기화하는 것을 선호하지 않는 한, 스크립트를 예측 가능한 간격으로 자동 실행하는 것이 좋습니다. 그렇게 하려면 새 크론 작업을 예약해야 합니다.

크론 작업을 예약하려면 편집을 위해 크론 테이블을 열어야 합니다.

root@mc-server: crontab -e

파일의 맨 아래로 스크롤 하여 backup.sh가 4시간마다 실행되도록 지정하는 다음 행을 붙여넣습니다.

0 */4 * * * /home/minecraft/backup.sh

저장 후 종료합니다.

모든 설명을 마쳤습니다. 이제 Compute Engine 인스턴스가 4시간마다 월드 데이터를 Google Cloud Storage 버킷에 자동으로 백업합니다.

이전 백업을 자동으로 삭제

4시간마다 월드 데이터를 백업하면 하루에 6번, 일주일에 72번, 한 달에 약 300번 백업한다는 의미입니다. 객체 수명 주기 관리라는 Cloud Storage 기능을 사용하여 오래된 백업을 자동으로 삭제할 수 있습니다. 이 기능을 사용하면 Cloud Storage 버킷을 구성하여 특정 시간이 지나거나 사용 가능한 최신 백업이 있는 경우 이전 백업을 자동으로 보관하거나 삭제할 수 있습니다.

Cloud Storage 버킷을 설정하여 백업을 자동으로 삭제하려면 다음 단계를 따르세요.

  1. GCP 콘솔에서 Cloud Storage 브라우저를 엽니다.

    Cloud Storage 브라우저로 이동

  2. 버킷 목록에서 Minecraft 백업 버킷을 찾습니다.

  3. 버킷의 수명 주기 열에서 없음을 클릭합니다. 객체 수명 주기 규칙 보기 페이지가 나타납니다.
  4. 규칙 추가를 클릭합니다.
  5. 객체 조건 선택 섹션에서 수명을 선택합니다. 수명을 7일로 설정하고 계속을 클릭합니다.
  6. 작업 선택 섹션에서 삭제를 선택하고 계속을 클릭합니다.
  7. 설정을 저장하려면 저장을 클릭합니다. 객체 수명 주기 규칙 보기 페이지로 돌아갑니다.

백업 스크립트가 백업을 Cloud Storage로 전송하고 일주일이 지나면 각 백업이 삭제됩니다.

Minecraft 서버 종료

Minecraft 서버를 실행할 필요가 없다면 불필요한 비용을 피하기 위해 종료해야 합니다.

GCP 콘솔의 VM 인스턴스 페이지에서 인스턴스를 사용하여 SSH 연결을 시작하세요. 터미널이 열리면 실행중인 screen 터미널에 \stop 명령어를 전달하여 Minecraft 서버를 중지합니다.

user@mc-server: sudo screen -r -X stuff '/stop\n'

이제 Minecraft 서버를 중지했으므로 인스턴스를 안전하게 종료할 수 있습니다. VM 인스턴스 페이지에서 인스턴스 이름을 클릭한 다음 페이지 상단의 중지 버튼을 클릭합니다. SSH 세션에서 로그아웃됩니다.

인스턴스를 다시 시작하려면 인스턴스 페이지를 방문한 다음 페이지 상단의 시작 버튼을 클릭합니다. Minecraft 서버를 다시 시작하려면 인스턴스와 SSH 연결을 설정하고, 영구 디스크를 다시 마운트하고, Minecraft 서버 실행 섹션에 설명된 대로 새 screen 터미널에서 Minecraft 서버를 시작할 수 있습니다.

시작 및 종료 절차 자동화

서버를 정기적으로 종료하려면 시작 및 종료 스크립트를 인스턴스에 추가하여 일반적인 시작 및 종료 절차를 자동화하세요. 다음과 같이 시작 절차를 자동화할 수 있습니다.

  1. GCP 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지

  2. 인스턴스 이름을 클릭합니다.

  3. 수정을 클릭합니다.
  4. 커스텀 메타데이터 섹션에서 startup-script라는 새 키를 추가하고 다음 스크립트를 필드에 복사합니다.

    #!/bin/bash
    mount /dev/disk/by-id/google-minecraft-disk /home/minecraft
    (crontab -l ; echo "0 */4 * * * /home/minecraft/backup.sh")| crontab -
    cd /home/minecraft
    screen -d -m -S mcs java -Xms1G -Xmx3G -d64 -jar minecraft_server.1.12.2.jar nogui
    

인스턴스를 다시 시작하면 이 스크립트는 자동으로 Minecraft 디스크를 적절한 디렉토리에 마운트하고, 크론 작업을 다시 설치하고, screen 세션에서 Minecraft 서버를 시작하고, 세션을 분리합니다.

종료 절차를 자동화하려면 shutdown-script라는 또 다른 키를 추가하고 다음을 필드에 복사합니다.

#!/bin/bash
sudo screen -r -X stuff '/stop\n'

페이지의 하단에서 저장을 클릭하여 변경사항을 커밋합니다. 인스턴스를 중지하면 이 스크립트는 인스턴스가 종료되기 전에 Minecraft 서버를 종료합니다.

다음 단계

Minecraft 위키 방문하기

Minecraft 위키는 Minecraft 플레이어와 Minecraft 서버 관리자 모두에게 유용한 리소스를 제공합니다.

대체 Minecraft 서버 사용해보기

이 가이드에서 설치한 Vanilla Minecraft 서버는 수많은 Minecraft 서버 중 하나일 뿐입니다. Minecraft 위키커스텀 서버를 방문하여 게임 유형, 머신 요구사항, 간단한 수정 등에 최적화된 대체 서버 목록을 확인하세요.

다른 가이드 사용해 보기

다른 Google Cloud Platform 기능을 직접 사용해 보세요. 가이드를 살펴보세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...