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
Linux Mint for the first 3 steps:
sudo apt-add-repository ‘deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main’
sudo apt-get update
sudo apt-get install –install-recommends winehq-stable
@zpangwin
this is for ubuntu, not for the centos as the tutorial is mentioning….
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/”