Changelog
Feb, 2022
some fixes in modmap.env
mod.io token moved from Engine.ini to GameUserSettings.ini (because NWI)
fixed steam warning in dockerfile "Please use force_install_dir before logon!"
changed readme
changed ENTRYPOINT now you can use LAUNCH_SERVER_ENV to set map
new options on ini files
Nov, 2022
added lite version, because it's become so beefy
This repository contains a docker image with a dedicated server for Insurgency Sandstorm that you can fully customize to your need for COOP and PVP servers.
This image will be built any time there are updates to the steam app or upstream docker image, so you don’t have to update anything inside a container. I tried to build the image as “best-practice” as possible and to document everything for you.
Official documentation: Sandstorm Server Admin Guide
Another Server Admin Guide Server Admin Guide by mod.io
More config examples: Configs by zWolfi
ISMC Guide: ISMCmod Installation Guide
cd directory where Dockerfile
docker build -t andrewmhub/insurgency-sandstorm:latest .
or get it on docker hub docker pull andrewmhub/insurgency-sandstorm
Running multiple instances (use PORT, QUERYPORT and HOSTNAME) and LAUNCH_SERVER_ENV in modmap.env:
docker run -d --restart unless-stopped --env-file /home/user/coop-modmap/modmap.env \
--name sandstorm-modmap --net=host \
-v /home/user/coop-modmap/Mods:/home/steam/steamcmd/sandstorm/Insurgency/Mods:rw \
-v /home/user/coop-modmap/config/ini:/home/steam/steamcmd/sandstorm/Insurgency/Saved/Config/LinuxServer:ro \
-v /home/user/coop-modmap/config/txt:/home/steam/steamcmd/sandstorm/Insurgency/Config/Server:ro andrewmhub/insurgency-sandstorm:latest
All game data will be stored on disk
docker run -d --restart unless-stopped --env-file /home/user/coop-modmap/modmap.env \
--name sandstorm-modmap --net=host \
-v /home/user/my_dir:/home/steam/steamcmd/sandstorm:rw \
andrewmhub/insurgency-sandstorm:lite
Examples config files in directory config
Optional launch options:
-NoEAC
have problem with EAC just disables it
-nominidumps
some crash dump handler that uploads crash information to insurgency devs servers this option disables it
version: '3.7'
services:
insurgency-sandstorm:
image: andrewmhub/insurgency-sandstorm:latest
container_name: insurgency-sandstorm
restart: unless-stopped
env_file:
- .env
volumes:
- /home/user/coop-modmap/config/ini:/home/steam/steamcmd/sandstorm/Insurgency/Saved/Config/LinuxServer:ro
- /home/user/coop-modmap/config/txt:/home/steam/steamcmd/sandstorm/Insurgency/Config/Server:ro
- /home/user/coop-modmap/Mods:/home/steam/steamcmd/sandstorm/Insurgency/Mods:rw
ports:
- "${PORT}:${PORT}/udp"
- "${QUERYPORT}:${QUERYPORT}/udp"
HOSTNAME=[ISMC] MOD MAPS ONLY @120hz
PORT=12345
QUERYPORT=54321
LAUNCH_SERVER_ENV=LAUNCH_SERVER_ENV=Ministry?Scenario=Scenario_Ministry_Checkpoint_Security?Game=CheckpointHardcore?password=MyPa$$word?MaxPlayers=10 -MapCycle=MapCycle -Mods -ModList=Mods.txt -mutators="ISMCarmory_legacy,ImprovedAI,NoRestrictedArea,ScaleBotAmount,AdvancedSupplyPoints,WelcomeMessage,JoinLeaveMessage,FpLegs,JumpShoot" -GameStatsToken=my_token -GameStats -GSLTToken=my_token -ModDownloadTravelTo=TORO?Scenario=Scenario_TORO_Checkpoint_Security
Autoupdate game server. This script will keep your game servers automaticly updated updating intervals announce the server is shutting down for updates
Requirements: rcon-cli
wget https://github.com/gorcon/rcon-cli/releases/download/v0.10.1/rcon-0.10.1-amd64_linux.tar.gz
tar -xvzf rcon-0.10.1-amd64_linux.tar.gz
cp rcon-0.10.1-amd64_linux/rcon /usr/local/bin/
Get restart script example
wget --no-check-certificate -O /opt/restart-ins.sh https://raw.githubusercontent.com/AndrewMarchukov/insurgency-sandstorm-server-dockerize/master/AutoUpdater/restart-ins.sh
chmod +x /opt/restart-ins.sh
The next script make version comparison if game server version changed in steam or ISMC mod version you insurgency sandstorm server will automatically restarted and get update
wget --no-check-certificate -O /opt/check-manifest.sh https://raw.githubusercontent.com/AndrewMarchukov/insurgency-sandstorm-server-dockerize/master/AutoUpdater/check-manifest.sh
chmod +x /opt/check-manifest.sh
Get systemd unit daemon
wget --no-check-certificate -O /etc/systemd/system/my-server-check.service https://raw.githubusercontent.com/AndrewMarchukov/insurgency-sandstorm-server-dockerize/master/AutoUpdater/my-server-check.service
systemctl daemon-reload
systemctl enable my-server-check.service
systemctl start my-server-check.service
if you launch multiple servers on same host you can save some memory, on 2 game servers more than 1gb memory saved.
Make sure that parameter set on 1 after host reboot
echo 1 > /sys/kernel/mm/ksm/run
and add launch options -useksm -ksmmergeall
then restart servers
wait some amount of time and check statistics grep -H '' /sys/kernel/mm/ksm/*
pages_shared
- how many shared pages are being used
pages_sharing
- how many more sites are sharing them i.e. how much saved
pages_unshared
- how many pages unique but repeatedly checked for merging
pages_sharing*4096/1024/1024=how much memory saved
So, in your example, 264281 pages have been found to be shareable. KSM saved you about 1032 MB of memory.