Dockerized dedicated server for Icarus, running via Wine + SteamCMD on Debian.
2.0K
Docker container to host an Icarus dedicated server (SteamCMD App ID 2089300). Icarus has no native Linux dedicated server build, so the Windows binary runs under Wine with a virtual display (xvfb), as an unprivileged steam user. The server files are downloaded automatically via SteamCMD.
ludix0/icarus17777/udp + 17777/tcp (game), 27015/udp (server browser query)17777/udp, 17777/tcp and 27015/udp forwarded on your router if you want the server reachable from the internetmkdir -p ~/icarus && cd ~/icarus
Create a docker-compose.yml:
services:
icarus:
image: ludix0/icarus:latest
container_name: icarus
restart: unless-stopped
volumes:
- ./filesServer:/home/steam/server_data
- ./steamcmd:/home/steam/steamcmd
environment:
- TZ=Europe/Paris
- PUID=1000
- PGID=1000
- UPDATE_ON_START=true
- SESSIONNAME=My Icarus Server
- JOINPASSWORD=
- MAXPLAYERS=8
- SHUTDOWNIFNOTJOINEDFOR=300.000000
- SHUTDOWNIFEMPTYFOR=300.000000
- ADMINPASSWORD=changeMe
- LOADPROSPECT=
- CREATEPROSPECT=
- RESUMEPROSPECT=True
- LASTPROSPECTNAME=
- ALLOWNONADMINSTOLAUNCHPROSPECTS=True
- ALLOWNONADMINSTODELETEPROSPECTS=False
- FIBERFOLIAGERESPAWN=True
- LARGESTONESRESPAWN=True
ports:
- "17777:17777/udp"
- "17777:17777/tcp"
- "27015:27015/udp"
docker compose up -d
docker compose logs -f
git clone https://github.com/ludix0/icarus.git
cd icarus
ln -sf /path/to/your/secrets.env .env # or create a .env with the variables below
docker build -t ludix0/icarus:latest .
docker compose up -d
| Variable | Required | Description |
|---|---|---|
TZ, PUID, PGID | No | Timezone and host user/group to run the container as |
UPDATE_ON_START | No | true/false — update the server via SteamCMD on every restart |
SESSIONNAME | No | Server name shown in the in-game server browser |
JOINPASSWORD | No | Join password — leave empty for a public server |
MAXPLAYERS | No | Player slot limit |
ADMINPASSWORD | Yes | Admin password, required to use admin commands in-game |
SHUTDOWNIFNOTJOINEDFOR | No | Seconds — auto-shutdown if no one ever joins after this delay |
SHUTDOWNIFEMPTYFOR | No | Seconds — auto-shutdown once the server has been empty for this long |
LOADPROSPECT | No | Name of an existing prospect (save) to load on start |
CREATEPROSPECT | No | Name of a new prospect to create on start |
RESUMEPROSPECT | No | True/False — automatically resume the last active prospect |
LASTPROSPECTNAME | No | Name of the last prospect (managed by the server itself) |
ALLOWNONADMINSTOLAUNCHPROSPECTS | No | True/False — allow non-admin players to launch prospects |
ALLOWNONADMINSTODELETEPROSPECTS | No | True/False — allow non-admin players to delete prospects |
FIBERFOLIAGERESPAWN | No | True/False — enable fiber foliage respawning |
LARGESTONESRESPAWN | No | True/False — enable large stone respawning |
| Volume | Content |
|---|---|
/home/steam/server_data | Server binaries, Wine prefix, saves, and config (ServerSettings.ini, etc.) |
/home/steam/steamcmd | Shared SteamCMD installation, avoids re-downloading on rebuild |
| Port | Protocol | Usage |
|---|---|---|
| 17777 | UDP | Game traffic |
| 17777 | TCP | Game traffic |
| 27015 | UDP | Steam server browser query |
Conteneur Docker pour héberger un serveur dédié Icarus (App ID SteamCMD 2089300). Icarus n'ayant pas de build serveur dédié Linux natif, le binaire Windows tourne sous Wine avec un affichage virtuel (xvfb), en exécutant le serveur avec un utilisateur steam non privilégié. Les fichiers du serveur sont téléchargés automatiquement via SteamCMD.
ludix0/icarus17777/udp + 17777/tcp (jeu), 27015/udp (requête liste de serveurs)17777/udp, 17777/tcp et 27015/udp redirigés sur votre routeur si le serveur doit être accessible depuis internetmkdir -p ~/icarus && cd ~/icarus
Créer un docker-compose.yml :
services:
icarus:
image: ludix0/icarus:latest
container_name: icarus
restart: unless-stopped
volumes:
- ./filesServer:/home/steam/server_data
- ./steamcmd:/home/steam/steamcmd
environment:
- TZ=Europe/Paris
- PUID=1000
- PGID=1000
- UPDATE_ON_START=true
- SESSIONNAME=Mon Serveur Icarus
- JOINPASSWORD=
- MAXPLAYERS=8
- SHUTDOWNIFNOTJOINEDFOR=300.000000
- SHUTDOWNIFEMPTYFOR=300.000000
- ADMINPASSWORD=aChanger
- LOADPROSPECT=
- CREATEPROSPECT=
- RESUMEPROSPECT=True
- LASTPROSPECTNAME=
- ALLOWNONADMINSTOLAUNCHPROSPECTS=True
- ALLOWNONADMINSTODELETEPROSPECTS=False
- FIBERFOLIAGERESPAWN=True
- LARGESTONESRESPAWN=True
ports:
- "17777:17777/udp"
- "17777:17777/tcp"
- "27015:27015/udp"
docker compose up -d
docker compose logs -f
git clone https://github.com/ludix0/icarus.git
cd icarus
ln -sf /chemin/vers/votre/secrets.env .env # ou créer un .env avec les variables ci-dessous
docker build -t ludix0/icarus:latest .
docker compose up -d
| Variable | Obligatoire | Description |
|---|---|---|
TZ, PUID, PGID | Non | Fuseau horaire et utilisateur/groupe hôte pour le conteneur |
UPDATE_ON_START | Non | true/false — met à jour le serveur via SteamCMD à chaque redémarrage |
SESSIONNAME | Non | Nom du serveur affiché dans la liste des serveurs en jeu |
JOINPASSWORD | Non | Mot de passe de connexion — laisser vide pour un serveur public |
MAXPLAYERS | Non | Nombre maximum de joueurs |
ADMINPASSWORD | Oui | Mot de passe admin, requis pour les commandes admin en jeu |
SHUTDOWNIFNOTJOINEDFOR | Non | Secondes — arrêt automatique si personne ne rejoint jamais après ce délai |
SHUTDOWNIFEMPTYFOR | Non | Secondes — arrêt automatique une fois le serveur vide depuis ce délai |
LOADPROSPECT | Non | Nom d'un prospect (sauvegarde) existant à charger au démarrage |
CREATEPROSPECT | Non | Nom d'un nouveau prospect à créer au démarrage |
RESUMEPROSPECT | Non | True/False — reprendre automatiquement le dernier prospect actif |
LASTPROSPECTNAME | Non | Nom du dernier prospect (géré automatiquement par le serveur) |
ALLOWNONADMINSTOLAUNCHPROSPECTS | Non | True/False — autoriser les joueurs non-admin à lancer des prospects |
ALLOWNONADMINSTODELETEPROSPECTS | Non | True/False — autoriser les joueurs non-admin à supprimer des prospects |
FIBERFOLIAGERESPAWN | Non | True/False — activer la repousse de la végétation fibreuse |
LARGESTONESRESPAWN | Non | True/False — activer la repousse des grosses pierres |
| Volume | Contenu |
|---|---|
/home/steam/server_data | Binaires du serveur, préfixe Wine, sauvegardes et configuration (ServerSettings.ini, etc.) |
/home/steam/steamcmd | Installation SteamCMD partagée, évite un nouveau téléchargement à chaque rebuild |
| Port | Protocole | Usage |
|---|---|---|
| 17777 | UDP | Trafic de jeu |
| 17777 | TCP | Trafic de jeu |
| 27015 | UDP | Requête liste de serveurs Steam |
Content type
Image
Digest
sha256:422b40332…
Size
627.5 MB
Last updated
about 11 hours ago
docker pull ludix0/icarus