Skip to content

ProjectZomboid:DedicatedServer

renegademaster/zomboid-dedicated-server

이 이미지는 "루트가 없는" 이미지이므로 root 사용자로 실행하면 안 됩니다. 서버를 실행하기 위한 최소 지침:

우선, 전용 폴더를 만든다.

mkdir $HOME/ ZomboidSelfHosting
cd $HOME/ZomboidSelfHosting

두 개의 빈 폴더를 만든다.

mkdir ZomboidConfig ZomboidDedicatedServer

그리고 ZomboidDedicatedServer 폴더에, 스팀에서 다운받은 "Project Zomboid Dedicated Server" 내용을 그대로 옮긴다.

ZomboidConfig에는 아무것도 없어도 상관 없다. (최초 실행시 자동 생성)

renegademaster/zomboid-dedicated-server docker 이미지를 다운받고 실행한다:

# Pull the latest image:
docker pull renegademaster/zomboid-dedicated-server:latest

# Run the server (with bare minimum options):
docker run --detach \
    --mount type=bind,source="$(pwd)/ZomboidDedicatedServer",target=/home/steam/ZomboidDedicatedServer \
    --mount type=bind,source="$(pwd)/ZomboidConfig",target=/home/steam/Zomboid \
    --publish 16261:16261/udp --publish 16262:16262/udp \
    --name zomboid-server \
    docker.io/renegademaster/zomboid-dedicated-server:latest

포트

서버에서 사용할 수 있는 포트는 총 3개이지만 반드시 2개만 필요합니다.

이름

기본 포트

설명

필수의

DEFAULT_PORT

16261

연결을 수신하기 위해 서버에서 사용하는 포트입니다.

yes

RCON_PORT

27015

RCON 연결/명령을 수신하기 위해 서버에서 사용하는 포트.

no

UDP_PORT

16262

클라이언트 연결을 용이하게 하기 위해 서버에서 사용하는 추가 포트입니다.

yes

Optional environment variables

Argument

Description

Values

Default

ADMIN_PASSWORD

Server Admin account password

[a-zA-Z0-9]+

changeme

ADMIN_USERNAME

Server Admin account username

[a-zA-Z0-9]+

superuser

BIND_IP

IP to bind the server to

0.0.0.0

0.0.0.0

GAME_VERSION

Game version to serve

[a-zA-Z0-9_]+

public

GC_CONFIG

Specifices Java GC to use

[a-zA-Z0-9_]+

ZGC

MAP_NAMES

Map Names (e.g. North;South)

map1;map2;map3

Muldraugh, KY

MAX_RAM

Maximum amount of RAM to be used

([0-9]+)m

4096m

STEAM_VAC

Use Steam VAC anti-cheat

(true|false)

true

TZ

Set the timezone for the container

[A-Z]+

UTC

USE_STEAM

Create a Steam Server, or a Non-Steam Server

(true|false)

true

Docker-Compose example

version: "3.8"

services:
  zomboid-dedicated-server:
    build:
      context: .
      dockerfile: docker/zomboid-dedicated-server.Dockerfile
    image: "docker.io/renegademaster/zomboid-dedicated-server:latest"
    container_name: zomboid-dedicated-server
    restart: "no"
    environment:
      - "ADMIN_PASSWORD=changeme"
      - "ADMIN_USERNAME=superuser"
      - "AUTOSAVE_INTERVAL=15"
      - "BIND_IP=0.0.0.0"
      - "DEFAULT_PORT=16261"
      - "GAME_VERSION=public"
      - "GC_CONFIG=ZGC"
      - "MAP_NAMES=Muldraugh, KY"
      - "MAX_PLAYERS=16"
      - "MAX_RAM=4096m"
      - "MOD_NAMES="
      - "MOD_WORKSHOP_IDS="
      - "PAUSE_ON_EMPTY=true"
      - "PUBLIC_SERVER=true"
      - "RCON_PASSWORD=changeme_rcon"
      - "RCON_PORT=27015"
      - "SERVER_NAME=ZomboidServer"
      - "SERVER_PASSWORD="
      - "STEAM_VAC=true"
      - "UDP_PORT=16262"
      - "USE_STEAM=true"
      - "TZ=UTC"
    ports:
      - target: 16261
        published: 16261
        protocol: udp
      - target: 16262
        published: 16262
        protocol: udp
      - target: 27015
        published: 27015
        protocol: tcp
    volumes:
      - ./ZomboidDedicatedServer:/home/steam/ZomboidDedicatedServer
      - ./ZomboidConfig:/home/steam/Zomboid/

