This commit is contained in:
167
docs/CI_CD_GUIDE.md
Normal file
167
docs/CI_CD_GUIDE.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# CI/CD для Barotrauma Dedicated Server
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
ПК (разработка):
|
||||
Barotrauma + моды → autogen_config.py → git commit → push в release
|
||||
|
||||
Gitea Actions (CI):
|
||||
Триггер: push в release → docker build → push в локальный registry → SSH деплой
|
||||
|
||||
Сервер Ubuntu 24.04:
|
||||
Docker → docker run barotrauma-server → порт 27015 UDP/TCP
|
||||
```
|
||||
|
||||
## 1. Подготовка сервера (Ubuntu 24.04)
|
||||
|
||||
### 1.1. Установка Docker
|
||||
|
||||
```bash
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
sudo usermod -aG docker $USER
|
||||
# Выйти и зайти заново (или newgrp docker)
|
||||
```
|
||||
|
||||
### 1.2. Запуск локального Docker registry
|
||||
|
||||
```bash
|
||||
docker run -d --restart always -p 5000:5000 --name registry registry:2
|
||||
```
|
||||
|
||||
### 1.3. Настройка insecure registry
|
||||
|
||||
Создать/редактировать `/etc/docker/daemon.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"insecure-registries": ["<IP_СЕРВЕРА>:5000"]
|
||||
}
|
||||
```
|
||||
|
||||
Перезапустить Docker:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
### 1.4. Добавление SSH ключа для CI
|
||||
|
||||
Сгенерировать ключ (если нет):
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -f ~/.ssh/ci_deploy -N ""
|
||||
cat ~/.ssh/ci_deploy.pub >> ~/.ssh/authorized_keys
|
||||
chmod 600 ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
Приватный ключ (`~/.ssh/ci_deploy`) понадобится в Gitea Secrets.
|
||||
|
||||
## 2. Настройка Gitea Actions
|
||||
|
||||
### 2.1. Включить Actions в Gitea
|
||||
|
||||
`Site Administration → Actions → Enable Actions`
|
||||
|
||||
Убедиться, что есть Gitea Runner. Если нет — установить:
|
||||
|
||||
```bash
|
||||
# На сервере или отдельной машине:
|
||||
sudo wget -O /usr/local/bin/act_runner https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-amd64
|
||||
sudo chmod +x /usr/local/bin/act_runner
|
||||
act_runner register --instance https://<ВАШ_GITEA> --token <TOKEN>
|
||||
act_runner daemon
|
||||
```
|
||||
|
||||
### 2.2. Добавить Secrets в Gitea
|
||||
|
||||
В репозитории: `Settings → Secrets → Add secret`
|
||||
|
||||
| Secret | Значение |
|
||||
|--------|----------|
|
||||
| `REGISTRY_ADDR` | `<IP_СЕРВЕРА>:5000` (например `192.168.1.100:5000`) |
|
||||
| `SERVER_HOST` | IP-адрес сервера |
|
||||
| `SERVER_USER` | Пользователь для SSH (обычно `root` или ваш user) |
|
||||
| `SSH_KEY` | **Приватный** ключ из `~/.ssh/ci_deploy` |
|
||||
|
||||
## 3. Рабочий процесс
|
||||
|
||||
### 3.1. На ПК: подготовка сборки
|
||||
|
||||
```bash
|
||||
# 1. Скопировать моды из Steam Workshop в LocalMods/:
|
||||
# Каждый мод — отдельная папка, внутри filelist.xml
|
||||
# Пример: LocalMods/MyMod/filelist.xml
|
||||
|
||||
# 2. Сгенерировать конфиг:
|
||||
python3 scripts/autogen_config.py
|
||||
# → Будет создан config_player.xml с путями ко всем модам
|
||||
|
||||
# 3. (Опционально) Проверить локально:
|
||||
# docker compose up --build
|
||||
|
||||
# 4. Закоммитить и запушить:
|
||||
git add -A
|
||||
git commit -m "feat: update mods"
|
||||
git push origin release
|
||||
```
|
||||
|
||||
### 3.2. CI: автоматический деплой
|
||||
|
||||
После push в `release` Gitea Actions автоматически:
|
||||
|
||||
1. Собирает Docker образ (`Dockerfile`)
|
||||
2. Пушит образ в локальный registry (`<SERVER>:5000/barotrauma-server:latest`)
|
||||
3. По SSH подключается к серверу
|
||||
4. Останавливает старый контейнер
|
||||
5. Запускает новый контейнер с пробросом порта `27015`
|
||||
|
||||
### 3.3. Проверка сервера
|
||||
|
||||
```bash
|
||||
# На сервере:
|
||||
docker logs -f barotrauma
|
||||
# Или через Steam, подключившись к <IP_СЕРВЕРА>:27015
|
||||
```
|
||||
|
||||
## 4. Структура файлов
|
||||
|
||||
```
|
||||
BarotraumaMod/
|
||||
├── scripts/
|
||||
│ └── autogen_config.py # Скрипт генерации config_player.xml
|
||||
├── .gitea/workflows/
|
||||
│ └── deploy.yml # Gitea Actions workflow
|
||||
├── Dockerfile # Сборка Docker образа
|
||||
├── docker-compose.yml # Локальное тестирование
|
||||
├── config_player.xml # Конфиг (генерируется autogen_config.py)
|
||||
├── LocalMods/ # Моды (каждый мод в своей папке)
|
||||
│ ├── LuaCsForBarotrauma/
|
||||
│ │ └── filelist.xml
|
||||
│ ├── Mod1/
|
||||
│ │ └── filelist.xml
|
||||
│ └── ...
|
||||
└── ... # Остальные файлы сервера
|
||||
```
|
||||
|
||||
## 5. Порты
|
||||
|
||||
| Порт | Протокол | Назначение |
|
||||
|------|----------|-----------|
|
||||
| 27015 | UDP | Основной игровой трафик Barotrauma |
|
||||
| 27015 | TCP | Steam-подключения |
|
||||
| 5000 | TCP | Локальный Docker registry |
|
||||
|
||||
## 6. Полезные команды
|
||||
|
||||
```bash
|
||||
# На сервере:
|
||||
docker logs barotrauma # Логи сервера
|
||||
docker restart barotrauma # Перезапуск
|
||||
docker stop barotrauma && docker rm barotrauma # Удаление
|
||||
docker pull <IP>:5000/barotrauma-server:latest # Ручное обновление
|
||||
|
||||
# На ПК:
|
||||
python3 scripts/autogen_config.py # Обновить config_player.xml
|
||||
docker compose up --build # Локальный тест
|
||||
```
|
||||
164
docs/Info.md
Normal file
164
docs/Info.md
Normal file
@@ -0,0 +1,164 @@
|
||||
Ниже — рабочая инструкция для **Ubuntu 24.04** по запуску **Barotrauma Dedicated Server** с **модами** и **Lua for Barotrauma**. Для обычных модов на выделенном сервере нужно, чтобы файлы модов были доступны на сервере и были прописаны в `config_player.xml`; для Lua дополнительно нужно включить Lua Patch/скриптинг и затем активировать C#-скриптинг в клиенте/лаунче сервера[2][4][8].
|
||||
|
||||
## 1) Что нужно заранее
|
||||
|
||||
- Сервер **Barotrauma Dedicated Server** установлен через Steam/SteamCMD[11].
|
||||
- Есть **клиентская** копия Barotrauma на вашем ПК, где вы можете подписаться на моды в Workshop, чтобы они скачались локально[2][4].
|
||||
- Моды, которые вы хотите использовать, совместимы между собой и с вашей версией игры.
|
||||
- Для **Lua for Barotrauma** сервер должен уметь загрузить Lua Patch; в хостинге это обычно отдельный переключатель, а в локальной установке — это делается через загрузку/установку Lua из консоли и последующее включение скриптинга в игре[1][8].
|
||||
|
||||
## 2) Установка самого выделенного сервера на Ubuntu 24.04
|
||||
|
||||
Официальная инструкция рекомендует запускать сервер из каталога `Barotrauma Dedicated Server` после установки, например через `./DedicatedServer`[11].
|
||||
|
||||
- Обновите систему и установите базовые зависимости:
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y lib32gcc-s1 lib32stdc++6 tmux screen wget
|
||||
```
|
||||
|
||||
- Если сервер не стартует из-за старых библиотек, на wiki Barotrauma отдельно упоминается `libssl1.0.0` для некоторых Linux-сборок[11].
|
||||
На Ubuntu 24.04 этот пакет обычно **не нужен** и может отсутствовать в стандартных репозиториях, поэтому сначала проверьте запуск без него.
|
||||
|
||||
- Зайдите в каталог сервера:
|
||||
```bash
|
||||
cd ~/.steam/steamapps/common/Barotrauma\ Dedicated\ Server
|
||||
```
|
||||
|
||||
- Запустите сервер:
|
||||
```bash
|
||||
./DedicatedServer
|
||||
```
|
||||
Это соответствует официальному способу запуска на Linux/nix[11].
|
||||
|
||||
## 3) Как поставить обычные моды на сервер
|
||||
|
||||
Официальная wiki описывает такой путь: подписаться на моды в Steam Workshop на своём клиенте, затем скопировать файлы модов на сервер и включить их через `config_player.xml`[2][4].
|
||||
|
||||
### Шаг 3.1 — скачать моды на клиенте
|
||||
- На вашем ПК откройте Steam Workshop Barotrauma.
|
||||
- Подпишитесь на нужные моды.
|
||||
- Запустите Barotrauma, чтобы Steam скачал файлы модов локально[2][4].
|
||||
|
||||
### Шаг 3.2 — найти файлы модов
|
||||
На клиенте моды обычно лежат в каталоге WorkshopMods/Installed, а для сервера их часто копируют в `LocalMods`[10].
|
||||
Встречающийся рабочий путь на Linux-серверах и в гайдах:
|
||||
- `LocalMods/<ИмяМода>/filelist.xml`[10]
|
||||
- либо содержимое, которое соответствует `WorkshopMods/Installed` на клиенте[10]
|
||||
|
||||
### Шаг 3.3 — скопировать моды на сервер
|
||||
Скопируйте папку мода на сервер в каталог `LocalMods`.
|
||||
Пример:
|
||||
```bash
|
||||
/home/container/LocalMods/MyMod/filelist.xml
|
||||
```
|
||||
или
|
||||
```bash
|
||||
/path/to/barotrauma-server/LocalMods/MyMod/filelist.xml
|
||||
```
|
||||
В гайдах и инструкциях для dedicated server именно `LocalMods` используется как место, откуда сервер подхватывает установленный мод[10].
|
||||
|
||||
### Шаг 3.4 — прописать моды в `config_player.xml`
|
||||
Официальная wiki говорит, что активные пакеты контента нужно добавить в `config_player.xml` на сервере[2][4].
|
||||
|
||||
Откройте файл:
|
||||
```bash
|
||||
nano /path/to/barotrauma-server/config_player.xml
|
||||
```
|
||||
|
||||
Найдите блок с контент-пакетами и добавьте строки вида:
|
||||
```xml
|
||||
<contentpackages>
|
||||
<corepackage path="Content/ContentPackages/Vanilla.xml" />
|
||||
<regularpackages>
|
||||
<package path="LocalMods/MyMod/filelist.xml" />
|
||||
<package path="LocalMods/AnotherMod/filelist.xml" />
|
||||
</regularpackages>
|
||||
</contentpackages>
|
||||
```
|
||||
|
||||
Для отдельных сборок и серверных конфигураций встречается и замена стандартного ванильного пакета на путь из `LocalMods/.../filelist.xml`, если это именно кор-пакет сборки[7][10]. Но для обычных модов безопаснее не заменять ванильный пакет, а добавлять моды в `regularpackages`[4][10].
|
||||
|
||||
### Шаг 3.5 — перезапустить сервер
|
||||
После сохранения `config_player.xml` перезапустите сервер.
|
||||
После этого моды должны быть доступны на сервере[2][4].
|
||||
|
||||
## 4) Как включить Lua for Barotrauma
|
||||
|
||||
По результатам найденных инструкций, Lua для Barotrauma обычно включается так: сервер запускается с Lua Patch, после чего в игре/консоли выполняется установка, а затем активируется C# scripting[1][8].
|
||||
|
||||
### Вариант для локального/самостоятельно запущенного сервера
|
||||
- Запустите сервер с нужными модами.
|
||||
- Подключитесь к нему клиентом.
|
||||
- Откройте консоль на сервере/в игре и выполните команду установки Lua, которую в видео-гайде показывают как `install cl lua` или аналогичную команду установки Lua Patch[1].
|
||||
- После установки перезапустите игру/сервер.
|
||||
- Затем в интерфейсе игры включите **C# scripting** / **Enable C Sharp scripting**[1].
|
||||
|
||||
### Важное замечание
|
||||
В разных гайдах и сборках команда/механика установки Lua может отличаться, а у хостингов это часто делается отдельной настройкой **Install Lua Patch = Enabled**[8].
|
||||
Для вашего случая на Ubuntu 24.04 я бы ориентировался на такой порядок:
|
||||
- сначала установить и проверить обычный сервер;
|
||||
- затем включить/установить Lua Patch;
|
||||
- затем включить моды;
|
||||
- затем включить скриптинг.
|
||||
|
||||
## 5) Практический рабочий порядок установки
|
||||
|
||||
1. Установить Barotrauma Dedicated Server на Ubuntu 24.04[11].
|
||||
2. Запустить сервер один раз, чтобы он создал конфиги[11].
|
||||
3. На клиенте подписаться на нужные моды в Workshop и дождаться загрузки[2][4].
|
||||
4. Скопировать файлы модов на сервер в `LocalMods`[10].
|
||||
5. Отредактировать `config_player.xml`, добавив моды в `<regularpackages>`[2][4][10].
|
||||
6. Запустить сервер и проверить, что моды загрузились[11].
|
||||
7. Установить/включить **Lua Patch**[1][8].
|
||||
8. Подключиться клиентом, включить **C# scripting** в интерфейсе игры, если это требуется вашей сборкой Lua[1].
|
||||
9. Проверить логи сервера, если мод не подхватился.
|
||||
|
||||
## 6) Частые проблемы
|
||||
|
||||
- **Сервер стартует, но модов нет**
|
||||
Обычно это означает, что моды не скопированы на сервер или не прописаны в `config_player.xml`[2][4][10].
|
||||
|
||||
- **Не совпадают пути к файлам**
|
||||
Проверьте, что путь указывает именно на `LocalMods/<ИмяМода>/filelist.xml` или на тот путь, который использует ваша сборка[7][10].
|
||||
|
||||
- **Lua не активируется**
|
||||
Для Lua часто нужен не только пакет модов, но и отдельная активация patch/скриптинга, как показано в гайдах и у хостеров[1][8].
|
||||
|
||||
- **На Ubuntu 24.04 не запускается бинарник**
|
||||
Сначала проверьте стандартный запуск `./DedicatedServer`; проблема с дополнительными библиотеками встречается не у всех, и не все старые зависимости актуальны для 24.04[11].
|
||||
|
||||
## 7) Минимальный пример структуры
|
||||
|
||||
```text
|
||||
Barotrauma Dedicated Server/
|
||||
├─ DedicatedServer
|
||||
├─ config_player.xml
|
||||
├─ LocalMods/
|
||||
│ ├─ ModA/
|
||||
│ │ └─ filelist.xml
|
||||
│ └─ ModB/
|
||||
│ └─ filelist.xml
|
||||
└─ ...
|
||||
```
|
||||
|
||||
И фрагмент `config_player.xml`:
|
||||
```xml
|
||||
<contentpackages>
|
||||
<corepackage path="Content/ContentPackages/Vanilla.xml" />
|
||||
<regularpackages>
|
||||
<package path="LocalMods/ModA/filelist.xml" />
|
||||
<package path="LocalMods/ModB/filelist.xml" />
|
||||
</regularpackages>
|
||||
</contentpackages>
|
||||
```
|
||||
|
||||
## 8) Что я могу сделать дальше
|
||||
|
||||
Если хотите, я могу сразу написать **готовый bash-скрипт для Ubuntu 24.04**, который:
|
||||
- создаст пользователя для сервера,
|
||||
- скачает/обновит Dedicated Server,
|
||||
- разложит папки `LocalMods`,
|
||||
- и покажет, как автоматически править `config_player.xml`.
|
||||
|
||||
**Источники:** [1], [2], [4], [8], [10], [11]
|
||||
Reference in New Issue
Block a user