Palworld Docker 서버&백업 저장 및 업데이트 스크립트
의 이미지 업데이트가 꽤나 잦네요 ㅎㅎ..
앞서 DarkAcid 님께서 rcon을 사용해서 업데이트 방법을 강의해주셨는데 그거랑 비슷한 스크립트라고 보시면됩니다.
저는 도커로 구동하고있는 서버 기준입니다.
이 스크립트를 매일 00시나 새벽에 돌리게 cron 설정을 해놓는다면 해당시간을 기준으로 save + backup을 하고 컨테이너를 재시작 시켜 메모리에 할당된것들을 한번 리프레시 시켜줄 수 있습니다.
기본적으로 rcon 이라는 프로토콜을 통해서 서버의 정보와 플레이어 종료, 저장등을 컨트롤 가능합니다.
제가 작성한 아래 글들을 통해 Docker로 구축했다면 호스트에서 명령어 사용으로 제어가 가능합니다.
이런식으로요 ㅎㅎ
간단하게 저장&백업 ,종료 컨테이너 이미지 업데이트 후 재시작 구성으로 가보겠습니다.
요런식의 구성입니다 ㅎㅎ
#!/bin/bash
# Docker 컨테이너 이름 설정
CONTAINER_NAME="palworld-server"
CONTAINER_DIR="/opt/stacks/palworld"
# 서버 종료 전에 알림을 사용자에게 보내기
docker exec -it $CONTAINER_NAME rcon-cli "Broadcast Server_will_shut_down_in_60_seconds_for_maintenance._Please_log_out."
# 60초 대기
sleep 60
# 세이브&백업
docker exec -it $CONTAINER_NAME backup
# 서버 종료
docker exec -it $CONTAINER_NAME rcon-cli "Shutdown 10 Server_is_shutting_down_for_maintenance."
# 10초 대기
sleep 10
# Docker 이미지 업데이트
cd $CONTAINER_DIR
docker compose pull
docker compose down
docker compose up -d
# 업데이트 완료 메시지
echo "서버가 성공적으로 업데이트되었습니다."
구동해보면 서버에는 아래와같은 커맨드가 구동되고
서버 알람이 뜹니다 ㅎ
총 스크립트는 요렇게
끝!
구형 ddr3 시스템이라 램 32기가는 꿈도 못꾸네요
시놀로지 작업 스케줄러에 대응하는 스크립트입니다.
제어판 - 작업 스케줄러 - 생성 - 예약된 작업 - 사용자 정의 스크립트
- 일반
- 작업 이름 설정
- 사용자 : "root"
- 활성화됨 체크
- 스케줄
- 원하는 시간 설정
- 작업 설정
- 사용자 정의 스크립트
#!/bin/bash
# Docker 컨테이너 이름 설정
CONTAINER_NAME="palworld-server"
CONTAINER_DIR="/volume1/docker/palworld"
# 서버 종료 전에 알림을 사용자에게 보내기
docker exec -i $CONTAINER_NAME rcon-cli "Broadcast Server_will_shut_down_in_60_seconds_for_maintenance._Please_log_out."
# 60초 대기
sleep 60
# 세이브&백업
docker exec -i $CONTAINER_NAME backup
# 서버 종료
docker exec -i $CONTAINER_NAME rcon-cli "Shutdown 10 Server_is_shutting_down_for_maintenance."
# 10초 대기
sleep 10
# Docker 이미지 업데이트
cd $CONTAINER_DIR
docker-compose pull
docker-compose down
docker-compose up -d
# 업데이트 완료 메시지
echo "서버가 성공적으로 업데이트되었습니다."
초보라 모르는 것이 많아 질문 드립니다 ㅠㅠ
열심히 공부하면서 보는 중인데
올려주신 스크립트를 update.sh 로 생성해서 사용해야 하는 것으로 이해했습니다.
맞다면 update.sh 파일을 어디에 생성해야 하는지 생성 위치는 어떻게 지정해야 하는지 궁금합니다.
또한 생성된 파일을 cron 명령어로 실행해야 한다는 것은 알았는데 crontab은 어떻게 만들어야 하는건지
그리고 이 명령어 실행을 터미널에서 하는게 맞는건지 궁금합니다.
사용환경은 달소님이 올려주신 글대로 우분투 서버에 도커로 구동하고 있습니다.
cmt alert