= PREFACE =
________________________________________________________________
I’d like to preface by stating that I have personally contributed nothing to making this possible and am merely providing Steam front Documentation for installing an Icarus Dedicated Server via Nerodon’s preconfigured Docker deployment. Without the work of Nerodon and their contributors; this wouldn’t be as simple for me to write up for you; so thank you!
If you find this guide useful please rate it accordingly.Without ratings, it's harder for other Linux users to find this guide. Help them out!
Questions, comments, corrections or concerns please feel free to comment below
________________________________________________________________
= HARDWARE / SOFTWARE =
You can install this on any Linux computer / virtual machine / container.
[Desktop Virtualization:] VMware Workstation[www.vmware.com]
[Servers:] Proxmox[www.proxmox.com]
________________________________________________________________
[My Server]OS: Proxmox
Hardware:
Enterprise Dell R730xd
x2 Intel Xeon E5-2680 48 @ 3.30 GHz
220GB RAM
SYSTEM RESOURCES[Icarus Server VM]2 cores
2 ensures around 50% headroom mine runs 4 cores and utilizes around 24% CPU use avg
8GB RAM
avgs around 6.75GB ram regardless of 1-5 players I've tested with. Servers are well optimized.
________________________________________________________________
Ideally, we'll get Native Linux Dedicated Server support in the future; but until then this will have to do.
#LinuxIsTheServerShotcaller
Seriously RocketWerkz, Linux is taking over desktop, but it's owned the Server space for a hot second, there's a reason virtually every major corporation on the planet uses Linux to host their servers ;)
= INSTALLATION =
________________________________________________________________
Creating a dedicated server on Linux (Any Linux Distro) is quite simple and straight forward thanks to the use of Docker.
[Step 1:] Download Docker
Arch Linux: sudo pacman -S docker docker-compose
Other Distros: https://docs.docker.com/engine/install/
[Step 2:] Enable Docker
sudo systemctl enable --now docker
[Step 3:] Pull nerodons docker container
sudo docker pull nerodon/icarus-dedicated
[Step 4:] Run docker
sudo docker run -p 17777:17777/udp -p 27015:27015/udp -v data:/home/steam/.wine/drive_c/icarus -v game:/game/icarus -e SERVERNAME=AmazingServerName -e JOIN_PASSWORD=mypassword -e ADMIN_PASSWORD=mysupersecretpassword nerodon/icarus-dedicated:latest
________________________________________________________________
[NOTE:] Change AmazingServerName, mypassword, mysupersecretpassword to your desired values.
________________________________________________________________
[Step 5:] Create docker-compose.yml (This sets up your basic server name and credentials)
mkdir ~/icarus-server
cd ~/icarus-server
touch docker-compose.yml
nano docker-compose.yml
________________________________________________________________
[NOTE:] if you dont have nano, welcome to 2024 ;) install it. Or fart dust with VIM. Whatever editor you prefer, even if it's something as painstaking and un-intuitive as VIM lol
________________________________________________________________
[EXAMPLE:]
version: "3.8"
services:
icarus:
container_name: icarus-dedicated
image: nerodon/icarus-dedicated:latest
hostname: icarus-dedicated
init: true
restart: "unless-stopped"
networks:
host:
ports:
- 17777:17777/udp
- 27015:27015/udp
volumes:
- data:/home/steam/.wine/drive_c/icarus
- game:/game/icarus
environment:
- SERVERNAME=AmazingServerName
- BRANCH=public
- PORT=17777
- QUERYPORT=27015
- JOIN_PASSWORD=mypassword
- ADMIN_PASSWORD=mysupersecretpassword
- STEAM_USERID=1000
- STEAM_GROUPID=1000
- STEAM_ASYNC_TIMEOUT=60
volumes:
data: {}
game: {}
networks:
host: {}
________________________________________________________________
[NOTE:] Change AmazingServerName, mypassword, mysupersecretpassword to your desired values.
Save and exit.
________________________________________________________________
[Make script executable]
chmod +x ~/icarus-server/icarus-monitor.sh
________________________________________________________________
= AUTOMATION / MONITORING =
I wanted to set up a bit of automation for my server; so I created a simple light weight monitor script that effectively checks to ensure the server is running. The script is executed in 5 second intervals.
[Step 1:]
#Create the monitor script
touch ~/icarus-server/icarus-monitor.sh
nano ~/icarus-server/icarus-monitor.sh
[Paste the following]
#!/bin/bash
while true; do
# Check if the container is running
if ! docker ps -q -f "name=icarus-dedicated" > /dev/null; then
# If the container is not running, start it
cd ~/icarus-server && docker-compose up -d
fi
# Wait for 5 seconds before checking again
sleep 5
done
[Save and exit.]
[Step 2:] Create cron jobs to ensure server starts at boot and monitors server status to ensure always running.
[Open Crontab]
crontab -e
[Paste the following two strings]
#Initialize-Icarus-Server
@reboot cd ~/icarus-server && docker-compose up -d
#Icarus-Server-Monitor
@reboot sleep 180 && nohup ~/check_icarus_server.sh &
[Save, exit, reboot]
= TROUBLESHOOTING =
[Known Issues Out Of Memory Error:]________________________________________________________________
Now Nerodons github page for the icarus-dedicated docker container says there is a Known Issue regarding an out of memory error. I have not personally had this issue; but just in case here you go.
Freeing x bytes from backup pool to handle out of memory and Fatal error: [File: Unknown] [Line: 197] \nRan out of memory allocating 0 bytes with alignment 0\n but system has enough memory.
[Solution:] Increase maximum number of memory map areas (vm.max_map_count) tested with 262144
[temporary:]
sysctl -w vm.max_map_count=262144[/b]
[permanent:]
echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p
________________________________________________________________
= NOTES =
Successful Server Setup:
SOURCE:]nerodon/icarus-dedicated[hub.docker.com]
Using this process, I successfully set up a standard 8-player dedicated server for my family to play on.
Challenges with Customizing Server Settings:
Despite knowing the server directory(?),
/home/steam/.wine/drive_c/icarus/Saved/Config/WindowsServer/ServerSettings.ini
I haven't been able to effectively customize server settings beyond server name, password, and admin password.
Examples of settings I struggle with:
Increasing player count from 8 to 20.
Adjusting server timeout and lobby settings.
Acknowledgment of Personal Knowledge Gap:
I recognize this is due to my own lack of understanding.
I'm seeking guidance on how to make these customizations persist.
MOST IMPORTANT!:I use Arch... BTW! ;)
Source: https://steamcommunity.com/sharedfiles/filedetails/?id=3383671292
More Icarus guilds
- All Guilds
- The biggest cave
- Icarus Guide 541
- Prometheus
- How to fly in Icarus
- Icarus Tamed Animal Guide
- 50 ren per 1 minute and 20 seconds
- Steam Deck Icarus Running
- HOW TO: Extract Exotics from Start to Finish
- Icarus Guide 477