| docs | ||
| server | ||
| source | ||
| index.md | ||
| LICENSE | ||
| linux_compile.sh | ||
| README.md | ||
| wiki.zip | ||
EQ2Emu – Linux Installation & Setup Guide
This guide walks you through compiling, installing, and running an EverQuest II Emulator server on Linux.
🛠️ Pre-Requisites
- MariaDB Server (MySQL is not supported)
- GCC 8 or newer (required for compilation)
Ensure MariaDB is installed and running before continuing.
⚙️ Compilation & Installation
-
Download the Linux compile script:
wget https://raw.githubusercontent.com/emagi/eq2emu/main/linux_compile.sh -
Edit configuration (optional):
LOG_FILE– Path for build logs (defaults to current directory)EQ2EMU_HOME_DIR– Base installation path (defaults to/home/eq2emu)
-
Run the script:
bash -x linux_compile.sh
This will build and install all required binaries.
🗂️ Populating the Database
The server will not start until the game database is populated.
-
Get the latest SQL dumps for:
- World database (
eq2emu.sql) - Login database (
eq2emuls.sql)
- World database (
-
Create two databases:
CREATE DATABASE eq2emu; CREATE DATABASE eq2ls; -
Import SQL data:
USE eq2emu; SOURCE LOCATIONOFSQL_UPDATES/eq2emu.sql; USE eq2ls; SOURCE LOCATIONOFSQL_UPDATES/eq2emuls.sql; -
Create a dedicated user:
CREATE USER 'eq2emu'@localhost IDENTIFIED BY 'eq2emu'; GRANT ALL PRIVILEGES ON *.* TO 'eq2emu'@localhost IDENTIFIED BY 'eq2emu';
🚀 Preparing for First Run
Inside:
/home/eq2emu/eq2emu/server/
1️⃣ Create login_db.ini (from login_db.ini.example)
[Database]
host=localhost
user=eq2emu # your DB user
password=eq2emu # your DB password
database=eq2ls
2️⃣ Create world_db.ini (from world_db.ini.example)
[Database]
host=127.0.0.1
user=eq2emu # your DB user
password=eq2emu # your DB password
database=eq2emu
3️⃣ Create server_config.json (from server_config.json.example)
{
"LoginServer": {
"loginserver": "127.0.0.1",
"loginport": "9100",
"worldname": "TestLabs",
"worldaddress": "127.0.0.1",
"internalworldaddress": "127.0.0.1",
"worldport": "9001",
"locked": "false",
"account": "testlabs",
"password": "testpass"
},
"WorldServer": {
"Defaultstatus": "0",
"webaddress": "",
"webport": "",
"webcertfile": "",
"webkeyfile": "",
"webhardcodeuser": "",
"webhardcodepassword": ""
},
"LoginConfig": {
"ServerMode": "StandAlone",
"ServerPort": "9100",
"AccountCreation": "1",
"webloginaddress": "",
"webloginport": "",
"webcertfile": "",
"webkeyfile": "",
"webhardcodeuser": "",
"webhardcodepassword": ""
}
}
Replace:
- loginserver – IP of login server (e.g.
127.0.0.1) - worldname – Your in-game server name
- worldaddress/internalworldaddress – IP of world server
- account/password – Server account credentials
4️⃣ Create log_config.xml (from log_config.xml.example)
5️⃣ Add Server to the Login Database
USE eq2ls;
INSERT INTO login_worldservers
SET note='',
description='',
name='$WORLD_NAME',
account='$WORLD_ACCOUNT_NAME',
password=SHA2('$WORLD_ACCOUNT_PASSWORD',512);
Replace the variables:
$WORLD_NAME– Your chosen server name$WORLD_ACCOUNT_NAME–accountvalue fromserver_config.json$WORLD_ACCOUNT_PASSWORD–passwordvalue fromserver_config.json
▶️ Running the Server
Both executables must run:
./login &
./eq2world &
Or using screen:
screen -d -m ./login
screen -d -m ./eq2world
🔄 Keeping Up-to-Date
To stay current:
-
Update source code:
git pull -
Rebuild and copy binaries to your server location.
-
Apply the latest SQL updates.
Optional automation script:
wget -cO - https://www.dropbox.com/s/32qqmmviblulhwl/updater.sh?dl=1 > updater.sh
chmod +x updater.sh
./updater.sh
Then apply new SQL files found in SQL_UPDATES.
🧩 Linux Troubleshooting
| Issue | Solution |
|---|---|
cc1plus: error: -Werror=class-memaccess |
Use GCC 8 or newer (gcc -v to check). |
mysql.h missing |
Install libmariadb-dev or edit Makefile: -I/usr/include/mysql in COPTS=$(WFLAGS). |
lmariadbclient missing |
In Makefile, replace -lmariadbclient with -lmysqlclient. |
undefined reference to WorldDatabase::LoadRuleSets() |
Run make clean then make again. |
fmt/format.h not found |
Edit EQ2EMu/EQ2/source/common/string_util.h: change #include <fmt/format.h> → #include <../depends/fmt/include/fmt/format.h>. |
✅ Summary
- Compile with the provided script
- Populate both
eq2emuandeq2lsdatabases - Configure the
.iniand.jsonfiles - Run
./loginand./eq2world
Your EQ2Emu server should now be up and running on Linux.