Merge pull request #1 from RWejlgaard/add-mangos-config

Add MaNGOS Zero config and fix world service
This commit is contained in:
Rasmus Wejlgaard 2026-03-28 13:09:21 +00:00 committed by GitHub
commit 999396b0c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 2362 additions and 5 deletions

View file

@ -1,16 +1,17 @@
[Unit] [Unit]
Description=MaNGOS Zero Realm Server Description=MaNGOS Zero World Server
After=network.target mariadb.service After=network.target mariadb.service mangos-realmd.service
Requires=mariadb.service Requires=mariadb.service
Wants=mangos-realmd.service
[Service] [Service]
Type=simple Type=simple
User=mangos User=mangos
Group=mangos Group=mangos
WorkingDirectory=/home/mangos/mangos/zero/bin WorkingDirectory=/home/mangos/mangos/zero/bin
ExecStart=/home/mangos/mangos/zero/bin/realmd ExecStart=/home/mangos/mangos/zero/bin/mangosd
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=10
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View file

@ -0,0 +1,33 @@
# MaNGOS Zero (Vanilla WoW)
Classic WoW private server running on **copenhagen-a**.
## Components
- **mangosd** — World server (`mangos-world.service`)
- **realmd** — Authentication/realm server (`mangos-realmd.service`)
- **MariaDB** — Database backend (system service)
## Config Files
| File | Description |
|------|-------------|
| `etc/mangosd.conf` | World server configuration |
| `etc/realmd.conf` | Realm server configuration |
| `etc/ahbot.conf` | Auction house bot configuration |
| `etc/aiplayerbot.conf` | AI playerbot configuration |
Config files use `{{ mangos_db_password }}` as a placeholder for the database password.
The actual password is stored in `ansible/group_vars/all/secrets.enc.yaml`.
## Paths on copenhagen-a
- Binary: `/home/mangos/mangos/zero/bin/`
- Config: `/home/mangos/mangos/zero/etc/`
- User: `mangos:mangos`
## Systemd Services
Service files are in:
- `../mangos-realmd/mangos-realmd.service`
- `../mangos-world/mangos-world.service`

View file

