1509aa6a141373fe8e21ab8ba9b06fba662a76a5
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. Он рассчитан на сервер, где уже установлены:
dockerdocker compose
Перед первым запуском проверь .env:
APP_URLAPP_PORTFORWARD_DB_PORTAZEROTHCORE_AUTH_DB_HOSTAZEROTHCORE_AUTH_DB_PORTAZEROTHCORE_AUTH_DB_DATABASEAZEROTHCORE_AUTH_DB_USERNAMEAZEROTHCORE_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=8080FORWARD_DB_PORT=3307DB_HOST=mysqlAZEROTHCORE_AUTH_DB_HOST=host.docker.internalAZEROTHCORE_AUTH_DB_PORT=3306AZEROTHCORE_AUTH_DB_DATABASE=acore_authAZEROTHCORE_AUTH_DB_USERNAME=rootAZEROTHCORE_AUTH_DB_PASSWORD=passwordAZEROTHCORE_CHARACTERS_DB_DATABASE=acore_charactersMOONWELL_ADMIN_MIN_GMLEVEL=3MOONWELL_CLIENT_OBJECT_KEY="World of Warcraft.zip"AWS_ENDPOINT=https://storage.yandexcloud.netAWS_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
Description
Languages
PHP
79.4%
Blade
8.6%
JavaScript
3.9%
CSS
3.8%
Vue
2.6%
Other
1.7%