Yet Another Debian ServUO Tutorial

  • If you would like to submit a tutorial please visit the main tutorial page here.
    You can not submit them from this forum.


Mar 30, 2015
Spring, TX USA
Ixtabay created a new tutorial:

Yet Another Debian ServUO Tutorial
This is Yet Another Debian ServUO Tutorial
The aim of this guide is to help you get ServUO up and running on an extra computer at home.
  • About an hour of free time
  • A computer that you don't need for anything else. (Server)
  • Internet access for your Server
  • A network, with your client and server both connected, a home router is fine
  • An 8GB or larger USB drive (you can re-purpose it after installation)
  • An available IP address...
Read this tutorial...


Apr 5, 2015
tutorial system broken from forum upgrade, content pulled from google cache, which doesnt render correctly for me, so this will hopefully look cleaner and be easy to link to until the tutorial system is fixed

Yet Another Debian ServUO Tutorial
Summary of the tutorial
This is Yet Another Debian ServUO Tutorial
The aim of this guide is to help you get ServUO up and running on an extra computer at home.
**Note, both your Server and USB will be wiped in this process. If you value any data on these devices, back it up before you start**
Download Rufus and Debian, install PuTTy and WinSCP.
Use Rufus to make your USB drive bootable with the Debian ISO
Insert your newly created bootable USB into your server and boot to it
Install Debian
During the process, you will name your server, set the domain, your root password, create a user, choose language, etc.
When you get to the end of the process **uncheck all options except SSH Server and standard system utilities** (Don't install anything else)
For the purposes of this demo, our first user name will be 'servuo'.

After installation, your server will reboot. Now connect to your server using PuTTy with the user you created.
After logging in, you need to become a super user
Code (C#):

  1. su
Now, change your package sources, so it stops trying to load from a DVD that doesn't exist.
Code (C#):
  1. vi /etc/apt/sources.list
Delete everything in there (keep pressing 'dd'), then press 'i' to insert and paste the below in (just right click on the putty screen to paste)
Code (C#):

  1. deb stretch main contrib non-free
  2. deb-src stretch main contrib non-free
  3. deb stretch/updates main contrib non-free
  4. deb-src stretch/updates main contrib non-free
Now save it, press <esc> then ':wq' <enter>
Install some editors to make these next parts easier
Code (C#):
  1. apt-get -y install nano vim-nox
Now check for updates and install some things you'll need to compile the server
Code (C#):

  1. apt-get update
  2. apt-get upgrade
  3. apt-get -y install sudo build-essential htop screen ntp git
Set your default system shell to bash
Code (C#):

  1. dpkg-reconfigure dash
Use dash as the default system shell (/bin/sh)? <-- No (press tab and when cursor is on No, press the space bar)
Now, you need to install Mono
Code (C#):

  1. apt install apt-transport-https dirmngr
  2. apt-key adv --keyserver hkp:// --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
  3. echo "deb stable-stretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
  4. apt update
  5. apt install mono-complete
Now, we need to make the IP static
Code (C#):
  1. nano /etc/network/interfaces
The name of your network adapter may vary, it could be eth0, or something else starting with 'e.' The important thing is to replace 'dhcp' with 'static' and then set your address, gateway, and netmask.
Code (C#):

  1. #...
  2. iface eth0 inet static
  3. address
  4. gateway
  5. netmask
  6. #...
ONLY If you have teaming nics (Intel) then do the following
Code (C#):

  1. apt-get install ifenslave
Now edit modules
Code (C#):
  1. nano /etc/modules
add these lines to the bottom on the file
Code (C#):

  1. #...
  2. op
  3. lp
  4. rtc
  5. bonding
Now setup your team
Code (C#):
  1. nano /etc/network/interfaces
Delete everything in this file and replace with this (please note your NIC may be something other than ens1f0, etc)
Code (C#):

  1. # ens1f0 is manually configured, and slave to the "bond0" bonded NIC
  2. auto ens1f0
  3. iface ens1f0 inet manual
  4. bond-master bond0
  5. bond-primary ens1f0
  6. # ens1f1 ditto, thus creating a 2-link bond.
  7. auto ens1f1
  8. iface ens1f1 inet manual
  9. bond-master bond0
  10. # bond0 is the bonding NIC and can be used like any other normal NIC.
  11. # bond0 is configured using static network information.
  12. auto bond0
  13. iface bond0 inet static
  14. address
  15. gateway
  16. netmask
  17. bond-mode active-backup
  18. bond-miimon 100
  19. bond-slaves none
End of Teaming NIC setup
Now, you need to update your hostname and set your DNS (don't use the default Comcast or AT&T!)
Code (C#):
  1. nano /etc/hosts
Change to your server name and domain
Code (C#):

  1. localhost
  2. server
  3. # The following lines are desirable for IPv6 capable hosts
  4. ::1 localhost ip6-localhost ip6-loopback
  5. ff02::1 ip6-allnodes
  6. ff02::2 ip6-allrouters
check that hostname is correct here too
Code (C#):
  1. nano /etc/hostname
It should be just the server name (not domain)
Code (C#):
  1. server
Now change your DNS (delete all that ISP stuff comcast, etc) replace with this
Code (C#):

  1. nameserver
  2. nameserver
  3. nameserver
  4. nameserver
Now, reboot. Your server should have the new IP address once it's back up.
Code (C#):
  1. reboot
At this point, you need to prepare ServUO for upload to your Server, and also upload the Ultima Online client files.
For this part, use your desktop computer.
Grab a copy of ServUO from
Edit the .cfg files in /ServUO/Config to your liking. **Be sure to update DataPath.cfg** the syntax is a little difference for linux. For this tutorial, we will be uploading the UO client files to "/home/servuo/Ultima Online Classic" on your server. Your DataPath.cfg should look like this:
Code (C#):

  1. # Uncomment this line and set it to the path of the client files to set a
  2. # custom data path. Otherwise ServUO will look for the client in the default
  3. # Windows installation directories. Note that this is *required* when running
  4. # on non-Windows systems.
  5. CustomPath=/home/servuo/Ultima Online Classic
Also, until your server is truly ready for production, it is best to disable virtue honesty. Edit /ServUO/Config/Honesty.cfg and set to false.
Code (C#):

  1. # If true, enables virtue honesty
  2. Enabled=False
Now, connect to your server with WinSCP and upload your ServUO and Ultima Online Classic folder.

Login again to your server with PuTTy, and compile
Code (C#):

  1. su
  2. cd /home/servuo/ServUO
  3. make clean
  4. make
The should have compiled and now be running. You will be prompted to created your admin user, write down the password!
check that you can connect to it using UOSteam. If everything looks good, type [admin from your client and shutdown the server with save.
In order to keep ServUO running when you log out, one easy way to do it is with 'screen'.
On your server, type screen then start your server
Code (C#):

  1. screen
  2. cd /home/servuo/ServUO/
  3. ./
After the server starts, you can disconnect the screen and ServUO will continue to run. To disconnect from the screen, press ,<ctrl> + <a>, then press <d>. You can now log off.
If you wish to reconnect with the screen, login to your server and type screen -r
Code (C#):

  1. screen -r
If you want to invite friends from the outside to connect, just forward port 2593 to your server's IP address on your router.

Tutorial Information
  • Like
Reactions: TheDoc and Milva