2026-03-13 23:42:14 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:42:14 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:33:35 +04:00
2026-03-11 22:04:36 +04:00
2026-03-13 23:33:35 +04:00
2026-03-11 22:04:36 +04:00
2026-03-13 23:33:35 +04:00
2026-03-11 22:04:36 +04:00
2026-03-11 22:04:36 +04:00
2026-03-11 22:04:36 +04:00
2026-03-13 23:42:14 +04:00
2026-03-13 23:33:35 +04:00
2026-03-13 23:33:35 +04:00
2026-03-11 22:04:36 +04:00
2026-03-11 22:04:36 +04:00
2026-03-13 23:33:35 +04:00
2026-03-11 22:04:36 +04:00

Moonwell Web

Laravel 12-приложение с WoW-лендингом и публичной регистрацией игрового аккаунта напрямую в auth-базу AzerothCore.

Что уже сделано

  • Развёрнут Laravel v12.12.1 со свежим laravel/framework v12.x.
  • Главная страница оформлена в тёмной cinematic-стилистике с компоновкой, вдохновлённой официальным сайтом WoW.
  • Форма регистрации создаёт аккаунт напрямую в acore_auth через отдельное соединение azerothcore_auth.
  • При регистрации заполняются таблицы account, realmcharacters и account_access.
  • Регистрация возможна только по инвайт-коду, который хранится в базе сайта.
  • Добавлены личный кабинет и админка поверх игровых аккаунтов из auth-базы.
  • В кабинете доступны смена пароля, список персонажей и ссылка на клиент игры из S3.
  • В админке доступны просмотр всех аккаунтов, их персонажей, смена gmlevel и выпуск инвайт-кодов.
  • Проект подготовлен под Laravel Sail: приложение работает в контейнере, а AzerothCore auth DB берётся с хоста через host.docker.internal:3306.

Как запускать через Sail

cp .env.example .env
./vendor/bin/sail up -d
./vendor/bin/sail composer install
./vendor/bin/sail artisan key:generate
./vendor/bin/sail artisan migrate

Сайт будет доступен на http://localhost:8080.

Деплой на Ubuntu

Скрипт деплоя лежит в scripts/deploy-ubuntu.sh. Он рассчитан на сервер, где уже установлены:

  • docker
  • docker compose

Перед первым запуском проверь .env:

  • APP_URL
  • APP_PORT
  • FORWARD_DB_PORT
  • AZEROTHCORE_AUTH_DB_HOST
  • AZEROTHCORE_AUTH_DB_PORT
  • AZEROTHCORE_AUTH_DB_DATABASE
  • AZEROTHCORE_AUTH_DB_USERNAME
  • AZEROTHCORE_AUTH_DB_PASSWORD

Запуск:

chmod +x scripts/deploy-ubuntu.sh
./scripts/deploy-ubuntu.sh

Что делает скрипт:

  • создаёт .env из .env.example, если файла ещё нет;
  • собирает контейнер приложения;
  • ставит production-зависимости Composer;
  • генерирует APP_KEY, если он пустой;
  • поднимает контейнеры;
  • ждёт готовности MySQL;
  • выполняет php artisan migrate --force;
  • прогревает config, route и view кэш.

Полезные флаги:

./scripts/deploy-ubuntu.sh --skip-build
./scripts/deploy-ubuntu.sh --skip-cache

Как это связано с AzerothCore

По умолчанию Sail-контейнер подключается к auth-базе core-сервера так:

  • хост: host.docker.internal
  • порт: 3306
  • база: acore_auth
  • пользователь: root
  • пароль: password

Это рассчитано на вашу docker-сборку из /home/sindo/moonwell-core, где MySQL опубликован наружу на порт 3306.

Важные переменные

Основные настройки лежат в .env.example:

  • APP_PORT=8080
  • FORWARD_DB_PORT=3307
  • DB_HOST=mysql
  • AZEROTHCORE_AUTH_DB_HOST=host.docker.internal
  • AZEROTHCORE_AUTH_DB_PORT=3306
  • AZEROTHCORE_AUTH_DB_DATABASE=acore_auth
  • AZEROTHCORE_AUTH_DB_USERNAME=root
  • AZEROTHCORE_AUTH_DB_PASSWORD=password
  • AZEROTHCORE_CHARACTERS_DB_DATABASE=acore_characters
  • MOONWELL_ADMIN_MIN_GMLEVEL=3
  • MOONWELL_CLIENT_OBJECT_KEY="World of Warcraft.zip"
  • AWS_ENDPOINT=https://storage.yandexcloud.net
  • AWS_BUCKET=warcraft-client

Архитектура

  • compose.yaml — Sail-окружение с laravel.test и локальным MySQL для самого сайта.
  • config/database.php — отдельное соединение azerothcore_auth.
  • config/moonwell.php — настройки realm/landing и регистрации.
  • app/Auth/AzerothCoreUserProvider.php — Laravel-auth поверх игровых аккаунтов.
  • app/Services/AzerothCoreAccountService.php — работа с аккаунтами, персонажами, паролями и gmlevel.
  • app/Services/GameClientDownloadService.php — генерация ссылки на клиент из S3.
  • app/Services/AzerothCoreAccountRegistrar.php — SRP6-совместимое создание учётной записи AzerothCore.
  • app/Http/Controllers/LandingController.php — данные лендинга и обработка формы.

Проверка

Вне Sail я уже проверил:

  • рендер лендинга по HTTP;
  • компиляцию Blade;
  • маршруты;
  • ручную валидацию POST /register;
  • совпадение SRP6 verifier с формулой AzerothCore.

Для полноценного php artisan test внутри контейнера используйте:

./vendor/bin/sail artisan test
S
Description
Веб-приложение MoonWell
Readme 2.7 MiB
Languages
PHP 79.4%
Blade 8.6%
JavaScript 3.9%
CSS 3.8%
Vue 2.6%
Other 1.7%