게임/minecraft

간단하게 마인크래프트 서버 여는 법

kimtetris 2025. 6. 8. 22:41

최근에 서버를 열 일이 생겨서 성공한 기념으로 초보 분들도 마인크래프트 서버 여는 법을 최대한 간단하게 따라 할 수 있도록 과정을 정리했습니다. 

 

 

 0. 자바 설치

먼저 하단의 자바 공식 사이트에서 마인크래프트 플레이 및 서버 구동에 필요한 자바를 다운로드 받아줍니다. 

 

https://www.oracle.com/kr/java/technologies/downloads/#jdk24-windows

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

1.17 이후 버전의 서버에서는 java 16 이상의 버전이 필요합니다. 위 링크에서 OS에 맞는 java를 다운로드하면 됩니다. 윈도우의 경우 x64 installer를 통해 설치가 가능합니다.

 

이전 버전들 같은 경우엔 java 8만 있어도 충분히 가능하기에 더욱 쉽게 다운로드가 가능합니다. 

 

https://www.java.com/ko/

 

Java | Oracle

Oracle Java는 최고의 프로그래밍 언어이자 개발 플랫폼입니다. 비용을 절감하고, 개발 기간을 단축하며, 혁신을 주도하고, 애플리케이션 서비스를 개선할 수 있습니다. Java는 기업과 개발자들의

www.java.com

 

사이트에 접속 후 "데스크톱용 Java 다운로드" 를 통해 OS에 맞는 .exe파일을 다운로드 후 진행하면 간단하게 설치를 완료하실 수 있습니다. 

 

 

 1. 서버 구동기 생성

서버 파일 다운로드

"우클릭 - 새로 만들기 - 폴더"를 통해 서버를 저장할 폴더를 생성한 후 아래 링크 중 하나에서 원하는 버전의 .jar형태의 서버 파일을 다운로드 받아줍니다.

사이트가 한 번씩 마비가 되는 일이 있어 다양하게 게시했습니다. 

 

서버 구동기 생성

서버 폴더에서 "우클릭 - 새로 만들기 - 텍스트 문서"를 통해 새로운 텍스트 파일을 만든 후 아래 텍스트를 입력해 줍니다. 

@echo off
java -Xmx2G -Xms1G -jar server.jar nogui
pause

이때, -jar 뒤 server.jar를 앞서 다운로드한 서버 파일의 이름으로 변경해 줍니다. 

-Xmx는 최대 렘 사용, -Xms는 최소 렘 사용을 말하며 최대 2G를 할당하면 4명 정도, 최대 4G를 할당하면 8명 정도 인원이 문제없이 서버에 들어갈 수 있습니다. 이후 아래 2가지 방법 중 하나로 .bat 파일로 바꿔주면 구동기를 만들 수 있습니다. 

 

1) 폴더의 "보기 - 파일 확장자명"을 클릭하여 보이게 한 후 텍스트 파일의 이름을 "start.bat"으로 변경

2) 저장할 때 파일 이름을 "start.bat", 파일 형식을 "모든 파일"로 하여 저장

 

더블클릭을 통해 만들어진 start.bat을 실행시킵니다. 

 

eula 동의

start.bat을 실행시키면 EULA에 문제가 있어 설정하라는 문구가 나옵니다. 이때 나오는 메시지들은 다운로드받은 .jar 서버 파일마다 다르게 나옵니다. 

 

다시 폴더에 접속하면 새로운 폴더와 파일들이 생성되어 있는데 이때, eula.txt에 들어가서 false true로 바꿔주시면 됩니다. 

 

다시 start.bat을 더블클릭하여 실행시키면 서버가 완성되고 열리게 됩니다. 

 

 

 2. 서버 세부 설정

파일 기능

서버 구동기 생성 시 공통으로 만들어지는 파일들의 기능입니다. 

 

logs - 서버에서 발생한 모든 행위의 로그 저장

plugins - 플러그인 저장 위치, 새로 넣고 싶은 플러그인들을 넣으면 됩니다. 처음 생성 시엔 없습니다. 

mods - 적용된 모드들을 모아둔 폴더, 처음 생성시엔 없습니다. 

versions - 서버에 적용된 마인크래프트 버전

world - 기본 오버 월드, 사람들이 만든 다양한 맵을 이름을 world로 변경하여 넣으면 적용됩니다

