From 7b6509614344a6aaed43102e25f295056338536f Mon Sep 17 00:00:00 2001 From: John Edwards Date: Sun, 17 Dec 2023 16:39:54 +0000 Subject: [PATCH] Disable server hibernation by default as this has been observed to cause server crashes --- README.md | 3 +++ bullseye/Dockerfile | 1 + bullseye/etc/entry.sh | 1 + bullseye/etc/server.cfg | 53 +++++++++++++++++++------------------ examples/docker-compose.yml | 1 + 5 files changed, 33 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 8b475b3..27015e2 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,9 @@ Feel free to overwrite these environment variables, using -e (--env): ```dockerfile SRCDS_TOKEN="" (Game Server Token from https://steamcommunity.com/dev/managegameservers) CS2_SERVERNAME="changeme" (Set the visible name for your private server) +CS2_SERVER_HIBERNATE=0 (Put server in a low CPU state when there are no players. + 0 - hibernation disabled, 1 - hibernation enabled + n.b. hibernation has been observed to trigger server crashes) CS2_IP="" (CS2 server listening IP address, 0.0.0.0 - all IP addresses on the local machine, empty - IP identified automatically) CS2_PORT=27015 (CS2 server listen port tcp_udp) CS2_RCON_PORT="" (Optional, use a simple TCP proxy to have RCON listen on an alternative port. diff --git a/bullseye/Dockerfile b/bullseye/Dockerfile index 35c4455..3ab56e6 100644 --- a/bullseye/Dockerfile +++ b/bullseye/Dockerfile @@ -40,6 +40,7 @@ FROM build_stage AS bullseye-base ENV CS2_SERVERNAME="cs2 private server" \ CS2_IP=0.0.0.0 \ + CS2_SERVER_HIBERNATE=0 \ CS2_PORT=27015 \ CS2_RCON_PORT="" \ CS2_MAXPLAYERS=10 \ diff --git a/bullseye/etc/entry.sh b/bullseye/etc/entry.sh index d4c977a..1e5637a 100644 --- a/bullseye/etc/entry.sh +++ b/bullseye/etc/entry.sh @@ -34,6 +34,7 @@ fi # Rewrite Config Files sed -i -e "s/{{SERVER_HOSTNAME}}/${CS2_SERVERNAME}/g" \ + -e "s/{{SERVER_HIBERNATE}}/${CS2_SERVER_HIBERNATE}/g" \ -e "s/{{SERVER_PW}}/${CS2_PW}/g" \ -e "s/{{SERVER_RCON_PW}}/${CS2_RCONPW}/g" \ -e "s/{{TV_ENABLE}}/${TV_ENABLE}/g" \ diff --git a/bullseye/etc/server.cfg b/bullseye/etc/server.cfg index 007e8a4..4be30ca 100644 --- a/bullseye/etc/server.cfg +++ b/bullseye/etc/server.cfg @@ -1,35 +1,36 @@ // Server Defaults -hostname "{{SERVER_HOSTNAME}}" // Set server hostname +hostname "{{SERVER_HOSTNAME}}" // Set server hostname +sv_hibernate_when_empty {{SERVER_HIBERNATE}} // Disable server hibernation // Passwords -rcon_password "{{SERVER_RCON_PW}}" // Set rcon password -sv_password "{{SERVER_PW}}" // Set server password +rcon_password "{{SERVER_RCON_PW}}" // Set rcon password +sv_password "{{SERVER_PW}}" // Set server password // CSTV -sv_hibernate_postgame_delay 180 // Delay server hibernation after all clients disconnect +sv_hibernate_postgame_delay 30 // Delay server hibernation after all clients disconnect -tv_allow_camera_man 1 // Auto director allows spectators to become camera man -tv_allow_static_shots 1 // Auto director uses fixed level cameras for shots -tv_autorecord {{TV_AUTORECORD}} // Automatically records all games as CSTV demos: 0=off, 1=on. -tv_chatgroupsize 0 // Set the default chat group size -tv_chattimelimit 8 // Limits spectators to chat only every n seconds -tv_debug 0 // CSTV debug info. -tv_delay {{TV_DELAY}} // CSTV broadcast delay in seconds -tv_delaymapchange 1 // Delays map change until broadcast is complete -tv_deltacache 2 // Enable delta entity bit stream cache -tv_dispatchmode 1 // Dispatch clients to relay proxies: 0=never, 1=if appropriate, 2=always -tv_enable {{TV_ENABLE}} // Activates CSTV on server: 0=off, 1=on. -tv_maxclients 10 // Maximum client number on CSTV server. -tv_maxrate {{TV_MAXRATE}} // Max CSTV spectator bandwidth rate allowed, 0 == unlimited -tv_name "{{SERVER_HOSTNAME}} CSTV" // CSTV host name -tv_overridemaster 0 // Overrides the CSTV master root address. -tv_port {{TV_PORT}} // Host SourceTV port -tv_password "{{TV_PW}}" // CSTV password for clients -tv_relaypassword "{{TV_RELAY_PW}}" // CSTV password for relay proxies -tv_relayvoice 1 // Relay voice data: 0=off, 1=on -tv_timeout 60 // CSTV connection timeout in seconds. -tv_title "{{SERVER_HOSTNAME}} CSTV" // Set title for CSTV spectator UI -tv_transmitall 1 // Transmit all entities (not only director view) +tv_allow_camera_man 1 // Auto director allows spectators to become camera man +tv_allow_static_shots 1 // Auto director uses fixed level cameras for shots +tv_autorecord {{TV_AUTORECORD}} // Automatically records all games as CSTV demos: 0=off, 1=on. +tv_chatgroupsize 0 // Set the default chat group size +tv_chattimelimit 8 // Limits spectators to chat only every n seconds +tv_debug 0 // CSTV debug info. +tv_delay {{TV_DELAY}} // CSTV broadcast delay in seconds +tv_delaymapchange 1 // Delays map change until broadcast is complete +tv_deltacache 2 // Enable delta entity bit stream cache +tv_dispatchmode 1 // Dispatch clients to relay proxies: 0=never, 1=if appropriate, 2=always +tv_enable {{TV_ENABLE}} // Activates CSTV on server: 0=off, 1=on. +tv_maxclients 10 // Maximum client number on CSTV server. +tv_maxrate {{TV_MAXRATE}} // Max CSTV spectator bandwidth rate allowed, 0 == unlimited +tv_name "{{SERVER_HOSTNAME}} CSTV" // CSTV host name +tv_overridemaster 0 // Overrides the CSTV master root address. +tv_port {{TV_PORT}} // Host SourceTV port +tv_password "{{TV_PW}}" // CSTV password for clients +tv_relaypassword "{{TV_RELAY_PW}}" // CSTV password for relay proxies +tv_relayvoice 1 // Relay voice data: 0=off, 1=on +tv_timeout 60 // CSTV connection timeout in seconds. +tv_title "{{SERVER_HOSTNAME}} CSTV" // Set title for CSTV spectator UI +tv_transmitall 1 // Transmit all entities (not only director view) diff --git a/examples/docker-compose.yml b/examples/docker-compose.yml index e875e6c..77aa585 100644 --- a/examples/docker-compose.yml +++ b/examples/docker-compose.yml @@ -8,6 +8,7 @@ services: - SRCDS_TOKEN # Game Server Token from https://steamcommunity.com/dev/managegameservers - CS2_SERVERNAME=changeme # (Set the visible name for your private server) - CS2_PORT=27015 # (CS2 server listen port tcp_udp) + - CS2_SERVER_HIBERNATE=0 # (Put server in a low CPU state when there are no players. 0 - hibernation disabled, 1 - hibernation enabled) - CS2_RCON_PORT # (Optional, use a simple TCP proxy to have RCON listen on an alternative port. Useful for services like AWS Fargate which do not support mixed protocol ports.) - CS2_LAN=0 # (0 - LAN mode disabled, 1 - LAN Mode enabled) - CS2_RCONPW=changeme # (RCON password)