OmniOS와 Paper에 대해
OmniOS는 Solaris 기반의 오픈소스 운영체제다. Oracle Solaris에서 파생된 illumos 프로젝트를 기반으로 하며, 서버 환경에서의 안정성과 성능에 중점을 둔 Unix 계열 OS다. ZFS 파일시스템과 DTrace 등 Solaris의 강력한 기능들을 그대로 제공하면서도 완전히 오픈소스로 유지되고 있어, 엔터프라이즈 환경에서 높은 평가를 받고 있다.
PaperMC는 마인크래프트: 자바 에디션 서버용 고성능 포크로, 다양한 플러그인, 비동기 청크 로딩, 조명 엔진, 호퍼, 엔티티 최적화 등 다양한 개선을 통해 성능을 대폭 향상시키도록 설계된 Minecraft 게임 서버 소프트웨어다.
2024년 12월 13일, PaperMC 프로젝트는 Spigot으로부터 하드포크를 공식 발표했다. 이로 인해 1.21.4 버전부터는 더 이상 Spigot의 업데이트에 종속되지 않고 자체 릴리스 체계로 전환 되었다. 기존 Bukkit/Spigot 기반 플러그인은 작동하지만, 향후 Spigot API에 추가되는 기능은 지원하지 않을 예정이다. 따라서 Paper-API 기반 플러그인을 사용하는 것이 권장된다.
이 포스트에서는 OmniOS에서 최신 PaperMC 빌드를 자동으로 다운로드하고, 시스템 리소스에 맞춰 JVM 옵션을 설정하고 구동하는 스크립트를 다룬다.
요구 사항
- sudo 권한 혹은 관리자 권한
- 인터넷 연결
OS 정보
~$ uname -a
SunOS omnios-lts 5.11 omnios-r151054-6ad70ba62c i86pc i386 i86pc
~$ cat /etc/release
OmniOS v11 r151054e
Copyright (c) 2012-2017 OmniTI Computer Consulting, Inc.
Copyright (c) 2017-2025 OmniOS Community Edition (OmniOSce) Association.
All rights reserved. Use is subject to licence terms.
~$ cat /etc/os-release
NAME="OmniOS"
PRETTY_NAME="OmniOS Community Edition v11 r151054e"
CPE_NAME="cpe:/o:omniosce:omnios:11:151054:5"
ID=omnios
VERSION=r151054e
VERSION_ID=r151054e
BUILD_ID=151054.5.2025.06.01
HOME_URL="https://omnios.org/"
SUPPORT_URL="https://omnios.org/"
BUG_REPORT_URL="https://github.com/omniosorg/omnios-build/issues/new"
필수 패키지 설치
sudo pkg update
sudo pkg install openjdk21 jq
작업 디렉터리 생성
mkdir jgrpp && cd jgrpp
서버 스크립트
start.sh
#!/usr/bin/bash
PAPER_LATEST_VERSION=$(curl -s https://api.papermc.io/v2/projects/paper | jq -r '.versions[-1]')
PAPER_LATEST_BUILD=$(curl -s https://api.papermc.io/v2/projects/paper/versions/$PAPER_LATEST_VERSION | jq -r '.builds[-1]')
JAR_FILENAME="paper-$PAPER_LATEST_VERSION-$PAPER_LATEST_BUILD.jar"
CORE_COUNT=$(getconf NPROCESSORS_ONLN)
TOTAL_MEM_MB=$(prtconf | awk '/Memory size:/ { print $3 }')
XMX_MB=$(( TOTAL_MEM_MB * 80 / 100 ))
XMS_MB=$(( TOTAL_MEM_MB * 50 / 100 ))
[ -f "$JAR_FILENAME" ] || wget "https://api.papermc.io/v2/projects/paper/versions/$PAPER_LATEST_VERSION/builds/$PAPER_LATEST_BUILD/downloads/$JAR_FILENAME"
[ ! -f eula.txt ] && echo "eula=true" > eula.txt
if [ "$CORE_COUNT" -le 1 ]; then
PARALLEL_THREADS=1
CONC_THREADS=1
else
PARALLEL_THREADS=$(( CORE_COUNT - 1 ))
CONC_THREADS=$(( PARALLEL_THREADS / 2 ))
fi
java \
-Xms${XMS_MB}M -Xmx${XMX_MB}M \
-XX:+UseG1GC \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-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 \
-XX:ParallelGCThreads=${PARALLEL_THREADS} \
-XX:ConcGCThreads=${CONC_THREADS} \
-Dusing.aikars.flags=https://mcflags.emc.gs \
-Daikars.new.flags=true \
-jar "$JAR_FILENAME" --nogui
실행 권한 설정 및 서버 구동
chmod u+x start.sh
./start.sh
정상적으로 실행되면 콘솔 상에 서버 시작 로그가 출력되며, 25565 포트에서 OpenTTD JGRPP 클라이언트 연결을 대기한다.
참고 사이트
위 튜토리얼은 2025년 6월 초 기준 최신 OmniOS LTS 릴리즈와 최신 Paper 버전 기준으로 작성되었으며, 차후 버전 차이에 따라 일부 수정이 필요할 수 있다.