world_nether - 지옥, 처음 생성 시에는 없습니다. 

world_the_end - 엔더 월드

banned-ips.json / banned-players.json - 접속이 금지된 플레이어와 ip 모음

ops.json - 관리자 명단, 서버 내에서 명령어를 쓸 수 있는 목록입니다. 

server.properties - 서버 설정 파일, "우클릭 - 연결 프로그램 - 메모장"을 통해 다양한 설정을 변경할 수 있습니다. 

usercache.json - 접속했던 플레이어의 정보를 저장하는 파일

whitelist.json - 접속 가능한 플레이어 목록, 서버에서 whitelist on 명령을 실행해야 적용됩니다.

 

서버 설정

server.properties에서 변경할 수 있는 설정 목록과 기능입니다. 자주 변경하거나 중요한 목록에 표시해뒀습니다. 

 

accepts-transfers=false                  - 파일 전송 기능 허용 여부
allow-flight=false                       - 클라이언트 비행여부, 허용하면 치트 비행 가능, false면 강제 킥
allow-nether=true                        - 네더 월드 활성화 여부
broadcast-console-to-ops=true           - 콘솔 메시지를 OP에게도 보여줄지 여부
broadcast-rcon-to-ops=true              - RCON 메시지를 OP에게도 보여줄지 여부
bug-report-link=                        - 버그 리포트 URL 설정
difficulty=easy                          - 난이도 설정 (peaceful, easy, normal, hard)
enable-command-block=false              - 커맨드 블록 사용 가능 여부
enable-jmx-monitoring=false             - JMX 모니터링 사용 여부
enable-query=false                      - 서버 상태를 외부에서 조회할 수 있는지 여부
enable-rcon=false                       - RCON 원격 콘솔 사용 가능 여부
enable-status=true                      - 서버 상태 정보 제공 여부, 서버 목록에 표시됨
enforce-secure-profile=true             - 보안 프로필 필수 여부
enforce-whitelist=false                 - 화이트리스트 적용 여부
entity-broadcast-range-percentage=100   - 엔티티(몹, 아이템 등) 표시 거리 퍼센트 (100% = 기본값)
force-gamemode=false                    - 서버 입장 시 항상 설정된 게임모드로 강제할지 여부
function-permission-level=2             - 함수 실행 권한 레벨 (1~4)
gamemode=survival                       - 기본 게임 모드 (survival, creative, adventure, spectator)
generate-structures=true                - 마을, 던전 등 구조물 생성 여부
generator-settings={}                   - 커스텀 월드 설정
hardcore=false                          - 하드코어 모드 여부
hide-online-players=false               - 서버 목록에서 접속 중인 플레이어 숨김 여부
initial-disabled-packs=                - 처음 비활성화된 리소스팩 목록
initial-enabled-packs=vanilla           - 처음 활성화된 리소스팩 목록
level-name=world                        - 월드 폴더 이름
level-seed=                             - 맵 시드 값 (비우면 랜덤 생성)
level-type=minecraft\:normal           - 월드 타입 (normal, flat, largebiomes 등)
log-ips=true                            - 접속한 플레이어의 IP 기록 여부
max-chained-neighbor-updates=1000000    - 블록 업데이트 체인 최대 횟수 (퍼포먼스 보호용)
max-players=20                          - 서버 최대 동시 접속 인원수
max-tick-time=60000                     - 틱당 최대 연산 시간, 초과하면 서버 멈춤
max-world-size=29999984                 - 월드 최대 크기 (블록 단위, 기본 29,999,984)
motd=A Minecraft Server                - 서버 목록에 표시되는 메시지
network-compression-threshold=256       - 네트워크 압축 임계값
online-mode=true                        - 온라인 모드 여부 (true면 정품 사용자만 접속 가능)
op-permission-level=4                   - OP 권한 레벨 (1~4, 4가 최고 관리자)
pause-when-empty-seconds=60             - 아무도 접속하지 않았을 때 일시 정지되는 시간 (초)
player-idle-timeout=0                   - 비접속/무응답 유저 킥 시간 (0이면 무제한)
prevent-proxy-connections=false         - 프록시 우회 접속 차단 여부
pvp=true                                - 플레이어 간 전투(PvP) 허용 여부
query.port=25565                        - query 기능 사용 시 사용하는 포트
rate-limit=0                            - 초당 패킷 제한 (0이면 제한 없음)
rcon.password=                          - RCON 비밀번호
rcon.port=25575                         - RCON 접속용 포트
region-file-compression=deflate         - 월드 저장 시 사용하는 압축 방식
require-resource-pack=false             - 리소스팩 강제 여부
resource-pack=                          - 리소스팩 URL
resource-pack-id=                       - 리소스팩 ID 
resource-pack-prompt=                   - 리소스팩 설치 시 표시될 메시지
resource-pack-sha1=                     - 리소스팩 무결성 확인용 SHA1 해시값
server-ip=                              - 서버에서 사용할 IP (비워두면 자동 할당), 하마치 사용시 작성
server-port=25565                       - 서버가 사용하는 포트 번호, 포트포워딩 사용시 작성
simulation-distance=10                  - 서버 측 블록/엔티티 시뮬레이션 거리 (청크 단위)
spawn-monsters=true                     - 몬스터 생성 여부
spawn-protection=16                     - 스폰 주변 보호 범위 (블록 수, OP만 건드릴 수 있음)
sync-chunk-writes=true                  - 청크 저장 시 동기화 여부 (퍼포먼스와 안정성 사이 선택)
text-filtering-config=                  - 채팅 필터 설정
text-filtering-version=0                - 채팅 필터 버전
use-native-transport=true               - OS에 최적화된 네이티브 네트워크 사용 여부
view-distance=10                        - 플레이어가 볼 수 있는 거리
white-list=false                        - 화이트리스트 사용 여부

 

 

 3. 멀티 설정 - 하마치

