-world 0 Which world index to use.
-worldname "Core Keeper Server" The name to use for the server.
-worldseed 0 The seed to use for a new world. Set to 0 to generate random seed.
-gameid "" Game ID to use for the server. Needs to be at least 28 characters and alphanumeric, excluding Y,y,x,0,O. Empty or not valid means a new ID will be generated at start.
-datapath "" Save file location. If not set it defaults to a subfolder named "DedicatedServer" at the default Core Keeper save location.
-maxplayers 100 Maximum number of players that will be allowed to connect to server.
-worldmode 0 Sets the world mode for the world. Can be Normal (0), Hard (1), Creative (2), Casual (4). NOTE: Changing between Creative and non-Creative worlds not currently supported.
-port <unset> What port to bind to. If not set, then the server will use the Steam relay network. If set the clients will connect to the server directly and the port needs to be open. Use -port 27015 to connect to a server on the same LAN.
-ip 0.0.0.0 Only used if port is set. Sets the address that the server will bind to.
-season -1 Overrides current season by setting to any of None (0), Easter (1), Halloween (2), Christmas (3), Valentine (4), Anniversary (5), CherryBlossom (6), LunarNewYear (7). -1 is default setting where it is set depending on system date. You can use either the season name or the corresponding number.
파라미터 사용의 예
worldname 의 경우
./_launch.sh -worldname "원하는 서버 이름으로 작성"
maxplayers 의 경우
./_launch.sh -maxplayers 100
여러개를 섞을 경우
./_launch.sh -worldname "원하는 서버 이름으로 작성" -maxplayers 100
처음 서버를 만들고 가장 먼저 접속하는 캐릭터는 자동 관리자로 처리 됩니다. (You will see the "first admin" listed here. The player who joined the server first and was automatically given admin)
[08:17:45 INFO]: Paper: Using OpenSSL (Linux aarch64) cipher from Velocity.
[08:17:45 WARN]: ** FAILED TO BIND TO PORT!
[08:17:45 WARN]: The exception was: io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use
[08:17:45 WARN]: Perhaps a server is already running on that port?
[08:17:45 ERROR]: Encountered an unexpected exception
java.lang.IllegalStateException: Failed to bind to port
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:286) ~[paper-1.21.1.jar:1.21.1-15-11b4ac7]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1215) ~[paper-1.21.1.jar:1.21.1-15-11b4ac7]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:330) ~[paper-1.21.1.jar:1.21.1-15-11b4ac7]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use
[08:17:46 ERROR]: This crash report has been saved to: /home/ubuntu/lobby/crash-reports/crash-2024-08-16_08.17.46-server.txt
원인
Failed to bind to port 라는 에러가 발생 되는 것을 보아, 프록서 밑으로 붙어 있는 일반 서버의 마인크래프트 포트 번호를 변경하지 않은 것으로 보입니다.
해결 방법
각 서버의 server.properties 파일의 'query.port=25565' 항목을 유니크한 숫자로 변경해주세요
벨로시티(프록시) 서버의 velocity.toml 파일도 변경한 포트로 모두 알맞게 맞춰주세요
## velocity.toml ##
[servers]
# Configure your servers here. Each key represents the server's name, and the value# represents the IP address of the server to connect to.
lobby = "127.0.0.1:30066"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"
FXServer.exe 파일을 더블 클릭 합니다엑세스 허용 메시지가 뜨면 '허용' 을 누릅니다.
서버 등록(시디키 발급)을 위해 인터넷 브라우저가 자동 실행되며 'Link Account'를 클릭합니다
ID / Password를 입력합니다. 처음 접속이라면 회원 가입을(무료) 먼저 진행하세요인증 확인을 누릅니다'Next' 클릭출력될 서버 이름을 작성 후 'Next''Popular Recipes' 선택'CFX Default RedM' 선택'Change Path'를 선택자신의 서버 디렉토리 + 파일 이름 형식으로 위치를 잡아 줍니다'Go to Recipe Deployer' 클릭
시디키 입력
'Next' 클릭시디키 발급을 위해 'Keymaster' 클릭'New Server' 클릭서버이름 / PC의 공인 IP / 서버타입 / 간단한 질문 답을 적고 → Generate를 클릭합니다.생성된 키를 복사 합니다.복사한 키를 붙여 넣고 → Run Recipe 를 클릭레시피 등록 완료 → 'Next' 클릭
마무리 하며
레드데드리뎀션2 + txAdmin를 사용하여 서버를 구축하는 방법에 대해 가이드 드렸습니다. 기타 파라미터 수정, 세이브 파일 위치등과 같은 상세 사항은 자주하는 질문 포스팅을 추가로 참조하세요.
스크립트를 삽입한 bat 파일을 더블클릭하여 서버 설치 진행서버 설치가 진행되고, 설치가 완료되면 창은 닫힙니다.
Step4 : 서버 켜기 / 끄기
서버 엔진 설치폴더로 이동
{네시스폴더}\steamapps\common\Necesse Dedicated Server
서버 켜기
'StartServer.bat' 파일을 더블클릭하여 서버를 기동 합니다월드 이름을 작성합니다.저장 위치를 확인후 'y' 입력 → 엔터1~250 사이에 원하는 최대 접속가능 플레이어 수량을 입력 → 엔터서버 패스워드 설정 / 원하지 않을 경우 공란으로 두고 → 엔터생성을 원하는 월드의 특정 시드 값이 있을 경우 입력하고 없을 경우 공란으로 두고 → 엔터Spawn Guide House 옵션 y/n 입력 → 엔터서버 기동 완료
서버 끄기
Option Step : 서버 파라미터 값 설정은 ?
서버 이름, logs와 같은 기타 파라미터 값을 수정하는 방법은 자주하는 질문 포스팅을 참조하세요
'StartServer.bat' 파일을 더블클릭하여 서버를 기동 합니다월드 이름을 작성합니다.저장 위치를 확인후 'y' 입력 → 엔터1~250 사이에 원하는 최대 접속가능 플레이어 수량을 입력 → 엔터서버 패스워드 설정 / 원하지 않을 경우 공란으로 두고 → 엔터생성을 원하는 월드의 특정 시드 값이 있을 경우 입력하고 없을 경우 공란으로 두고 → 엔터Spawn Guide House 옵션 y/n 입력 → 엔터서버 기동 완료
서버 끄기
Step5 : 서버 접속 테스트
게임 클라이언트 실행
멀티플레이어 클릭서버 추가방장의 공인IP를 입력 → 추가하기연결한 서버 더블클릭연결중(옵션) 패스워드 입력서버 접근 확인
마무리 하며
Windows OS + SteamClient를 사용하여 서버를 구축하는 방법에 대해 가이드 드렸습니다. 기타 파라미터 수정, 세이브 파일 위치등과 같은 상세 사항은 자주하는 질문 포스팅을 추가로 참조하세요.
질문 : 리눅스 OS에 여러 버전의 자바서 설치되어 있습니다. 변경하는 방법이 알고 싶어요
설치된 여러 자바 버전을 확인하기
sudo update-alternatives --config java
아래 예시와 같이 여러 자바 버전을 확인할 수 있습니다. 데모 같은 경우 0:Java17, 1:Java11, 2:Java17 이 설치 된 것을 볼 수 있음
ubuntu@test:~/minecraft$ update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Q :screen 명령어를 치면 'screen: command not found' 라고 뜹니다.
아래 명령어를 사용하여 명령어를 설치하세요
sudo apt install screen
Q : Screen 유틸리티 사용법이 궁금합니다.
Q : Address already in use 라고 뜨면서 서버가 기동되지 않습니다.
에러화면
마크 서버가 이미 같은 리눅스 OS에서 돌고 있습니다.
바로 위 포스팅에 소개 되어있는 screen 심화과정을 참조 하셔서 기존 프로세스를 종료 하세요
Screen 사용법이 어렵다면 구동중인 VM을 구글 클라우드 콘솔에서 강제로 리부팅 하세요
Q : 포트포워딩 + 방화벽 개방을 완벽히 했는데 접속이 안됩니다.
실제 질문사례의 스크린샷을 보면, 192.168.0.5 / 192.168.0.6 이렇게 2개의 서버에 포트포워딩을 걸었습니다.
위와 같이 서버 2대에 모두 25565 포트포워딩을 설정하면 정책 우선순위가 높은 4번에 포트포워딩이 걸리고
정책 5~7번은 무시됩니다.
포트포워딩 정책은 1:1 로 진행되므로, 필요 없거나 우선순위가 낮은 정책은 삭제하세요
Q : 방장은 접속이 되는데, 외부 인원이 서버로 접근되지 않습니다.
방징은 127.0.0.1 IP로 접근되지만, 외부 인원이 방장 서버의 공인 IP로 접근되지 않는 현상은 크게 2가지 입니다.
첫 번째는 방화벽 TCP 25565 번을 방장 서버 PC에서 개방 하지 않았을 수 있으며
두 번째는 포트포워딩을 제대로 구성하지 않았을 가능성입니다.
포트포워딩을 엉뚱하게 구성했거나, 바로 위 포스팅 처럼 중복 구성했거나
혹은 2중 공유기 환경이라 방장이 모르는 제 2의 공유기가 별도로 존재하여 추가 작업을 해줘야 하는 케이스 일 수 있습니다.
Q : 서버를 종료하는 방법은 무엇인가요 ?
리눅스에서, 마인크래프트 콘솔이 띄워져 있다면 아래와 같은 명령어나, 단축키로 종료합니다.
stop
or
ctrl + c
윈도우에서, 마인크래프트 콘솔이 띄워져 있다면 아래와 같은 명령어나 단축키로 종료합니다.
stop
or
윈도우창 오른쪽 상단의 'x'를 눌러 프로그램 종료
Q : 리눅스 OS를 리부팅 하는 명령어를 알려주세요
아래와 같은 명령어로 서버를 리부팅 합니다.
sudo shutdown -r now
Google Cloud Console 에서도 서버를 리부팅 할 수 있습니다.
VM 선택 → '재설정' 클릭 후 VM을 리부팅 합니다.
Q : 파워 쉘을 실행하면 다음과 같은 에러 메시지만 나오고, 실행되지 않습니다.
WARNING! The current location of this script contains spaces. This may cause this server to crash!
It is strongly recommended to move this server pack to a location whose path does NOT contain SPACES!
서버 디렉토리로 사용하고 있는 폴더에 스페이스(공백)이 있다는 내용입니다.
폴더 이름에 공백을 없애고, 가급적 영어로만 폴더 이름을 지정하세요
Q : 구글 클라우드위에 서버를 돌리다가, PC로 백업 받은 후 나중에 다시 서버를 올릴 수 있나요 ?
파일질라등을 통해 운영중인 파일 전체를 백업 받고
휴가등과 같은 여러 이유로 서버를 장기간 Off 한다음 새로 서버를 만들고
이후 파일을 그대로 옮기면 서버는 동일하게 동작 합니다.
Java / 방화벽 설정등은 추가로 수동 작업을 진행해야 합니다.
파일을 옮기는 방법은 아래 영상을 참조하세요
월드맵을 옮기는 방법이지만, 원리는 동일합니다.
Q : 구글 클라우드에서 서버 기동 후, Ctrl + a + d 를 누르면 서버가 종료 됩니다.
## Saved 파일 위치 ##
{게임서버엔진폴더}\steamapps\common\PalServer\Pal\Saved\SaveGames\0
## 배율파일 위치 ##
{게임엔진폴더}\steamapps\common\PalServer\Pal\Saved\Config\WindowsServer
Google Cloud(Linux + SteamCMD)를 이용하여 설치한 경우
## Saved 파일 위치 ##
~/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0
## 배율파일 위치 ##
~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer
Synology NAS + Container를 이용하여 설치한 경우
Saved 파일
배율파일
Oracle Cloud(Linux + Container)를 이용하여 설치한 경우
## Saved 파일 위치 ##
~/palworld/Pal/Saved/SaveGames/0
## 배율파일 위치 ##
~/palworld/Pal/Saved/Config/LinuxServer
Q : 리눅스 구축한, 게임 데이터를 모두 초기화 하고 싶어요
동작중인 게임엔진을 종료하고
바로 위 QnA에 소개되어 있는 Saved 폴더 안에 난수로 작성되어 있는 세이브 폴더를 모두 삭제하세요
Q : 리눅스에서 특정 명령어를 사용하면 'command not found' 라고 에러가 떨어집니다.
명령어 프로그램이 설치 되지 않아서 발생되는 에러입니다.
screen 명령어가 없을 경우
sudo apt install screen
iptables 명령어가 없을 경우
sudo apt install iptables
nano 명령어가 없을 경우
sudo apt install nano
netfilter-persistent 명령어가 없을 경우
sudo apt install netfilter-persistent
Q : 구글 클라우드에 배포한 서버 스펙을 변경하고 싶어요
아래 영상을 참조하세요 (마인크래프트 영상이지만, 구글클라우드 내용은 공통입니다)
Q : 구글 클라우드에서 VM 스펙을 변경할 경우 데이터가 삭제될까요 ?
스펙변경은 데이터에 영향을 주지 않습니다.
작업간, 할당된 디스크를 실수로 지우는 일이 없도록 연결 디스크 작업 부분만 주의 하세요
Q : 리눅스에서 PalWorldSettings.ini 등을 수정하는 방법은 어떻게 되나요 ?
게임 엔진을 먼저 종료합니다.
가급적이면 기존 저장 파일들은 백업 합니다.
nano 명령어를 사용하여 편집기를 열어 원하는 내용을 수정합니다.
# 파일 수정의 예 #
nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
esc, shift + 4 를 눌러 자동 줄바꿈을 적용합니다.
원하는 배율 및 값으로 파일을 수정 합니다.
저장합니다. (ctrl + x, y 키, 엔터키 를 순차적으로 넣고 저장)
게임엔진을 다시 기동시킵니다.
Q : nano를 사용하니 PalWorldSettings.ini 파일이 한줄로 쭉 나와서 보기 불편해요
esc + shift + 4 를 눌러 자동 줄바꿈을 실행합니다.
Q : PalWorldSettings.ini 파일 수정해도 적용이 안되는 이유는 왜죠 ???
가장 많은 이유는 구동중인 게임엔진을 끄고나서 ini 파일을 수정해야 합니다.
게임 엔진이 구동중, 파일을 수정하게되면 예전 설정으로 자동 롤백됩니다.
만약 게임 엔진을 끄고도 동일한 현상이 반복되면 버그일 가능성이 높습니다. 3~4회 반복해보세요 (게임엔진 구동 후 ini 파일 수정)
그래도 적용되지 않을 경우, 기존 파일을 삭제하고 새로 만들어서 적용해보세요
Q : PalWorldSetting.ini 파일 각 항목이 의미하는 내용을 알고 싶어요
Q : 관리자 명령어는 어떤 것들이 있나요 ?
명령어
설명
/AdminPassword
관리자 권한을 얻기
/Shutdown [초] [메시지]
[초]가 지나면 [메시지]를 게임내 출력하고 서버가 종료됨. [초], [메시지]는 생략 가능
/DoExit
서버 강제 종료
/Broadcast <MessageText>
게임내 채팅으로 공지 메시지 전달
/KickPlayer <SteamID>
<SteamID> 사용자를 일시적으로 서버에서 내 쫓음
/BanPlayer <SteamID>
<SteamID> 사용자를 서버에서 영구히 추방함
/TeleportToPlayer <SteamID>
<SteamID> 사용자가 있는 곳으로 순간이동 함
/TeleportToMe <SteamID>
<SteamID> 사용자를 내가 있는 곳으로 소환함
/ShowPlayers
현재 접속하고 있는 모든 사용자의 정보를 보여줌
/Info
서버의 정보를 보여줌
/Save
현재 월드 데이터를 서버 디스크에 저장함
/UnBanPlayer <SteamID>
영구 추방한 <SteamID> 사용자를 다시 UnBan 함
Q : 게임을 잘하고 있다가 갑자기 프로세스가 종료 됩니다 ㅠ.ㅠ
서버 스펙이 부족하여 서버가 꺼지는 경우가 많습니다. 특별히 메모리 이슈로 인한 꺼짐현상이 가장 많습니다.