SameOS ~/tools/palworld-server-update.md

팰월드 서버 직접 만들기 6탄 - 패치 날 서버 업데이트하는 법

팰월드 패치가 나오면 스팀이 내 게임을 알아서 업데이트합니다. 그런데 서버는 그대로라, 어느 날 친구가 "서버에 안 들어가져요"라고 하면 십중팔구 버전 불일치입니다. 게임은 새 버전, 서버는 옛 버전인 상태죠. 서버가 스스로 업데이트되지 않는 건 고장이 아니라 구성의 선택인데, 이번 글에서는 두 가지 방식과 실제 업데이트 절차를 정리합니다.

방식 1 - 재시작하면 알아서 받는 구성

1탄에서 쓴 커뮤니티 이미지(thijsvanloef/palworld-server-docker)는 컨테이너가 시작될 때 스팀에서 서버 파일을 새로 받아옵니다(UPDATE_ON_BOOT 기본 켜짐). 패치 날 할 일이 "저장하고 재시작"뿐이라 편합니다. 대신 재시작할 때마다 무조건 최신이 되기 때문에 업데이트 시점을 고를 수 없고, 문제 있는 패치가 나온 날에도 그대로 올라가며, 이전 버전으로 되돌리기 어렵습니다.

방식 2 - 버전 태그 고정 (제 운영 방식)

저는 공식 Pocketpair 서버 이미지를 버전 태그(이미지 이름 뒤에 붙는 버전 표시)로 고정해 씁니다. 서버가 언제 어떤 버전으로 바뀌는지 전부 제가 정하고, 문제가 생기면 이전 태그로 되돌리면 롤백이 끝납니다. 대신 패치 날엔 손으로 올려야 하죠. 정식 출시 후 한 달 동안 태그가 다섯 번 올라왔으니(v1.0.0 → v1.0.2) 드문 일도 아닙니다. 새 버전이 나왔는지는 명령 두 줄로 확인합니다.

# 공식 서버 이미지의 버전 태그 목록 확인 (읽기용 토큰 발급 → 태그 조회)
TOKEN=$(curl -s "https://ghcr.io/token?scope=repository:pocketpairjp/palserver:pull" \
        | sed 's/.*"token":"\([^"]*\)".*/\1/')
curl -s -H "Authorization: Bearer $TOKEN" \
     "https://ghcr.io/v2/pocketpairjp/palserver/tags/list"

# 출력 예 (뒤로 갈수록 최신):
# ..."v1.0.1.100619","v1.0.2.100933","v1.0.2.101103"]

업데이트 절차 - 백업, 저장, 태그 교체

순서가 중요합니다. 팰월드 서버는 그냥 끄면 마지막 저장 이후의 진행이 날아갑니다(2탄에서 다룬 함정 - 종료 신호가 게임 프로세스까지 전달되지 않습니다). 그래서 반드시 월드 백업과 저장을 먼저 하고 종료합니다. 그다음 compose 파일의 태그 한 줄을 바꾸고 새 이미지를 받아 다시 켜면 끝입니다.

cd ~/palworld
./backup.sh                        # ① 월드 백업 (2탄의 백업 스크립트)

# ② 저장부터, 그다음 종료 (그냥 끄면 저장 안 된 진행이 날아감)
curl -s -u admin:관리자비밀번호 -X POST http://127.0.0.1:8212/v1/api/save
docker stop palworld-server

# ③ compose.yaml 의 image 태그를 새 버전으로 교체
#    image: ghcr.io/pocketpairjp/palserver:v1.0.2.101103  ← 이 줄

# ④ 새 이미지 받고 다시 시작
docker compose pull palworld-server
docker compose up -d palworld-server

# ⑤ 기동 로그 확인 후 게임에서 접속 테스트
docker logs -f palworld-server

롤백도 같은 절차입니다. 태그를 이전 버전으로 되돌리고 pull, up만 다시 하면 됩니다. 한 가지 주의: 새 버전으로 한 번이라도 월드가 저장됐다면 그 세이브 파일이 구버전과 맞지 않을 수 있으니, 되돌릴 때는 ①에서 만든 백업본으로 월드를 복원하는 게 안전합니다. 방식 1(재시작 때 자동 업데이트)을 쓰는 분도 ①~②는 똑같이 하세요 - 어떤 방식이든 "백업하고, 저장하고, 끈다"가 업데이트의 전부입니다.

5탄 - 지도에 상인·수배 NPC 마커 올리기 2탄 - 저장 함정, 안전한 종료, 백업 팰월드 REST API 명령어 전체 정리