@ -0,0 +1,265 @@
################################################################################
# Auction house bot configuration #
################################################################################
[AhbotConf]
ConfVersion=2021010100
################################################################################
# AUCTION HOUSE BOT SETTINGS
#
# AuctionHouseBot.CharacterName
# The name of the character that the bot will use to auction
# items in the Alliance, Horde and neutral auction houses.
# Default "" (No owner)
#
# AuctionHouseBot.Seller.Enabled
# Enable or disable sales functionality
# Default 0 (Disabled)
#
# AuctionHouseBot.DEBUG.Seller
# Enable or disable sales debug mode
# Default 0 (Disabled)
#
# AuctionHouseBot.Alliance.Items.Amount.Ratio
# Enable or disable sales on Alliance auction houses
# Default 100 (Enabled with 100% of items)
#
# AuctionHouseBot.Horde.Items.Amount.Ratio
# Enable or disable sales on Horde auction houses
# Default 100 (Enabled with 100% of items)
#
# AuctionHouseBot.Neutral.Items.Amount.Ratio
# Enable or disable sales on neutral auction houses
# Default 100 (Enabled with 100% of items)
#
# AuctionHouseBot.MinTime
# Minimum time for new auctions
# Default 1 (Hour)
#
# AuctionHouseBot.MaxTime
# Maximum time for new auctions
# Default 72 (Hours)
#
# AuctionHouseBot.Items.Vendor
# Offer items sold by vendors as auctions
# Default 0
#
# AuctionHouseBot.Items.Loot
# Offer lootable/fishable items as auctions
# Default 1
#
# AuctionHouseBot.Items.Misc
# Offer miscellaneous items as auctions (not recommended)
# Default 0
#
# AuctionHouseBot.Bind.*
# Indicates which bonding types can be put up for auction
# No - Items that don't bind Default 1 (Allowed)
# Pickup - Items that bind on pickup Default 0 (Not Allowed)
# Equip - Items that bind on equip Default 1 (Allowed)
# Use - Items that bind on use Default 1 (Allowed)
# Quest - Quest Items Default 0 (Not Allowed)
#
# AuctionHouseBot.LockBox.Enabled
# Enable or disable sales of lock boxes
# Default 0 (Disabled)
#
# AuctionHouseBot.ItemsPerCycle.Boost
# Uses to define how many auctions to add per cycle in an uninitialized
# auction table.
# Default 75
#
# AuctionHouseBot.ItemsPerCycle.Normal
# Uses to define how many auctions to add per cycle in an initialized
# auction table.
# Default 20
#
# AuctionHouseBot.BuyPrice.Seller
# Enable or disable the use of BuyPrice or SellPrice to determine bid
# pricing
# Default 1 (use SellPrice)
#
# AuctionHouseBot.Alliance.Price.Ratio
# Defines the price ratio for auctions on the Alliance auction houses
# Default 200
#
# AuctionHouseBot.Horde.Price.Ratio
# Defines the price ratio for auctions on the Horde auction houses
# Default 200
#
# AuctionHouseBot.Neutral.Price.Ratio
# Defines the price ratio for auctions on the neutral auction houses
# Default 200
#
# AuctionHouseBot.Items.ItemLevel.*
# Enable or disable listing items below/above this item level
# Default 0 (Disabled)
#
# AuctionHouseBot.Items.ReqLevel.*
# Enable or disable listing items below/above this required level
# Default 0 (Disabled)
#
# AuctionHouseBot.Items.ReqSkill.*
# Enable or disable listing items below/above this skill level
# Default 0 (Disabled)
#
# AuctionHouseBot.Items.Amount.*
# Defines the amount of auctions to be created for each item quality
# Values will be adjusted using faction specific settings (if specified)
# Default 0, 2000, 2500, 1500, 1000, 0, 0
# (grey, white, green, blue, purple, orange, yellow)
#
# AuctionHouseBot.Class.*
# Defines which item classes can be put up for auction. See pre-defined
# classes in ItemClass.dbc.
# These value are preference values, maximum is 10, minimum is 0.
# Default 6,4,8,8,1,2,0,6,1,1,1,5
#
#
# ITEM FINE TUNING
# The following are useful for limiting what character levels can benefit
# from the auction house.
#
# AuctionHouseBot.Class.Misc.Mount.ReqLevel.*
# Enable or disable listing mounts below/above this required level
# Default 0
#
# AuctionHouseBot.Class.Misc.Mount.ReqSkill.*
# Enable or disable listing mounts below/above this skill level
# Default 0
#
# AuctionHouseBot.Class.TradeGood.ItemLevel.*
# Enable or disable listing trade good items below/above this item level
# Default 0
#
# AuctionHouseBot.Class.Container.ItemLevel.*
# Enable or disable listing containers below/above this item level
# Default 0
#
# AuctionHouseBot.forceIncludeItems
# Allows to include items which would normally be ignored by filter
# settings.
# List of ids with delimiter ','
# Default ""
#
# AuctionHouseBot.forceExcludeItems
# Allows to exclude items which would normally be included by filter
# settings.
# List of ids with delimiter ','
# Default ""
#
################################################################################
AuctionHouseBot.CharacterName = ""
AuctionHouseBot.Seller.Enabled = 1
AuctionHouseBot.DEBUG.Seller = 0
AuctionHouseBot.Alliance.Items.Amount.Ratio = 100
AuctionHouseBot.Horde.Items.Amount.Ratio = 100
AuctionHouseBot.Neutral.Items.Amount.Ratio = 100
AuctionHouseBot.MinTime = 1
AuctionHouseBot.MaxTime = 72
AuctionHouseBot.Items.Vendor = 0
AuctionHouseBot.Items.Loot = 1
AuctionHouseBot.Items.Misc = 0
AuctionHouseBot.Bind.No = 1
AuctionHouseBot.Bind.Pickup = 0
AuctionHouseBot.Bind.Equip = 1
AuctionHouseBot.Bind.Use = 1
AuctionHouseBot.Bind.Quest = 0
AuctionHouseBot.LockBox.Enabled = 0
AuctionHouseBot.ItemsPerCycle.Boost = 75
AuctionHouseBot.ItemsPerCycle.Normal = 20
AuctionHouseBot.BuyPrice.Seller = 1
AuctionHouseBot.Alliance.Price.Ratio = 200
AuctionHouseBot.Horde.Price.Ratio = 200
AuctionHouseBot.Neutral.Price.Ratio = 200
AuctionHouseBot.Items.ItemLevel.Min = 0
AuctionHouseBot.Items.ItemLevel.Max = 0
AuctionHouseBot.Items.ReqLevel.Min = 0
AuctionHouseBot.Items.ReqLevel.Max = 0
AuctionHouseBot.Items.ReqSkill.Min = 0
AuctionHouseBot.Items.ReqSkill.Max = 0
AuctionHouseBot.Items.Amount.Grey = 0
AuctionHouseBot.Items.Amount.White = 2000
AuctionHouseBot.Items.Amount.Green = 2500
AuctionHouseBot.Items.Amount.Blue = 1500
AuctionHouseBot.Items.Amount.Purple = 1000
AuctionHouseBot.Items.Amount.Orange = 0
AuctionHouseBot.Items.Amount.Yellow = 0
AuctionHouseBot.Class.Consumable = 6
AuctionHouseBot.Class.Container = 4
AuctionHouseBot.Class.Weapon = 8
AuctionHouseBot.Class.Armor = 8
AuctionHouseBot.Class.Reagent = 1
AuctionHouseBot.Class.Projectile = 2
AuctionHouseBot.Class.TradeGood = 10
AuctionHouseBot.Class.Recipe = 6
AuctionHouseBot.Class.Quiver = 1
AuctionHouseBot.Class.Quest = 1
AuctionHouseBot.Class.Key = 1
AuctionHouseBot.Class.Misc = 5
AuctionHouseBot.Class.Misc.Mount.ReqLevel.Min = 0
AuctionHouseBot.Class.Misc.Mount.ReqLevel.Max = 0
AuctionHouseBot.Class.Misc.Mount.ReqSkill.Min = 0
AuctionHouseBot.Class.Misc.Mount.ReqSkill.Max = 0
AuctionHouseBot.Class.TradeGood.ItemLevel.Min = 0
AuctionHouseBot.Class.TradeGood.ItemLevel.Max = 0
AuctionHouseBot.Class.Container.ItemLevel.Min = 0
AuctionHouseBot.Class.Container.ItemLevel.Max = 0
AuctionHouseBot.forceIncludeItems = ""
AuctionHouseBot.forceExcludeItems = ""
################################################################################
# Buyer configuration
#
# AuctionHouseBot.Buyer.Enabled
# Enable or disable buyer mode
# Default 0 (Disabled)
#
# AuctionHouseBot.DEBUG.Buyer
# Enable or disable buyer debug mode
# Default 0 (Disabled)
#
# AuctionHouseBot.Buyer.FACTION.Enabled
# Enable or disable buyer mode for a specific faction
#
# AuctionHouseBot.Buyer.BuyPrice
# Enable or disable the use of BuyPrice or SellPrice to determine bid
# pricing
# Default 0 (use SellPrice)
#
# AuctionHouseBot.Buyer.Recheck.Interval
# This specifies the time interval (in minute) between evaluations of
# identical items.
# The lower the value is, the higher the chance for an item to be bought
# Default 20 (20min.)
#
# AuctionHouseBot.Buyer.FACTION.Chance.Ratio
# Determines the chance for buying an item.
# Default 3 (literally 1 chance by 3)
#
################################################################################
AuctionHouseBot.Buyer.Enabled = 0
AuctionHouseBot.DEBUG.Buyer = 0
AuctionHouseBot.Buyer.Alliance.Enabled = 1
AuctionHouseBot.Buyer.Horde.Enabled = 1
AuctionHouseBot.Buyer.Neutral.Enabled = 1
AuctionHouseBot.Buyer.BuyPrice = 0
AuctionHouseBot.Buyer.Recheck.Interval = 20
AuctionHouseBot.Buyer.Alliance.Chance.Ratio = 3
AuctionHouseBot.Buyer.Horde.Chance.Ratio = 3
AuctionHouseBot.Buyer.Neutral.Chance.Ratio = 3

