Conan Exiles Setup

Conan Exiles dedicated server on steam.

See Conan Docker and Documentation.

Players

CPU

Memory

Disk

10

2c/2t @3.0Ghz

8GB

35Gb

35

4c/4t @3.1Ghz

8GB

35Gb

50

4c/8t @3.5Ghz

12GB

35Gb

70

4c/8t @4.0Ghz

12GB

35Gb

See Conan Exiles Dedicated Server.

Ports

Files

Docker Creation

You can copy your existing state to docker /data directory adjusting for paths.

  • The UID/GID should be set to a user/group that has access to your media. All media clients should run under the same user to run correctly.

  • See Configuration for example configuration.

Docker Compose
conan:
  image: rpufky/steam:winehq
  restart: unless-stopped
  stop_grace_period: 1m
  ports:
    - '27015:27015'
    - '27015:27015/udp'
    - '27016:27016/udp'
    - '7777:7777/udp'
    - '7778:7778/udp'
  environment:
    - PUID=1001
    - PGID=1001
    - UPDATE_OS=1
    - UPDATE_STEAM=1
    - UPDATE_SERVER=1
    - PLATFORM=windows
    - STEAM_APP_ID=443030
    - TZ=America/Los_Angeles
  volumes:
    - '/data/conan:/data'
    - '/etc/localtime:/etc/localtime:ro'

Create custom_server script to manage server, per Conan Docker and Documentation requirements.

0755 conan conan /data/custom_server
#!/bin/bash
#
# Runs as root. Drop privileges.
#
# Capture kill/term signals and send SIGINT to gracefully shutdown conan server.
PROCESS_WAIT_TIME=25
WATCHDOG_TIME=300

function shutdown() {
  echo 'Shutting down server ...'
  if [ "$(pgrep -n Conan)" != '' ]; then
    echo "Sending SIGINT to Conan server (max ${PROCESS_WAIT_TIME} secs) ..."
    kill -SIGINT `pgrep -n Conan`
    sleep ${PROCESS_WAIT_TIME}
  fi
  if [ "$(pgrep wine)" != '' ]; then
    echo "Sending SIGINT to wine processes (max ${PROCESS_WAIT_TIME} sec) ..."
    kill -SIGINT `pgrep wine`
    sleep ${PROCESS_WAIT_TIME}
  fi
  exit 0
}
trap shutdown SIGINT SIGKILL SIGTERM

function start_server() {
  su steam -c "xvfb-run --auto-servernum wine64 ${SERVER_DIR}/ConanSandbox/Binaries/Win64/ConanSandboxServer-Win64-Test.exe -nosteamclient -game -server -log"
}

function watch_server() {
  if ps aux | grep [C]onanSandboxServer > /dev/null; then
    echo 'Server is running ...'
  else
    echo 'Starting server ...'
    start_server &
  fi
}

while true; do
  watch_server
  # background and using wait enables trap capture.
  sleep ${WATCHDOG_TIME} &
  wait
done

Note

  • PROCESS_WAIT_TIME: amount of time allocated to shutdown wine.

  • WATCHDOG_TIME: amount of time between checking server heartbeat.

Game options specified will launch a dedicated server visible on steam clients. The game server will check for updates on boot and reboot.

Run container to create base configuration.
docker-compose up -d conan

Note

Conan will autogenerate default configuration files if they are missing. Make sure the server gets to a running state before shutting down.

See Wine Taking Long Time for First Start if wine takes multiple minutes to start.