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

arm64 리눅스 하드웨어에서 팰월드 서버 구축기

찰리 1058

5

14

안녕하세요.

 

끼리님이 쓰신 글 보고 여기 들어왔어요.

 

제 IDC 서버에 록키 리눅스 hyper-v 가상 컴퓨터 올리고 팰월드 서버를 돌려봤는데, 하드에서 돌려서 그런지 한 번씩 튀더라고요. 그래서 여기저기 팰워드 서버를 다 올려보고 있습니다. 경험 상 기존에 쓰던 서버보다는 사양 면에서 안 좋지만, 혹시나 싶어서 집에 굴러다니던 라즈베리파이에도 올려봤습니다만, 역시 램이 낮은 라즈베리파이로는 팰월드 서버 돌리긴 힘들더라고요.(8기가짜리 모델인데도..)

 

일단 제가 사용한 라즈베리파이4 CPU는 arm64/v8입니다. 그래서 arm64로 돌릴 수 있는 방법을 리서치했습니다. docker를 쓰지 않고 box86과 box64를 써서 라즈비안64비트에 돌려보는 방법도 써봤습니다만, 직접 빌드해야 하는 부분도 있어서 사람들이 힘들 것 같더군요.

 

그러다가 끼리님이 쓰신 글을 봤어요. 오라클 클라우드의 arm서버에서 돌리는 방법이더군요.

FEX-Emu라는 것을 써서 x86-64의 SteamCMD와 PalServer를 켤 수 있는걸 알았습니다.

 

github에서 서치를 해보니 다음과 같은 git이 많이 쓰이는 것 같았습니다.

 

문제는 저 docker를 써서 라즈비안에 올려보니 작동이 안 되었어요.

logs를 보면 Checking for SteamCMD updates...에서 멈춰있는 것입니다.

FEXBash로 steamcmd 등을 실행해봤는데, 정상작동되지 않았습니다.

 

그래서 직접 구축해야겠다 싶어 일단 SteamCMD arm64 도커를 찾아봤습니다.

다행히도 누가 Dockerfile을 올려놨습니다. Ubuntu 22.04 기반에서 돌아가는 이미지였습니다.

바로 돌려봤더니 잘 작동을 했습니다.

 

이제 준비가 되었으니, 안에 팰월드 서버를 구축해봐야겠죠.

일단 docker-compose를 통해 데이터가 저장될 디렉터리를 외부와 volume 옵션으로 연결하였습니다.

그리고 서버 포트인 8211/udp 포트도 열었습니다.

 

이후 SteamCMD에서 anonumous로 Palworld Dedicated Server를 설치해보았습니다.

설치는 성공했으나, 실행이 안 되는거에요.

뭐지? 하고 봤더니 steamclient.so 파일이 없다고 나옵니다.

 

