2026-08-12: Making Your Own EverQuest Server

I have a weird, weird relationship with EverQuest. I didn't play it in its heyday and never experienced it in the way it was truly intended. I instead first played it in about 2019, soloed my way to around level 90 in a very slow slog over the next many months of light play, then moved on when my friend group got sickos mode into Final Fantasy XIV. EverQuest, however, scratches this very particular brain itch I get once in awhile to experience a "MUD but graphical" and I'd long thought of setting something up to play around with it without any commitment or vertical grind wall.

Well I did this yesterday and it turned out to be a process that should have been very easy if not for some giant missing holes in the documentation. So let's try sorting this out so I can show people in the future!

We'll be using the EQEmulator project to get our foundation in place. Ignore everything on this site. What you really want is their more up to date Docs Repo. At the time of this writing their bare metal Linux installer is broken and there is no documentation for it, so we need to look at AkkStack. Its installation guide is here. Following the linked docs will get you most of the way there, but let me condense this a bit.

Server Pre-Reqs

This stuff will run on a toaster at this point, as long as you trim things to lower RAM requirements. I ran mine and played for hours with no issues in 2GB of RAM, about 30GB of storage, and a dual core processor on a miniPC. You'll want about 50GB minimum and probably closer to 100GB for room to grow.

Docker Setup

First you'll need Docker and docker-compose. The method of installing this depends on your Linux distro. Any recent vintage of Docker should work. In Debian and Ubuntu lands you will need to install the Debian Docker repo; in Archlinux you can just install it from the official software repo; for RedHat it's complicated because they really want you using Podman, their own knockoff of Docker. Here's the official docs on installing Docker:

Once you have the Docker packages ready to install, get Docker and Docker Compose. You need both.

Confirm docker-compose is working by doing docker-compose -v and confirming you get a version back and not an error. If you get command not found, you will need to go find where your docker-compose command went. For example in Debian, the docker-compose package shoved this command into /usr/libexec/docker/cli-plugins/docker-compose, where your shell won't find it. You can either add this directory to your $PATH or create a symlink to this location in a directory that is in your path. If you're on a server purpose-built for EverQuest, you can just symlink it like this:

sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose

You will need to substitute where docker-compose actually is, of course.

Finally make sure the Docker services are actually running. systemctl enable --now docker containerd should do it.

Getting and Setting Up AkkStack

Next navigate to AkkStack's GitHub repo and grab the latest. You can do this in one of two ways:

  1. Make a new directory on your server; this will be where you run all server commands so make it somewhere good and possibly a sub-directory of a new user's home directory. eqserver or eqemu or such are good usernames.
  2. cd to this directory
  3. Run git clone https://github.com/EQEmu/akk-stack.git

If git clone returns command not found, you'll need to install git as directed by your distro or use Method 2.

  1. Make a new directory on your server; this will be where you run all server commands so make it somewhere good and possibly a sub-directory of a new user's home directory. eqserver or eqemu or such are good usernames.
  2. Click the green "Code" button somewhere near the top-right of the page
  3. Select "Download ZIP"
  4. Save this ZIP in the directory you created
  5. Unzip the ZIP file with a graphical decompression tool or unzip akk-stack-master.zip

Once done, cd to the akk-stack directory that's created. In here you should see a Makefile; that is the main interface method to the Docker containers and server controls. First we need to initialize some configs. Run make init-reset-env.

Next, we will need to insert into the configs we just created some network settings. You will need an IP address, which should be the IP address assigned to your server. You can get this with the command ip a and looking for an entry that starts with inet. The address you provide here should be an IP address the server actually has; we'll worry about world accessibility later. If your server is on a local network, this IP will likely start with 192.168. or 10. and that's fine. If you're hosting publicly on a VPS or similar, you'll need the public IP.

Run make set-vars port-range-high=7030 ip-address=127.0.0.1, replacing 127.0.0.1 with the IP address you found. This will configure the server to listen on 30 ports, which is more than enough for anything you likely want to do that isn't a big public server.

This will write the last of your settings to the .env file. Stop here and inspect this file. You have a couple things here you can tweak and I recommend it, and some you shouldn't:

