Docker project for the native Linux Conan Exiles Enhanced dedicated server. It installs Steam app 443030, uses the Linux depot, keeps all mutable data on host volumes, runs the game as pokuser, supports RCON health checks, installs ordered Workshop mods, and creates automatic backups.
The default Compose file pulls the published image:
acekorneya/conan_enhanced_server:latest
cp .env.example .env
edit .env
docker compose up -dRequired settings before first start:
ADMIN_PASSWORD=your-strong-admin-password
RCON_PASSWORD=your-strong-rcon-passwordThe first boot downloads the server, so it can take a while.
For end users, the only required files are:
docker-compose.yml
.env
They do not need the Dockerfile or scripts when using the published image. If they prefer the .yaml extension, they can rename docker-compose.yml to docker-compose.yaml; Docker Compose accepts either.
./data/server Steam server install, Conan saves, configs, and mods
./data/steam SteamCMD cache and Workshop downloads
./data/backups Backup archives
These paths are bind-mounted so restarts, rebuilds, and container replacement keep the server state.
Default published ports:
7777/udp Game
7778/udp Raw UDP peer port
27015/udp Steam query
RCON is enabled inside the container for health checks and shutdown saves, but it is not published to the host by default. To expose it:
docker compose -f docker-compose.yml -f docker-compose.rcon.yml up -dSet PUID and PGID in .env to match the host account that should own files under ./data.
The image default user is pokuser, so interactive shells are non-root:
docker compose exec conan bash
idStartup uses a narrow sudo helper to update pokuser to the configured UID/GID and chown mounted volumes before the server process starts.
AUTO_UPDATE=true runs SteamCMD update on container start and enables the periodic update monitor while the server is running. Set it to false to skip startup updates when server files already exist and disable the monitor.
The monitor checks Steam build IDs on this interval:
AUTO_UPDATE_CHECK_INTERVAL_HOURS=6
AUTO_UPDATE_RESTART_NOTICE_MINUTES=30When a new build is detected, the container broadcasts restart warnings at countdown marks, sends RCON shutdown, waits for save-file timestamp activity, updates the server with SteamCMD, reapplies config and mods, relaunches the game, and verifies health with RCON.
Manual update:
docker compose run --rm conan updateThe container has an internal watchdog that restarts only the Conan server process when repeated health checks fail:
SERVER_WATCHDOG_ENABLED=true
SERVER_WATCHDOG_INTERVAL_SECONDS=60
SERVER_WATCHDOG_FAILURE_THRESHOLD=3
SERVER_WATCHDOG_STARTUP_GRACE_SECONDS=600
SERVER_WATCHDOG_RESTART_COOLDOWN_SECONDS=300
SERVER_WATCHDOG_MAX_RESTARTS=3
SERVER_STOP_GRACE_SECONDS=10The watchdog checks that the tracked Conan process is still running. It no longer restarts the game only because RCON misses a reply, which avoids launching a second server while the first one is still alive. After the failure threshold is reached, it uses the same graceful RCON shutdown path, verifies that all Conan processes stopped, relaunches the server, and verifies health again. If the old process cannot stop within SERVER_STOP_GRACE_SECONDS, or repeated recovery restarts exceed SERVER_WATCHDOG_MAX_RESTARTS, the container exits non-zero so Docker's restart policy can recreate it.
You can configure a daily game-server restart that runs inside the container supervisor, uses the configured TZ timezone, and gracefully restarts only the Conan server process (not the entire Docker container).
Enable and schedule daily restarts with these variables in .env:
DAILY_RESTART_ENABLED=true
DAILY_RESTART_TIME=02:00Daily restarts require RCON to be enabled and configured so that players receive in-game warnings before the restart. The warning countdown duration is controlled by AUTO_UPDATE_RESTART_NOTICE_MINUTES (which defaults to 30 minutes). When the scheduled time approaches, the server broadcasts warnings like Daily server restart scheduled. Restart in 30 minutes. at the configured countdown marks, performs a graceful RCON shutdown and save, terminates the game process, installs any pending updates or mods, and launches the server fresh. If the container starts or restarts inside the warning window, the countdown begins immediately with the remaining time.
Most users should not build the image locally. Maintainers can build from this repository with:
docker compose -f docker-compose.yml -f docker-compose.build.yml buildSet ordered Workshop IDs in .env:
MOD_IDS=123456789,987654321On start, each item is downloaded with SteamCMD, its .pak plus matching .ucas/.utoc files are copied into ConanSandbox/Mods, and modlist.txt is generated in the same order.
Common settings are documented in .env.example. Advanced ServerSettings.ini keys can also be passed directly without adding every possible key to the example file:
AvatarLifetime=600
MaxAllowedPing=300
BuildingPickupEnabled=FalseLocal-time schedule helpers use TZ and render UTC values into ServerSettings.ini:
TZ=America/Los_Angeles
PVP_BUILDING_DAMAGE_DAYS=weekends
PVP_BUILDING_DAMAGE_START=11:00
PVP_BUILDING_DAMAGE_END=23:00
AVATAR_SUMMONING_DAYS=weekends
AVATAR_SUMMONING_START=11:00
AVATAR_SUMMONING_END=23:00Days accept Monday through Sunday plus shortcuts: weekdays, weekends, and all.
Backups run every BACKUP_INTERVAL_MINUTES and again during graceful shutdown when BACKUP_ON_STOP=true.
Each archive includes:
- save databases from
ConanSandbox/Saved - Linux server config INI files
Mods/modlist.txt- metadata
Retention is controlled with BACKUP_RETENTION_COUNT.
Manual backup:
docker compose run --rm conan backupOn docker compose stop, restart, or a normal TERM/INT signal, the container:
- sends an optional RCON broadcast
- runs Conan RCON
shutdown - waits for save-file timestamp activity
- creates a final backup
- terminates the server process
Normal Docker stops use this immediate graceful path rather than the automatic update countdown. A raw SIGKILL cannot be trapped by Docker or the game, so scheduled backups are still important.
Run RCON commands from inside the container:
docker compose exec conan rcon help
docker compose exec conan rcon listplayersSet a message of the day in .env to be shown to players when they join the server:
SERVER_MESSAGE_OF_THE_DAY=Join our Discord: https://discord.gg/exampleLeave SERVER_MESSAGE_OF_THE_DAY blank to disable the message of the day.
Run shell tests with Bats:
tests/run_tests.shUseful static checks:
docker compose config
shellcheck scripts/*.sh scripts/entrypoint scripts/root-entrypointThis project targets Conan Exiles Enhanced native Linux server files. Legacy Wine/Xvfb server setups are intentionally out of scope.