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 [email protected] 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 [email protected] 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

About the author

3 thoughts on “Installing Conan Exiles Server on Linux (using Wine) including Autoupdater”

  1. Hey, thanks for the great tutorial! My Exiles-Server is running fine on Debian 9 with just a few different commands! Awesome!

    But i have 2 questions:

    1. I didn´t understood the meaning of the checkUpdate.sh script? Is it just to verify that there is an update before doing updateConan.sh?

    2. In the checkUpdate.sh script, the is the part of cleaning the appcache, should this line really be “rm -rf /home/steam/Steam/appcache/” instead of “rm -rf /home/steam/appcache/”?
    Because there is no such folder, only “/home/steam/appcache/”

Leave a Reply

Your email address will not be published. Required fields are marked *

  • English
  • Deutsch
  • Français

Advertisement