“갓겜” 발헤임은 기본적으로 솔로플레이지만 다른 사람의 서버에 접속해서 멀티플레이도 가능하다.
멀티플레이가 되면 난이도도 그만큼 올라가지만 훨~씬 재밌다.
이러한 서버를 사설서버, 영어로 dedicated server라고 부르는데 윈도우든 리눅스든 어떤 환경이든 다 구축이 가능하다. 그러나 그런 경우 반드시 그 서버에 전원이 들어와있어야한다는 불편한 점이 있다. 다시 말해 주인장이 그 서버가 있는 하드웨어 전원을 내린다면 자동으로 서버 접속은 불가능해지는 것이다.
근데 만약 집에 24시간 가동중인 시놀로지 서버가 있다면? 주인장이 잠을 자러가더라도 다른 사람이 그 서버에서 계속 플레이가 가능하다..!
본문은 시놀로지, 즉 리눅스 환경에 대한 docker 빌드를 다룬다.
기본적으로 관련 내용은 전부 다 발헤임 도커 홈페이지에 있다
원래는 이미지에서 빌드해서 사용했으나 시놀로지 컨테이너 매니저가 최근 docker compose로 빌드하지 않으면 중간에 설정 변경 등 사용을 까다롭게 만들어놔서 docker compose로 넘어갈 수 밖에 없었고 제대로 작동하는 docker compose 예시는 찾기 힘들어서 AI한테 물어가며 만들었고, 제대로 작동하는 것까지 확인했다.
<docker compose>
version: '3.8'
services:
valheim:
image: lloesche/valheim-server:latest #발하임 도커 공식 이미지 최신 버전
container_name: valheim #컨테이너 이름. 자유롭게 설정.
privileged: true # root 권한으로 실행. 월드 불러오기 문제 시 설정. 문제 없으면 지워도 됨.
cap_add:
- SYS_NICE #cpu 우선 순위를 높일 수 있는 설정
stop_grace_period: 2m #컨테이너가 정상적으로 종료될 시간을 2분(2m) 동안 부여한 후에도 종료되지 않으면 강제로 종료.
volumes:
- /volume1/docker/valheim/config:/config #필수 볼륨 맵핑.
- /volume1/docker/valheim/data:/opt/valheim #필수 볼륨 맵핑. 볼륨 설정은 이 2가지만 하면 됨.
ports:
- "2456-2458:2456-2458/udp" #발하임 서버 포트 설정
- "9001:9001/tcp" #발하엠 관리자 포트 설정
environment:
- PUID=1026 #NAS 고유 ID
- PGID=100 #NAS 고유 ID
- TZ=Asia/Seoul #한국 시간
- SERVER_NAME=Server_ILSSA #서버 이름
- WORLD_NAME=World_ILSSA #월드 이름. 기존 월드를 가져올 경우 반드시 이 환경변수에 설정된 이름과 똑같아야 함. 안그러면 인식 못하고 이 환경변수에 해당하는 월드 이름의 월드를 자동으로 만들어서 플레이 하게 됨.
- SERVER_PASS=b7f9*mu@fYo&NqJf #서버 접속 비밀번호
- SERVER_PUBLIC=false #서버 비공개 상태. 검색해야만 보임.
- BEPINEX=true #BEPINEX 사용 가능 설정
- VALHEIM_PLUS=false #VALHEIM plus 사용 안함. BEPINEX와 동시 사용 불가임.
- SUPERVISOR_HTTP=true #관리자 페이지 활성화. 내부아이피:9001로 접속 시 보임. 외부에서는 역방향 프록시 설정 필요.
- BACKUPS_MAX_COUNT=9000 #9000개가 넘을때부터 오래된 백업부터 삭제
- BACKUPS_MAX_AGE=400 #400일이 지난 백업은 삭제
- BACKUPS_CRON=0 * * * * #매 시간, 정각 백업
- BACKUPS_IF_IDLE=false #플레이어가 서버에 없으면 백업 안함
- BACKUPS_IDLE_GRACE_PERIOD=4000 #플레이어가 4000초=66분 간 서버에 없는걸 확인 후 백업 안함 (갑자기 튕기는 경우의 백업안되는 불상사 방지)
- UPDATE_CRON=0 0 * * * #매일 자정 업데이트 체크
- UPDATE_IF_IDLE=true #플레이어가 없을 때만 업데이트 체크
- RESTART_CRON=0 5 * * * #매일 오전 5시 서버 재시작
- RESTART_IF_IDLE=true #플레이어가 없을 떄만 재시작
restart: on-failure:5 #5번 컨테이너 실행 실패 시 그냥 종료
위와 같이 할 경우 특별한 문제 없이 실행이 되는데 “privileged: true” 설정은 문제가 없다면 도커 설치의 경우 권장되지 않아 지우는 것이 좋다. 필자의 경우 이미 저렇게 설정해놓고 플레이 했더니 “privileged: true” 설정을 지울 경우 기존 월드를 불러오는데 오류가 있어서 그대로 냅뒀다.
<서버용 모드>
필자는 모드를 사용하는 건 플레이 자체에 영향을 주기에 좋아하지 않지만 시간, 로그, 시각화 관련 등 플레이에 영향을 주지 않는 편의성 관련 모드는 좋아한다. 여기선 서버 전용 모드를 소개추천한다.
Discordconnector

위 링크에 접속 후 매뉴얼 설치를 통해서 진행하면 된다. 발헤임 모드 매뉴얼 설치 방법은 다른 유튜브를 참고하길 바란다. 그냥 다운로드 후 복붙 수준이라.. 쉽게 할 수 있다.
간단히 설명하자면 시놀로지에 설치된 valheim 설정 폴더가 있는 폴더에 들어가면 bepinex 폴더가 보이는데 그 밑에 있는 plugin 폴더에 위 사이트에서 다운 받은 압축파일을 푼 풀더를 넣기만 하고 컨테이너를 재시작하면 된다.
압축 폴더 내에는 여러가지 config 파일이 있는데 discordconnector.cfg 라는 폴더 내에서 discord 웹훅 링크에 해당하는 부분에 본인이 로그 출력을 관찰할 디스코드 채널의 웹훅을 하나 적어준다. 사실상 발헤임 내 의미 있는 모든 로그가 출력된다.
필자는 로그 출력의 시각화를 위해서 AI한테 discordconnector-messages.cfg 출력내용물을 전부 이모티콘화 시켜달라고 했다.

로그가 단순히 텍스트로 출력되는 것보다 훨씬 보기 좋다!
원래는 로그 출력도 모드 없이 자체 설정 내에서 해결해보려고 했으나 시스템 이벤트훅은 어느 정도 출력이 되지만 로그 필터링에서 막혓다. 초보자라면 깔끔하게 순정만 고집하지 말고 꾸준히 업데이트 되는 discordconnector를 그냥 사용하도록 하자.
월드 백업파일은 나스에만 남겨두는 것이 아니라 rclone이나 cloudsync로 외부 클라우드 저장소로 주기적 백업하는 것이 안전하다. 백업 설정 자체가 로컬 백업이라 서버 자체가 망가지면 복원이 불가능하다. 발헤임의 경우 미니맵에 표시하고 맵을 직접 탐험하는 등 실제로 시간을 많이 소비하는만큼 탐험의 즐거움이 크기 때문에 월드 파일이 사라져버리면 매우 허탈할 수 있다..