[Show Table of Contents]

You can create this on a bare metal machine by skipping "Creating the VM" and "VMware Tools Install" steps.

This will take about 1.5-3 hours depending on your skill level with Linux and the power of the host machine.

Thanks to all the posters of linux and windows guides where a lot of this info came from.
Much came from Sikkun's guide "Debian Linux Install Guide 5/28/2011"

I made some custom one line scripts as well as modified some of the steps to make the process a little easier.

This guide's forum post is here:

You can use either vSphere 4.x or 5.x.

For connecting to a Linux OS remotely from a Windows machine via SSH use Putty, SecureCRT, etc. For transferring files via SFTP or SCP, use WinSCP, PuttySCP or PuttySFTP, SecureCRT, SecureFX, etc.

§Setting Up Your Accounts

  • This assumes that you do not already have both Client and World Server accounts setup, you can skip this section if you do.

§Getting your Client Login Account

  1. Go to the Main Page of EqEmu http://www.eqemulator.org∞
  2. Click on the Loginserver Accounts link.
  3. Click on Create New LS Account
  4. Create your Client account. The username and password is needed for logging into the server.

§Getting your Server Login Account

  1. Go to the Main Page of EqEmu http://www.eqemulator.org∞
  2. Click on the Loginserver Accounts link.
  3. Click on Create New Worldserver Account
  4. Create your Server account. The username and password is needed for your config file.

§Preparing to Build a New Server

§Get the Debian 6 ISO

The revision at the time of this guide was 6.0.3

  1. Download the Debian 6 i386 netinst CD image from http://www.debian.org/releases/stable/debian-installer/∞
  2. Upload the ISO to your ESX host.

§Static DNS Entry

  • Create a static DNS entry ahead of time for your new EQEmu VM. If you do not have a DNS server of your own you can edit the host files as needed.

§Router Setup

Setup your router to forward the following protocols and ports to your server:

  • UDP 7000-7100
  • TCP & UDP 9000

