Files

75 lines
2.8 KiB
YAML

---
# Project Zomboid dedicated server (danixu86 container, SteamCMD-based, B42-ready).
# PRIVATE server: players direct-connect to zomboid.boxswapper.io:16261 (UDP) and enter the join
# password (zomboid_password). Not listed in the in-game server browser (PUBLIC=false).
# External prerequisites (NOT managed by this repo):
# - Cloudflare A record zomboid.boxswapper.io -> public IP (grey-cloud, like mc.boxswapper.io)
# - Router port forwards: UDP 16261-16276 + TCP 27015 (RCON) -> 10.10.0.46
# - CHANGED zomboid_admin_password / zomboid_rcon_password in vars.yml before first deploy
- name: Create Project Zomboid data directory
ansible.builtin.file:
path: /opt/apps/zomboid/data
state: directory
mode: '0755'
# The image (cm2network/steamcmd:root base) owns files in /home/steam as the steam user, uid/gid 1000.
# Pre-seeding dirs with that ownership lets the entry script and server write alongside our ini.
- name: Create Project Zomboid server data dir
ansible.builtin.file:
path: /opt/apps/zomboid/data/Zomboid
state: directory
owner: '1000'
group: '1000'
mode: '0755'
- name: Create Project Zomboid server config directory
ansible.builtin.file:
path: /opt/apps/zomboid/data/Zomboid/Server
state: directory
owner: '1000'
group: '1000'
mode: '0755'
- name: Template Project Zomboid server ini from vars.yml
ansible.builtin.template:
src: zomboid.ini.j2
dest: "/opt/apps/zomboid/data/Zomboid/Server/{{ zomboid_servername }}.ini"
owner: '1000'
group: '1000'
mode: '0644'
- name: Deploy Project Zomboid Server
containers.podman.podman_container:
image: "{{ zomboid_image }}"
name: zomboid
env: "{{ zomboid_env_base }}"
restart_policy: always
recreate: true
state: started
volumes:
- /opt/apps/zomboid/data:/home/steam/Zomboid:z
- /usr/share/zoneinfo/America/Denver:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
# Steam query ports (8766/8767) required for public server-list visibility; harmless when private
- "8766-8767:8766-8767/udp"
- "16261-16276:16261-16276/udp"
- "27015:27015/tcp"
network:
- npm_internal
ip: '{{ zomboid_ip }}'
vars:
zomboid_env_base:
# CACHEDIR fixed to the bind-mounted path so saves/configs/logs persist
CACHEDIR: "/home/steam/Zomboid"
ADMINUSERNAME: "{{ zomboid_admin_username }}"
ADMINPASSWORD: "{{ zomboid_admin_password }}"
RCONPASSWORD: "{{ zomboid_rcon_password }}"
SERVERNAME: "{{ zomboid_servername }}"
DISPLAYNAME: "{{ zomboid_displayname }}"
PASSWORD: "{{ zomboid_password }}"
PUBLIC: "{{ zomboid_public }}"
MEMORY: "{{ zomboid_memory }}"
SERVERPRESET: "{{ zomboid_preset }}"
FORCEUPDATE: "{{ zomboid_force_update }}"
LANG: "en_US.UTF-8"