Icarus Linux Dedicated Server Guide

Icarus Linux Dedicated Server Guide

= PREFACE =


Icarus Linux Dedicated Server Guide image 1

________________________________________________________________

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 =


Icarus Linux Dedicated Server Guide image 126

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