§Creating the VM

  1. Right click your ESX host and create a new VM
  2. Use the Typical option
  3. enter the host name
  4. Select desired datastore
  5. Choose Linux and select Debian 6 (32-bit)
  6. You need one NIC with E1000 (Debian won't recognize the VMXNET3 adapter)
  7. Change storage to 100GB with Thin Provision
  8. Select Edit the virtual machine settings before creating option
  9. Change memory to at least 6GB
  10. Change CPU to at least 2 virtual sockets and 2 cores per socket
  11. Point then DVD to your Debian 6 32 bit ISO and select connect at power on
  12. Remove the floppy drive
  13. Click finish and power on VM when the process completes.

§OS Installation

  1. Right click your VM and open a console or click on the console tab
  2. Choose Install
  3. Choose your language
  4. Choose your country
  5. Choose your keyboard layout
  6. Enter host name
  7. Enter domain
  8. Enter root password
  9. Enter full name for user; EQEmu
  10. Enter username; eqemu
  11. password for eqemu
  12. Choose your timezone
  13. hit return on partioning
  14. hit return on disk to partition
  15. hit return on finish partitioning
  16. Write changes to disk? tab to yes and hit return (this took a few minutes)
  17. Wait for it to install the base system...
  18. Select your country
  19. Select the default which should be ftp..debian.org
  20. Configure your proxy if you need to
  21. Select no on the package survey
  22. Package Install
    1. De-select the Graphical Desktop Environment
    2. Select SSH Server
    3. Select Standard system utilities
  23. Hit enter on grub loader; yes
  24. Hit enter on fishing the installation; Continue

§Post Install

  1. Login as root through the console
  2. Verify that your interface is static
    1. more /etc/networks/interfaces
  3. If the iface eth0 says iface eth0 init dhcp, configure it for static
    1. edit /etc/networks/interfaces with your favorite editor
    2. change iface eth0 init dhcp to (change the information for your network)
iface eth0 inet static
  • Exit and save
  • Update apt DB
apt-get update
  • Install packages for Higher Memory Support, VMware Tools, and EQEmu
apt-get -y install linux-image-2.6.32-5-686-bigmem linux-headers-2.6.32-5-686-bigmem make
  • reboot once its done

§VMware Tools Install

  • Right click your VM, select Guest, and then Install/Upgrade VMware Tools
  • Login as root to your VM via SSH
  • Mount your cdrom:
mount /dev/cdrom /mnt
  • Copy the tools to root's home directory, extract, and run (change the version to match):
cp /mnt/VMwareTools-.tar.gz ./
tar -zxvf VMwareTools-.tar.gz
./vmware-tools-distrib/vmware-install.pl -d
  • Once it has completed, remove the archive and directory:
rm VMwareTools-.tar.gz
rm -rf vmware-tools-distrib
  • reboot

§EQEmu Installation

§Packages for EQEmu

  1. Login as root to your VM via SSH, from now on everything is done via SSH.
  2. Install the needed packages.
    apt-get -y install gcc g++ make libio-stringy-perl libperl-dev unzip mysql-server subversion libmysqlclient-dev
  3. Enter a password for MySQL root

§Getting the Sources

  • Su to eqemu
su - eqemu
  • Create the needed directories:
mkdir eqemu source peq server maps quests
  • Grab the SVN's:
svn co http://projecteqemu.googlecode.com/svn/ eqemu
svn co http://projecteqdb.googlecode.com/svn/trunk/peqdatabase peq
svn co http://projecteqquests.googlecode.com/svn/trunk/quests quests
svn co http://eqemu-maps.googlecode.com/svn/trunk/ maps


§Compile EQEmu

  • Still as eqemu:
  • Change to the source dir and copy the EQEmuServer to your source dir
cd source
cp -r ../eqemu/trunk/EQEmuServer/* ./
  • If you want Bots, now is the time:
    • Edit zone/makefile and add -DBOTS to DFLAGS.
    • Edit zone/makefile.common and add both bot.o and botspellsai.o
    • Edit world/makefile and add -DBOTS to DFLAGS.
  • Compile the code

You will see many warnings... don't panic...
If make stops with an error, then you can panic. Trace the steps and correct what you missed.

§Copying and Linking Files to the server Directory

  • Go back to root:
  • Copy libEMuShareMem to lib dir:
cp /home/eqemu/source/EMuShareMem/libEMuShareMem.so /usr/lib/
  • edit /etc/sysctl.conf and add a new line with your favorite editor:
kernel.shmmax = 134217728
  • Save, exit, and chmod
chmod 444 /etc/sysctl.conf
  • Execute sysctl to effect the changes
/sbin/sysctl -p
  • Su back to eqemu
su - eqemu
  • Change to server dir, copy and create links
cd server
cp -r ../source/utils/defaults/* ./
cp ../source/utils/patch_* ./
cp ../source/utils/opcodes.conf ./
cp ../source/utils/cleanipc ./
cp ../source/world/world ./
cp ../source/zone/zone ./
cp ../source/eqlaunch/eqlaunch ./
rm -rf Maps plugins quests
ln -s ../maps Maps
ln -s ../quests/plugins plugins
ln -s ../quests quests

§Database Setup

  • Still as eqemu:
  • Unzip the database changing the rev number to yours:
cd /home/eqemu/peq
gunzip peqdb_rev.sql.gz
  • Remember the rev number... You are going to need it.
  • Create a file called sourceme putting the following lines in changing the rev number to match your file remove the bots line if you did not compile bots:
create database peq;
use peq
source peqdb_rev.sql
source load_player.sql
source load_bots.sql
  • Then run:
mysql -u root -p < sourceme

Take a break. This is going to take a few minutes... This is why the few commands were scripted 

§Database Patching

  • Ok.. time for the last part of the database...
  • Still as eqemu:
  • Change to the source sql directory:
cd /home/eqemu/source/utils/sql/svn
  • Create a new filed called sourcesql and add use peq to it:
echo "use peq" > sourcesql
  • Run this command and change 2083 to whatever version your database rev number. My version was 2083.
ls -la [0-9]* | tr -s " " | cut -d " " -f9 | sort -n | awk -F'_' '$1 >= 2083' | sed  's/^/source /' >> sourcesql
  • Remove the duplicates and create the sourceme file:
cat sourcesql | uniq > sourceme
  • Source it in with mysql:
mysql -u root -p < sourceme

If you get errors, search the forums to see if you need to correct them or not.

§EQEmu Setup

  • Edit Your Config file
  • Still as eqemu:
  • Change to the server directory, rename to default config, and copy the full config
cd /home/eqemu/server
mv eqemu_config.xml.bak
cp eqemu_config.xml.full eqemu_config.xml
  • Edit eqemu_config.xml with your favorite editor
    • In the world section change the longname and short name to your EQ world name.
    • In the world, loginserver section put your loginserver username and password.
    • In the world section change the key to a string for your launcher.
    • In the zones section change the defaultstatus to 0
    • In the database section, change username and password to your mysql credentials.
    • In the database section, change db to peq.
  • Save and exit

§Create your Server start and stop files

  • Still as eqemu
  • Change to your server directory
cd /home/eqemu/server
  • Create your start by copying and pasting into your terminal:
cat > start << EOD6
# Auto generated by EQEmu Installer v$EQEMU_INSTALLER_VER on $EQEMU_INSTALL_DATE

# Include our configuration.
#source eqemu.conf

#ulimit -c 99999999

# Start the login server.
if [ \$USE_LOGIN_SERVER ]; then
  ./EQEmuLoginServer 2>&1 > logs/loginserver &

# Remove any shutdown files.
rm -f .zone_shutdown
rm -f .world_shutdown

# Print commands and their arguments as they are executed.
set -x

# Launcher name.
if [ "\$1" = "test" ]; then

# Set our library path.

# Make sure we have a place to log.
mkdir -p logs 2>&1 > /dev/null

# Clear out old logs, if both are stopped.
if [ ! -e .lock-zones -a ! -e .lock-world ] ; then
  for f in logs/eqemu_*.log
    # Keep the commands_zone log.
    if [ "\$f" = "logs/eqemu_commands_zone.log" ]; then
    rm -f \$f

# Boot up world.
if [ ! -e .lock-world ] ; then
  # Create our lock file.
  touch .lock-world
  # Determine how to run the world server.
  if [ \$USE_PERSIST_WORLD ]; then
    ./persist_world 2>&1 > logs/world &
    ./world 2>&1 > logs/world &
  # wait for shared memory to load
  sleep 15

# Start up the official launcher.
if [ ! -e .lock-launcher ]; then
  # Create our lock file.
  touch .lock-launcher
  # Launch!
  ./eqlaunch \$LNAME 2>&1 > logs/launcher &

# Determine if we should start the chat server.
if [ \$USE_CHAT_SERVER ]; then
  ./chatserver 2>&1 > logs/chatserver &

# Determine if we should start the mail server.
if [ \$USE_MAIL_SERVER ]; then
  ./mailserver 2>&1 > logs/mailserver &
  • Create your stop by copying and pasting into your terminal:
cat > stop << EOD7
# Auto generated by EQEmu Installer v$EQEMU_INSTALLER_VER on $EQEMU_INSTALL_DATE

# Include our configuration.
#source eqemu.conf

# Create our shutdown files.
touch .zone_shutdown
touch .world_shutdown

targets="world eqlaunch zone"

# Login Server Check
if [ \$USE_LOGIN_SERVER ]; then
  targets="\$targets EQEmuLoginServer"

# Chat Server Check
if [ \$USE_CHAT_SERVER ]; then
  targets="\$targets chatserver"

# Mail Server Check
if [ \$USE_MAIL_SERVER ]; then
  targets="\$targets mailserver"

killall \$targets

# Small pause here.
sleep 3

# If world/zone/eqlaunch is stuck we'll 'kill -9' them here.
if ps ax | grep -e 'w[o]rld' -e 'z[o]ne' -e 'eq[l]aunch' > /dev/null; then
  killall -9 world zone eqlaunch
  sleep 2

# Run our IPC cleaning.

# Remove any lock files.
rm -f .lock-zones .lock-world .lock-login .lock-launcher
  • Create your persist_world by copying and pasting into your terminal:
cat > persist_world << EOD8

#ulimit -c 99999999

while true
  ./world "\$@"
  if [ -r ".world_shutdown" ]; then
    exit 0

  echo `date` " - World crashed." >> crashlog
  sleep 2
  • Make start, persist_world, and stop executable:
chmod 750 start
chmod 750 persist_world
chmod 750 stop

§Copy Spell Files

  • Copy your spells files from your EverQuest game folder to your eqemu folder.
  • spells_en.txt
  • spells_us.txt

§Starting and Stopping Your New Server

  • Thats it, startup your server and login with your player account. It is best to use the eqemu account to start the server.
  • Starting
su - eqemu
  • If you get errors, then you missed something, trace your steps through the guide and fix anything you missed. Otherwise search the forums.
  • Stopping
su - eqemu


  • You can edit your database after you logged in to set your account to server admin, by changing the status to 200 on your account.
mysql -u root -p
use peq
UPDATE account SET status=200 WHERE name='youraccountname';
  • You can increase the number of zones that can be active at a time, the default is 5;
mysql -u root -p
use peq
UPDATE launcher SET dynamics=5 where name='zone';
  • It is highly recommended that you harden your Linux VM using iptables and such.