Once you're done investigating .env we can begin the bootstrap process for the server.

Ready to go? Run make install. This will take a long time. While you're waiting, you may want to hop down to "Client Setup" and start that process.

Running and Configuration

Once the install is done, run make up to start the server. That should only take a couple of a seconds. Now stop. We're not ready to log in yet. We'll need to log into Spire, the server control panel. If you forgot the password, you can get it with make info. Navigate to the Spire URL which should be port 3000 on your server IP address, log in with the provided credentials. You can do or not do any option below to your liking.

Locking the Server

The first thing you should do is lock the server to new logins. At this particular moment, if your server is on the public internet, a central indexing service may direct players to try to log in to your server and, by default, any new login will get an account created for it.

We'll fix this soon but for now lock the server by clicking the "Server Admin" option on the left side of Spire then clicking the green "Unlocked" link in the top-left of this page. It will change to a red "Locked". Now we can work without worrying about someone finding the server and logging in.

Renaming and re-IPing the Server

The server name is only displayed in a couple places and doesn't really matter, but it's nice to change. In the Server Admin listing in Spire, click "Configuration" on the left menu, then "Server Config".

You can change your server name in this first tab, then click Save.

The second tab "Networking" allows you to define a public and a LAN IP for your server. If you are using port forwards to let people outside your network talk to the server, the public IP should be your actual ISP-provided IP address and your Local Address should be your LAN IP.

Don't forget Save again.

Not Telling the World Your Server Exists

By default, this entire ball of wax tells a central server run by the EQ Emulator project about your server and tries to let people log into it. You may not want that.

From the "Server Config" section navigated to above, look at the Loginserver 1 thru 5 tabs. Blank all settings in all of them. This will make the server stop telling the central login servers when your server is up. But now you will need to run your own loginserver.

First, for Loginserver 1, specify 127.0.0.1 port 5998. Leave all the other fields blank. Save.

Next, you will need to make sure loginserver starts when your server is brought up. Go back to "Server Admin" and click the green "Online" at the top of the page. Select "Power On" and check "Run Loginserver (Optional)". You can cancel this box now, checking this should be all that's required.

It actually took me awhile to find the button for this; I was running it by hand for a day or two, heh.

Experience Rates

Let's turn experience gain rates up next. Open Spire and on the right side click "Server Admin". Then click "Configuration" and finally "Server Rules".

You'll get this giant database looking form. You can tweak almost everything about the server from here. It's pretty neat.

Search in "Search rules..." for "FinalExpMultiplier". This should only give you one result: Character:FinalExpMultiplier. Set this to whatever you want. It defaults to 1 and is a direct multiplier to experience gains. If you've ever played a Ragnarok Online server you may be familiar with EXP Rates; RO would have 1x, 3x, 10x, 500x, etc servers.

Once you hit enter this will live-update.

Mana Regen Rates

One of EQ's big things was "ticking", or regenerating resources. If you're playing solo, you may not want to do this because there's no one to socialize with while sitting and drinking. However, mana management in battle is an important skill so changing it changes the difficulty of the game. How you handle this is up to you and your tastes. I cranked mana regen up.

Get into the Server Rules page as indicated in the section above and search for "ManaRegen". This will give you four options. You want Character:ManaRegenMultiplier, which will directly impact your mana regen as a percent. This will also impact bots, which we will discuss shortly. This defaults to 100; I set it to 1000 to give me 10x mana regen. This is, unfortunately, in and out of combat. I would have preferred to crank up only my out of combat regen.

Alas.

You can also shorten your time before out of combat regen activates at Character:RestRegenTimeToActivate.

Enable Bots

Bots are an option for creating AI party members so you don't have to solo. They're kind of over-tuned, coming about as powerful as they can possibly get at any given level, but are kind of not very smart. You can freely create bots and fill your party out with as many as you want to create an easier or harder experience. To use them they have to be enabled first; we'll discuss actually using them soon.

To enable bots, make sure your server is up (you ran make up right?), then run make bash to get a shell inside the server Docker container.

Next input s to automatically cd to the server directory. Or just cd server. Either works.