내가 사용한 스크립트

#!/usr/bin/env bash

MOD_NAMES="CombatText;FRUsedCarsNLF;FRUsedCarsNRN;FRUsedCars;FRUsedCarsFT;MinimalDisplayBars;modoptions;PlayersOnMap;fastkeys41;firearmmod;TheStar;"
WORKSHOP_ITEMS="1510950729;2004998206;2169435993;2184990011;2256623447;2286124931;2619072426;2732804047;"

docker run -d \
    --mount type=bind,source="$(pwd)/server",target=/home/steam/ZomboidDedicatedServer \
    --mount type=bind,source="$(pwd)/config",target=/home/steam/Zomboid \
    --publish 16261:16261/udp \
    --publish 16262:16262/udp \
    --name zpserver \
    -e "ADMIN_PASSWORD=yourpassword" \
    -e "ADMIN_USERNAME=yourname" \
    -e "AUTOSAVE_INTERVAL=15" \
    -e "BIND_IP=0.0.0.0" \
    -e "DEFAULT_PORT=16261" \
    -e "GAME_VERSION=public" \
    -e "GC_CONFIG=ZGC" \
    -e "MAP_NAMES=Muldraugh, KY" \
    -e "MAX_PLAYERS=8" \
    -e "MAX_RAM=4096m" \
    -e "MOD_NAMES=${MOD_NAMES}" \
    -e "MOD_WORKSHOP_IDS=${WORKSHOP_ITEMS}" \
    -e "PAUSE_ON_EMPTY=true" \
    -e "PUBLIC_SERVER=true" \
    -e "SERVER_NAME=yourZpServer" \
    -e "SERVER_PASSWORD=0000" \
    -e "STEAM_VAC=true" \
    -e "UDP_PORT=16262" \
    -e "USE_STEAM=true" \
    -e "TZ=UTC" \
    docker.io/renegademaster/zomboid-dedicated-server:latest

Mods

추가할 모드 목록은 Project Zomboid#Mods항목 참조.

server.ini파일의 두 변수를 수정하면 된다. ModsWorkshopItems이다.

# Enter the mod loading ID here. It can be found in \Steam\steamapps\workshop\modID\mods\modName\info.txt
Mods=

#...

# List Workshop Mod IDs for the server to download. Each must be separated by a semicolon. Example: WorkshopItems=514427485;513111049
WorkshopItems=

참고로 docker.io/renegademaster/zomboid-dedicated-server:latest 도커 이미지로 모드를 추가했다면 필요한 데이터는 자동으로 다운받아지므로 걱정하지 않아도 된다.

다른 플레이어가 서버에 접속하면 알아서 관련 파일이 다운받아진다.

WARNING

단 서버에서 사용하지 않는 모드를 활성화하면 튕기므로 가급적 다른 모드는 비활성화 해야 한다

Examples

Mods=CombatText;FRUsedCarsNLF;FRUsedCarsNRN;FRUsedCars;FRUsedCarsFT;MinimalDisplayBars;modoptions;PlayersOnMap;fastkeys41;firearmmod;TheStar;
WorkshopItems=1510950729;2004998206;2169435993;2184990011;2256623447;2286124931;2619072426;2732804047;

참고로 지도를 적용하려면 먼저 적용된 순서로 지도에 반영되는듯(?) 하다.

기존 멜드로에다 레이븐크릭을 넣고 싶다면 다음과 같이 넣어야 한다:

MAP_NAMES="RavenCreek;Muldraugh, KY"

See also

Favorite site