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