This is an automated archive made by the Lemmit Bot.
The original was posted on /r/steamdeck by /u/hard0w on 2025-11-19 13:42:05+00:00.
I ended up setting up a full local AzerothCore 3.3.5a server (with MySQL + playerbots) inside a rootless podman/distrobox container.
With controller support through ConsolePortLK + WoWmapperX, the whole thing actually runs great on the Deck, and I can play WotLK anywhere like it’s 2009 again.
I didn't want to run shady repacks, thats why I did this. :)
If anyone else is interested, here is my Guide:
- Get yourself a clean WoW 3.3.5a Client. Google will help you with that, if you don't have one.
- Set a root password.
This can be done with passwd. I recommend editing the sudoers file, so you don't have to type in any password.
If you've set the root password, type in sudo visudo and add the line
deck ALL=(ALL) NOPASSWD: ALL
after that you can use sudo passwd -d deck to remove the password.
Now you can use sudo without a password, which I normally don't recommend, but the onscreen keyboard makes it really annoying to type it in.
3. We can start with installing distrobox and podman rootless, so it doesn't get wiped with the next steamos update.
To keep it simple for me, you can use this guide:
https://distrobox.it/posts/steamdeck_guide
Just follow the steps until they want you to create a container. Stop there and don't create it.
- We're ready to start creating the container for azerothcore. For my own laziness, I've installed boxbuddy via discover flatpak. If you know how to use distrobox, you don't need to use boxbuddy. Create a new box in boxbuddy, name it azerothcore, select the newest Ubuntu release, and use your home directory as home. Start the box and let it do it's thing until you get the shell for deck@azerothcore.
- Now we install all dependencies for AzerothCore inside the container. Instead of listing everything manually here, just follow the official Linux requirements page and copy the ubuntu command:
https://www.azerothcore.org/wiki/linux-requirements
Make sure to add nano or vim as package, so we don't have to install it later.
- After all your packages are installed we can move on to compiling azerothcore.
The playerbots module needs a specific azerothcore fork so it compiles without errors.
Clone the project like this:
git clone https://github.com/mod-playerbots/azerothcore-wotlk.git --branch=Playerbot /home/deck/azerothcore
Go inside the cloned repos modules dir:
cd azerothcore/modules
And clone the mod repo like this:
git clone https://github.com/mod-playerbots/mod-playerbots.git--branch=master
After you've cloned these things we go on to compile azerothcore, so if you need more mods, you can look them up here.
Adding mods requires to rebuild the project.
Now move to the azerothcore dir with:
cd ..
In here you'll need to make a new directory named build.
mkdir build && cd build
Now we need to configure cmake with this command:
cmake ../ -DCMAKE_INSTALL_PREFIX=$AC_CODE_DIR/env/dist/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=all -DSCRIPTS=static -DMODULES=static
And then build it with
make -j8 && make install
This will take a while. But we can continue with the SQL dbs and the systemd unit files.
- SQL stuff
sudo systemctl enable mysql
sudo systemctl start mysql
sudo mysql
Now you're in the mysql shell, start by adding new DBs with
CREATE DATABASE acore-world;
CREATE DATABASE acore-auth;
CREATE DATABASE acore-characters;
CREATE DATABASE acore-playerbots;
Now we need to create the acore user, the default azerothcore config uses acore as password. So we'll take that:
CREATE USER 'acore'@'127.0.0.1' IDENTIFIED BY 'acore';
We need to grant permissions to the DBs.
GRANT ALL PRIVILEGES ON acore-world.* TO 'acore'@'127.0.0.1';
GRANT ALL PRIVILEGES ON acore-auth.* TO 'acore'@'127.0.0.1';
GRANT ALL PRIVILEGES ON acore-characters.* TO 'acore'@'127.0.0.1';
GRANT ALL PRIVILEGES ON acore-playerbots.* TO 'acore'@'127.0.0.1';
FLUSH PRIVILEGES;
You can exit the mysql shell by typing exit. Now we can start by adding the unit files for systemd, so the server starts automatically by entering the distrobox.
- Unit Files
We create the unit files inside the distrobox, so stay in the azerothcore box shell.
We'll need to create two files, use your fav text editor. I'm using vim.
So:
sudo vim /etc/systemd/system/ac-authserver.service
And paste this inside the file:
[Unit]
Description=AzerothCore Authserver
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=deck
WorkingDirectory=/home/deck/azerothcore
ExecStart=/home/deck/azerothcore/acore.sh run-authserver
[Install]
WantedBy=multi-user.target
And the second file like this:
sudo vim /etc/systemd/system/ac-worldserver.service
With these contents:
[Unit]
Description=AzerothCore Worldserver
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=deck
WorkingDirectory=/home/deck/azerothcore
ExecStart=/home/deck/azerothcore/acore.sh run-worldserver
[Install]
WantedBy=multi-user.target
Save this too. Now we have nearly everything ready for the server stuff.
- If azerothcore is compiled and installed we can now move on.
First of all, download these
files and put them into your azerothcore/env/dist/bin directory.
cd into /home/deck/azerothcore and execute:
./acore.sh run-worldserver
Now wait until everything is set up and you get a prompt for commands.
Here we'll create your user account. I used admin admin for laziness. account create admin admin
For GM security level use
account set gmlevel admin 3 -1
Exit the server by using ctrl+c.
Let's enable the systemd services with:
sudo systemctl enable ac-authserver.service
sudo systemctl enable ac-worldserver.service
sudo systemctl start ac-authserver.service
sudo systemctl start ac-worldserver.service
stop the box in boxbuddy and close the shell.
- WoW client modification.
Now head inside the WoW 3.3.5a client directory, go to Data/enUS and edit the reamlist.wtf, change it to set realmlist localhost.
We'll need the ConsolePortLK AddOn and WoWmapperX (thanks u/leoaviana)
ConsolePortLK
WoWmapperX
take the latest release.
Put the consoleportLK directories inside /Interface/AddOns in your Client directory. Extract the WoWmapperX files inside your wow client root directory.
- Adding to steam.
For now I haven't made a single executable file, so we need to add 2 local games to steam. Well start with the Client:
Add the WoWmapperX.exe to steam and edit the launch parameters like this:
-nogui -noconsole -rg:/path/to/wow/exe -term
Make sure you use the right path to the wow.exe.
You can also rename the steam shortcut to WoW Client instead of WOWmapperX.exe
Now we'll add the server:
In your start menu, look for konsole and right click, add it to steam.
your steam library navigate to konsole and open the properties.
Rename it to WoW server, and add the launch options:
-e bash -c "distrobox-enter azerothcore; exec bash"
- Testing and some notes/issues etc.
If your distrobox is stopped you can return to gaming mode.
Start the server first, the console will spam you with LD preload stuff, just ignore that.
If the shell of the distrobox opens up, you can now switch to your library and start the wow client.
Login with admin admin or whatever you've used.
Configure ConsolePort and have fun.
Make sure to exit and stop the distrobox before closing the server terminal, or your container state gets improper. Down below is a fix.
If you get the message that the container state is improper, go to /var/tmp and delete the podman_static directory.
If your container is suddenly gone, try the podman migrate command.
- Have fun, configure and so on.
Check out the azerothcore website and this git repo if you want to modernize your client.
Notes:
I'll try to keep this Guide updated, with stuff I'm currently working on, like a single executable. Sorry for my bad english, not a native speaker.
It runs with 500 bots at ~50% CPU usage. If someone manages to run it more efficiently, please let me know.
Ressources:
https://www.azerothcore.org/
https://distrobox.it/
https://github.com/leoaviana
Edit: fixed typo and links