먼저 하단 링크를 통해 하마치를 다운로드 받은 후 설치해 줍니다. 

 

 

https://vpn.net/

 

VPN.net – Hamachi by LogMeIn

Easy to set up. Easy to manage. Easily create, manage and maintain virtual private networks from anywhere with LogMeIn Hamachi, a hosted VPN service, that extends secure LAN-like network connectivity to mobile users and distributed teams on-demand over the

vpn.net

 

회원가입과 로그인 절차를 진행한 후 "네트워크 - 새 네트워크 만들기"를 통해 서버를 접속할 수 있는 네트워크를 만들어줍니다. 네트워크 ID와 암호를 입력한 후 만들어 주시면 됩니다. 이때 시스템 하단의 전원 버튼을 통해 온라인 상태를 유지해야 합니다. 

 

이제 전원버튼 옆의 IP주소 (저의 경우 25.10.25.216)을 우클릭 후 ipv4주소를 복사해 줍니다. 복사한 주소는 앞서 2번에서 설명드린 "server.properties 파일 - server-ip"에 적어주시면 됩니다. 

 

서버에 접속하고자 하는 사람도 이전 단계와 같이 하마치를 다운로드한 후 "네트워크 - 기존 네트워크 가입"을 통해 앞서 만들어진 네트워크 ID와 암호를 적은 후 입장하면 됩니다. 이제 마인크래프트를 실행시킨 뒤 "멀티플레이 - 직접연결/서버 추가"의 서버 주소란에 앞서 입력했던 server-ip server-port를 입력해 주시면 접속이 가능합니다. (포스팅 기준 25.10.25.216:25565)

server-ip:server-port

 

만약 network is unreachable: getsockopt와 같은 오류가 발생하며 서버에 접속되지 않는 문제가 생긴다면 "제어판 - 시스템 및 보안 - windows defender 방화벽 - windows defender 방화벽 설정 또는 해제"에서 서버를 열어둔 동안 방화벽을 꺼주시면 접속이 가능해집니다. 다만 이 방법은 서버를 여는 동안 보안에 문제가 생길 수 있어 다음 방법을 더 추천드립니다. 

 

먼저 "제어판 - 시스템 및 보안 - windows defender 방화벽 - windows defender 방화벽을 통해 앱 또는 기능 허용"을 들어가 줍니다. 

 

"설정 변경 - 다른 앱 허용 - 찾아보기"를 눌러준 뒤 하마치를 설치한 경로, 기본으론 "c\program File(x86)\LogMein Hamachi" 경로에 있는 hamachi-2-ip.exe를 선택한 뒤 열기를 눌러주신 후 추가해 주시면 됩니다. 

 

 

추후 포스포워딩 방법을 원하시는 분들이 있으면 추가하겠습니다.