[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed. 
dlopen failed trying to load: 
steamclient.so 
with error: 
steamclient.so: cannot open shared object file: No such file or directory 

~/.steam/sdk64 에 해당 파일이 없다고 하는 오류였습니다.

steamclient.so 파일을 찾아보니 steamcmd/linux64 디렉토리와 palserver 디렉토리 두 곳에 있었습니다.

일단 ~/.steam/sdk64에는 공용 파일일테니 steamcmd/linux64 디렉토리의 것을 symbolic link하였습니다.

동일하게 ~/.steam/sdk32에도 steamcmd/linux32 디렉토리 내의 파일을 link하였고요.

 

문제는 이후에도 실행이 안 되는 거에요.

그래서 리서치를 해보았는데, 팰월드 뿐만 아니라 다른 게임 서버들도 같은 이슈를 겪고 있었습니다.

온라인 검색으로는 아무리 봐도 답이 안 나와서 로그를 살펴보니 다른 라이브러리 파일들을 /lib/x86_64-linux-gui 디렉토리에서 불러오더군요. 그래서 해당 디렉토리에도 64비트 파일을 link해보았더니 짠! 해결이 되어버렸습니다.

 

SteamCMD를 실행할 때 동일한 오류가 나오긴 하지만, 정상적으로 PalWorld Dedicated Server가 업데이트 되었고, PalWorld Dedicated Server에서는 Load steamclient.so ... OK! 라고 나왔습니다.

 

완료된 것을 확신하고 나머지 설정을 해보았습니다.

도커 이미지를 배포용으로 생각하고 바라보니 해야할게 많았습니다.

일단 PalWorld Dedicated Server의 서버 세팅을 환경변수로 자동 설정되게 해야겠죠?

그리고 rcon으로 서버 통신할 수 있게 자동 설정되는 부분도 만들어야 하고, 서버 백업도 만들어야 합니다.

 

이래저래 고민하고 있는데, 이 모든게 다 적용되어있는 git을 찾아버린거에요.

arm64용 서버는 아니지만, PalWorld Dedicated Server 관련된 모든 프로세스가 잘 정리된 이미지를 만들어서 배포하고 있더군요. 그래서 내부 분석을 해서 적용해보자 했습니다.

 

arm64용 rcon과 크론 작업을 할 도커용 크론엔진 Supercronic을 적용해야합니다. ChatGPT의 도움을 받아 build하였으나, rcon의 경우에는 arm64-debian 빌드만 있어 amd64-linux 빌드로 전환하여 FEX-Emu를 쓰기로 하였습니다. Supercronic은 문제 없이 잘 build 되었어요.

 

이제 도커 쉘을 만들어야겠죠?

  • docker-compose에서 연결한 volume 내부에 PalServer가 설치되어있지 않다면, SteamCMD에서 설치하게 만들었고, 설치되어 있다면, 업데이트가 진행되게 했습니다.
  • Supercronic을 통해 매 시간 백업이 진행되게 만들었습니다. (도커 컨테이너에 volume 연결된 디렉토리 내 backup 디렉토리 생성하여 tar.gz로 저장)
  • 백업 및 기타 설정 변경 시에 서버에 메시지를 broadcast 되도록 rcon을 통해 적용하였습니다.
  • PalServer가 실행되기 전에 설정 파일을 환경변수에 맞게 수정되도록 하였습니다.
  • 마지막으로 PalServer가 실행되게 하였습니다.

대부분 jammsen 이란 분이 만든 git의 도커 이미지와 비슷하게 작업했어요.

 

쉘 작업이 끝나고 Dockerfile을 생성하여 기존 이미지의 cmd를 제거하고 제가 제작한 쉘이 돌아가게 수정하였습니다.

(기존 이미지는 TeriyakiGod이란 분이 git에 올려준 arm64 SteamCMD Dockerfile로 빌드한 이미지라 단순히 SteamCMD가 실행되는 cmd였습니다.)

최초 설치 개념으로 돌려봤는데, 잘 돌아갑니다! 이제 다른 arm64 리눅스에서도 돌려봐야겠어요.

 

작업한 도커 이미지는 도커 허브에 올려두었습니다.

 

마찬가지로 docker-compose 파일과 환경 변수 파일도 git에 올려두었습니다.

 

설치하는 방법은 다음과 같습니다.

  • 리눅스에서 서버를 올릴 디렉토리를 생성합니다.
  • 해당 디렉토리 하위에 game 이라는 디렉토리를 mkdir로 생성하고 chmod 777 ./game 으로 권한을 줍니다. 혹은 chown -R 1001:1001 ./game 으로 소유자를 바꿉니다.
  • git에서 docker-compose.yml 파일과 default.env 파일을 다운받아 설정합니다.
  • docker composer up -d 명령어로 도커에 올려줍니다.
  • 만약 운영 중인 서버가 있고, 이전을 하셔야 한다면,
    • 최초 해당 도커 서버를 올리신 후에 docker logs로 PalServer가 잘 작동되는지 확인하시고,
    • 도커 컨테이너에 volume 으로 연결된 game 디렉토리에 정상적인 server 파일들이 들어갔는지 확인합니다.
    • 위의 사항들이 문제가 없으면, 먼저 docker stop으로 서버를 중지해줍니다.
    • 이후에 game/Pal/Saved/Config/LinuxServer 디렉토리로 넘어가서 기존 운영하시던 서버의 세팅 파일들로 덮어주세요.
    • game/Pal/Saved/SaveGames/0 디렉토리로 넘어가서 기존 운영하시던 서버의 유저 데이터 파일을 복사해주세요.
    • 다시 서버를 실행시키면 기존 서버의 데이터로 구동되는걸 확인하실 수 있습니다.

지금은 IDC에 있는 제 다른 서버에 올려두었습니다. 언제든지 놀러오실 분은 놀러오세요.

palserver.4scour.com:8211

신고공유스크랩
14
profile image 1등
달소 2024.02.07. 15:16
와,,, 과정부터 결과까지 완벽하네요 :)
고생 많으셨습니다! 공유도 감사드려요~
찰리 글쓴이 2024.02.07. 15:18
DMM

라즈베리파이4에서 돌려봤었는데.. 메모리 문제로 결국엔 일반 x86_64 리눅스 서버로 이전했습니다. 라즈베리파이 말고 다른 arm 하드웨어에서 돌리면 좋을 것 같아요. 일단 라즈비안OS(bookworm)랑 우분투 64bit 22.04에서 돌려서 정상작동되는걸 확인했습니다.

