Skip to content

Instantly share code, notes, and snippets.

@renevo
Created July 17, 2022 04:57
Show Gist options
  • Save renevo/5fec0cb991fe4cda725bfe7bf7f0a6a2 to your computer and use it in GitHub Desktop.
Save renevo/5fec0cb991fe4cda725bfe7bf7f0a6a2 to your computer and use it in GitHub Desktop.
locals {
utils_version = "0.4.0"
}
job "game.7days.cloud" {
name = "7 Days to Blizzard"
datacenters = ["home"]
type = "service"
group "7DaysToDie" {
network {
port "game" { static = 26800 }
port "game_plus_1" { static = 26801 }
port "game_plus_2" { static = 26802 }
port "admin" { static = 18180 }
port "map" { static = 18182 }
port "telnet" {}
}
volume "steam" {
type = "host"
source = "steam"
read_only = false
}
task "server" {
driver = "exec"
user = "steam"
volume_mount {
volume = "steam"
destination = "/usr/local/steam"
}
# utils
artifact {
source = "https://github.com/renevo/zombieutils/releases/download/v${local.utils_version}/zombieutils_${local.utils_version}_linux_amd64.tar.gz"
destination = "local/"
}
template {
data = <<EOF
server "Burpcraft" {
path = "/usr/local/steam/7DaysToDie/cloud"
config = "{{ env "NOMAD_TASK_DIR" }}/server.xml"
save_folder = "/usr/local/steam/7DaysToDie/cloud/GameData"
admin_file_name = "admin.xml"
experimental = false
steam = "/usr/local/steam/bin/steamcmd.sh"
clean_mods = false
server_fixes_version = "22.24.39"
admin "Tom Anderson" {
id = 76561197969618392
permission = 0
}
whitelist "Tom Anderson" { id = 76561197969618392 }
whitelist "Lynn Li" { id = 76561199039705922 }
whitelist "Matt Eagleson" { id = 76561197961773922 }
whitelist "Jason Crawford" { id = 76561197968532014 }
whitelist "Mark B" { id = 76561198106337367 }
whitelist "Matt Rader" { id = 76561198002846489 }
whitelist "Duc Truong" { id = 76561199040347179 }
whitelist "Scott Chaney" { id = 76561198039254384 }
permission "chunkcache" { level = 1000 }
permission "debugshot" { level = 1000 }
permission "debugweather" { level = 1000 }
permission "getgamepref" { level = 1000 }
permission "getgamestat" { level = 1000 }
permission "getoptions" { level = 1000 }
permission "gettime" { level = 1000 }
permission "gfx" { level = 1000 }
permission "help" { level = 1000 }
permission "memcl" { level = 1000 }
permission "settempunit" { level = 1000 }
permission "listplayerids" { level = 1000 }
permission "listthreads" { level = 1000 }
webpermission "web.map" { level = 2000 }
webpermission "webapi.getstats" { level = 2000 }
webpermission "webapi.getplayersonline" { level = 2000 }
webpermission "webapi.getplayerslocation" { level = 2000 }
webpermission "webapi.getlandclaims" { level = 2000 }
webpermission "webapi.viewallplayers" { level = 2000 }
webpermission "webapi.viewallclaims" { level = 2000 }
mod "bigger-backpack" {
url = "https://github.com/KhaineGB/KhaineA20ModletsXML/archive/refs/heads/main.zip"
path_filter = "KHA20-60BBM"
}
mod "bigger-craft-queue" {
url = "https://github.com/KhaineGB/KhaineA20ModletsXML/archive/refs/heads/main.zip"
path_filter = "KHA20-12CraftQueue"
}
mod "bigger-forge" {
url = "https://github.com/KhaineGB/KhaineA20ModletsXML/archive/refs/heads/main.zip"
path_filter = "KHA20-3SlotForge"
}
mod "lockable-inventory" {
url = "https://github.com/KhaineGB/KhaineA20ModletsXML/archive/refs/heads/main.zip"
path_filter = "KHA20-LockableInvSlots"
}
mod "eggs" {
url = "https://github.com/JaxTeller718/A20ModletsJax/archive/refs/heads/main.zip"
path_filter = "JaxTeller718-EggsInFridges"
}
mod "zombie-reach-limiter" {
url = "https://github.com/JaxTeller718/A20ModletsJax/archive/refs/heads/main.zip"
path_filter = "JaxTeller718-ZombieReach"
}
mod "burpcraft" {
url = "https://github.com/renevo/zombie-a20-burpcraft/archive/refs/heads/main.zip"
}
}
EOF
destination = "local/launcher.hcl"
perms = "777"
}
# Configs
template {
data = <<EOF
<?xml version="1.0"?>
<ServerSettings>
<!-- GENERAL SERVER SETTINGS -->
<!-- Server representation -->
<property name="ServerName" value="Coleslaw Server"/>
<property name="ServerDescription" value="Server Stuff"/>
<property name="ServerWebsiteURL" value=""/>
<property name="ServerPassword" value="cloud"/>
<property name="ServerLoginConfirmationText" value="" />
<!-- Networking -->
<property name="ServerPort" value="{{ env "NOMAD_PORT_game" }}"/>
<property name="ServerVisibility" value="0"/>
<property name="ServerDisabledNetworkProtocols" value="SteamNetworking"/>
<property name="ServerMaxWorldTransferSpeedKiBs" value="2048"/>
<!-- Slots -->
<property name="ServerMaxPlayerCount" value="16"/>
<property name="ServerReservedSlots" value="0"/>
<property name="ServerReservedSlotsPermission" value="100"/>
<property name="ServerAdminSlots" value="0"/>
<property name="ServerAdminSlotsPermission" value="0"/>
<!-- Admin interfaces -->
<property name="ControlPanelEnabled" value="true"/>
<property name="ControlPanelPort" value="{{ env "NOMAD_PORT_admin" }}"/>
<property name="ControlPanelPassword" value="cloud"/>
<property name="TelnetEnabled" value="true"/>
<property name="TelnetPort" value="{{ env "NOMAD_PORT_telnet" }}"/>
<property name="TelnetPassword" value="cloud"/>
<property name="TelnetFailedLoginLimit" value="10"/>
<property name="TelnetFailedLoginsBlocktime" value="10"/>
<property name="TerminalWindowEnabled" value="true"/>
<!-- Folder and file locations -->
<property name="AdminFileName" value="admin.xml"/>
<property name="UserDataFolder" value="/usr/local/steam/7DaysToDie/cloud/GameData" />
<property name="SaveGameFolder" value="/usr/local/steam/7DaysToDie/cloud/GameData" />
<!-- Other technical settings -->
<property name="EACEnabled" value="false"/>
<property name="HideCommandExecutionLog" value="0"/>
<property name="MaxUncoveredMapChunksPerPlayer" value="131072"/>
<property name="PersistentPlayerProfiles" value="false" />
<!-- GAMEPLAY -->
<!-- World -->
<property name="GameWorld" value="West Ocivi County"/>
<property name="WorldGenSeed" value="cloud"/>
<property name="WorldGenSize" value="8192"/>
<property name="GameName" value="blizzard"/>
<property name="GameMode" value="GameModeSurvival"/>
<!-- Difficulty -->
<property name="GameDifficulty" value="2"/>
<property name="BlockDamagePlayer" value="100" />
<property name="BlockDamageAI" value="100" />
<property name="BlockDamageAIBM" value="100" />
<property name="XPMultiplier" value="100" />
<property name="PlayerSafeZoneLevel" value="300" />
<property name="PlayerSafeZoneHours" value="6" />
<!-- -->
<property name="BuildCreate" value="false" />
<property name="DayNightLength" value="60" />
<property name="DayLightLength" value="18" />
<property name="DropOnDeath" value="1" />
<property name="DropOnQuit" value="0" />
<property name="BedrollDeadZoneSize" value="32" />
<property name="BedrollExpiryTime" value="45" />
<!-- Performance related -->
<property name="MaxSpawnedZombies" value="64" />
<property name="MaxSpawnedAnimals" value="100" />
<property name="ServerMaxAllowedViewDistance" value="12" />
<!-- Zombie settings -->
<property name="EnemySpawnMode" value="true" />
<property name="EnemyDifficulty" value="0" />
<property name="ZombieFeralSense" value="0" />
<property name="ZombieMove" value="0" />
<property name="ZombieMoveNight" value="1" />
<property name="ZombieFeralMove" value="2" />
<property name="ZombieBMMove" value="3" />
<property name="BloodMoonFrequency" value="7" />
<property name="BloodMoonRange" value="0" />
<property name="BloodMoonWarning" value="8" />
<property name="BloodMoonEnemyCount" value="8" />
<!-- Loot -->
<property name="LootAbundance" value="100" />
<property name="LootRespawnDays" value="7" />
<property name="AirDropFrequency" value="0"/>
<property name="AirDropMarker" value="true"/>
<!-- Multiplayer -->
<property name="PartySharedKillRange" value="200"/>
<property name="PlayerKillingMode" value="0" />
<!-- Land claim options -->
<property name="LandClaimCount" value="20"/>
<property name="LandClaimSize" value="64"/>
<property name="LandClaimDeadZone" value="30"/>
<property name="LandClaimExpiryTime" value="28"/>
<property name="LandClaimDecayMode" value="0"/>
<property name="LandClaimOnlineDurabilityModifier" value="4"/>
<property name="LandClaimOfflineDurabilityModifier" value="4"/>
<property name="LandClaimOfflineDelay" value="0"/>
<property name="DynamicMeshEnabled" value="true"/>
<property name="DynamicMeshLandClaimOnly" value="false"/>
<property name="DynamicMeshLandClaimBuffer" value="3"/>
<property name="DynamicMeshMaxItemCache" value="3"/>
<property name="TwitchServerPermission" value="90"/>
<property name="TwitchBloodMoonAllowed" value="false"/>
</ServerSettings>
EOF
destination = "local/server.xml"
perms = "777"
}
config {
command = "${NOMAD_TASK_DIR}/zombieutils"
args = [
"-j",
"-v",
"-c", "${NOMAD_TASK_DIR}/launcher.hcl",
"zombie",
"run",
]
}
resources {
cores = 2
memory = "8192"
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment