SameOS ~/tools/minecraft-linux-server.md

마인크래프트 서버 직접 만들기 1탄 - 리눅스에 자바 서버 열기

작성일 2026-07-21 · SameOS Tools

팰월드·새티스팩토리에 이어 마인크래프트 서버도 집 리눅스 컴퓨터에 열었습니다. 마인크래프트는 앞의 두 게임과 결이 다릅니다 - Docker 이미지를 받아 끝나는 게 아니라 자바(게임이 돌아가는 실행 환경)를 직접 깔고 서버 파일을 실행하는, 더 원초적인 방식이 기본입니다. 그만큼 버전 함정도 하나 있어서 그것부터 짚고 시작합니다. 1탄은 순정(바닐라) 서버를 열어 친구가 접속하는 데까지, 2탄은 모드 서버와 Docker 운영입니다.

가장 먼저 - 게임 버전마다 요구하는 자바가 다릅니다

마인크래프트 서버가 안 켜지는 원인 1위는 자바 버전입니다. 게임이 업데이트되면서 요구하는 자바도 계속 올라갔기 때문에, 예전에 깔아 둔 자바로 최신 서버를 켜면 버전이 낮다는 오류와 함께 즉시 꺼집니다. 제가 돌리는 26.x 서버는 자바 25로 돌아갑니다. 우분투라면 apt로 바로 설치할 수 있고, 이미 다른 자바가 있어도 함께 설치해 두고 골라 쓸 수 있습니다.

# 자바 25 설치 (우분투 24.04 기준)
sudo apt update
sudo apt install -y openjdk-25-jre-headless

# 버전 확인 - "openjdk 25..." 가 나오면 성공
java --version

# 자바가 여러 개 깔려 있다면 기본 버전 선택
sudo update-alternatives --config java

# 서버 작업 폴더 만들기
mkdir -p ~/minecraft && cd ~/minecraft

서버 파일 받기와 eula 동의

서버 본체(server.jar)는 마인크래프트 공식 사이트의 서버 내려받기 페이지에서 받습니다. 반드시 게임과 같은 버전을 받아야 친구들이 접속할 수 있습니다. 버전 선택에 요령이 하나 있는데, 저는 무조건 최신이 아니라 26.1.2를 골랐습니다. 나중에 올릴 Fabric 모드가 지원하는 버전이었기 때문입니다. 모드는 게임 업데이트보다 늦게 나오므로, 모드 서버를 계획한다면 쓰려는 모드가 지원하는 버전을 먼저 확인하고 서버 버전을 거기에 맞추는 순서가 맞습니다. 처음 실행하면 서버는 켜지지 않고 eula.txt 파일 하나만 만들고 꺼지는데, 이건 고장이 아니라 이용 약관에 동의하라는 절차입니다. 파일을 열어 false를 true로 바꾸고 다시 실행하면 월드를 생성하며 진짜로 켜집니다.

# 첫 실행 - eula.txt 만 생성되고 꺼집니다 (정상)
java -Xms2G -Xmx4G -jar server.jar nogui

# 약관 동의 - eula=false 를 eula=true 로
sed -i 's/eula=false/eula=true/' eula.txt

# 두 번째 실행 - 월드를 만들며 서버가 켜집니다
# "Done (…초)! For help, type \"help\"" 가 뜨면 준비 완료
java -Xms2G -Xmx4G -jar server.jar nogui

# -Xms2G  시작 메모리 2GB
# -Xmx4G  최대 메모리 4GB - 2~4명이면 충분, 인원·모드가 늘면 6G까지

server.properties - 처음에 만질 것은 몇 개 안 됩니다

서버를 한 번 켜면 설정 파일 server.properties가 생깁니다. 항목이 수십 개라 처음엔 막막한데, 실제로 초반에 만질 것은 아래 몇 개뿐입니다. 나머지는 기본값이 무난합니다. 설정을 바꾼 뒤에는 서버를 재시작해야 적용됩니다.

# server.properties 에서 초반에 확인할 항목

motd=우리들의 마인크래프트 서버   # 서버 목록에 보이는 소개 문구
max-players=20                    # 동시 접속 인원
online-mode=true                  # 정품 인증 - true 권장 (복돌 차단)
white-list=false                  # true 면 명단에 올린 사람만 접속 가능
server-port=25565                 # 접속 포트 - 바꿀 이유 없으면 그대로
view-distance=10                  # 시야 거리 - 서버가 버거우면 8로

systemd 등록 - 재부팅해도 스스로 켜지게

터미널에서 직접 실행하면 터미널을 닫는 순간 서버도 꺼집니다. 리눅스의 서비스 관리자 systemd에 등록해 두면 부팅할 때 알아서 켜지고, 죽으면 다시 살려 줍니다. 한 가지 요령이 있는데, 마인크래프트 서버는 정상 종료할 때 종료 코드 143을 남깁니다. systemd는 이걸 기본적으로 실패로 간주해 정상적으로 껐는데도 다시 켜 버리므로, 143을 정상으로 취급한다고 알려 줘야 합니다. 실제 운영하며 걸렸던 부분입니다.

# /etc/systemd/system/minecraft.service 로 저장 (sudo 필요)
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=같은서버계정이름
WorkingDirectory=/home/같은서버계정이름/minecraft
ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar server.jar nogui
Restart=on-failure
# 143 = 정상 종료 신호 - 실패로 보지 않게 해야 재시작 루프에 안 빠집니다
SuccessExitStatus=0 143
TimeoutStopSec=90

[Install]
WantedBy=multi-user.target

# 등록하고 켜기
#   sudo systemctl daemon-reload
#   sudo systemctl enable --now minecraft
# 상태·로그 확인
#   systemctl status minecraft
#   journalctl -u minecraft -f

친구 접속 - 포트 하나만 열면 됩니다

마인크래프트는 팰월드·새티스팩토리와 달리 포트를 25565 하나만 씁니다. 공유기 관리 페이지에서 25565(TCP)를 서버 컴퓨터로 포트포워딩(외부에서 온 접속을 집 안 특정 컴퓨터로 넘겨주는 설정)하면, 친구는 멀티플레이 화면에서 내 공인 IP 주소만 입력하면 들어올 수 있습니다. 같은 집에서는 서버의 내부 주소(192.168.x.x)로 접속해 먼저 테스트해 보세요.

마무리

여기까지 하면 순정 서버로 친구들과 충분히 놀 수 있습니다. 정리하면 - 자바 버전 확인, eula 동의, 설정 몇 개, systemd 등록, 포트포워딩. 이 다섯이 전부입니다. 다음 글에서는 모드를 올리기 위해 Fabric(모드를 실행해 주는 로더)을 깔고, 서버를 Docker로 옮겨 백업까지 자동화하는 과정을 다룹니다.

이 글의 설정 파일들을 GitHub에서 보기

2탄 - Fabric 모드 서버와 Docker 운영 읽기 팰월드 서버 만들기 1탄도 보기