## add generic 755 directory for application here directories: - /opt/apps/npm - /opt/apps/jellyfin - /opt/apps/letsencrypt - /opt/apps/gitea - /opt/apps/jellyfin/config - /opt/apps/n8n/data - /opt/apps/prowler/data - /opt/apps/prowler/tmp/prowler_api_output - /opt/apps/prowler/postgres/data - /opt/apps/wireguard - /opt/apps/wazuh/config - /opt/apps/wazuh/config/wazuh_indexer_ssl_certs - /opt/apps/wazuh/config/wazuh_cluster - /opt/apps/wazuh/config/wazuh_dashboard - /opt/apps/wazuh/config/wazuh_indexer - /opt/apps/minecraft - /opt/apps/minecraft/data - /opt/apps/zomboid - /opt/apps/zomboid/data - /opt/apps/7dtd - /opt/apps/7dtd/data - /opt/apps/7dtd/serverfiles ## Jellyfin directories for media directories_jellyfin: - /opt/apps/jellyfin/tvseries - /opt/apps/jellyfin/movies images: - docker.io/jc21/nginx-proxy-manager:latest - lscr.io/linuxserver/jellyfin:latest - docker.gitea.com/gitea:nightly - docker.io/wazuh/wazuh-certs-generator:0.0.3 - ghcr.io/wg-easy/wg-easy:15 - docker.io/wazuh/wazuh-dashboard:{{ wazuh_version }} - docker.io/wazuh/wazuh-indexer:{{ wazuh_version }} - docker.io/wazuh/wazuh-manager:{{ wazuh_version }} - docker.io/itzg/minecraft-server:latest - docker.io/danixu86/project-zomboid-dedicated-server:latest - docker.io/vinanrra/7dtd-server:latest wazuh_version: 4.14.1 sudo_password: sdfwwww POSTGRES_ADMIN_USER: theuseriwant POSTGRES_PASSWORD: theuserthatineedpaswoord POSTGRES_DB: thatoneit ## WireGuard Easy VPN ## IMPORTANT: After first run, change wireguard_ui_password to a strong password ## Public IP or DDNS hostname clients connect to — CHANGE THIS before deploying wireguard_image: ghcr.io/wg-easy/wg-easy:15 wireguard_host: vpn.boxswapper.io wireguard_ui_username: admin wireguard_ui_password: T3l0penF@5tback wireguard_port: 51820 wireguard_ui_port: 51821 wireguard_cidr: 10.10.1.0/24 wireguard_ipv6_cidr: fd00:10:10::/64 wireguard_allowed_ips: 10.10.1.0/24,10.10.0.0/24 wireguard_default_dns: 1.1.1.1 wireguard_ip: 10.10.0.36 ## Wazuh SIEM (static IPs on npm_internal) wazuh_dashboard_ip: 10.10.0.40 wazuh_manager_ip: 10.10.0.41 wazuh_indexer_ip: 10.10.0.42 ## Wazuh agent (installed on this host by packages role) ## Server address the agent reports to (manager reachable on ports 1514/1515 via router forwarding) wazuh_agent_rpm: wazuh-agent-4.14.1-1.x86_64.rpm wazuh_server_address: wazuh.boxswapper.io ## Minecraft server (Java + Bedrock crossplay via Geyser/Floodgate) ## External DNS (not managed here): Cloudflare A record mc.boxswapper.io -> public IP (grey-cloud, ## same as vpn.boxswapper.io / wazuh.boxswapper.io). Router MUST forward TCP 25565 + UDP 19132 -> 10.10.0.45. minecraft_host: mc.boxswapper.io minecraft_ip: 10.10.0.45 minecraft_version: latest minecraft_memory: 8G minecraft_motd: "Welcome Retards" minecraft_difficulty: normal minecraft_gamemode: survival minecraft_max_players: 20 minecraft_view_distance: 10 minecraft_online_mode: "TRUE" minecraft_plugins: - https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot - https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot ## Project Zomboid dedicated server (danixu86 container, SteamCMD-based, B42-ready) ## PRIVATE server: not shown in the in-game server browser (zomboid_public: false) — friends must ## direct-connect to zomboid.boxswapper.io:16261 and enter the join password (zomboid_password) once. ## External DNS (not managed here): Cloudflare A record zomboid.boxswapper.io -> public IP (grey-cloud, ## same as mc.boxswapper.io / vpn.boxswapper.io). Router MUST forward UDP 16261-16276 + TCP 27015 (RCON) ## -> 10.10.0.46. Server ini is rendered from roles/zomboid/templates/zomboid.ini.j2 on deploy; the ## published UDP range (16261-16276) covers zomboid_max_players=16 (game 16261 + query 16262 + per-slot ports). ## PUBLIC mode (zomboid_public: "true") also requires router forwards UDP 8766-8767 (Steam query) and ## publishes them; PRIVATE mode (the original design) needs only 16261-16276 — clients direct-connect ## (server browser never lists private servers). zomboid_host: zomboid.boxswapper.io zomboid_ip: 10.10.0.46 zomboid_image: docker.io/danixu86/project-zomboid-dedicated-server:latest ## SERVERNAME becomes the config folder/file name — must NOT contain spaces or special characters. zomboid_servername: Boxswapper zomboid_displayname: "Boxswapper Zomboid Server" zomboid_admin_username: admin ## CHANGE THESE before first deploy — ADMINPASSWORD is mandatory on first startup (server fails to boot without it), ## RCONPASSWORD gates the 27015/tcp admin console, and zomboid_password is the join password players must enter ## when connecting (leave empty to allow password-less joins). zomboid_admin_password: 9QmvIhCPOUcWeV9W zomboid_rcon_password: lnaScHaCnB2z8k7D zomboid_password: DOvNml9VCyeXlJx2 zomboid_public: "true" ## Server ini is rendered from roles/zomboid/templates/zomboid.ini.j2 on every deploy — ## vars.yml is the source of truth for the ini, so edits to these vars re-apply on re-run. ## MaxPlayers must fit the published/forwarded UDP range (16261-16276 = 16 slots); raise the range ## in the role and router forwards if you bump it. zomboid_max_players: 16 zomboid_pvp: "true" zomboid_pause_empty: "true" ## "true" makes the container re-verify the full 7.2GB Steam install on EVERY start (slow boots). ## Leave "false" for fast boots; flip to "true" when a new PZ build drops and re-run once. zomboid_force_update: "false" zomboid_memory: 8g zomboid_preset: Apocalypse ## 7 Days to Die dedicated server (vinanrra/7dtd-server container, LinuxGSM-based) ## PUBLIC server: listed in the in-game server browser; 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 (edits here re-apply on re-run). ## External DNS (not managed here): Cloudflare A record 7dtd.boxswapper.io -> public IP (grey-cloud, ## same as mc.boxswapper.io / zomboid.boxswapper.io). Router MUST forward TCP+UDP 26900, UDP ## 26901-26902 (Steam query) + TCP 8081 (telnet) -> 10.10.0.47. ## VERSION=stable tracks the current public build; the container auto-installs/updates via SteamCMD ## on first start. START_MODE must stay 1 with restart_policy always (see role comment). sdtd_host: 7dtd.boxswapper.io sdtd_ip: 10.10.0.47 sdtd_image: docker.io/vinanrra/7dtd-server:latest sdtd_version: stable sdtd_start_mode: "1" sdtd_puid: 1000 sdtd_pgid: 1000 sdtd_timezone: America/Denver sdtd_backup: "NO" sdtd_monitor: "YES" ## LinuxGSM config overrides (roles/7dtd/templates/sdtdserver.cfg.j2): ## - querymode=1: this server answers NO A2S query on 26900 (ServerVisibility=0 + SteamNetworking ## disabled), so the default gamedig-based monitor (querymode=2) always fails its query and ## force-restarts the HEALTHY server every ~5 min. Session-only check avoids that loop. ## - telnetpassword mirrors sdtd_telnet_password because LGSM's graceful stop reads ## ${telnetpassword} from its OWN cfg; the XML value is parsed into ${telnetpass} (different ## var) so without this the stop falls back to a hard tmux kill. Keep in sync below. sdtd_lgsm_querymode: "1" ## CHANGE THESE before first deploy — the server is public and both passwords gate real access: ## sdtd_server_password is the join password players must enter; if it is empty the server has NO ## join password. sdtd_telnet_password guards the 8081/tcp admin console; if empty telnet only ## listens on loopback. sdtd_server_password: h8zvU3v7WUEgLSYG sdtd_telnet_password: HDRSEsueredu3rf3 ## Change the seed + set sdtd_game_world: RWG for a fresh random-gen world on first boot ## (Navezgane = built-in map, instant start, no generation time). sdtd_servername: "Boxswapper 7DTD" sdtd_server_description: "You wiill die in 7 Days, retard" sdtd_website_url: "" sdtd_region: NorthAmericaEast sdtd_language: English ## Visibility of this server: 2 = public, 1 = only shown to friends, 0 = not listed. As you are never friend of a dedicated server setting this to "1" will only work when the first player connects manually by IP. sdtd_visibility: "0" ## SteamNetworking disabled = direct connect via forwarded ports (correct setup for this box); ## leave empty ("" ) to allow the Steam relay fallback if port forwards break. sdtd_disabled_network_protocols: SteamNetworking sdtd_port: 26900 sdtd_max_players: 8 sdtd_game_mode: GameModeSurvival sdtd_game_world: Navezgane sdtd_worldgen_seed: boxswapper sdtd_worldgen_size: 8192 sdtd_game_name: Boxswapper ## Difficulty: 0 = Scavenger, 1 = Adventurer, 2 = Nomad, 3 = Warrior, 4 = Survivalist, 5 = Insane sdtd_difficulty: "2" sdtd_day_night_length: 60 sdtd_day_light_length: 18 ## DropOnDeath: 0 = nothing, 1 = everything, 2 = toolbelt only, 3 = backpack only, 4 = delete all sdtd_drop_on_death: "1" ## ZombieMove: 0 = walk, 1 = jog, 2 = run, 3 = sprint, 4 = nightmare sdtd_zombie_move: "0" sdtd_zombie_move_night: "3" sdtd_bloodmoon_frequency: 7 sdtd_bloodmoon_enemy_count: 8 sdtd_loot_abundance: 100 sdtd_airdrop_frequency: 72 ## PlayerKillingMode: 0 = no killing, 1 = kill allies only, 2 = kill strangers only, 3 = kill everyone sdtd_player_killing_mode: "3" sdtd_max_spawned_zombies: 64 ## EAC must be OFF because we deploy code mods (Singularity framework + the No Respawn Near ## Backpack patch below) — EAC blocks their Harmony hooks. Keep "false" while mods are installed. sdtd_eac_enabled: "false" ## Game mods, vendored under roles/7dtd/files/mods/ and extracted into serverfiles/Mods (the ## container's bind-mounted Mods dir) by the role. Source of truth: add the zip name here AND ## drop the file into the role's files/mods dir. Load order is handled by folder prefixes — ## Singularity's leading underscore loads FIRST, the mod's z- prefix loads LAST (7dtd sorts ## Mods alphabetically). ## - Singularity (4.1.3): Byteblazar's core framework; No Respawn Near Backpack is a server ## policy implemented here, disabled by default, enabled via XML (the mod below). ## - No Respawn Near Backpack for V2 (2.0.0.0): server-side XML patch that sets Singularity's ## ServerPolicies.NoRespawnNearBackpack=true -> players CANNOT respawn near their backpack, ## they respawn at a world starting point instead. Requires EAC off (see above). sdtd_mods: - Singularity-v4.1.3.zip - No-Respawn-Near-Backpack-2-0-0-0.zip sdtd_xp_multiplier: 100 sdtd_telnet_enabled: "true"