Сорок два
Administrator
Complete Server Installation and Operations Guide
Server revision 390809 / data revision 391095 — client network version 8455
This guide replaces the unfinished installation notes originally published in 2020. It documents the historical Allods Online 4.0.02.42 server package using a current, reproducible Windows + WSL2 workflow. It covers only the public server package and its matching client.
This is a preserved legacy server, not a modern application. It requires its bundled Java 7 runtime, legacy MySQL/PostgreSQL compatibility, version-matched game data and a client using network version 8455. Do not replace components with files from 3.0, 4.0.01, 4.0.03, 4.2 or another branch merely because their names look similar.
Contents
- 1. What changed since the 2020 guide
- 2. Package identity and architecture
- 3. Hardware and software requirements
- 4. Prepare Windows, WSL2 and Docker
- 5. Extract and verify the release
- 6. Understand the directory layout
- 7. Install and initialize the databases
- 8. Verify the game resources
- 9. Configure addresses and service files
- 10. Start the core server
- 11. Create an account
- 12. Configure and launch the client
- 13. Daily operations and logs
- 14. Optional Log Server and GameTool
- 15. Backups and security
- 16. Troubleshooting
- 17. 3.0 and 4.0 differences
- 18. Final validation checklist
1. What changed since the 2020 guide
The original draft required Ubuntu 16.04, a MATE desktop, XRDP, OpenJDK 7 from an obsolete repository, PostgreSQL 9.3 from the host package manager, Apache, PHP and phpMyAdmin. That approach is no longer recommended.
- Use Windows 10/11 with WSL2 and a current Ubuntu distribution.
- Run the server from the Linux filesystem, for example
~/allods40. - Use the Java 7 runtime already included under
vendors/Java. - Run the legacy databases in isolated Docker containers.
- Install no graphical desktop on the server.
- Install no Apache, PHP or phpMyAdmin for the core game server.
- Keep Log Server and GameTool disabled unless they are explicitly needed.
Ubuntu 16.04 and its repositories are end-of-life. Commands such as apt install openjdk-7-jdk or apt install postgresql-9.3 are no longer reliable on a current installation. Installing a newer Java release is not an equivalent replacement because this server still uses Java 7-era JVM options and libraries.
2. Package identity and architecture
| Property | Expected value |
|---|---|
| Public version | 4.0.02.42 |
| Runtime revision | 390809 |
| Game-data revision | 391095 |
| Client network version | 8455 |
| Client/account protocol | 73 |
| Account/frontend protocol | 48 |
| Bundled Java | Oracle Java 1.7.0_03, Linux x64 and x86 builds |
| Primary game database | MySQL allods_online_RC_4_0_02 |
| Account database | PostgreSQL allods_account_RC_4_0_02 |
The core service flow is:
Matching 4.0.02.42 client
|
+--> Account Server :9340
| |
| +--> PostgreSQL: allods_account_RC_4_0_02
|
+--> Shard frontends :9322-9325
|
+--> Master Server :9513
+--> Billing Server :9320
+--> Item Mall Server :9321
+--> MySQL game databases
The folder may be labelled “Server 4.0”, while community posts sometimes call the package “4.2” because the full build is 4.0.02.42. For compatibility decisions, use the complete version 4.0.02.42 and network version 8455, not the folder name.
3. Hardware and software requirements
3.1 Recommended core-server host
- Windows 10 or Windows 11 x64.
- WSL2 with Ubuntu 22.04 or 24.04.
- Docker Desktop with WSL integration, or a native Docker Engine inside Linux.
- 8 CPU threads or more.
- 16 GB RAM available to Windows/WSL for the core stack.
- At least 30 GB free SSD space for extraction, databases, logs and temporary files.
Practical core minimum: 12 GB can work with a reduced map list and no optional tools, but paging and long map-loading pauses are likely.
3.2 Host with Log Server and GameTool
The historical 4.0 launchers request up to approximately:| Component | Historical heap settings | Operational effect |
|---|---|---|
| Shard | -Xms4096M -Xmx4096M in the original launcher | The main game process can consume several gigabytes while maps are loaded. |
| GameTool | -Xms1024m -Xmx4048m | Resource loading, JBoss and ETL add native and filesystem-cache usage beyond the heap. |
| Log Server | -Xms4048m -Xmx6048m | The original profile alone reserves about 4 GB at startup. |
Use at least 24 GB RAM for the complete stack with GameTool and Log Server; 32 GB is preferable for comfortable first-time initialization. Do not enable these tools by default on a 12–16 GB host.
4. Prepare Windows, WSL2 and Docker
4.1 Enable WSL2
Open PowerShell as Administrator:wsl --install -d Ubuntu
wsl --set-default-version 2
wsl -l -v
The Ubuntu distribution must show version
2. Restart Windows if requested.4.2 Allocate enough memory to WSL
Create or edit%UserProfile%\.wslconfig on Windows.[wsl2]
memory=16GB
processors=8
swap=8GB
For GameTool and Log Server, increase
memory to 24 GB or more if the physical host permits it. Never allocate all physical RAM to WSL.Apply the change:
wsl --shutdown
Restart Docker Desktop afterwards.
4.3 Install only the useful Linux packages
sudo apt update
sudo apt install -y ca-certificates curl p7zip-full unzip dos2unix procps iproute2 net-tools
MATE, XRDP, Oh My Zsh, pgAdmin and a graphical session are optional personal conveniences. They are not server dependencies and consume memory that the Shard can use.
4.4 Verify Docker
docker version
docker compose version
If Docker commands fail inside Ubuntu, enable WSL integration for this distribution in Docker Desktop.
5. Extract and verify the release
Download the Allods Online 4.0.02.42 server package from Allods Developers Community. Use the matching client release linked from the same community release topic.Create a destination on the Linux filesystem:
mkdir -p ~/allods40
cd ~/allods40
Copy the downloaded server archive into Ubuntu or extract it directly. Examples:
7z x /mnt/c/Users/YOUR_WINDOWS_USER/Downloads/Allods-Online-4.0-Server-ADC.7z -o$HOME/allods40
cd ~/allods40/Allods-Online-4.0-Server
If your archive uses another name, adjust only the archive and extracted directory names.
Do not operate the server from /mnt/c, /mnt/d, /mnt/f or a network share. The legacy Java runtime performs many small reads, writes and symlink operations. Windows-mounted paths can cause extreme loading times, failed symlinks, JVM crashes and unexplained malloc() errors. Copy the complete package under ~/allods40 first.
Verify the package identity:
sed -n '1,20p' Version.txt
cat Territory.txt
./vendors/Java/jdk-1.7-linux-64/bin/java -version
Expected values include
Server Version = 4.0.02.42 and Java 1.7.0_03.When an official SHA-256 manifest is supplied:
sha256sum -c SHA256SUMS.txt
6. Understand the directory layout
| Path | Purpose |
|---|---|
game/data/Packs/ | Packed 4.0.02.42 server resources, maps, XDB data and localization. |
game/data/System/ | Resource-system configuration and indices. |
game/data/Types/ | Legacy resource type definitions. |
server_bin/jars/ | Core server libraries and executable JAR manifests. |
server_bin/accountServer/ | Authentication, accounts, API and account utility. |
server_bin/masterServer/ | Shard/service registry and control service. |
server_bin/billingServer/ | Billing protocol and local fake accounter configuration. |
server_bin/itemMallServer/ | Item Mall network service and assortment configuration. |
server_bin/shard/ | Main world process, frontend services, maps and game configuration. |
server_bin/gametoolEAR/ | Optional JBoss-based administration application. |
server_bin/logserverEAR/ | Optional central log collection service. |
vendors/Java/ | The required version-matched Java 7 runtimes. |
7. Install and initialize the databases
7.1 Required databases
These names were confirmed from a previously working 4.0.02.42 installation:| Engine | Database | Used by |
|---|---|---|
| MySQL 5.7 | allods_online_RC_4_0_02 | Shard, auction, items, mail, guild and game state. |
| MySQL 5.7 | a1_masterserver_RC_4_0_02 | Master Server. |
| MySQL 5.7 | allods_billing_RC_4_0_02 | Billing Server. |
| PostgreSQL 9.3 | allods_account_RC_4_0_02 | Account Server and account utility. |
| PostgreSQL 9.3 | gametool | Optional GameTool only. |
| PostgreSQL 9.3 | logserver | Optional Log Server only. |
7.2 Create the Docker Compose definition
MySQL 5.7 and PostgreSQL 9.3 are end-of-life compatibility targets. Do not silently replace them with the latest database images. If a legacy tag can no longer be downloaded, use the checksummed Linux/amd64 image archive supplied or referenced by the ADC release, then load it with docker load -i IMAGE_FILE.tar.
Create
docker-compose.yml at the server root:services:
mysql:
image: mysql:5.7
container_name: allods40-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${ALLODS40_MYSQL_PASSWORD}
command:
- --character-set-server=utf8
- --collation-server=utf8_general_ci
- --sql-mode=NO_ZERO_DATE,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES
ports:
- "127.0.0.1:3306:3306"
volumes:
- allods40_mysql:/var/lib/mysql
postgres:
image: postgres:9.3
container_name: allods40-postgres
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${ALLODS40_POSTGRES_PASSWORD}
ports:
- "127.0.0.1:5432:5432"
volumes:
- allods40_postgres:/var/lib/postgresql/data
volumes:
allods40_mysql:
allods40_postgres:
Create
.env beside it:ALLODS40_MYSQL_PASSWORD=CHANGE_THIS_MYSQL_PASSWORD
ALLODS40_POSTGRES_PASSWORD=CHANGE_THIS_POSTGRES_PASSWORD
Use long private values containing characters that are valid in XML and Java properties files. Restrict the file:
chmod 600 .env
docker compose up -d
docker compose ps
7.3 Create the empty databases
docker exec allods40-mysql mysql -uroot -pCHANGE_THIS_MYSQL_PASSWORD -e \
"CREATE DATABASE IF NOT EXISTS allods_online_RC_4_0_02 CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE IF NOT EXISTS a1_masterserver_RC_4_0_02 CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE IF NOT EXISTS allods_billing_RC_4_0_02 CHARACTER SET utf8 COLLATE utf8_general_ci;"
docker exec allods40-postgres createdb -U postgres allods_account_RC_4_0_02
For the optional tools only:
docker exec allods40-postgres createdb -U postgres gametool
docker exec allods40-postgres createdb -U postgres logserver
If
createdb reports that a database already exists, continue without deleting it.7.4 Import the initial anonymized schemas
The server requires the version-matched anonymized initial schema/data bundle supplied with the 4.0 public release. Do not import live production data or schemas from another game version.
If the release stores one SQL file per table, import all files in lexical order. Adjust
database/mysql/... to the actual database-bundle path shipped with your download:for sql in database/mysql/allods_online_RC_4_0_02/*.sql; do
docker exec -i allods40-mysql mysql -uroot -pCHANGE_THIS_MYSQL_PASSWORD allods_online_RC_4_0_02 < "$sql"
done
for sql in database/mysql/a1_masterserver_RC_4_0_02/*.sql; do
docker exec -i allods40-mysql mysql -uroot -pCHANGE_THIS_MYSQL_PASSWORD a1_masterserver_RC_4_0_02 < "$sql"
done
for sql in database/mysql/allods_billing_RC_4_0_02/*.sql; do
docker exec -i allods40-mysql mysql -uroot -pCHANGE_THIS_MYSQL_PASSWORD allods_billing_RC_4_0_02 < "$sql"
done
Import the PostgreSQL account dump using the format supplied by the release:
# Plain SQL example
docker exec -i allods40-postgres psql -U postgres -d allods_account_RC_4_0_02 < database/postgresql/allods_account_RC_4_0_02.sql
# Custom pg_dump example
docker cp database/postgresql/allods_account_RC_4_0_02.dump allods40-postgres:/tmp/account.dump
docker exec allods40-postgres pg_restore -U postgres -d allods_account_RC_4_0_02 /tmp/account.dump
Use only the command matching the supplied dump format.
7.5 Confirm that schemas are populated
docker exec allods40-mysql mysql -uroot -pCHANGE_THIS_MYSQL_PASSWORD -e \
"SELECT table_schema, COUNT(*) AS tables_count
FROM information_schema.tables
WHERE table_schema IN ('allods_online_RC_4_0_02','a1_masterserver_RC_4_0_02','allods_billing_RC_4_0_02')
GROUP BY table_schema;"
docker exec allods40-postgres psql -U postgres -d allods_account_RC_4_0_02 -c '\dt'
8. Verify the game resources
The server package must retain all of these:game/data/Packs/*.Server.pak
game/data/System/index.all
game/data/System/index.bin
game/data/System/index.srv
game/data/Types/types.xml
The old 2020 draft instructed users to unpack and remove every XDB_*.pak. Do not perform that destructive step on the current preserved package. The known working 4.0 server loaded its resource indices and maps with the .Server.pak files present. Keep the original packs unless the exact release includes and documents a dedicated extraction helper.
Confirm the main files:
test -s game/data/System/index.srv
test -s game/data/System/index.all
test -s game/data/Types/types.xml
find game/data/Packs -maxdepth 1 -type f -name '*.Server.pak' | wc -l
9. Configure addresses and service files
9.1 Obtain the WSL address
hostname -I
Use the first normal WSL address, for example
172.30.113.41. Do not use a Docker bridge address such as 172.17.0.1.9.2 Update the Shard configuration
Edit:server_bin/shard/cfg/shard.xml
Replace every historical LAN address such as
192.168.1.14 in the active LocalShard and frontEnd elements with the current WSL address.The important block should follow this model:
<shard role="LocalShard" memory="1200" ip="YOUR_WSL_IP">
<frontEnd externalHost="YOUR_WSL_IP" ip="YOUR_WSL_IP" port="9322" timeout="60000"/>
<db database="allods_online_RC_4_0_02" host="127.0.0.1" user="root" password="CHANGE_THIS_MYSQL_PASSWORD"/>
<http host="127.0.0.1" port="8080"/>
<indicator/>
<doorway/>
</shard>
Keep Master, Billing and Item Mall connections on
127.0.0.1 for a single-machine installation.Preserved copies may contain Territory.txt set to Europe while an old active shard.xml still contains <territory>Russia</territory>. Do not change this value blindly. Keep the territory, languages and resource packs aligned with the client included in the final ADC release, then confirm the selected languages in the Shard startup log.
9.3 Update Account Server
Editserver_bin/accountServer/cfg/shard.xml. The authentication listener must be reachable from the Windows client:<accountServer maxUsersOnShard="5000" clientsLimit="5000" build="builds/standard.xml" versionOnLogin="-1" ip="YOUR_WSL_IP">
<approve ip="127.0.0.1" port="9347"/>
<auth ip="YOUR_WSL_IP" port="9340" timeout="30000"/>
<api protocol="http" host="127.0.0.1" port="9357"/>
<db host="127.0.0.1" user="postgres" password="CHANGE_THIS_POSTGRES_PASSWORD"/>
<authenticator>
<api host="127.0.0.1" port="9399"/>
</authenticator>
</accountServer>
Then update
server_bin/accountServer/cfg/accountserverdb-config-pgsql.properties:connection.master.url=jdbc:postgresql://127.0.0.1/allods_account_RC_4_0_02
connection.master.user=postgres
connection.master.password=CHANGE_THIS_POSTGRES_PASSWORD
Some historical copies still reference allods_online_account_trunk2. That was not the database used by the known working RC_4.0.02 installation. Use allods_account_RC_4_0_02 consistently in the server and account utility.
9.4 Update Master and Billing credentials
Inserver_bin/masterServer/cfg/shard.xml, configure:<db host="127.0.0.1" user="root" password="CHANGE_THIS_MYSQL_PASSWORD" database="a1_masterserver_RC_4_0_02"/>
In
server_bin/billingServer/cfg/shard.xml, configure:<db host="127.0.0.1" user="root" password="CHANGE_THIS_MYSQL_PASSWORD" database="allods_billing_RC_4_0_02"/>
If the schema name is generated through the shipped
*-config-trunk.properties, confirm the startup log resolves to the exact database names listed above.9.5 Verify that no old address remains
grep -RInE '192\.168\.|10\.[0-9]+\.|dev-db\.|online\.local' \
server_bin/accountServer/cfg \
server_bin/masterServer/cfg \
server_bin/billingServer/cfg \
server_bin/itemMallServer/cfg \
server_bin/shard/cfg/shard.xml
Review each result. Sample, test and inactive files may retain documentation addresses, but every file used by the launch commands must be local and coherent.
10. Start the core server
10.1 Prepare the bundled Java runtime
From the server root:export ALLODS40_HOME="$PWD"
source vendors/Java/defineJavaHome.sh
mkdir -p "$ALLODS40_HOME/run"
"$JAVA_HOME/bin/java" -version
Do not launch the server with the Ubuntu default Java 11, 17 or 21 runtime. Options such as PermGen and CMS are specific to the bundled Java generation, and the historical libraries were built and tested against Java 7.
10.2 Start services in dependency order
Run the following from the same shell whereALLODS40_HOME and JAVA_HOME were exported.(
cd "$ALLODS40_HOME/server_bin/accountServer/cfg" || exit 1
nohup "$JAVA_HOME/bin/java" -server -XX:MaxPermSize=256m -Xms512M -Xmx512M \
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode \
-jar ../../jars/accountserver.AccountServerMain.jar shard.xml \
> "$ALLODS40_HOME/run/accountServer.log" 2>&1 &
echo $! > "$ALLODS40_HOME/run/accountServer.pid"
)
(
cd "$ALLODS40_HOME/server_bin/masterServer/cfg" || exit 1
nohup "$JAVA_HOME/bin/java" -server -XX:MaxPermSize=128m -Xms512M -Xmx512M \
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode \
-jar ../../jars/masterServer.MasterServerMain.jar shard.xml \
> "$ALLODS40_HOME/run/masterServer.log" 2>&1 &
echo $! > "$ALLODS40_HOME/run/masterServer.pid"
)
(
cd "$ALLODS40_HOME/server_bin/billingServer/cfg" || exit 1
nohup "$JAVA_HOME/bin/java" -server -XX:MaxPermSize=256m -Xms256M -Xmx512M \
-XX:+UseConcMarkSweepGC \
-jar ../../jars/billingserver.BillingServerMain.jar shard.xml -type billingServer \
> "$ALLODS40_HOME/run/billingServer.log" 2>&1 &
echo $! > "$ALLODS40_HOME/run/billingServer.pid"
)
(
cd "$ALLODS40_HOME/server_bin/itemMallServer/cfg" || exit 1
nohup "$JAVA_HOME/bin/java" -server -XX:MaxPermSize=256m -Xms256M -Xmx512M \
-XX:+UseConcMarkSweepGC \
-jar ../../jars/itemmall.server.ItemMallServerMain.jar shard.xml \
> "$ALLODS40_HOME/run/itemMallServer.log" 2>&1 &
echo $! > "$ALLODS40_HOME/run/itemMallServer.pid"
)
(
cd "$ALLODS40_HOME/server_bin/shard/cfg" || exit 1
nohup "$JAVA_HOME/bin/java" -server -XX:MaxPermSize=512m -Xms1024M -Xmx4096M \
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode \
-jar ../../jars/shardstarter.ShardMain.jar shard.xml -maps map.cfg \
> "$ALLODS40_HOME/run/shard.log" 2>&1 &
echo $! > "$ALLODS40_HOME/run/shard.pid"
)
The supplied map.cfg focuses on the main Kania and Hadagan maps and is safer for an initial start than an all-map configuration. Expand the map list only after the base stack is stable and memory use has been measured.
10.3 Watch startup
tail -f run/accountServer.log
tail -f run/masterServer.log
tail -f run/billingServer.log
tail -f run/itemMallServer.log
tail -f run/shard.log
Use separate terminals only when necessary. To follow several files in one terminal:
tail -F run/accountServer.log run/masterServer.log run/billingServer.log run/itemMallServer.log run/shard.log
10.4 Verify processes and ports
pgrep -af 'AccountServerMain|MasterServerMain|BillingServerMain|ItemMallServerMain|ShardMain'
ss -ltnp | grep -E ':(9340|9347|9357|9513|10500|9320|9321|9322|9323|9324|9325)\b'
| Port | Service | Exposure |
|---|---|---|
9340 | Client authentication | Windows/private network |
9347 | Shard session approval | Internal |
9357 | Account API | Internal |
9513 | Master Server | Internal |
10500 | Master API | Internal |
9320 | Billing Server | Internal |
9321 | Item Mall Server | Internal |
9322-9325 | Shard frontends | Windows/private network |
3306 | MySQL | Loopback only |
5432 | PostgreSQL | Loopback only |
A known working installation reports Account Server started with protocol versions 73 and 48, connects the Shard to Master Server at 127.0.0.1:9513, then opens frontends 9322 through 9325. Full map loading can continue for many minutes after the ports appear.
11. Create an account
Keep the databases running. From the server root:cd server_bin/accountServer
./account_utils.sh create YOUR_LOGIN User
./account_utils.sh setpassword YOUR_LOGIN YOUR_PASSWORD
./account_utils.sh list
Available base access levels are
User, Master and Developer. A normal player account should use User.Do not give public players Developer or Master access. These levels are intended for controlled administration/testing and can expose privileged behavior.
To change access explicitly:
./account_utils.sh modify YOUR_LOGIN User User
The utility reads
cfg/accountUtilCfg.xml, which in turn uses the Account PostgreSQL configuration and the game MySQL configuration. If it cannot connect, fix those files instead of editing account tables manually.12. Configure and launch the client
12.1 Use the exact matching client
The client must support:
Server branch: RC_4.0.02
Client network version: 8455
Client/account protocol: 73
A client that displays “4.x” is not automatically compatible. If its network version is different, login or world connection will fail even when every port is open.
12.2 Configure Account Server
Open the matching client file:Profiles/accountServer.cfg
Set:
account_srv_host = "YOUR_WSL_IP"
account_srv_port = 9340
Preserve the exact syntax already used by the client file.
12.3 Test Windows connectivity
In PowerShell:Test-NetConnection YOUR_WSL_IP -Port 9340
Test-NetConnection YOUR_WSL_IP -Port 9322
Both tests must return
TcpTestSucceeded : True.If necessary, allow only the client-facing ports on private networks:
New-NetFirewallRule -DisplayName "Allods 4.0 Account" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9340 -Profile Private
New-NetFirewallRule -DisplayName "Allods 4.0 Shard" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9322-9325 -Profile Private
Never forward MySQL 3306, PostgreSQL 5432, GameTool or internal service ports directly to the public Internet.
Launch the client using the batch file or executable supplied with the matching ADC client package, then log in with the account created above.
13. Daily operations and logs
13.1 Status
pgrep -af 'AccountServerMain|MasterServerMain|BillingServerMain|ItemMallServerMain|ShardMain|gametoolEAR|logserverEAR'
ss -ltnp | grep -E ':(9340|9347|9357|9513|10500|9320|9321|9322|9323|9324|9325|8088|8888)\b'
free -h
docker compose ps
13.2 Controlled shutdown
Stop in reverse dependency order:pkill -f 'shardstarter.ShardMain' || true
pkill -f 'itemmall.server.ItemMallServerMain' || true
pkill -f 'billingserver.BillingServerMain' || true
pkill -f 'masterServer.MasterServerMain' || true
pkill -f 'accountserver.AccountServerMain' || true
Wait and verify before using
kill -9:sleep 10
pgrep -af 'AccountServerMain|MasterServerMain|BillingServerMain|ItemMallServerMain|ShardMain'
13.3 Log locations
run/*.log— output captured by the manual launch commands in this guide.server_bin/accountServer/out/*/logs/server.log— detailed Account Server log.server_bin/masterServer/out/*/logs/server.log— detailed Master Server log.server_bin/billingServer/out/*/logs/server.log— detailed Billing Server log.server_bin/itemMallServer/out/*/logs/server.log— detailed Item Mall log.server_bin/shard/out/*/logs/server.log— detailed Shard and map-loading log.
Find the newest Shard log:
find server_bin/shard/out -type f -path '*/logs/server.log' -printf '%T@ %p\n' | sort -n | tail -n 1
14. Optional Log Server and GameTool
Log Server and GameTool are administration/reporting tools. They are not required for a player to log in and enter the world. Start them only when explicitly needed and only after the complete core stack is healthy.
The corrected
server_bin/gametoolEAR supplied with the ADC public 4.0 release follows the same architecture as the corrected 3.0 directory: JBoss, PostgreSQL, resource loading, Master/Shard connections and ETL. Use the dedicated complete GameTool guide for its user roles, operations, ETL and security model.Before enabling the tools:
- Provide at least 24 GB RAM to WSL.
- Create and initialize the
gametoolandlogserverPostgreSQL databases. - Configure version-specific 4.0
shard.xmlfiles; never reuse the 3.0 file. - Start Log Server before GameTool.
- Confirm Log Server listens on
8888. - Confirm GameTool listens on
8088. - Keep both interfaces private or behind a VPN.
The original run-logserver.sh uses -Xms4048m -Xmx6048m, and the original GameTool launcher can grow to about 4 GB of Java heap. Do not launch them casually on a 12–16 GB WSL instance. Review and measure the corrected public-release profiles instead.
15. Backups and security
15.1 Database dumps
Stop the Java services before creating a full recovery point.
mkdir -p backups
docker exec allods40-mysql mysqldump -uroot -pCHANGE_THIS_MYSQL_PASSWORD \
--single-transaction --routines --triggers allods_online_RC_4_0_02 \
> backups/allods_online_RC_4_0_02.sql
docker exec allods40-mysql mysqldump -uroot -pCHANGE_THIS_MYSQL_PASSWORD \
--single-transaction --routines --triggers a1_masterserver_RC_4_0_02 \
> backups/a1_masterserver_RC_4_0_02.sql
docker exec allods40-mysql mysqldump -uroot -pCHANGE_THIS_MYSQL_PASSWORD \
--single-transaction --routines --triggers allods_billing_RC_4_0_02 \
> backups/allods_billing_RC_4_0_02.sql
docker exec allods40-postgres pg_dump -U postgres -Fc allods_account_RC_4_0_02 \
> backups/allods_account_RC_4_0_02.dump
15.2 Configuration backup
Preserve:server_bin/accountServer/cfg/server_bin/masterServer/cfg/server_bin/billingServer/cfg/server_bin/itemMallServer/cfg/server_bin/shard/cfg/docker-compose.ymland a separately protected copy of.env
Do not reuse passwords found in historical sample files. Do not publish .env, database dumps, account tables, RSA keys, GameTool users or complete runtime logs. The public release must use anonymized initial databases and fresh local credentials.
16. Troubleshooting
A bare Killed line usually means Linux terminated Java because WSL exhausted RAM and swap. It is not a normal Java exception.
free -h
dmesg -T | grep -i -E 'oom|out of memory|killed process' | tail -n 30
Stop memory-heavy applications, optional tools, archive compression and unrelated containers. Increase WSL memory/swap or reduce the selected map list. Do not start GameTool or Log Server until the core is stable.
~/allods40. Running Java 7 directly from /mnt/* can trigger slow I/O, symlink problems and native-runtime instability. Copy the package to the Linux filesystem and retry from a clean shell.MySQL: allods_online_RC_4_0_02
MySQL: a1_masterserver_RC_4_0_02
MySQL: allods_billing_RC_4_0_02
PostgreSQL: allods_account_RC_4_0_02
Create/import the missing database and correct the active
shard.xml or properties file. Reusing a Docker volume does not rerun initialization scripts automatically.grep -n 'connection.master' server_bin/accountServer/cfg/accountserverdb-config-pgsql.properties
The URL must point to
allods_account_RC_4_0_02. Also confirm accountUtilCfg.xml references the same active properties file.127.0.0.1:9513.pgrep -af MasterServerMain
ss -ltnp | grep ':9513'
tail -n 200 run/masterServer.log
Fix Master Server/database startup before restarting the Shard.
- The client uses network version
8455. Profiles/accountServer.cfgcontains the current WSL address and port9340.- Account Server is bound to that address, not only to
127.0.0.1. - Windows can pass
Test-NetConnectionfor port9340. - The WSL address did not change after
wsl --shutdownor a reboot.
ss -ltnp | grep -E ':(9322|9323|9324|9325)\b'
tail -n 300 run/shard.log
Wait for the main Kania/Hadagan maps to finish loading. Also confirm
externalHost contains the WSL address visible to Windows.game/data/System/index.srv, index.all, Types/types.xml and the .Server.pak files. Restore missing files from a clean matching archive. Do not combine resource packs from another revision.ErrorsContainer entries. Judge startup by the final service state:- Did the Java process remain alive?
- Did it connect to Master Server?
- Did frontends 9322–9325 open?
- Did the requested maps finish loading?
A fatal database, protocol, resource-index or Master connection error must still be fixed.
NO_ZERO_DATE,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES
Use the Docker Compose command in this guide. Do not disable every SQL safety mode simply to hide a warning.
ss -ltnp | grep -E ':(3306|5432|8080|9320|9321|9322|9323|9324|9325|9340|9347|9357|9513|10500)\b'
pgrep -af 'AccountServerMain|MasterServerMain|BillingServerMain|ItemMallServerMain|ShardMain'
Stop the stale instance or change every consumer consistently. Do not launch duplicate Java services repeatedly because the first start appears slow.
17. Important 3.0 and 4.0 differences
| Area | 3.0 public release | 4.0.02.42 release |
|---|---|---|
| Client network version | 6486 | 8455 |
| Account login port | 9337 | 9340 |
| Account protocol | 37 | 73 |
| Account/frontend protocol | 34 | 48 |
| Game database | allods_online_RC_3_0 | allods_online_RC_4_0_02 |
| Account database | ao_accounts_test | allods_account_RC_4_0_02 |
| Resources | 3.0-specific packs and indices | 4.0.02.42-specific .Server.pak files and indices |
| GameTool | Corrected version-specific directory | Separate corrected 4.0 directory; never cross-copy |
| Tool memory | Reduced public profile | Historical profiles are substantially heavier |
18. Final validation checklist
- The server is stored under the Linux filesystem, not
/mnt/*. Version.txtidentifies4.0.02.42.- The bundled Java
1.7.0_03runtime launches. - MySQL and PostgreSQL containers are healthy and bound only to loopback.
- All four required core databases exist and contain their initial schemas.
- No historical LAN/database address remains in an active configuration.
- Account Server listens on the current WSL address at
9340. - Master, Billing and Item Mall are healthy before the Shard starts.
- The Shard connects to Master Server and opens
9322-9325. - The main maps finish loading without the Java process exiting.
- A normal User account can be created and listed by
account_utils.sh. - The client is the matching network-version
8455build. - Windows can reach
9340and9322. - The client logs in, displays the Shard and enters the world.
- Log Server and GameTool remain disabled unless deliberately configured.
- Fresh database/configuration backups exist before customization.
When every item above is true, the Allods Online 4.0.02.42 core server is installed, reachable by the matching client and ready for controlled private development/testing.
Guide rebuilt for Allods Developers Community by Sorok Dva, founder of ADC.