# FelWell — Legion 7.3.5 Production-сборка SylvaniaCore для realm **FelWell**. Сервер рассчитан на клиент World of Warcraft Legion **7.3.5 build 26972** и публикуется по адресу `legion.moon-well.online`. ## Что входит в сборку - SylvaniaCore: `worldserver` и `bnetserver`; - MariaDB 11.4 с базами `auth`, `characters`, `world`, `hotfixes` и `shop`; - Docker Compose для сборки и запуска всего стека; - автоматическая настройка `auth.realmlist` из переменных окружения; - русская локализация дополнительных `broadcast_text`; - постоянные Docker volumes для базы данных и журналов. ## Требования к VPS - Ubuntu 24.04; - Docker Engine с Compose plugin; - DNS-запись `legion.moon-well.online`, направленная на публичный IP VPS; - открытые входящие TCP-порты `1119`, `8081` и `8085`; - игровой порт MariaDB `3306` не должен быть открыт в Интернет. В каталоге `data/` должны находиться данные, извлечённые из клиента 7.3.5.26972: `dbc`, `maps`, `vmaps`, `mmaps`, `cameras` и `gt`. ## Первый запуск Создайте production-конфигурацию: ```bash cp .env.production.example .env.production nano .env.production ``` Обязательно замените `DB_ROOT_PASSWORD` и `DB_PASSWORD` на разные длинные случайные пароли. Затем положите полные дампы `world` и `hotfixes` в `docker/db-dumps/` и запустите сервер: ```bash docker compose --env-file .env.production up --build -d docker compose --env-file .env.production ps docker compose --env-file .env.production logs -f bnetserver worldserver ``` При запуске запись realm автоматически получает следующие значения: ```text name = FelWell address = legion.moon-well.online port = 8085 gamebuild = 26972 ``` ## Русские переводы Дополнительные переводы находятся в `sql/translations/ruRU/`. Их можно импортировать после инициализации базы: ```bash set -a . ./.env.production set +a for file in sql/translations/ruRU/broadcast_text_locale_ruRU_part_*.sql; do docker compose --env-file .env.production exec -T database \ mariadb --binary-mode -uroot "-p${DB_ROOT_PASSWORD}" hotfixes < "$file" done docker compose --env-file .env.production restart worldserver ``` Импорт идемпотентный: существующие строки не перезаписываются. ## Свой Git-сервер и обновления GitHub Используется стандартная схема с двумя remote: - `origin` — ваш собственный Git-сервер, основное место хранения; - `upstream` — публичный GitHub-репозиторий SylvaniaCore, только источник обновлений. GitHub уже настроен как `upstream`. Добавьте свой сервер, подставив настоящий SSH URL: ```bash git remote add origin git@YOUR_GIT_SERVER:YOUR_GROUP/SylvaniaCore.git git push -u origin master git remote -v ``` Рабочие изменения сначала коммитятся и отправляются только в ваш `origin`: ```bash git add . git commit -m "Configure FelWell production deployment" git push origin master ``` Для получения очередных обновлений GitHub: ```bash git status git fetch upstream --prune git switch master git branch "backup/before-upstream-$(date +%F-%H%M)" git merge upstream/sylvaniacore ``` Если возникли конфликты, разрешите их, сохраняя FelWell-настройки в `compose.yaml`, `docker/`, `.env.production.example` и SQL-миграциях. После сборки и проверки отправьте результат на собственный сервер: ```bash docker compose --env-file .env.production build docker compose --env-file .env.production up -d docker compose --env-file .env.production logs --tail=200 worldserver bnetserver git push origin master ``` Не выполняйте обновление при незакоммиченных изменениях. Файлы `.env`, `.env.production`, игровые данные и полные дампы БД исключены из Git. ## Резервное копирование базы Перед обновлением создайте дамп всех игровых баз: ```bash set -a . ./.env.production set +a docker compose --env-file .env.production exec -T database \ mariadb-dump -uroot "-p${DB_ROOT_PASSWORD}" \ --single-transaction --routines --events \ --databases auth characters world hotfixes shop \ | gzip > "felwell-$(date +%F-%H%M).sql.gz" ``` Храните резервные копии вне VPS. Docker volume защищает данные при пересоздании контейнеров, но не заменяет внешнюю резервную копию. ## Полезные команды ```bash # Состояние контейнеров docker compose --env-file .env.production ps # Последние журналы docker compose --env-file .env.production logs --tail=200 worldserver bnetserver # Перезапуск серверов без удаления БД docker compose --env-file .env.production restart bnetserver worldserver # Остановка стека с сохранением volumes docker compose --env-file .env.production down ``` Не запускайте `docker compose down -v` на production: ключ `-v` удаляет volume MariaDB вместе с игровыми аккаунтами и персонажами.