Max Kellermann

Table of Contents

What is uoproxy?
1. Installation
Installation on Debian or Ubuntu
Installation on RedHat / Ubuntu / SuSE
Compiling uoproxy from sources
2. Configuration
3. Tips and tricks
Translating between protocol versions
4. Troubleshooting
Dumping packets

List of Tables

2.1. uoproxy configuration options

What is uoproxy?

uoproxy is a proxy server designed for Ultima Online. It acts as an Ultima Online server, and forwards the connection to a 'real' server.

Chapter 1. Installation

Installation on Debian or Ubuntu

Download the Debian package from the uoproxy home page. Install it with dpkg -i as root:

dpkg -i uoproxy_0.1.3_i386.deb

Edit the file /etc/uoproxy.conf and restart the daemon:

/etc/init.d/uoproxy restart

Installation on RedHat / Ubuntu / SuSE

Download the RPM package from the uoproxy home page. Install it with rpm -i as root:

rpm -i uoproxy-0.2-1.i386.rpm

Edit the file /etc/uoproxy.conf and start the daemon:

uoproxy -D

Compiling uoproxy from sources

To compile, you need the following:

  • gcc

  • GNU make

  • libevent development files (package libevent-dev or libevent-devel)

Download the uoproxy source tarball and extract it. Change to the source directory and build it with make (or gmake if you are on BSD/Mac OS X):


To run it from here without further installation, type:

./src/uoproxy -D -p 2593 dfi.defianceuo.com

This will run the daemon on port 2593 for connection to the Defiance shard. -D tells uoproxy to run in foreground, and it will daemonize if you omit it. For further configuration, you might want to create a configuration file; as a good start, copy the example file into your home directory and edit it:

cp conf/uoproxy.conf ~/.uoproxyrc

To install uoproxy permanently, type:

make install

It will install itself in /usr/local/bin and copies the example configuration to /etc/uoproxy.conf

Chapter 2. Configuration

Most configuration options are only available in the configration file. By default, uoproxy looks for it in your home directory (~/.uoproxyrc) and then in the system wide configuration directory (/etc/uoproxy.conf). The following options are available:

Table 2.1.  uoproxy configuration options

Option Description Default
port The TCP port uoproxy binds on. 2593
bind The IP and the TCP port uoproxy binds on. You cannot specify both port and bind. 2593
server The login server of the shard you wish to connect to. none
pidfile The path for uoproxy's pid file. no pid file
logger The program which is used for logging. log to standard output
chroot Change root directory after initialization. disabled
Change to this user after initialization. don't change user

Emulate a login server. In the value of this option, uoproxy expects a list of game servers (not login servers!) in the form name=ip:port,name2=ip2:port2,...

background Keep connections after the last client has exited? no
autoreconnect Automatically reconnect to game server if the connection fails for some reason? yes
antispy Block spy packets? This includes known packets where the client transmits information about the user's computer. no
light Block light packets sent by the server, i.e. always enable full light level? no
client_version Report this client version to the game server and emulate this protocol version. forward the version reported by the first client

Chapter 3. Tips and tricks


uoproxy allows you to play with multiple clients on the one account at the same time, even if they talk different protocol versions.

Translating between protocol versions

uoproxy implements several versions of the UO protocol and can translate between them on-the-fly. The config option client_version specifies the protocol version for talkin to the game server; if that option is not configured, the first client sets the version.

Now imagine the server does not support a new (or old) protocol version: just enter a suported version number into the client_version option, and let uoproxy do the rest.

Chapter 4. Troubleshooting

Table of Contents

Dumping packets

Dumping packets

If you experience a problem you cannot solve, and you ask for help, you should include a packet dump. uoproxy dumps packets at a verbosity of 10, i.e. you have to specify 9 -v options when starting:

uoproxy -vvvvvvvvvD |tee /tmp/uoproxy.log

Note that this also logs your user name and password. Since problems with login packets are rare, you should delete them before you send the log file.