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