Finally run bin/world bots:enable. This will grab bot code from GitHub and install it. That's it! Type exit to get out of the Docker container.

You will need to restart the server to apply the change, but we'll be doing that soon if you're following this linearly.

If you're running a solo server, and you're on a box with constrained RAM, you may want to crunch down how many zones are kept live in RAM at all times. Keeping popular zones like Plane of Knowledge in RAM is a good idea on a server where people are constantly moving in and out of those zones, but on a solo server it's not a big deal. You get a little more loading screen when moving to those zones.

By default a bunch of zones are kept in RAM to the tune of 50-100MB of RAM per zone. If your RAM situation is fine, leave it! If not: Go to "Server Admin" in Spire and click the green "Online" at the top of the page. Select "Power on". In the Static Zones box you can uncheck any zone you don't want to be kept up statically.

I've found this works kind of funky though. The static zone system seems to demand at least one zone be static. If you can't get a static zone server to stay down for a zone, try leaving one zone static that isn't very RAM intensive. Plane of Knowledge (poknowledge) is a good choice for a static since you'll definitely be going there once in awhile, but it's one of the bigger zones.

While here you can also play with the "Min Zone Processes" setting. This is how many zone servers are kept up in addition to what's static and in use. You can probably crank this down to 2 or 3 on a small server and be fine. Setting it to 0 makes the server substitute in 10. 10 is fine for almost all cases.

Once you've changed things here you can kill any zone server you don't want by going to the "Zone Servers" list and clicking the red power button on those zones. Make sure no one's in them first!

Final Restart and Putting Live

After you've done everything you want to do and change, you will need to restart the server from the Makefile/Docker control to apply some of these changes.

Go back to your shell and run make restart, or you can do make down, wait a couple seconds, then make up. Either works. This is necessary to apply loginserver, bot, etc changes.

When the server comes back up, go back to Spire, click "Server Admin" and verify Spire, World, Zone, and UCS are all online. If you set up a local loginserver, make sure it is online. Unlock the server if it's locked by clicking the red "Locked" in the top bar.

Now you're ready for logins!

Client Setup

This is, unfortunately, about as involved as setting up a very basic server.

First, let's talk about clients. EverQuest is like 30 damn years old and has received major updates a million times. We're talking network protocol changes, architecture changes, zone additions, etc. To play on a private server you need the client that server is expecting you to use.

For almost all private servers that is what the community calls "RoF2". That is the 2nd version of the client shipped with the "Rain of Fear" expansion.

You will find, if you're trying to go get this client now, that no one willingly hosts or links to it. That's because Sony/Daybreak have decided, since this is the client that can play on private servers, that they're going to make it hard to find through a combination of removing it from their repositories and enforcing copyright on it. It's one of the inroads they previously used to attack Project 1999, a popular private server.

I also will not directly link to it, but I will point out that Archive.org seem to not be dissuaded by the copyright grounds around it. It's an 8.3GB download and the servers are typically slow; I hope you took my advice and started on this while your server was bootstrapping!

Once you have this and have extracted it, do not launch it. Instead, create a shortcut to eqgame.exe and add to argument patchme. This is a "secret" argument that tells the game it was patched, or does not want to be patched. If you just try to run eqgame.exe directly, it will complain that you didn't launch it through the patcher. Only launch through this shortcut.

Next, open the directory you extracted this 8GB mess to and find eqhost.txt. That file should look like this, plugging in your loginserver IP address for the 127.0.0.1.

[LoginServer]
Host=127.0.0.1:5999  

Now, finally, you're ready to launch the client. Use the shortcut.

If you did not change any settings on the server, any login attempt should work and auto-create an account for you, then you should get the server list, with only your server on that list.

Patching the Client for AMD CPUs

If you got this far and you're on a recent model AMD CPU on your client system, you'll notice a problem here: the framerate may be awful and the "Create Character" button doesn't work. This client is so old it doesn't handle modern CPUs well. It needs to be patched with a fan patch.

This patch fixes the problem by changing how EverQuest handles timing and threading. I loathe just grabbing some random DLL off GitHub but it looks to work okay and safely. If you want the exact release I used it's this one.

Grab that DLL and put it in the EverQuest directory, overwriting the old one. Now relaunch the game and it should work.

