마인크래프트

마인크래프트 플러그인 서버 완벽 가이드: Paper로 시작하는 나만의 커스텀 서버 구축하기 (초보자도 쉽게 따라하는 A to Z)

수다 SUDA 2024. 12. 22. 20:10
728x90
반응형
SMALL

마인크래프트 플러그인 서버 완벽 가이드: Paper로 시작하는 나만의 커스텀 서버 구축하기 (초보자도 쉽게 따라하는 A to Z)

🎮 마인크래프트 서버를 운영하고 싶으신가요? Paper를 사용하면 강력한 성능과 다양한 플러그인을 활용할 수 있습니다. 이 가이드에서는 Paper 서버 구축부터 운영까지 모든 것을 상세히 알아보겠습니다.

목차

  1. Paper 서버란?
  2. 시스템 요구사항
  3. Paper 서버 설치하기
  4. 서버 최적화하기
  5. 플러그인 설치 및 관리
  6. 서버 운영 및 관리
  7. 문제해결 가이드
  8. 고급 설정 및 팁

Paper 서버란?

마인크래프트 서버 소프트웨어의 세계에서 Paper는 특별한 위치를 차지하고 있습니다. Paper는 Spigot을 기반으로 하되, 더 나은 성능과 추가 기능을 제공하는 고성능 서버 소프트웨어입니다. 기존의 Bukkit과 Spigot의 장점을 계승하면서도, 현대적인 마인크래프트 서버 운영에 필요한 다양한 최적화와 기능을 제공합니다.

Paper의 장점

Paper가 다른 서버 소프트웨어와 차별화되는 주요 특징들을 자세히 살펴보겠습니다:

  1. 성능 최적화
    • 티켓(Tick) 처리 최적화로 서버의 전반적인 성능 향상
    • 메모리 사용량 최적화로 더 효율적인 리소스 활용
    • 청크 로딩 및 언로딩 최적화로 더 나은 서버 응답성 제공
  2. 버그 수정
    • 바닐라 마인크래프트의 다양한 버그들을 수정
    • 플레이어 경험을 저해할 수 있는 익스플로잇 방지
    • 지속적인 업데이트를 통한 새로운 버그 수정
  3. 확장성
    • 풍부한 API 제공으로 개발자들의 플러그인 개발 지원
    • Bukkit/Spigot 플러그인과의 높은 호환성
    • 커스터마이즈 가능한 다양한 설정 옵션

시스템 요구사항

Paper 서버를 설치하기 전에, 시스템이 다음 요구사항을 충족하는지 확인해야 합니다:

하드웨어 요구사항

최소 사양:

  • CPU: 듀얼 코어 2.0GHz 이상
  • RAM: 4GB 이상 (서버 전용)
  • 저장공간: 10GB 이상
  • 네트워크: 안정적인 유선 인터넷 연결

권장 사양:

  • CPU: 쿼드 코어 3.0GHz 이상
  • RAM: 8GB 이상 (서버 전용)
  • 저장공간: SSD 20GB 이상
  • 네트워크: 1Gbps 이상의 유선 인터넷 연결

소프트웨어 요구사항

  • Java 17 이상 (최신 버전의 Paper는 Java 17을 필요로 함)
  • 운영체제: Windows, Linux, macOS (Linux 권장)
  • 방화벽 설정: 기본 포트 25565 개방 필요

Paper 서버 설치하기

Paper 서버의 설치 과정을 단계별로 자세히 알아보겠습니다.

1. Java 설치

먼저 시스템에 적절한 버전의 Java를 설치해야 합니다.

