GitHub: https://github.com/IPS-Hosting/game-images/tree/main/pz
For advanced usage, refer to https://docs.docker.com
# Create the docker container
docker create -it --restart always \
--name pz-server \
-p 8766:8766/udp \
-p 16261:16261/udp \
ipshosting/game-pz:v1
# Start the server
docker start pz-server
# Stop the server
docker stop pz-server
# Restart the server
docker restart pz-server
# View server logs
docker logs pz-server
# Attach to server console to write commands and see output in realtime (de-attach by pressing CTRL-P + CTRL-Q).
docker attach pz-server
# Remove the container
docker rm pz-server
By default, when starting the container, it will be installed and updated, and the pz Server is started afterwards. You can create a container with a different command to change this behaviour:
- update Only install the latest version of the server. It won't be started and the container will exit after the pz server is installed and updated.
- update_validate Same like update but will also validate the files. Recommended for the initial installation of the server.
- start Only start the pz server without installing or updating.
Game server data is kept in /home/ips-hosting
.
By default a volume will be auto-created which will persist the game server data across server restarts.
When you re-create the container, a new volume is created and you can't access the old data unless you manually mount the old volume.
See https://docs.docker.com/storage/volumes/ for more information.
To persist the game server data on the host filesystem, use -v /absolute/path/on/host:/home/ips-hosting
when creating the docker container.
The container is run as a non-root user by default and the user running inside the container has the id 1000. Make sure that the mounted directory is readable and writable by the user running the container. There are 2 ways to achieve this:
- Change the owner of the host directory:
chown -R 1000 /absolute/path/on/host
OR - Run the container as the user, which owns the files on the host system. Make sure to specify the id of your local user, because the name is uknown inside the container. You can find it out using
id YOUR_USERNAME
. Then run the docker command using the--user USER_ID
flag. E.g.:docker create --user 500 ...
.
- 8766/udp (game)
- 16261/udp (query)
You can change the ports with the GAME_PORT
and QUERY_PORT
environment variables.
Env variables can be configured with the -e "KEY=VAL"
flag when creating the container. The flag can be used multiple times.
To change the env variables, you need to re-create the container.
The following env variables are available during update
and update_validate
.
BETA_BRANCH
Used to download a different branch of the server.
BETA_PASSWORD
The password for the beta branch.
The following env variables are always available during start
.
MEMORY
The maximum amount of memory that is allocated to the JVM heap. Defaults to 2048m
(2GB).
HOST
The host address, the server listens on. Defaults to 0.0.0.0
GAME_PORT
The game port to use. Defaults to 8766
. Remember to also update the container port bindings when changing this variable.
QUERY_PORT
The query port to use. Defaults to 16261
. Remember to also update the container port bindings when changing this variable.
SERVER_NAME
The internal name of the server. The server database, saves and configuration files use this name, so changing this will result in a new world being created, and you need to reconfigure your server in the new configuration files. Defaults to servertest
.
ADMIN_USERNAME
The username of the admin user. Defaults to admin
.
ADMIN_PASSWORD
The password of the admin user. Defaults to #Change_Me!
.
NO_STEAM
Set to true
to disable Steam integration.
STEAM_VAC
Whether Valve Anti Cheat is enabled. Valid values are true
or false
. Defaults to true
.
DEBUG
Set to true
to enabled debug mode.
Additional server configuration can be done in the Zomboid/Server/{SERVER_NAME}*.ini
files after the server is installed.
See https://pzwiki.net/wiki/Dedicated_Server for more information, including a list of server commands.