View file

@ -0,0 +1,164 @@
##########################################
# MANGOS Ai Playerbot Configuration file #
##########################################
[AiPlayerbotConf]
ConfVersion=2010102201
# Enable or disable AI Playerbot
AiPlayerbot.Enabled = 0
# Warrior
AiPlayerbot.RandomClassSpecProbability.1.0 = 20
AiPlayerbot.RandomClassSpecProbability.1.1 = 30
AiPlayerbot.RandomClassSpecProbability.1.2 = 50
# Paladin
AiPlayerbot.RandomClassSpecProbability.2.0 = 20
AiPlayerbot.RandomClassSpecProbability.2.1 = 50
AiPlayerbot.RandomClassSpecProbability.2.2 = 30
# Hunter
AiPlayerbot.RandomClassSpecProbability.3.0 = 25
AiPlayerbot.RandomClassSpecProbability.3.1 = 50
AiPlayerbot.RandomClassSpecProbability.3.2 = 25
# Rogue
AiPlayerbot.RandomClassSpecProbability.4.0 = 40
AiPlayerbot.RandomClassSpecProbability.4.1 = 50
AiPlayerbot.RandomClassSpecProbability.4.2 = 10
# Priest
AiPlayerbot.RandomClassSpecProbability.5.0 = 40
AiPlayerbot.RandomClassSpecProbability.5.1 = 40
AiPlayerbot.RandomClassSpecProbability.5.2 = 20
# Shaman
AiPlayerbot.RandomClassSpecProbability.7.0 = 10
AiPlayerbot.RandomClassSpecProbability.7.1 = 45
AiPlayerbot.RandomClassSpecProbability.7.2 = 45
# Mage
AiPlayerbot.RandomClassSpecProbability.8.0 = 20
AiPlayerbot.RandomClassSpecProbability.8.1 = 10
AiPlayerbot.RandomClassSpecProbability.8.2 = 70
# Warlock
AiPlayerbot.RandomClassSpecProbability.9.0 = 33
AiPlayerbot.RandomClassSpecProbability.9.1 = 33
AiPlayerbot.RandomClassSpecProbability.9.2 = 33
# Druid
AiPlayerbot.RandomClassSpecProbability.11.0 = 10
AiPlayerbot.RandomClassSpecProbability.11.1 = 45
AiPlayerbot.RandomClassSpecProbability.11.2 = 45
#
# All other parameters are optional but can be changed by uncommenting them here
#
# Prefix for bot chat commands (e.g. follow, stay)
AiPlayerbot.CommandPrefix = ~
# Max AI iterations per tick
#AiPlayerbot.IterationsPerTick = 10
# Allow/deny bots from your guild
#AiPlayerbot.AllowGuildBots = 1
# Delay between two short-time spells cast
#AiPlayerbot.GlobalCooldown = 500
# Max wait time when moving
#AiPlayerbot.MaxWaitForMove = 5000
# Delay between two bot actions
#AiPlayerbot.ReactDelay = 100
# Distances
#AiPlayerbot.SightDistance = 50.0
#AiPlayerbot.SpellDistance = 30.0
#AiPlayerbot.ReactDistance = 150.0
#AiPlayerbot.GrindDistance = 100.0
#AiPlayerbot.LootDistance = 20.0
#AiPlayerbot.FleeDistance = 20.0
#AiPlayerbot.TooCloseDistance = 7.0
#AiPlayerbot.MeleeDistance = 1.0
#AiPlayerbot.FollowDistance = 1.5
#AiPlayerbot.WhisperDistance = 6000.0
#AiPlayerbot.ContactDistance = 0.5
# Bot can flee for enemy
#AiPlayerbot.FleeingEnabled = 1
# Health/Mana levels
#AiPlayerbot.CriticalHealth = 25
#AiPlayerbot.LowHealth = 45
#AiPlayerbot.MediumHealth = 65
#AiPlayerbot.AlmostFullHealth = 85
#AiPlayerbot.LowMana = 15
#AiPlayerbot.MediumMana = 40
# Enable random bot system
#AiPlayerbot.RandomBotAutologin = 1
# Random bot default strategies (applied after defaults)
#AiPlayerbot.RandomBotCombatStrategies = +dps,+attack weak
#AiPlayerbot.RandomBotNonCombatStrategies = +grind,+move random,+loot
# Create random bot characters automatically
#AiPlayerbot.RandomBotAutoCreate = 1
# Random bot count
#AiPlayerbot.MinRandomBots = 50
#AiPlayerbot.MaxRandomBots = 200
#AiPlayerbot.RandomBotMinLevel = 1
#AiPlayerbot.RandomBotMaxLevel = 255 (ignored if more than MaxPlayerLevel mangosd.conf value)
# Accounts to create for random bots
#AiPlayerbot.RandomBotAccountPrefix = rndbot
#AiPlayerbot.RandomBotAccountCount = 50
# Delete all random bot accounts
#AiPlayerbot.DeleteRandomBotAccounts = 0
# Maps to teleport random bots
#AiPlayerbot.RandomBotMaps = 0,1,530,571
# Change random bot has lower gear
#AiPlayerbot.RandomGearLoweringChance = 0.15
# Chance random bot has max level on first randomize
#AiPlayerbot.RandomBotMaxLevelChance = 0.4
# Quest items to leave (do not destroy)
#AiPlayerbot.RandomBotQuestItems = 6948,5175,5176,5177,5178
# Spells every random bot will learn on randomize (54197 - cold weather flying)
#AiPlayerbot.RandomBotSpellIds = 54197
# Enable LFG for random bots
#AiPlayerbot.RandomBotJoinLfg = 1
# Level diff between random bots and nearby creatures for random teleports
AiPlayerbot.RandomBotTeleLevel = 3
# Intervals
#AiPlayerbot.RandomBotUpdateInterval = 60
#AiPlayerbot.RandomBotCountChangeMinInterval = 86400
#AiPlayerbot.RandomBotCountChangeMaxInterval = 259200
#AiPlayerbot.MinRandomBotInWorldTime = 7200
#AiPlayerbot.MaxRandomBotInWorldTime = 1209600
#AiPlayerbot.MinRandomBotRandomizeTime = 7200
#AiPlayerbot.MaxRandomRandomizeTime = 1209600
#AiPlayerbot.MinRandomBotsPerInterval = 50
#AiPlayerbot.MaxRandomBotsPerInterval = 100
#AiPlayerbot.MinRandomBotsPriceChangeInterval = 7200
#AiPlayerbot.MaxRandomBotsPriceChangeInterval = 172800
# Log on all random bots on start
#AiPlayerbot.RandomBotLoginAtStartup = 1
# How far random bots are teleported after death
#AiPlayerbot.RandomBotTeleportDistance = 1000
# Debug switches
#AiPlayerbot.SpellDump = 0
#AiPlayerbot.LogInGroupOnly = 1
#AiPlayerbot.LogValuesPerTick = 0
#AiPlayerbot.RandomChangeMultiplier = 1
# Command server port, 0 - disabled
#AiPlayerbot.CommandServerPort = 8888

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,132 @@
################################################################################
# Realm list demon configuration #
################################################################################
[RealmdConf]
ConfVersion=2021010100
################################################################################
# REALMD SETTINGS
#
# LoginDatabaseInfo
# Connection settings for the realm/authentication database
# Default: hostname;port;username;password;database
# Use named pipes at Windows
# .;somenumber;username;password;database
#
# Use Unix sockets on Unix/Linux
# .;/path/to/unix_socket;username;password;database
#
# LogsDir
# Directory where log files should be written
# The given path has to exist, and be writable for the realm list demon
# Default: "" No log directory prefix, thus log files will be stored in
# the same path where the realm list demon is running
#
# PidFile
# Realm list demon PID file
# Default: "" Do not create a PID file.
#
# MaxPingTime
# Settings for maximum database-ping interval (minutes between pings)
# Default: 30
#
# RealmServerPort
# Port on which the server will listen
# Default: 3724
#
# BindIP
# Bind realm list demon to IP/hostname
# DO NOT CHANGE THIS UNLESS YOU _REALLY_ KNOW WHAT YOU'RE DOING
# Default: "0.0.0.0" Listen on all available addresses
#
# LogLevel
# Server console level of logging
# 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug
# Default: 0
#
# LogTime
# Include time in server console output [hh:mm:ss]
# Default: 0 (no time)
# 1 (print time)
#
# LogFile
# Logfile name
# Default: "Realmd.log"
# "" - empty name disable creating log file
#
# LogTimestamp
# Logfile with timestamp of server start in name
# Default: 0 - no timestamp appended
# 1 - append timestamp in form of _YYYY-MM-DD_HH-MM-SS
#
# LogFileLevel
# Server file level of logging
# 0 = Minimum; 1 = Error; 2 = Detail; 3 = Full/Debug
# Default: 0
#
# LogColors
# Color for messages (format "normal_color details_color debug_color error_color)
# Colors: 0 - BLACK, 1 - RED, 2 - GREEN, 3 - BROWN, 4 - BLUE, 5 - MAGENTA, 6 - CYAN, 7 - GREY,
# 8 - YELLOW, 9 - LRED, 10 - LGREEN, 11 - LBLUE, 12 - LMAGENTA, 13 - LCYAN, 14 - WHITE
# Default: "" - none colors
# "13 7 11 9" - for example :)
#
# UseProcessors
# Used processors mask for multi-processors system (Used only at Windows)
# Default: 0 (selected by OS)
# number (bitmask value of selected processors)
#
# ProcessPriority
# Process proirity setting (Used only at Windows)
# Default: 1 (HIGH)
# 0 (Normal)
#
# WaitAtStartupError
# After startup error report wait <Enter> or some time before continue (and possible close console window)
# -1 (wait until <Enter> press)
# Default: 0 (not wait)
# N (>0, wait N secs)
#
# RealmsStateUpdateDelay
# Realm list Update up delay (updated at realm list request if delay expired).
# Default: 20
# 0 (Disabled)
#
# WrongPass.MaxCount
# Number of login attemps with wrong password before the account or IP is banned
# Default: 3 (Never ban)
#
# WrongPass.BanTime
# Duration of the ban in seconds (0 means permanent ban)
# Default: 300
#
# WrongPass.BanType
# Ban the IP or account on which login is attempted
# Default: 0 (Ban IP)
# 1 (Ban Account)
#
################################################################################
LoginDatabaseInfo = "127.0.0.1;3306;mangos;{{ mangos_db_password }};realmd"
LogsDir = ""
PidFile = ""
MaxPingTime = 30
RealmServerPort = 3724
BindIP = "0.0.0.0"
LogLevel = 0
LogTime = 0
LogFile = "realm-list.log"
LogTimestamp = 0
LogFileLevel = 0
LogColors = "13 7 11 9"
UseProcessors = 0
ProcessPriority = 1
WaitAtStartupError = 0
RealmsStateUpdateDelay = 20
WrongPass.MaxCount = 100
WrongPass.BanTime = 300
WrongPass.BanType = 0