Bots and You

If you enabled bots, you'll need to know a bit about how they work. Bots are assigned to a character and can be summoned to party with you at any time. They use a special command syntax.

Once you're in, you command the bot system by using the chat box. Start with ^botcreate help to get a pop-up box explaining how to create bots. You will need a numeric code for class, race, and gender. Most people will want a tank, so as an example the command to create a female Barbarian Warrior named Tanky is...

^botcreate Tanky 1 2 1  

You can then put this bot in the world with ^botspawn Tanky. She'll appear at which point you can click her and /invite to get her in your party.

You can do this with many bots until you fill a party or even a raid! Without direction they will.... mostly... behave like their class/role dictates. Tanky here will taunt things out of the box. If you create a Cleric she'll heal party members. Everyone will buff with important buffs.

You may find, however, that they are very responsive and spawn very strong for their level at first. I recommend not running a full party of bots; you'll probably just slaughter the open world. Bring a tank or a healer and add more if you have trouble.

Bots spawn at your level. If you level up you can drag them up to your level with ^botupdate. They will automatically, magically learn skills and spells once their level is adjusted.

Bots also spawn with no gear. To give them stuff you can drag items onto them. If you pop an item you can't trade, you can force the item to be given to them by targeting them, picking it up into your cursor, then issuing ^giveitem. I think they will just blindly equip anything you give them, then give back anything you replaced. In exchange for the power of having a party on demand, you have to outfit them. They will never get their own gear.

Next, ^pull will instruct your bot party to find the most appropriate character for pulling and go pull your target. I'm playing a ranger so I'm the one pulling in my "group" but this could be useful if you're not. If you're pulling and bots keep running up behind you, you can use ^guard spawned to put them in place and pull things back to them. You can use ^guard clear spawned to unroot them.

Moving Around fast

If you're already giving yourself bots, a ton of mana regen, and maybe even an EXP multiplier, the next QoL improvement is zone traversal.

I really recommend you find your zones organically the first time if you're not familiar with EverQuest. One of the bigger joys in wandering around in EverQuest is... the wandering around. Having to pass through weird different zones to get to the spot you want to farm or quest or whatever. But after the first time you may just want to Go There.

#zone <zonename> does this. For example #zone poknowledge will zort you to the safe point in the Plane of Knowledge. Figuring the codename might require some searching, but once you know it you can just Go There.

You might have to make yourself a GM for this to work; I made myself a GM before I started using it. Unfortunately that requires a SQL query. See below.

Making yourself a GM

There's no easy way to promote someone to GM in Spire or the command line tools. Not that I found anyway. I had to edit the database directly. I'll try to keep this as simple as possible.

First get your account name. It's the name in the login form. That should be easy :)

Next run make mc to run the MariaDB (MySQL) console. Now issue this command, plugging your account name in for ACCOUNTNAME:

UPDATE account SET status = 255 WHERE name = 'ACCOUNTNAME';

This will zap your account up to full owner/GM status. With this power you can change things by just connecting to the game and running the commands, so give it out with caution.

In game you activate GM power with #set gm on, and can then use GM commands. Run #set gm off to turn the GM power off. There's a rough list of GM commands here.

Downtime and Restarting

The docker containers are configured to auto-restart any service that goes down, so Spire's power on/power off commands don't really work as expected. That said, all the data is stored in the DB so it should be safe to simply use make down to bring the entire stack down. You can use Spire's restart/power off tools to announce shutdowns and such.

Making the entire thing come back up if the host reboots is a bit of a tribulation that requires using systemd to create a specific service that runs make up, or building your own container management. That's outside the scope of this by about a parsec. If you're doing that, you're moving out of the realm of a private play-around box and looking at seriously hosting a server.

And frankly I don't know enough about all this to advise on that.

Epilogue

That's a lot... I said it was simple but there's a lot of fiddly bits. Really if you just want to muck around with EverQuest for a day or three just blatting the akkstack repo out and running it with no changes works. If you want something to keep around to play more concertedly in a small group, this should hopefully get you most of the way there.

I'll update if things change much as I fool around with it.

tags: tech, everquest