MoonWell Web
Laravel 12 сайт для World of Warcraft 1.12.1 на vMaNGOS (/home/sindo/core). Игровые аккаунты и права хранятся в базе realmd, персонажи — в characters. Сайт хранит свои данные в отдельной базе Laravel.
Подключение к локальному vMaNGOS
Локальный стенд ядра описан в /home/sindo/core/deploy/local/README.md. Сначала запустите его. Контейнер сайта подключается к сети vmangos-local_default и обращается к MariaDB как db:3306. Пароль пользователя vmangos находится в /home/sindo/core/deploy/local/secrets/db_password; скопируйте его в VMANGOS_AUTH_DB_PASSWORD и VMANGOS_CHARACTERS_DB_PASSWORD своего .env. Текущий локальный .env сайта уже настроен на этот стенд.
VMANGOS_DOCKER_NETWORK=vmangos-local_default
VMANGOS_AUTH_DB_HOST=db
VMANGOS_AUTH_DB_PORT=3306
VMANGOS_AUTH_DB_DATABASE=realmd
VMANGOS_AUTH_DB_USERNAME=vmangos
VMANGOS_CHARACTERS_DB_HOST=db
VMANGOS_CHARACTERS_DB_PORT=3306
VMANGOS_CHARACTERS_DB_DATABASE=characters
VMANGOS_CHARACTERS_DB_USERNAME=vmangos
MOONWELL_CLIENT_VERSION=1.12.1
Для PHP, запущенного прямо на хосте, укажите 127.0.0.1:13306 вместо db:3306. В продакшене настройте VMANGOS_DOCKER_NETWORK=vmangos_default и учётные данные продакшен-БД vMaNGOS. Контейнер приложения присоединяется к указанной сети автоматически.
Запуск сайта
./vendor/bin/sail up -d
./vendor/bin/sail artisan migrate --force
npm ci
npm run build
Сайт доступен на http://localhost:8080, если APP_PORT=8080. В Laravel остаются отдельные настройки DB_* для данных сайта. После смены .env выполните ./vendor/bin/sail artisan config:clear. Скрипты продакшен-деплоя находятся в scripts/deploy-production.sh и scripts/deploy-ubuntu.sh.
Игровые функции
- Регистрация создаёт случайный постоянный игровой пароль в
account.s/account.v, SRP-данные пароля сайта вsite_credentials, запись вrealmcharactersдля каждого реалма и доступ вaccount_access. - Вход на сайт и через API лаунчера сверяет пароль с
site_credentials. Смена пароля в кабинете обновляет только эти данные. - Админка меняет уровень доступа в
account_access. Для чтения персонажей используетсяcharacters.played_time_total. - Список реалмов берётся из
realmd.realmlist; доступность определяется проверкой игрового TCP-порта. - Игровой клиент: 1.12.1, build 5875. Лаунчер получает одноразовый билет через
POST /api/launcher/game-ticketс Bearer-токеном и{"client_build":5875}и передаёт возвращённыеaccountиticketклиенту как логин и пароль. Билет действителен не более 60 секунд; новый билет отзывает предыдущий. Модифицированныйrealmdиз/home/sindo/coreдопускает вход в игру только с активным билетом.
Для импорта аккаунтов прежнего сайта из AzerothCore настройте LEGACY_AUTH_DB_*, затем выполните:
./vendor/bin/sail artisan migrate --force
./vendor/bin/sail artisan vmangos:import-web-accounts --dry-run
./vendor/bin/sail artisan vmangos:import-web-accounts
Команда переносит веб-верификаторы без знания исходных паролей, создаёт игровые аккаунты со случайными паролями и при повторном запуске пропускает уже перенесённых пользователей. При первом импорте она отзывает прежние API-токены и сессии сайта, поскольку прежние ID аккаунтов могут указывать на другого пользователя. Аккаунты RNDBOT пропускаются; для их переноса есть --include-bots. Перед запуском realmd примените миграцию /home/sindo/core/sql/migrations/20261003120000_logon.sql к realmd и пересоберите ядро.
Магазин по-прежнему использует отдельную базу store через STORE_DB_*. Эти таблицы не входят в vMaNGOS. Игровая валюта сайта хранится в дополнительных таблицах realmd после миграции Laravel; для работы внутри игры нужна отдельная интеграция ядра с API из docs/game-balance-integration.md.
Перед выдачей клиента загрузите архив 1.12.1 в S3 и укажите его ключ в MOONWELL_CLIENT_OBJECT_KEY. Для обновлений лаунчера разместите файлы под MOONWELL_LAUNCHER_BASE_PATH и новый манифест по ключу MOONWELL_LAUNCHER_MANIFEST_KEY. Старые файлы клиента 3.3.5a для vMaNGOS не подходят.
Проверка
./vendor/bin/sail artisan test
npm run build
Тесты включают контрольный SRP6-вектор из src/shared/Crypto/InitializeCrypto.cpp ядра vMaNGOS, регистрацию, авторизацию, смену пароля, права и чтение персонажей. Локальное подключение к запущенным realmd и characters проверено отдельно.