Game server hosting
Fast RAM, high-speed internet
Eat lag for breakfast
Docker container for running an Icarus Dedicated Server using Wine.
Copy the .env.example file to a new file called .env. Then use either docker compose or docker run
- Copy the environment file:
cp .env.example .env-
Edit
.envwith your configuration (set your PUID/PGID and server settings) -
Start the server:
docker compose up -ddocker run -d \
--restart unless-stopped \
--name icarus \
--stop-timeout 30 \
-p 17777:17777/udp \
-p 27015:27015/udp \
--env-file .env \
-v ./server-files:/home/steam/server-files \
-v ./server-data:/home/steam/server-data \
icarus-server-dockerEdit your .env file to configure these options:
| Variable | Default | Description |
|---|---|---|
PUID |
- | User ID for file permissions |
PGID |
- | Group ID for file permissions |
DEFAULT_PORT |
17777 | Game port |
QUERY_PORT |
27015 | Query port for server browser |
MULTIHOME |
- | Bind to specific IP address |
SERVER_NAME |
icarus-server | Server name in browser |
MAX_PLAYERS |
8 | Maximum players (1-8) |
UPDATE_ON_START |
true | Update server files on container start |
RESUME_PROSPECT |
- | Set to "true" to automatically resume last prospect |
LOAD_PROSPECT |
- | Prospect name to load on startup |
CREATE_PROSPECT |
- | Create new prospect: "ProspectType Difficulty Hardcore SaveName" |
USER_DIR |
- | Custom base directory for Saved/ files |
SAVED_DIR_SUFFIX |
- | Append suffix to Saved/ directory name |
LOG_PATH |
- | Custom log path relative to Saved/Logs/ |
ABS_LOG_PATH |
- | Absolute log path |
Create Prospect Example:
CREATE_PROSPECT="Tier1_Forest_Recon_0 3 false MyProspect"- ProspectType: Internal prospect name (see Prospect Names)
- Difficulty: 1 (easy) to 4 (extreme)
- Hardcore: true/false (disable respawns)
- SaveName: Name for this prospect save
Make sure these ports are forwarded on your router/firewall:
17777/udpGame port27015/udpQuery
For more information and instructions specific to your router, visit portforward.com.
./server-files:/home/steam/server-files- Server installation, save data, configs, and logs
This error may occur when first creating a world in-game. Simply rejoin the server and it should work normally. This is a known issue with the initial world generation.
Symptoms: Server crashes with out-of-memory errors despite having plenty of RAM available (e.g., "Freeing X bytes from backup pool to handle out of memory" or "Ran out of memory allocating 0 bytes").
Root Cause: Linux kernel's memory map area limit (vm.max_map_count) is too low for Wine applications that allocate many memory regions.
Solution: Increase vm.max_map_count on your Docker host (not inside the container):
Temporary (until reboot):
sudo sysctl -w vm.max_map_count=262144Permanent:
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -pVerify the setting:
sysctl vm.max_map_countYou should see: vm.max_map_count = 262144
This fix allows Wine to create the necessary memory mappings for the Icarus server to handle large save files and high memory usage scenarios.