Windows의 경우:

  1. OpenJDK 17을 다운로드합니다 (https://adoptium.net/)
  2. 설치 파일을 실행하고 설치 마법사의 지시를 따릅니다
  3. 설치 완료 후 명령 프롬프트에서 java -version을 실행하여 설치를 확인합니다

Linux의 경우:

# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-17-jdk

# CentOS/RHEL
sudo dnf install java-17-openjdk

2. Paper 다운로드

  1. Paper의 공식 웹사이트(https://papermc.io)에 접속합니다
  2. 원하는 마인크래프트 버전의 최신 Paper 빌드를 다운로드합니다
  3. 서버용 새 디렉토리를 생성하고 다운로드한 파일을 이동시킵니다
  4. 파일명을 paper.jar로 변경합니다 (선택사항)

3. 서버 초기 설정

Windows에서의 실행 스크립트 (start.bat):

@echo off
java -Xms2G -Xmx4G -jar paper.jar nogui
pause

Linux에서의 실행 스크립트 (start.sh):

#!/bin/bash
java -Xms2G -Xmx4G -jar paper.jar nogui

위의 스크립트에서:

  • -Xms2G: 초기 힙 메모리 크기 (2GB)
  • -Xmx4G: 최대 힙 메모리 크기 (4GB)
  • nogui: GUI 없이 서버 실행

4. EULA 동의

  1. 서버를 처음 실행하면 eula.txt 파일이 생성됩니다
  2. 텍스트 편집기로 eula.txt를 열어 eula=falseeula=true로 변경합니다
  3. 파일을 저장하고 서버를 다시 시작합니다

서버 최적화하기

서버의 성능을 최적화하기 위한 다양한 설정들을 살펴보겠습니다.

server.properties 최적화

server.properties 파일의 주요 설정들과 권장 값:

# 기본 게임플레이 설정
view-distance=8
simulation-distance=6
max-players=20
spawn-protection=16

# 성능 관련 설정
network-compression-threshold=256
max-tick-time=60000
max-world-size=29999984

spigot.yml 최적화

settings:
  save-user-cache-on-stop-only: true
  moved-wrongly-threshold: 0.0625
  moved-too-quickly-multiplier: 10.0

world-settings:
  default:
    merge-radius:
      item: 4.0
      exp: 6.0
    entity-activation-range:
      animals: 32
      monsters: 32
      raiders: 48
      misc: 16
    tick-inactive-villagers: false

paper-world-defaults.yml 최적화

entities:
  behavior:
    disable-chest-cat-detection: true
    disable-creeper-lingering-effect: true
    disable-player-crits: false

chunks:
  auto-save-interval: 6000
  delay-chunk-unloads-by: 10s
  max-auto-save-chunks-per-tick: 24

collisions:
  enable-player-collisions: false

플러그인 설치 및 관리

플러그인은 서버의 기능을 확장하고 관리를 용이하게 만드는 핵심 요소입니다.

필수 플러그인 추천

  1. 필수 관리 플러그인
    • EssentialsX: 기본적인 서버 관리 명령어 제공
    • LuckPerms: 권한 관리 시스템
    • CoreProtect: 블록 변경 로깅 및 롤백
    • WorldEdit: 월드 편집 도구
    • WorldGuard: 지역 보호 시스템
  2. 성능 관련 플러그인
    • Chunky: 청크 프리로더
    • ClearLag: 서버 리소스 정리
    • TAB: 탭 리스트 커스터마이즈
  3. 게임플레이 향상 플러그인
    • mcMMO: RPG 요소 추가
    • QuickShop: 상점 시스템
    • Jobs: 직업 시스템

플러그인 설치 방법

  1. 플러그인 파일(.jar)을 다운로드합니다
  2. 서버의 plugins 폴더에 파일을 복사합니다
  3. 서버를 재시작하거나 /reload confirm 명령어를 실행합니다
  4. 플러그인의 설정 파일을 필요에 따라 수정합니다

플러그인 설정 관리

대부분의 플러그인은 plugins/플러그인이름/config.yml 형태로 설정 파일을 가집니다:

# EssentialsX 설정 예시
settings:
  format-chat: true
  chat-format: '<{DISPLAYNAME}> {MESSAGE}'
  debug: false

economy:
  starting-balance: 1000
  currency-symbol: '$'

spawn:
  respawn-at-home: false
  respawn-at-anchor: true

서버 운영 및 관리

서버를 안정적으로 운영하기 위한 주요 관리 작업들을 살펴보겠습니다.

일상적인 관리 작업

  1. 백업 관리
    • 정기적인 월드 백업
    • 플러그인 설정 백업
    • 플레이어 데이터 백업
  2. 성능 모니터링
    • TPS (Ticks Per Second) 모니터링
    • 메모리 사용량 확인
    • 플레이어 활동 로그 검토
  3. 정기적인 유지보수
    • 불필요한 파일 정리
    • 플러그인 업데이트 확인
    • 설정 최적화 검토

관리자 명령어 가이드

주요 관리자 명령어들과 그 사용법:

/op <플레이어> - 관리자 권한 부여
/deop <플레이어> - 관리자 권한 제거
/ban <플레이어> [사유] - 플레이어 차단
/pardon <플레이어> - 차단 해제
/kick <플레이어> [사유] - 플레이어 강제 퇴장
/tps - 서버 TPS 확인
/lag - 서버 지연 정보 확인
/reload confirm - 서버 설정 리로드

문제 상황 대처

  1. 서버 충돌 시
    • 즉시 로그 파일 확인
    • 최근 변경사항 검토
    • 필요시 백업에서 복구
  2. 성능 저하 시
    • 타임라인 분석으로 원인 파악
    • 리소스 사용량이 높은 플러그인 확인
    • 필요시 임시 조치 (플러그인 비활성화 등)

문제해결 가이드

서버 운영 중 발생할 수 있는 일반적인 문제들과 해결 방법을 알아보겠습니다.

일반적인 문제들

  1. 서버가 시작되지 않는 경우
    • 로그 파일 확인
    • Java 버전 호환성 검사
    • 포트 충돌 여부 확인
  2. 심각한 지연 발생
    • 청크 생성 속도 제한
    • 엔티티 수 제한
    • 레드스톤 장치 검사
  3. 메모리 부족
    • JVM 인자 조정
    • 가비지 컬렉션 로그 분석
    • 메모리 누수 플러그인 확인

문제해결 절차

  1. 문제 식별
    • 증상 기록
    • 발생 시점 파악
    • 관련 로그 수집
    • 재현 가능 여부 확인
  2. 원인 분석
    • 로그 파일 상세 분석
    • 최근 변경사항 검토
    • 플러그인 충돌 여부 확인
    • 시스템 리소스 사용량 분석
  3. 해결 방안 적용
    • 임시 해결책 적용
    • 영구적 해결 방안 수립
    • 재발 방지 대책 마련

로그 분석 방법

서버의 로그 파일들은 문제 해결의 핵심 자료입니다. 주요 로그 파일들과 그 분석 방법을 살펴보겠습니다.

  1. latest.log
[12:34:56 INFO]: Server thread/ERROR: Could not load 'plugins/Example.jar'
org.bukkit.plugin.InvalidPluginException: Invalid plugin.yml
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:201)

이러한 로그는 플러그인 로딩 실패를 나타냅니다.

  1. crash-reports
    • 충돌 시점의 스택 트레이스 확인
    • 관련된 플러그인이나 모드 식별
    • 시스템 상태 정보 검토

성능 모니터링 도구

  1. Timings
    • /timings on - 타이밍 기록 시작
    • /timings paste - 타이밍 리포트 생성
    • 플러그인별 성능 영향 분석
  2. Spark
    • 상세한 성능 프로파일링
    • 메모리 누수 탐지
    • CPU 사용량 분석

고급 설정 및 팁

서버의 성능과 안정성을 더욱 향상시키기 위한 고급 설정들을 알아보겠습니다.

JVM 튜닝

최적의 성능을 위한 Java 가상 머신 설정:

java -Xms4G -Xmx4G \
     -XX:+UseG1GC \
     -XX:+ParallelRefProcEnabled \
     -XX:MaxGCPauseMillis=200 \
     -XX:+UnlockExperimentalVMOptions \
     -XX:+DisableExplicitGC \
     -XX:+AlwaysPreTouch \
     -XX:G1NewSizePercent=30 \
     -XX:G1MaxNewSizePercent=40 \
     -XX:G1HeapRegionSize=8M \
     -XX:G1ReservePercent=20 \
     -XX:G1HeapWastePercent=5 \
     -XX:G1MixedGCCountTarget=4 \
     -XX:InitiatingHeapOccupancyPercent=15 \
     -XX:G1MixedGCLiveThresholdPercent=90 \
     -XX:G1RSetUpdatingPauseTimePercent=5 \
     -XX:SurvivorRatio=32 \
     -XX:+PerfDisableSharedMem \
     -XX:MaxTenuringThreshold=1 \
     -jar paper.jar nogui

각 옵션의 설명:

  • -XX:+UseG1GC: G1 가비지 컬렉터 사용
  • -XX:MaxGCPauseMillis: 최대 GC 일시 중지 시간
  • -XX:+AlwaysPreTouch: 메모리 사전 할당
  • -XX:G1NewSizePercent: 새로운 세대 크기 비율

네트워크 최적화

  1. TCP 최적화
  2. # system.properties net.core.rmem_default=16777216 net.core.wmem_default=16777216 net.core.rmem_max=16777216 net.core.wmem_max=16777216
  1. 방화벽 설정
  2. # UFW 설정 예시 sudo ufw allow 25565/tcp sudo ufw allow 25565/udp

보안 강화

  1. 플러그인 보안
    • 신뢰할 수 있는 소스의 플러그인만 사용
    • 정기적인 보안 업데이트 적용
    • 불필요한 플러그인 제거
  2. 서버 보안
    • 강력한 비밀번호 사용
    • SSH 키 기반 인증 사용
    • 정기적인 백업 실행
  3. 플레이어 보안
    • 2단계 인증 적용
    • 권한 시스템 세분화
    • 로그인 시도 제한

성능 모니터링 시스템 구축

  1. Grafana + Prometheus 설정
    • 서버 메트릭 실시간 모니터링
    • 성능 지표 시각화
    • 알림 시스템 구성
  2. 로그 집계 시스템
    • ELK 스택 활용
    • 로그 패턴 분석
    • 이상 징후 감지
  3. 자동화된 백업 시스템
   #!/bin/bash
   # 자동 백업 스크립트 예시

   BACKUP_DIR="/path/to/backups"
   SERVER_DIR="/path/to/server"

   # 월드 데이터 백업
   tar -czf $BACKUP_DIR/worlds_$(date +%Y%m%d).tar.gz $SERVER_DIR/world*

   # 플러그인 설정 백업
   tar -czf $BACKUP_DIR/plugins_$(date +%Y%m%d).tar.gz $SERVER_DIR/plugins

   # 오래된 백업 정리
   find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

커스텀 스크립트 작성

  1. 서버 상태 모니터링 스크립트
import psutil
import time
import requests

def check_server_status():
    # CPU 사용량 확인
    cpu_percent = psutil.cpu_percent(interval=1)

    # 메모리 사용량 확인
    memory = psutil.virtual_memory()

    # 디스크 사용량 확인
    disk = psutil.disk_usage('/')

    # 임계값 초과시 알림
    if cpu_percent > 80:
        send_alert(f"CPU 사용량 높음: {cpu_percent}%")

    if memory.percent > 90:
        send_alert(f"메모리 사용량 높음: {memory.percent}%")

    if disk.percent > 85:
        send_alert(f"디스크 공간 부족: {disk.percent}%")

def send_alert(message):
    # Discord 웹훅이나 이메일로 알림 전송
    webhook_url = "YOUR_WEBHOOK_URL"
    requests.post(webhook_url, json={"content": message})

while True:
    check_server_status()
    time.sleep(300)  # 5분마다 체크

서버 성능 최적화 심화

서버의 성능을 극대화하기 위한 심화된 최적화 기법들을 살펴보겠습니다.

청크 관리 최적화

  1. 청크 생성 제어
   # paper.yml
   world-settings:
     default:
       chunks:
         max-chunk-sends-per-tick: 32
         max-chunk-gens-per-tick: 16
         prevent-moving-into-unloaded-chunks: true
  1. 청크 언로드 정책
   chunks:
     autoload-threshold: 8
     max-loaded-per-world: 3000
     unload-policy:
       trigger-threshold: 2500
       unload-chunks-per-tick: 10

엔티티 관리

  1. 스폰 제한
   spawn-limits:
     monsters: 50
     animals: 30
     water-animals: 20
     ambient: 15
  1. 활성화 범위 조정
   entity-activation-range:
     animals: 16
     monsters: 24
     raiders: 48
     misc: 8
     water: 16
     villagers: 32

확장 및 발전 방향

서버의 미래 발전을 위한 계획과 고려사항들을 알아보겠습니다.

스케일링 전략

  1. 수직적 확장
    • 하드웨어 업그레이드
    • 서버 설정 최적화
    • 리소스 할당 조정
  2. 수평적 확장
    • 번지코드 네트워크 구성
    • 로드 밸런싱 구현
    • 데이터베이스 분리

커뮤니티 관리

  1. 운영 정책 수립
    • 서버 규칙 제정
    • 관리자 가이드라인
    • 처벌 기준 수립
  2. 커뮤니케이션 채널
    • 디스코드 서버 운영
    • 웹사이트 구축
    • 피드백 시스템 구현

수익화 전략

  1. 후원 시스템
    • 후원 상점 구축
    • 특별 혜택 설계
    • 결제 시스템 연동
  2. 광고 및 마케팅
    • 서버 리스트 등록
    • 소셜 미디어 활용
    • 이벤트 기획

결론

Paper 서버는 마인크래프트 멀티플레이어 경험을 한층 더 풍부하게 만들어주는 강력한 도구입니다. 이 가이드에서 다룬 내용들을 바탕으로 안정적이고 즐거운 서버를 운영하실 수 있기를 바랍니다.

추가 자료 및 참고 링크

마지막으로, 서버 운영은 지속적인 학습과 개선이 필요한 여정입니다. 커뮤니티의 피드백을 수렴하고, 최신 트렌드를 파악하며, 끊임없이 발전하는 자세가 성공적인 서버 운영의 핵심임을 기억하시기 바랍니다.

 

[요약] 마인크래프트의 고성능 서버 소프트웨어인 Paper를 활용하여 안정적이고 확장 가능한 플러그인 서버를 구축하는 방법을 다루며, Java 설치부터 서버 설정, 플러그인 관리, 성능 최적화, 문제해결, 보안 강화, 커뮤니티 운영까지의 전체 과정을 상세히 설명하는 종합 가이드로, 초보자부터 고급 사용자까지 모두가 참고할 수 있는 실용적인 서버 구축 및 운영 지침서입니다.

 

728x90
반응형
LIST