Conan Exiles

Installing Conan Exiles Server on Linux (using Wine) including Autoupdater

This tutorial will tell you how to install wine on a linux machine to get the Conan Exiles dedicated server running without windows.

Original Tutorial created by Awful Citizen on Steam, but with a lil bit too many steps. We decided to reduce the tutorial to a bare minimum one to get Conan Exiles running on your machine without the tutorial for setting up a whole linux machine with firewall and more. You need at least minimum knowledge how to administrate a linux server.

This is based on CentOS. Debian is working, too – but you have (obviously) use different packages.

Step 1: Installing Dependency Packages

You will need to install the ‘Development Tools‘ with some core development tools such as gcc, flex, bison, debuggers etc. this software is a must and is required to compile and build new packages, you can install them using YUM command.

sudo yum -y groupinstall 'Development Tools' 
sudo yum -y install libX11-devel libxml2-devel libxslt-devel freetype-devel flex bison

Step 2: Downloading Wine 2.0

Download the source file using Wget command under /tmp directory as a normal User.

sudo wget http://dl.winehq.org/wine/source/2.0/wine-2.0.tar.bz2
tar -xvf wine-2.0.tar.bz2 -C /usr/src/

Step 3: Installing Wine 2.0 and dependencies

It is recommended to compile and build Wine installer as a normal User. Run the following commands as normal user.
Note : The installer might take up-to 20-30 minutes and in the middle it will ask you to enter root password.

---------- On 32-bit Systems ---------- 
sudo yum install glibc libstdc++
cd wine-2.0/ 
./configure --with-png 
./tools/wineinstall && make && sudo make install
---------- On 64-bit Systems ----------
sudo yum install glibc.i686 libstdc++.i686
cd wine-2.0/ 
./configure --with-png --enable-win64 && make && sudo make install

Step 4: Downloading Conan Exiles Server for Windows

we need to download the

  1. Create the SteamCMD folder with mkdir /home/steam/steamcmd/ && mkdir /home/steam/exiles && cd /home/steam/steamcmd
  2. Download SteamCMD with: wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
  3. Extract the contents of the tar with tar -xzf steamcmd_linux.tar.gz
  4. Run steamcmd once with /home/steam/steamcmd/steamcmd.sh
  5. Download the conan server with /home/steam/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /home/steam/exiles +login anonymous +app_update 443030 +quit

Step 5: Execute the server from within your GUI (can be skipped)

run the following command to start the server:

/usr/src/wine-2.0/wine ConanSandboxServer.exe -log

you can stop the server by pressing CTRL+C.

Step 6: Make it headless (working as a service)

We need xvfb to create a headless start script:

sudo yum install xorg-x11-server-Xvfb

then create a startup script with the following content in /home/steam/exiles/start_conan.sh:

#!/bin/sh 
export WINEARCH=win64 
export WINEPREFIX=/home/steam/.wine64 
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' /usr/src/wine-2.0/wine /home/steam/exiles/ConanSandboxServer.exe -log

make the script executable and create a new user called steam

chmod 777 /home/steam/exiles/start_conan.sh
useradd steam
chown steam:steam /home/steam/exiles/start_conan.sh

then create a new system.d service file: /etc/systemd/system/conan.service

[Unit]
Description=Conan - dong sliders to MAX
After=syslog.target network.target

[Service]
ExecStart=/home/steam/exiles/start_conan.sh
User=steam
Type=simple
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

now reload the system.d and execute the conan server:

systemctl daemon-reload
systemctl start conan
systemctl enable conan.service

Step 7: Autoupdater Script

Save the following script as /home/steam/exiles/updateconan.sh and make it executable:

#!/bin/sh 
# Script by: Rejd @ https://discord.gg/AkcVFAX
# Goon Engineering NetWorks
#
# NOTE: This script might need to be run with sudo, due to systemctl requiring root privileges
#

# Stop conan.service and wait until ConanSandboxServer has shut down
#
echo "Stopping conan.service..."
sudo systemctl stop conan.service
while ps axg | grep -F 'Z:\home\steam\exiles\ConanSandbox\Binaries\Win64\ConanSandboxServer-Win64-Test.exe' | grep -v -F 'grep' > /dev/null; do sleep 1; done

# Backup configuration files
#
echo "Backing up configuration files"

tarballName="configBackup_$(date +%Y-%m-%d_%H-%M).tar.gz"
tarball2Name="savedConfigBackup_$(date +%Y-%m-%d_%H-%M).tar.gz"

mkdir -p /home/steam/exiles/configBackups
tar -zcvf /home/steam/exiles/configBackups/$tarballName -C /home/steam/exiles/ConanSandbox/Config .
tar -zcvf /home/steam/exiles/configBackups/$tarball2Name -C /home/steam/exiles/ConanSandbox/Saved/Config/WindowsServer .

# Run steam update
#
echo "Updating..."
/home/steam/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /home/steam/exiles +login anonymous +app_update 443030 validate +quit

# Restore backup, keep tarball just incase (Might autodelete later when we know they aren't really needed)
# temporarily commented out, need to test if configs in saved will suffice
#echo "Restoring backup"
#tar -zxvf /home/steam/exiles/configBackups/$tarballName -C /home/steam/exiles/ConanSandbox/Config
#tar -zxvf /home/steam/exiles/configBackups/$tarball2Name -C /home/steam/exiles/ConanSandbox/Saved/Config/WindowsServer

# Start conan.service
#
echo "Starting conan.service"
sudo systemctl start conan.service

Save the following script as /home/steam/exiles/updateChecker.sh and make it executable:

#!/bin/sh
# NOTE: app_info_print/update uses the cache rather than pulling new information. Probably unintended. Definitely not useful for this application.
# Hence we need to delete the appcache to force a refresh
# On our system, the appcache can be found in /home/steam/Steam/appcache

# Delete appcache
rm -rf /home/steam/Steam/appcache/

# Pull new info and compare new timestamp to saved timestamp
# You may need to initially run the command for currentTimestamp manually and redirect it to /home/steam/exiles/lastUpdate
currentTimestamp=$(/home/steam/steamcmd/steamcmd.sh +login anonymous +app_info_update 1 +app_info_print 443030 +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}" | grep -E "^\s+\"timeupdated\"\s+" | tr '[:blank:]"' ' ' | awk '{print $2}')
lastTimestamp=$(cat /home/steam/exiles/lastUpdate)

if [ $currentTimestamp -gt $lastTimestamp ];
then
        /home/steam/exiles/updateconan.sh
        echo "$currentTimestamp" > /home/steam/exiles/lastUpdate
fi

Now just add the last file to your crontab and everything is set up.

Step 8: Configure the Server

The server is configured the same way as any other windows server. You can read a small tutorial here

Exit mobile version