Files
2026-08-31 21:32:14 +04:00

6.0 KiB
Raw Permalink Blame History

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-конфигурацию:

cp .env.production.example .env.production
nano .env.production

Обязательно замените DB_ROOT_PASSWORD и DB_PASSWORD на разные длинные случайные пароли. Затем положите полные дампы world и hotfixes в docker/db-dumps/ и запустите сервер:

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 автоматически получает следующие значения:

name      = FelWell
address   = legion.moon-well.online
port      = 8085
gamebuild = 26972

Русские переводы

Дополнительные переводы находятся в sql/translations/ruRU/. Их можно импортировать после инициализации базы:

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:

git remote add origin git@YOUR_GIT_SERVER:YOUR_GROUP/SylvaniaCore.git
git push -u origin master
git remote -v

Рабочие изменения сначала коммитятся и отправляются только в ваш origin:

git add .
git commit -m "Configure FelWell production deployment"
git push origin master

Для получения очередных обновлений GitHub:

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-миграциях. После сборки и проверки отправьте результат на собственный сервер:

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.

Резервное копирование базы

Перед обновлением создайте дамп всех игровых баз:

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 защищает данные при пересоздании контейнеров, но не заменяет внешнюю резервную копию.

Полезные команды

# Состояние контейнеров
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 вместе с игровыми аккаунтами и персонажами.