added 7dtd server
This commit is contained in:
78
roles/7dtd/tasks/main.yml
Normal file
78
roles/7dtd/tasks/main.yml
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
# 7 Days to Die dedicated server (vinanrra/7dtd-server container, LinuxGSM-based, SteamCMD-installed).
|
||||
# PUBLIC server: players connect to 7dtd.boxswapper.io:26900 (TCP+UDP) and enter the join password
|
||||
# (sdtd_server_password). Server config is rendered from roles/7dtd/templates/sdtdserver.xml.j2 on
|
||||
# every deploy - vars.yml is the source of truth for the server config.
|
||||
# External prerequisites (NOT managed by this repo):
|
||||
# - Cloudflare A record 7dtd.boxswapper.io -> public IP (grey-cloud, like mc.boxswapper.io)
|
||||
# - Router port forwards: TCP+UDP 26900, UDP 26901-26902 + TCP 8081 (telnet) -> 10.10.0.47
|
||||
# - CHANGED sdtd_server_password / sdtd_telnet_password in vars.yml before first deploy
|
||||
- name: Create 7 Days to Die data directory
|
||||
ansible.builtin.file:
|
||||
path: /opt/apps/7dtd/data
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
# The container (linuxserver-style base) runs as uid/gid 1000 (PUID/PGID) and chowns its volumes on
|
||||
# start; pre-seeding with that ownership lets the init script and server write alongside our xml.
|
||||
- name: Create 7 Days to Die saves dir (container user)
|
||||
ansible.builtin.file:
|
||||
path: /opt/apps/7dtd/data/7DaysToDie
|
||||
state: directory
|
||||
owner: '1000'
|
||||
group: '1000'
|
||||
mode: '0755'
|
||||
|
||||
- name: Create 7 Days to Die serverfiles directory (container user)
|
||||
ansible.builtin.file:
|
||||
path: /opt/apps/7dtd/serverfiles
|
||||
state: directory
|
||||
owner: '1000'
|
||||
group: '1000'
|
||||
mode: '0755'
|
||||
|
||||
- name: Template 7 Days to Die serverconfig from vars.yml
|
||||
ansible.builtin.template:
|
||||
src: sdtdserver.xml.j2
|
||||
dest: /opt/apps/7dtd/serverfiles/sdtdserver.xml
|
||||
owner: '1000'
|
||||
group: '1000'
|
||||
mode: '0644'
|
||||
|
||||
- name: Deploy 7 Days to Die Server
|
||||
containers.podman.podman_container:
|
||||
image: "{{ sdtd_image }}"
|
||||
name: 7dtd
|
||||
env: "{{ sdtd_env_base }}"
|
||||
restart_policy: always
|
||||
recreate: true
|
||||
state: started
|
||||
volumes:
|
||||
- /opt/apps/7dtd/data:/home/sdtdserver/.local/share/7DaysToDie:z
|
||||
- /opt/apps/7dtd/serverfiles:/home/sdtdserver/serverfiles:z
|
||||
- /usr/share/zoneinfo/America/Denver:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
# Required: game port (TCP+UDP), Steam query/beacon ports (UDP)
|
||||
- "26900:26900/tcp"
|
||||
- "26900:26900/udp"
|
||||
- "26901:26901/udp"
|
||||
- "26902:26902/udp"
|
||||
# Optional: telnet admin console (gated by sdtd_telnet_password)
|
||||
- "8081:8081/tcp"
|
||||
network:
|
||||
- npm_internal
|
||||
ip: '{{ sdtd_ip }}'
|
||||
vars:
|
||||
# sdtd_env_base: START_MODE=1 starts the server; PUID/PGID match the pre-seeded dir ownership;
|
||||
# MONITOR=YES restarts the game process if it crashes (LinuxGSM cron).
|
||||
# IMPORTANT: restart_policy: always is only valid with START_MODE=1 (never 0/2/4 per image docs).
|
||||
sdtd_env_base:
|
||||
START_MODE: "{{ sdtd_start_mode }}"
|
||||
VERSION: "{{ sdtd_version }}"
|
||||
PUID: "{{ sdtd_puid }}"
|
||||
PGID: "{{ sdtd_pgid }}"
|
||||
TimeZone: "{{ sdtd_timezone }}"
|
||||
BACKUP: "{{ sdtd_backup }}"
|
||||
MONITOR: "{{ sdtd_monitor }}"
|
||||
TEST_ALERT: "NO"
|
||||
Reference in New Issue
Block a user