You can install both the server and client on Steam deck and run it all locally, or you can install just the client and connect to another server.
Note that there is a potential impacting issue with werewolf serialization that needs to be solved with the server.
Press B. Go to Power > Switch to Desktop.
Open the terminal program Konsole to run commands. Press Steam + X to bring up the keyboard. The Paste button in the Steam deck keyboard won’t work in Konsole so use the Paste button on Konsole itself.
Install DistroBox. Below are the commands to do this as of August 2025. I can’t figure out how to press C-x to exit nano on a Steam Deck (L1 doesn’t work with the keyboard up) so I’m using vim.
export PATH=/home/deck/.local/bin:$PATH >> ~/.bashrc
source ~/.bashrc
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix $HOME/.local
Run vim ~/.distroboxrc and add the following (press the Konsole Paste button, then type :wq to save and quit)
# Ensure the graphical apps can talk to the Xwayland session
xhost +si:localuser:$USER >/dev/null
# Force the use of pulseaudio inside the container
export PIPEWIRE_RUNTIME_DIR=/dev/null
# Needed to ensure distrobox can find the podman binary we previously downloaded
export PATH=/home/deck/.local/bin:$PATH
export PATH=$PATH:/home/deck/.local/bin
curl -L -o /home/deck/Downloads/podman-launcher-amd64 https://github.com/89luca89/podman-launcher/releases/download/v0.0.5/podman-launcher-amd64
mv /home/deck/Downloads/podman-launcher-amd64 /home/deck/.local/bin/podman
chmod +x /home/deck/.local/bin/podman
sudo touch /etc/subuid /etc/subgid
sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 deck
chown deck:deck /home/deck/.local/share/icons
distrobox create --image docker.io/library/archlinux:latest --name ultima --additional-packages "mono"
Press enter to pull the image. Then enter the distrobox with the following (this will take a while):
distrobox enter ultima
You should be able to run the command mono and see something now.
These instructions are the same as this post now
wget https://github.com/FinalTwist/Ultima-Adventures/releases/download/v2.10/Ultima-Adventures-Server.zip
unzip Ultima-Adventures-Server.zip
rm Ultima-Adventures-Server.zip
cd Ultima-Adventures/Server
find Server -name "*.cs" | xargs mcs -optimize+ -unsafe -t:exe -out:Adventures-Server.exe -win32icon:Server/runuo.ico -nowarn:219,414 -d:NEWTIMERS -d:NEWPARENT -d:MONO -reference:System.Drawing
mono Adventures-Server.exe
Unfortunately, I get a serialization error on regarding werewolves (see the old post). You can press Y to delete them and run the server again, however this may cause the server to crash when werewolves are spawned.
If you find a solution to this, please join the Ultima Adventures discord. I tried Alpine, Arch, and Debian with Distrobox and had the same issue each time.
If you just installed and ran the server, type exit to get out the distrobox, then cd to get back your home directory.
Run the following to install TazUO
wget https://github.com/FinalTwist/Ultima-Adventures/releases/download/v2.10/Ultima-Adventures-Client.zip
wget https://github.com/jsebold666/TazUO/releases/download/v3.24.1/TazUO.3.24.1.0.zip
unzip TazUO.3.24.1.0.zip -d tazuo/
unzip -j Ultima-Adventures-Client.zip "Ultima-Adventures/Client/Data Files/*" -d "tazuo/Data Files"
cd tazuo
chmod +x ClassicUO.bin.x86_64
./ClassicUO.bin.x86_64
You’ll get an error about a wrong client version and a pop up about settings.json. If you don’t get the popup, make sure you’re not in the server distrobox. Click OK, then run vim settings.json
Edit these lines:
"ip": "127.0.0.1",
"port": 2593,
"ultimaonlinedirectory": "/home/deck/tazuo/Data Files",
"profilespath": "",
"clientversion": "7.0.15.1",
You can manually run the server by opening Konsole then running:
distrobox enter ultima -- mono /home/deck/Ultima-Adventures/Server/Adventures-Server.exe
After the server is running, create a new tab in Konsole and launch the client:
/home/deck/tazuo/ClassicUO.bin.x86_64
You can make a systemd service to run the server in the background automatically if you want, or just run it from the terminal before you start the client. Press Ctrl-C to stop the server process. Run exit to leave distrobox.
systemd.debug_shellpasswd then type the new password twice.Repeat steps 1-8 and remove the systemd.debug_shell in step 7.