• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
정보

Palworld Docker 서버&백업 저장 및 업데이트 스크립트

달소 달소 3641

4

10

 

의 이미지 업데이트가 꽤나 잦네요 ㅎㅎ..

 

앞서 DarkAcid 님께서 rcon을 사용해서 업데이트 방법을 강의해주셨는데 그거랑 비슷한 스크립트라고 보시면됩니다.

저는 도커로 구동하고있는 서버 기준입니다.

 

이 스크립트를 매일 00시나 새벽에 돌리게 cron 설정을 해놓는다면 해당시간을 기준으로 save + backup을 하고 컨테이너를 재시작 시켜 메모리에 할당된것들을 한번 리프레시 시켜줄 수 있습니다.

 

기본적으로 rcon 이라는 프로토콜을 통해서 서버의 정보와 플레이어 종료, 저장등을 컨트롤 가능합니다.

 

image.png.jpg

 

제가 작성한 아래 글들을 통해 Docker로 구축했다면 호스트에서 명령어 사용으로 제어가 가능합니다.

 

 

 

이런식으로요 ㅎㅎ

 

image.png.jpg

 

간단하게 저장&백업 ,종료 컨테이너 이미지 업데이트 후 재시작 구성으로 가보겠습니다.

 

요런식의 구성입니다 ㅎㅎ

 

#!/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 "서버가 성공적으로 업데이트되었습니다."  

 

구동해보면 서버에는 아래와같은 커맨드가 구동되고

image.png.jpg

 

 

서버 알람이 뜹니다 ㅎ

 

image.png.jpg

 

총 스크립트는 요렇게

 

image.png.jpg

 

끝!

신고공유스크랩
10
4명이 추천
profile image 2등
짬타이거 2024.01.29. 17:43
$CONTAINER_NAME 을 인식을 못해서 update.sh를 실행해도 제대로 안되는데 왜그런지를 모르겠네요
DarkAcid 2024.01.30. 09:13
짬타이거
sudo docker ps 명령어로 실제 올라와있는 이름 한번 확인해보세요! 서비스에 이름이 지정이 안되어있을경우 stack_image 이름으로 올라오곤합니다.
taken 2024.01.30. 23:14
스크립트를 시놀로지 제어판 - 작업 스케쥴러에다가 작성해주면 되는 걸까요?
뚕뚕 2024.01.31. 17:19
taken
도커 내에서 구동하는거 아닌가요? 시놀로지 작업스케쥴러로 전원관리 넣어버리면 세이브되기전에 꺼지는 불상사가 발생할수도
taken 2024.01.31. 19:35
뚕뚕
명령어가 도커 명령어니... 상단 시스템에서 작동하는게 맞는것 같아요.. 아래에 친절히 달아주셨네요
honey720 2024.01.31. 15:28

시놀로지 작업 스케줄러에 대응하는 스크립트입니다.

제어판 - 작업 스케줄러 - 생성 - 예약된 작업 - 사용자 정의 스크립트

  • 일반
    • 작업 이름 설정
    • 사용자 : "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 "서버가 성공적으로 업데이트되었습니다."
이스 2024.02.01. 02:58

초보라 모르는 것이 많아 질문 드립니다 ㅠㅠ
열심히 공부하면서 보는 중인데
올려주신 스크립트를 update.sh 로 생성해서 사용해야 하는 것으로 이해했습니다.
맞다면 update.sh 파일을 어디에 생성해야 하는지 생성 위치는 어떻게 지정해야 하는지 궁금합니다.

또한 생성된 파일을 cron 명령어로 실행해야 한다는 것은 알았는데 crontab은 어떻게 만들어야 하는건지
그리고 이 명령어 실행을 터미널에서 하는게 맞는건지 궁금합니다.

 

사용환경은 달소님이 올려주신 글대로 우분투 서버에 도커로 구동하고 있습니다.

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story