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 +@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