From 628aa462ea9972f77f3388e6158f66b3b7984d13 Mon Sep 17 00:00:00 2001 From: Philipp Hufnagl Date: Sat, 15 Dec 2018 21:12:00 +0100 Subject: [PATCH] create default config from environment variables --- .gitignore | 4 +- Dockerfile | 10 ++++ conf/Caves/server.ini | 12 ----- conf/Caves/worldgenoverride.lua | 4 -- conf/Master/server.ini | 11 ---- conf/adminlist.txt | 1 - conf/cluster.ini | 25 --------- docker-compose.yml | 21 -------- docker-compose.yml.dist | 27 ++++++++++ entrypoint.sh | 91 +++++++++++++++++++++++++++++++-- 10 files changed, 127 insertions(+), 79 deletions(-) delete mode 100644 conf/Caves/server.ini delete mode 100644 conf/Caves/worldgenoverride.lua delete mode 100644 conf/Master/server.ini delete mode 100644 conf/adminlist.txt delete mode 100644 conf/cluster.ini delete mode 100644 docker-compose.yml create mode 100644 docker-compose.yml.dist diff --git a/.gitignore b/.gitignore index 64b7dba..341b125 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -conf/cluster_token.txt +cluster_token.txt +docker-compose.yml + diff --git a/Dockerfile b/Dockerfile index 8761967..9a0f9c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,15 @@ FROM zombi/steam:latest +ENV \ + DST_CLUSTER_TOKEN=changeme \ + DST_GAME_MODE=survival \ + DST_MAX_PLAYERS=6 \ + DST_PVP=false \ + DST_PAUSE_WHEN_EMPTY=true \ + DST_CLUSTER_DESCRIPTION=Don't\ Starve\ server \ + DST_CLUSTER_NAME=Don't\ Starve\ Server \ + DST_CLUSTER_INTENTION=cooperative + RUN dpkg --add-architecture i386 RUN apt-get update RUN apt-get install -y libcurl4-gnutls-dev:i386 diff --git a/conf/Caves/server.ini b/conf/Caves/server.ini deleted file mode 100644 index 536d642..0000000 --- a/conf/Caves/server.ini +++ /dev/null @@ -1,12 +0,0 @@ -[NETWORK] -server_port = 11001 - - -[SHARD] -is_master = false -name = Caves - - -[STEAM] -master_server_port = 27019 -authentication_port = 8769 diff --git a/conf/Caves/worldgenoverride.lua b/conf/Caves/worldgenoverride.lua deleted file mode 100644 index f35ce24..0000000 --- a/conf/Caves/worldgenoverride.lua +++ /dev/null @@ -1,4 +0,0 @@ -return { - override_enabled = true, - preset = "DST_CAVE", -} diff --git a/conf/Master/server.ini b/conf/Master/server.ini deleted file mode 100644 index ba523eb..0000000 --- a/conf/Master/server.ini +++ /dev/null @@ -1,11 +0,0 @@ -[NETWORK] -server_port = 11000 - - -[SHARD] -is_master = true - - -[STEAM] -master_server_port = 27018 -authentication_port = 8768 diff --git a/conf/adminlist.txt b/conf/adminlist.txt deleted file mode 100644 index f2e8b3e..0000000 --- a/conf/adminlist.txt +++ /dev/null @@ -1 +0,0 @@ -KU_W-8duuIH diff --git a/conf/cluster.ini b/conf/cluster.ini deleted file mode 100644 index 6063ed5..0000000 --- a/conf/cluster.ini +++ /dev/null @@ -1,25 +0,0 @@ -[GAMEPLAY] -game_mode = survival -max_players = 6 -pvp = false -pause_when_empty = true - - -[NETWORK] -cluster_description = Don't Starve server of the Zom.bi community -cluster_name = Zom.bi -cluster_intention = cooperative -cluster_password = banana -server_password = banana - - -[MISC] -console_enabled = true - - -[SHARD] -shard_enabled = true -bind_ip = 127.0.0.1 -master_ip = 127.0.0.1 -master_port = 10889 -cluster_key = paul diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 8d9b1c2..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: '2' - -services: - server: - build: . - stdin_open: true - tty: true - environment: - - "CLUSTER_TOKEN=pds-g^KU_W-8duuIH^mHR5MxsqERUXwCO6RsRx0CBPADHhtk1mem6U43jTGn8=" - ports: - - 11000:11000 - - 11000:11000/udp - - 27018:27018 - - 27018:27018/udp - - 8768 - #volumes: - #- /data/steam-games/:/home/steam/games/:rw - #- world:/home/steam/.klei/DoNotStarveTogether/Zom.bi/save - -volumes: - world: diff --git a/docker-compose.yml.dist b/docker-compose.yml.dist new file mode 100644 index 0000000..edd4ca0 --- /dev/null +++ b/docker-compose.yml.dist @@ -0,0 +1,27 @@ +version: '2' + +services: + server: + build: . + stdin_open: true + tty: true + environment: + - "DST_CLUSTER_TOKEN=setmesetmesetmesetmesetme" + - "DST_GAME_MODE=survival" + - "DST_MAX_PLAYERS=6" + - "DST_PVP=false" + - "DST_PAUSE_WHEN_EMPTY=true" + - "DST_CLUSTER_DESCRIPTION=Don't Starve server running in a container" + - "DST_CLUSTER_NAME=Contained world" + - "DST_CLUSTER_INTENTION=cooperative" + - "DST_CLUSTER_PASSWORD=set" + ports: + - 11000:11000 + - 11000:11000/udp + - 27018:27018 + - 27018:27018/udp + - 8768 + #volumes: + #- server:/home/steam/.klei/DoNotStarveTogether/ + #- /data/steam-games/:/home/steam/games/:rw + diff --git a/entrypoint.sh b/entrypoint.sh index 82fe64a..736cbf8 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,10 +1,16 @@ #!/bin/bash +function fail { + # Write to stderr + echo "ERROR: $@" >&2 + exit 1 +} + # what are we trying to install? game_nm="DST" game_id=343050 -cluster_name="Zom.bi" +DST_SERVER_DIR=${DST_SERVER_DIR:-'server'} dontstarve_dir="$HOME/.klei/DoNotStarveTogether" # install game to this directory @@ -27,9 +33,86 @@ else echo "Skipped game installation." fi -if [[ ! -f ${dontstarve_dir}/${cluster_name}/cluster_token.txt ]] +# if game dir does not exist, create it +mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR} + +if [[ ! -w ${dontstarve_dir}/${DST_SERVER_DIR} ]] then - echo "${CLUSTER_TOKEN}" > ${dontstarve_dir}/${cluster_name}/cluster_token.txt + fail "Not allowed to write to game dir as user $(id -u)" +fi + +if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/cluster_token.txt ]] +then + mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR} + echo "${DST_CLUSTER_TOKEN}" > ${dontstarve_dir}/${DST_SERVER_DIR}/cluster_token.txt +fi + +if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/cluster.ini ]] +then + mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR} + cat <<- EOF > ${dontstarve_dir}/${DST_SERVER_DIR}/cluster.ini + [GAMEPLAY] + game_mode = ${DST_GAME_MODE} + max_players = ${DST_MAX_PLAYERS} + pvp = ${DST_PVP} + pause_when_empty = ${DST_} + + [NETWORK] + cluster_description = ${DST_CLUSTER_DESCRIPTION} + cluster_name = ${DST_CLUSTER_NAME} + cluster_intention = ${DST_CLUSTER_INTENTION} + cluster_password = ${DST_CLUSTER_PASSWORD} + + [MISC] + console_enabled = true + + [SHARD] + shard_enabled = true + bind_ip = 127.0.0.1 + master_ip = 127.0.0.1 + master_port = 10889 + cluster_key = paul + EOF +fi + +if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/Master/server.ini ]] +then + mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}/Master + cat <<- EOF > ${dontstarve_dir}/${DST_SERVER_DIR}/Master/server.ini + [NETWORK] + server_port = 11000 + + [SHARD] + is_master = true + + [STEAM] + master_server_port = 27018 + authentication_port = 8768 + + [ACCOUNT] + encode_user_path = true + EOF +fi + +if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/server.ini ]] +then + mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}/Caves + cat <<- EOF > ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/server.ini + [NETWORK] + server_port = 11001 + + [SHARD] + is_master = false + name = Caves + id = 2521590582 + + [STEAM] + master_server_port = 27019 + authentication_port = 8769 + + [ACCOUNT] + encode_user_path = true + EOF fi @@ -38,7 +121,7 @@ cd $installdir/bin run_shared=(./dontstarve_dedicated_server_nullrenderer) run_shared+=(-console) -run_shared+=(-cluster "$cluster_name") +run_shared+=(-cluster "$DST_SERVER_DIR") run_shared+=(-monitor_parent_process $$) "${run_shared[@]}" -shard Caves | sed 's/^/Caves: /' &