찰리 글쓴이 2024.02.07. 15:47
백의종인
네 8GB 모델에서 사용했었습니다. M.2 SSD를 연결하면 좀 해소되지 않을까 싶어요. 데이터 읽는데도 문제가 있을 것 같네요. U3 SD카드로 만들었었거든요. 어차피 SD카드라 개발용으로만 제작했다고 생각하시면 될 것 같습니다.
자우루스 2024.02.08. 07:41
찰리
일단 arm64용 우분투에서 돌아간다면 오렌지파5 가 적합해보입니다.
기본 출시 모델중에도 메모리 16G짜리가 있고, 최근엔 32G버전까지 나왔었거든요.
속도는 라즈4보다 몇배는 빠르고.. NVMe 도 기본적으로 장착되고..
http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5-32GB.html
찰리 글쓴이 2024.02.11. 02:07
자우루스
오렌지 파이도 좋겠네요. 전 요즘 n100에 빠져서 그 쪽만 보고 있네요. 오렌지 파이 입수하게 되면 해보겠습니다!
profile image 3등
ExpBox 2024.02.07. 18:08
일단 스크랩 해놔야겠네요. 이전에 제가 ARM 기반으로 좀보이드 서버를 돌리려다가 steamCMD 자체가 x86/32비트 프로그램이다보니 실패했는데 이 글을 기반으로 다시 도전해볼 수 있을 것 같네요. 감사합니다.
찰리 글쓴이 2024.02.11. 02:07
ExpBox
혹시 도움 필요하시면 말씀 주세요. 좀보이드 서버도 찾아볼게요!
joyfuI 2024.03.22. 15:37

auto restart 기능이 있는게 마음에 들어서 오라클 클라우드에서 이 이미지로 시도해봤는데

sed: can't read /palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini: No such file or directory

> Setting bUseAuth to true

sed: can't read /palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini: No such file or directory

> Setting BanListURL to https://api.palworldgame.com/api/banlist.txt

sed: can't read /palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini: No such file or directory

>>> Finished setting up PalWorldSettings.ini ...

> Setting Multi-Core-Enchancements to enabled

<jemalloc>: Unsupported system page size

/servermanager.sh: line 13: 87 Segmentation fault (core dumped) FEXBash "./PalServer.sh $START_OPTIONS"

이런 로그를 끝으로 안되네요. ㅠㅠ game 디렉토리로 가보면 Engine.ini 파일만 생성되어 있습니다.

joyfuI 2024.03.22. 16:30
joyfuI

<jemalloc>: Unsupported system page size
이 에러 좀 찾아보니 PAGESIZE 문제 때문인가 보네요. 일반적으로 PAGESIZE는 보통 4k로 사용하는데 oracle linux 같은 일부 배포판은 64k를 사용해서 발생하는 호환성 문제라고 합니다.
오라클 클라우드니까 오라클 리눅스가 낫겠지하고 우분투 대신 오라클 리눅스를 고른 제 업보입니다ㅠㅠ

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

취소 댓글 등록

cmt alert

신고

"님의 댓글"

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

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
오픈소스 개인 구독 추적기 Wallos 8 달소 3일 전23:26 360 +3
질문 /var/www 폴더가 삭제되었습니다. ㅜ,.ㅜ 2 니속사정 5일 전20:42 304 +1
잡담 jellyfin 자원 진짜 안쓰네요 1 kmw_ 5일 전19:26 470 +1
3909 정보
image
툭툭이 24.03.28.11:14 945 +17
3908
image
eyeball 23.04.05.21:08 1827 +16
3907 정보
image
antegral 22.05.07.01:18 3216 +16
3906 잡담
image
햇서 23.06.05.05:53 919 +14
3905
image
달소 22.03.17.22:09 19091 +14
3904
image
달소 22.03.17.22:25 5114 +11
3903 정보
image
EXP 24.02.06.03:43 1372 +10
3902
image
달소 22.05.06.15:43 1048 +10
3901 가이드
image
opq! 24.04.02.21:25 496 +9
3900 정보
image
달소 24.02.19.00:58 989 +9
3899
image
theb1ue 22.06.14.16:05 4914 +9
3898 잡담
image
달소 24.01.15.03:22 588 +8
3897
image
달소 23.01.27.14:15 16278 +8
3896
image
달소 22.07.07.16:57 1947 +8
3895
image
달소 22.03.14.17:30 4229 +8
3894
image
달소 22.02.11.13:31 3058 +8
3893 후기
image
cdma2000 24.02.06.13:12 810 +7
3892 가이드
image
달소 23.07.04.20:38 1947 +7
3891
image
앨런임더 23.03.31.21:14 1924 +7
3890 잡담
image
곰삼촌 23.01.25.10:05 1097 +7