Skip to content

Commit 78b5837

Browse files
Use ARK opts for mods
1 parent 70e2cdf commit 78b5837

3 files changed

Lines changed: 19 additions & 36 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ docker compose logs -f
7777
| MOD_IDS | (empty) | Comma-separated mod IDs (e.g., 731604991,893735676) |
7878
| CLUSTER_ID | (empty) | Cluster ID for server clusters |
7979
| CLUSTER_DIR_OVERRIDE | (empty) | Custom cluster directory path |
80-
| ADDITIONAL_ARGS | (empty) | Additional command line arguments (e.g., -ServerHardcore -ForceAllowCaveFlyers) |
80+
| ADDITIONAL_ARGS | (empty) | Additional `-flag` style command line arguments (e.g., -ServerHardcore -ForceAllowCaveFlyers) |
81+
| ARKMANAGER_OPTS | (empty) | Raw newline-separated `arkmanager.cfg` entries for advanced configuration |
8182
| BETA | public | Server branch (public, preaquatica, etc.) |
8283
| UPDATE_ON_START | true | Update server on container start |
8384

scripts/init.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ su - steam -c "
3636
export CLUSTER_DIR_OVERRIDE='${CLUSTER_DIR_OVERRIDE}'
3737
export MOD_IDS='${MOD_IDS}'
3838
export ADDITIONAL_ARGS='${ADDITIONAL_ARGS}'
39+
export ARKMANAGER_OPTS='${ARKMANAGER_OPTS}'
3940
export BETA='${BETA}'
4041
export UPDATE_ON_START='${UPDATE_ON_START}'
4142
bash /home/steam/scripts/start.sh

scripts/start.sh

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ if [ ! -z "${CLUSTER_DIR_OVERRIDE}" ] && [ "${CLUSTER_DIR_OVERRIDE}" != "" ]; th
5555
echo "ark_ClusterDirOverride=\"${CLUSTER_DIR_OVERRIDE}\"" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
5656
fi
5757

58+
# Add mods if specified
59+
if [ ! -z "${MOD_IDS}" ] && [ "${MOD_IDS}" != "" ]; then
60+
echo "arkopt_ActiveMods=\"${MOD_IDS}\"" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
61+
echo "Mods configured: ${MOD_IDS}"
62+
fi
63+
5864
# Add additional arguments if set
5965
if [ ! -z "${ADDITIONAL_ARGS}" ] && [ "${ADDITIONAL_ARGS}" != "" ]; then
6066
echo "" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
@@ -63,16 +69,21 @@ if [ ! -z "${ADDITIONAL_ARGS}" ] && [ "${ADDITIONAL_ARGS}" != "" ]; then
6369
if [[ $arg == -* ]]; then
6470
flag="${arg#-}"
6571
echo "arkflag_${flag}=true" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
66-
elif [[ $arg == \?* ]]; then
67-
option="${arg#?}"
68-
key="${option%%=*}"
69-
value="${option#*=}"
70-
echo "ark_${key}=\"${value}\"" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
7172
fi
7273
done
7374
echo "Additional arguments configured: ${ADDITIONAL_ARGS}"
7475
fi
7576

77+
# Add raw arkmanager.cfg options if specified
78+
if [ ! -z "${ARKMANAGER_OPTS}" ] && [ "${ARKMANAGER_OPTS}" != "" ]; then
79+
echo "" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
80+
echo "# Custom arkmanager options" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
81+
while IFS= read -r line; do
82+
echo "${line}" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
83+
done <<< "${ARKMANAGER_OPTS}"
84+
echo "Custom arkmanager options configured"
85+
fi
86+
7687
# Always enable logging
7788
echo "arkflag_log=true" | tee -a /etc/arkmanager/arkmanager.cfg > /dev/null
7889

@@ -117,36 +128,6 @@ if [ ! -z "$MOD_IDS" ] && [ "$MOD_IDS" != "" ]; then
117128
echo "Installing mod: $mod"
118129
arkmanager installmod $mod @main
119130
done
120-
121-
# Add ActiveMods to GameUserSettings.ini
122-
GAME_USER_SETTINGS="/home/steam/steamcmd/ark/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini"
123-
if [ -f "$GAME_USER_SETTINGS" ]; then
124-
# ARK server writes GameUserSettings.ini in UTF-16 LE. Convert to UTF-8
125-
# before editing so that sed/grep don't see null bytes and corrupt the file.
126-
# iconv succeeds on UTF-16 (BOM present) and fails on UTF-8, so this is safe.
127-
if iconv -f UTF-16 -t UTF-8 "$GAME_USER_SETTINGS" > "${GAME_USER_SETTINGS}.tmp" 2>/dev/null; then
128-
mv "${GAME_USER_SETTINGS}.tmp" "$GAME_USER_SETTINGS"
129-
echo "Converted GameUserSettings.ini from UTF-16 to UTF-8"
130-
else
131-
rm -f "${GAME_USER_SETTINGS}.tmp"
132-
fi
133-
134-
# Remove existing ActiveMods line if present
135-
sed -i '/^ActiveMods=/d' "$GAME_USER_SETTINGS"
136-
137-
# Add ActiveMods line under [ServerSettings] section
138-
if grep -q "\[ServerSettings\]" "$GAME_USER_SETTINGS"; then
139-
sed -i "/\[ServerSettings\]/a ActiveMods=${MOD_IDS}" "$GAME_USER_SETTINGS"
140-
echo "Added ActiveMods=${MOD_IDS} to GameUserSettings.ini"
141-
else
142-
echo "[ServerSettings]" >> "$GAME_USER_SETTINGS"
143-
echo "ActiveMods=${MOD_IDS}" >> "$GAME_USER_SETTINGS"
144-
echo "Created [ServerSettings] section and added ActiveMods=${MOD_IDS}"
145-
fi
146-
else
147-
echo "GameUserSettings.ini not found yet, will be created on first server start"
148-
echo "You may need to manually add: ActiveMods=${MOD_IDS}"
149-
fi
150131
fi
151132

152133
# Update server if UPDATE_ON_START is set

0 commit comments

Comments
 (0)