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
- Create the SteamCMD folder with mkdir /home/steam/steamcmd/ && mkdir /home/steam/exiles && cd /home/steam/steamcmd
- Download SteamCMD with: wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
- Extract the contents of the tar with tar -xzf steamcmd_linux.tar.gz
- Run steamcmd once with /home/steam/steamcmd/steamcmd.sh
- 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