No description
Find a file
Yehonal de98f42411
feat(Service Manager): add service registry custom dir and restore functionality (#22589)
This pull request introduces significant enhancements to the service management system by adding a service registry with features like automatic tracking, reboot persistence, and restoration of missing services. 

The goal of this PR is to allow the user to store the service configuration files into an arbitrary directory, in this way they can be easily tracked, versioned, and replicated across different environments

It also includes a migration script to transition from the legacy service configuration format to the new registry-based system. Below is a summary of the most important changes:

### Service Registry and Management Enhancements:
1. **Service Registry Integration**:
   - Added a comprehensive service registry system to track all created services, enabling features like cross-reboot persistence and restoration of missing services (`apps/startup-scripts/src/service-manager.sh`). [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R41-R229) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R273)
   - Introduced commands for managing the registry, such as `restore` for recreating missing services and `list` for viewing registered services. [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R273) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R332-R334) [[3]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R346-L172)

2. **PM2 Persistence**:
   - Enhanced PM2 integration to automatically configure startup persistence across reboots using `pm2 startup` and `pm2 save` after service creation.

### Migration and Compatibility:
3. **Migration Script**:
   - Added a `migrate-registry.sh` script to convert legacy service configurations into the new registry format. It ensures compatibility while preserving existing service information (`apps/startup-scripts/src/migrate-registry.sh`).

