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

161 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 вместе с игровыми аккаунтами и персонажами.