.env without editing every setting by handStarting a new server? Use Native Linux. It runs upstream Linux without Wine using isolated Native volumes.
Backward-compatible path for existing Wine servers. The :latest channel remains Wine to prevent automatic cutovers.
docker-compose.yml deployment never switches it to Native. New installations should use docker-compose.native.yml.mkdir conan-native && cd conan-native curl -O https://raw.githubusercontent.com/balnaimi/conan-exiles-server/main/docker-compose.native.yml curl -o .env https://raw.githubusercontent.com/balnaimi/conan-exiles-server/main/.env.minimal nano .env docker compose -f docker-compose.native.yml up -d
:native or versioned :2.9.1-native. RCON is internal-only by default. Fresh named volumes are initialized for the non-root UID/GID 1000:1000; custom bind mounts must be writable by that identity. Check docker compose -f docker-compose.native.yml ps for A2S health; use the bundled rcon.py listplayers client explicitly when you need an RCON diagnostic.NATIVE_VALIDATE_SERVER=true.cd /path/to/existing-wine-server docker compose pull docker compose up -d
:latest stays Wine for backward compatibility. These commands do not migrate the deployment to Native.cd /path/to/existing-wine-server cp .env .env.backup nano .env docker compose up -d
.env beside docker-compose.native.yml, then start Native.mkdir conan-native && cd conan-native
curl -O https://raw.githubusercontent.com/balnaimi/conan-exiles-server/main/docker-compose.native.yml
# Save the generated config as .env in this folder
docker compose -f docker-compose.native.yml up -d
| Port | Protocol | Description |
|---|---|---|
| 7777 | UDP | Game port |
| 7778 | UDP | Game port (required for correct ping in server list) |
| 27015 | UDP | Steam query |
| 25575 | TCP | RCON (if enabled) |
MULTIHOME to the public or forwarded IP address that players should use. The container will also use that value for MULTIHOMEHTTP so server-browser registration comes from the same IP. Leave both empty for normal hosting.
| Server Profile | CPU | RAM | Disk |
|---|---|---|---|
| Test / very small | 4 fast x86-64 cores | 12 GB practical start | 20 GB practical start |
| Small private server (up to 10 players) | 4+ fast x86-64 cores | 16 GB recommended | 25–35 GB recommended |
| Growing or modded server | 6+ fast x86-64 cores | 24 GB or more | 70 GB comfortable; 100 GB heavy |
These are project planning recommendations, not official Funcom requirements or hard limits. Actual usage depends on the runtime, map, database, buildings, players, mods, backups, and game updates.
for flag in sse4_2 avx avx2; do
grep -qw "$flag" /proc/cpuinfo \
&& echo "$flag=yes" \
|| echo "$flag=no"
done
lscpu
host-passthrough when available. A host change that exposes several flags can confirm a CPU compatibility problem, but it does not isolate AVX2 alone.
24383534 and Wine Staging 11.10 repeatedly entered an OOM restart loop on an 8 GB host. With 16 GB, the same server reached InProgress, responded to Source/A2S queries on UDP 27015, and stabilized at approximately 9.1 GB idle memory.
24383534, the native Shipping binary reached A2S/RCON readiness and stabilized near 8.70 GiB unmodded. Enhanced-tagged StayBloody and Better Thralls mounted in order at roughly 8.42–8.57 GiB. The guest exposed SSE4.2, AVX, and AVX2. UE5's general x64 baseline is SSE4.2; these tests do not prove AVX2 alone is a Conan requirement.
docker statsOpen the Conan Exiles Steam Workshop. A mod page URL normally ends with ?id=1234567890; copy only that numeric ID.
https://steamcommunity.com/sharedfiles/filedetails/?id=3719513784 # Workshop ID: 3719513784
SERVER_MOD_LIST=3719513784,3720904511,3361295718
# After changing SERVER_MOD_LIST docker compose down docker compose up -d docker compose logs -f
SERVER_MOD_LIST, restart, and verify the generated modlist.txt.docker compose logs. An invalid ID, missing Workshop download, ambiguous/missing .pak, or incompatible mod stops startup while preserving the previous active list.
3722881816) and Better Thralls (3720904511) mounted in configured order. Conan extracted each top-level Workshop package's embedded -LinuxServer.pak, .utoc, and .ucas payload automatically.
Start with the essentials, or open all 250 settings for full control
New Native server: save the downloaded file as .env beside docker-compose.native.yml, then run:
docker compose -f docker-compose.native.yml up -d docker compose -f docker-compose.native.yml ps
Existing Wine deployment: editing .env does not migrate Wine to Native. Keep using the existing Wine workflow or follow the protected Wine-to-Native migration guide.
docker-compose.native.yml. Plain docker compose commands appear only in sections explicitly labelled for an existing Wine deployment.docker compose -f docker-compose.native.yml up -d # Start Native docker compose -f docker-compose.native.yml down # Stop Native docker compose -f docker-compose.native.yml restart # Restart Native docker compose -f docker-compose.native.yml logs -f # View Native logs docker compose -f docker-compose.native.yml logs --tail 50
SteamCMD checks Native game files at startup. Update the recommended Native container image with:
docker compose -f docker-compose.native.yml pull docker compose -f docker-compose.native.yml down docker compose -f docker-compose.native.yml up -d
docker-compose.yml path.Older Wine images may log missing Vulkan or EGL libraries. Update the existing Wine image first:
docker compose pull docker compose down docker compose up -d
Failed to load libvulkan.so.1 Failed to load libEGL.so.1
A final WindowsServer pakchunk0 mount line means the package mounted successfully; it is not proof of a hang. Wine wrapper processes may normally wait in pipe_read or anon_pipe_read.
Do not rely on container uptime or the final stdout line alone. Verify A2S readiness on UDP 27015 and inspect the Native container:
docker compose -f docker-compose.native.yml ps
docker stats --no-stream
docker inspect conan-exiles-enhanced-native \
--format 'status={{.State.Status}} oom={{.State.OOMKilled}} restart={{.RestartCount}}'
docker events --since 30m \
--filter container=conan-exiles-enhanced-native
docker top conan-exiles-enhanced-native \
-eo pid,ppid,stat,pcpu,pmem,wchan:32,comm
free -h grep -E 'CommitLimit|Committed_AS' /proc/meminfo sysctl vm.overcommit_memory
After resizing a VM or container, restart Docker and verify that Docker and the host report the same total memory:
sudo systemctl restart docker
docker info --format '{{.MemTotal}}'
free -b
137 means SIGKILL; it does not prove OOM. Confirm memory exhaustion with OOMKilled=true or a Docker oom event.docker inspect conan-exiles-enhanced-native \
--format 'exit={{.State.ExitCode}} oom={{.State.OOMKilled}}'
docker events --since 30m \
--filter container=conan-exiles-enhanced-native
Native backups use SQLite snapshots and never mix a snapshot with separately copied live WAL/SHM files. Password values in archived INIs are replaced with [REDACTED].
# Create and verify a portable Native world backup ./scripts/conan-backup.sh --runtime native create ./scripts/conan-backup.sh list --verify # Restore is a non-mutating dry-run unless --apply is added ./scripts/conan-backup.sh --runtime native restore .conan-backups/ARCHIVE.tar.gz ./scripts/conan-backup.sh --runtime native restore .conan-backups/ARCHIVE.tar.gz --apply
plan while Wine is running. The apply command owns the stop, proves the source unused, creates new Native volumes, and keeps the original Wine data unchanged for rollback../scripts/migrate-compose-wine-to-native.sh plan
# Review the dry-run, then let the wrapper own the cutover
./scripts/migrate-compose-wine-to-native.sh apply
./scripts/conan-backup.sh --runtime wine create ./scripts/conan-backup.sh list --verify
--apply../scripts/conan-backup.sh --runtime wine restore .conan-backups/ARCHIVE.tar.gz ./scripts/conan-backup.sh --runtime wine restore .conan-backups/ARCHIVE.tar.gz --apply
-v permanently deletes all Native volumes.docker compose -f docker-compose.native.yml down -v docker compose -f docker-compose.native.yml up -d
-v permanently deletes all Wine volumes.docker compose down -v docker compose up -d
The official Conan Exiles Enhanced server settings reference is the first source to check, but it is non-exhaustive. Absence from that list does not prove a setting is broken; it means the key still needs runtime verification on Enhanced before this project describes it as reliable.
| Setting | Status | Details |
|---|---|---|
CraftingCostMultiplier |
✅ Official Enhanced key | Official Enhanced docs list this key, default 1.0f, Requires Restart: No. Runtime gameplay testing is still welcome. |
PlayerStaminaRegenSpeedScale |
✅ Official Enhanced key | Official Enhanced docs list this key, Requires Restart: No. Keep Admin Panel/database caveats in mind if a running world appears to ignore changes. |
| Setting | Status | Details |
|---|---|---|
StaminaCostMultiplier |
✅ Preferred Enhanced key | Preferred/current key in the official Enhanced docs for stamina cost per action. |
PlayerStaminaCostMultiplier |
⚠️ Legacy alias uncertain | Older hosting docs mention it, but Enhanced docs prefer StaminaCostMultiplier. Do not prefer this unless runtime testing confirms a specific need. |
PlayerStaminaCostSprintMultiplier |
⚠️ Legacy key | Not found in the official Enhanced settings reference; needs Enhanced runtime verification. |
| Setting | Status | Details |
|---|---|---|
PlayerEncumbranceMultiplier |
⚠️ Needs runtime test | Legacy reports say it had no effect. Not found in the official Enhanced settings reference; needs runtime testing on Enhanced. |
PlayerSprintSpeedScale |
⚠️ Needs runtime test | Present in older references and hosting docs, but not found in the official Enhanced settings reference. |
PlayerMovementSpeedScale |
⚠️ Needs runtime test | Historically inconsistent and not found in the official Enhanced settings reference. Enhanced docs list PlayerMovementAccelerationMultiplier (BP) instead. |
PlayerHealthRegenSpeedScale |
⚠️ Needs runtime test | Present in older/hosting references, but not found in the official Enhanced settings reference; may require Admin Panel or database-aware testing. |
ServerSettings.ini on every restart from your .env file.
If you change settings via Admin Panel, they are stored in the game database and may take priority — but the .ini file will still show your .env values.
If a legacy setting appears to do nothing, remove it from your .env to avoid confusion.
latest remains Wine.| Component | Technology |
|---|---|
| Base Image | Debian Bookworm (slim) |
| Native Linux (recommended) | Upstream Linux dedicated server in the Native image |
| Wine (existing deployments) | WineHQ Staging with Microsoft Visual C++ 2022 Redistributable |
| Wine Headless Libraries | Xvfb, Vulkan, EGL, OpenGL, and Mesa runtime libraries |
| Game Updater | SteamCMD |
| Container Runtime | Docker / Docker Compose |
.env import, secret-safe local drafts, conditional fields, setting deep links, and a security review before ready-to-use exports.
latest/2.8.1 for existing deployments and backward compatibility; no existing server is switched automatically.
conan-doctor diagnostics, selective image builds, pinned GitHub Actions, Dependabot, Trivy scanning, security policy, and contributor templates. At that release, Wine used latest/2.8.0 and Native used native/2.8.0-native.
latest/2.7.2 and Native used native/2.7.2-native.
latest and 2.7.0 remain Wine Stable. Native is opt-in through native, 2.7.0-native, and docker-compose.native.yml; no existing server is automatically migrated or switched. Adds isolated Native Compose, non-root hardening, CPU diagnostics, atomic Enhanced mods, A2S health with optional RCON diagnostics, verified backup/restore, migration guards, and separate registry channels.
| File | Purpose |
|---|---|
| docker-compose.yml | Production Docker Compose file for the pre-built image |
| .env | Your local server settings |
| .env.minimal | Small quick-start template with only basic settings |
| .env.example | Template with all 250 shared and Native operation settings documented |
| entrypoint.sh | Container startup script for game downloads, config generation, mods, and server launch |
| docs/index.html | Website and Config Generator |
If you prefer to build the Docker image yourself instead of using the pre-built image:
git clone https://github.com/balnaimi/conan-exiles-server.git
cd conan-exiles-server
docker build -t conan-exiles-server .
# Then update docker-compose.yml to use your local image