### Documentation Updates:
4. **Updated README**:
   - Expanded documentation in `README.md` to explain the new service registry features, including usage examples, custom configuration directories, and migration instructions. [[1]](diffhunk://#diff-0917b2888cc9b16539173f318b77773d08f7bf360579b68b9710a96ca2bcbb64L387-R468) [[2]](diffhunk://#diff-0917b2888cc9b16539173f318b77773d08f7bf360579b68b9710a96ca2bcbb64R613-R626)

### Configuration Improvements:
5. **Custom Configuration Directories**:
   - Added support for overriding the default configuration directory for service registry and files using the `AC_SERVICE_CONFIG_DIR` environment variable. [[1]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9L14-R15) [[2]](diffhunk://#diff-31edfed7f73d0647a5fc96ce74c249e025e884cd1fe06621cb78eb4a381464f9R346-L172)

These changes significantly improve the usability, reliability, and maintainability of the service management system, especially for setups requiring persistence and multi-project configurations.
2025-08-25 20:25:17 +02:00
.devcontainer feat(bash): startup-scripts reworked + bash scripts workflow integration (#22401) 2025-07-01 15:35:54 +02:00
.github chore(CI): Corrected the name of workflow in action tab to be more clear. (#22459) 2025-07-11 14:59:50 -04:00
.vscode feat(bash): startup-scripts reworked + bash scripts workflow integration (#22401) 2025-07-01 15:35:54 +02:00
apps feat(Service Manager): add service registry custom dir and restore functionality (#22589) 2025-08-25 20:25:17 +02:00
bin fix(bash): pending sql script path 2021-06-15 11:02:48 +02:00
conf/dist feat(bash): startup-scripts reworked + bash scripts workflow integration (#22401) 2025-07-01 15:35:54 +02:00
data/sql chore(DB): import pending files 2025-08-25 17:22:38 +00:00
deps fix(Core/FleeingMovementGenerator): Prevent fear movement from causing characters to fall through the ground (#22451) 2025-07-11 11:44:44 -03:00
doc fix(LICENSE): update license file paths (#18972) 2024-05-29 20:10:39 +02:00
env fix(Docker): Ensure default install prefix dirs exist (#17661) 2023-11-09 22:02:14 +01:00
modules feat(CMake/Eluna): Update CMakeLists for modules to allow Eluna to switch Lua version (#21123) 2025-01-11 13:03:20 +01:00
src fix(Entities/Creature): do not touch setActive() state in setDeathSta… (#22729) 2025-08-25 12:32:35 -03:00
var feat(CORE): docker permissions and rework (#13454) 2022-11-07 13:20:48 +01:00
.dockerignore feat(Apps/Docker): Use Env Vars for docker configuration (#17040) 2023-08-20 17:52:38 +02:00
.editorconfig fix(bash): repository initialization bugs and update configurations (#22311) 2025-06-17 18:30:51 +01:00
.git_commit_template.txt chore(git): Add a co-author suggestion to the commit template (#4538) 2021-02-23 14:20:07 +01:00
.gitattributes fix(Docker): windows improvements and permissions fix (#5444) 2021-04-28 22:26:39 +02:00
.gitignore fix(bash): repository initialization bugs and update configurations (#22311) 2025-06-17 18:30:51 +01:00
.suppress.cppcheck fix(CI): cppcheck failure step (#17240) 2023-09-21 12:43:57 +02:00
acore.json feat(DB): Release ACDB 13.0.0 (#22508) 2025-07-19 13:16:46 +02:00
acore.sh fix(bash): bash errors on windows (#5406) 2021-04-23 14:35:41 +02:00
AUTHORS docs(AUTHORS): add Cross-project Collaboration section (#22034) 2025-05-19 17:49:15 +02:00
CMakeLists.txt feat(bash): startup-scripts reworked + bash scripts workflow integration (#22401) 2025-07-01 15:35:54 +02:00
docker-compose.yml chore(Docker): Update dev container to ubuntu24.04 (#21044) 2025-01-19 12:46:28 +01:00
flake.lock feat(build): initial development nix flake (#18296) 2024-03-20 01:46:22 -03:00
flake.nix feat(build): initial development nix flake (#18296) 2024-03-20 01:46:22 -03:00
install.sh Rewrite of bash system 2018-07-15 22:51:17 +02:00
LICENSE docs(LICENSE): remove old GPLv2 license (#11076) 2022-03-18 19:57:39 -03:00
PreLoad.cmake First Commit 2016-06-26 10:39:44 +02:00
pull_request_template.md Revert "chore(Licence): Add an agreement to relicense for futur PRs" (#20986) 2024-12-20 23:42:45 +01:00

logo AzerothCore

Contributor Covenant CodeFactor StackOverflow Discord

Build Status

nopch-build pch-build core-modules-build windows-build macos-build docker-build tools-build

Introduction

AzerothCore is an open-source game server application and framework designed for hosting massively multiplayer online role-playing games (MMORPGs). It is based on the popular MMORPG World of Warcraft (WoW) and seeks to recreate the gameplay experience of the original game from patch 3.3.5a.

The original code is based on MaNGOS, TrinityCore, and SunwellCore and has since then had extensive development to improve stability, in-game mechanics, and modularity to the game. AC has also grown into a community-driven project with a significant number of contributors and developers. It is written in C++ and provides a solid foundation for creating private servers that mimic the mechanics and behavior of the official WoW servers.

Philosophy

Our main goal is to create a playable game server, offering a fully working in-game experience.

Here are the main points we focus on:

  • Stability

    • We make sure all changes pass the CIs before being merged into the master branch.
  • Blizzlike content

    • We strive to make all in-game content to be blizzlike. Therefore we have a high standard for fixes being made.
  • Customization

    • It is easy to customize your experience using modules.
  • Community driven

    • AzerothCore has an active community of developers, contributors, and users who collaborate, share knowledge, and provide support through forums, Discord channels, and other communication platforms.

Modules

AzerothCore is designed to be highly modular, allowing developers to extend and customize the game to suit their preferences or create unique gameplay experiences. This flexibility enables the addition of custom features, content, and modifications.

We have a lot of modules already made by the community, many of which can be found in the Module Catalogue.

Installation

Detailed installation instructions are available here.

Contributing

AzerothCore can also serve as a learning resource for aspiring developers who want to understand how WoW servers work, how MMORPGs are structured, how game server emulators are created, or to improve their C++ and SQL knowledge.

If you want to contribute to the project, you will find a lot of resources that will guide you in our wiki.

We also recommend you read our Contributor Covenant Code of Conduct.

Feel free to join our Discord server.

Click on the " Star" button to help us gain more visibility on Github!

Authors & Contributors

The project was born in 2016 based on SunwellCore. Unfortunately, SunwellCore was published without any git history, so on git there are no credits for all the contributors before 2016.

You can check the authors file for more details.

License

  • The new AzerothCore source components are released under the GNU AGPL v3
  • The old sources based on MaNGOS/TrinityCore are released under the GNU GPL v2

It's important to note that AzerothCore is not an official Blizzard Entertainment product, and it is not affiliated with or endorsed by World of Warcraft or Blizzard Entertainment. AzerothCore does not in any case sponsor nor support illegal public servers. If you use this project to run an illegal public server and not for testing and learning it is your own personal choice.

Special thanks

JetBrains is providing free open-source licenses to the AzerothCore developers.

JetBrains logo.