Files
game-server/README.md
bilal 7510bf2ee8 Prevent Steam startup hangups and persist profile path.
Launch Steam via nohup under steam user and enforce stable ~/.steam symlink for reboot-safe startup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 20:09:10 +03:00

124 lines
5.3 KiB
Markdown
Raw 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.
# Game Server с использованием Sunshine и Steam
Этот проект предоставляет Docker-конфигурацию для запуска игрового сервера с использованием Sunshine и Steam, позволяя запускать игры на нескольких клиентах одновременно.
## Структура проекта
- `Dockerfile` - файл для создания Docker-образа с Sunshine и Steam
- `docker-compose.yml` - конфигурация для запуска нескольких контейнеров
- `players/` - директория с конфигурациями и данными для каждого игрока
- `p1_config/`, `p2_config/`, `p3_config/`, `p4_config/` - конфигурации для каждого клиента
- `p1_steam/`, `p2_steam/`, `p3_steam/`, `p4_steam/` - данные Steam для каждого клиента
## Особенности
- Поддержка 4 одновременных клиентов
- Использование NVIDIA GPU для ускорения работы
- Автоматическое восстановление контейнеров
- Healthcheck для мониторинга состояния
- Логирование для отладки
## Требования
- Docker и Docker Compose
- NVIDIA драйверы
- NVIDIA Container Toolkit
- 2x Tesla K80 (суммарно 4 GPU-чипа)
## Установка
1. Убедитесь, что у вас установлен Docker и Docker Compose
2. Склонируйте репозиторий
3. Настройте пути к папкам Steam в `docker-compose.yml`
4. Проверьте назначение GPU-чипов в `NVIDIA_VISIBLE_DEVICES`:
- `player1` -> GPU `1`
- `player2` -> GPU `2`
- `player3` -> GPU `3`
- `player4` -> GPU `4`
GPU `0` в этой конфигурации обычно занят отдельной видеокартой (например, Quadro) и не используется для игровых контейнеров.
5. Запустите команду:
```bash
docker-compose up -d
```
## Настройка
### Конфигурация Sunshine
Конфигурационные файлы Sunshine находятся в директориях `players/pX_config/`:
- `apps.json` - список установленных игр
- `credentials/` - SSL сертификаты
`sunshine.conf` не хранится в репозитории и генерируется Sunshine автоматически при первом запуске контейнера.
`Steam Big Picture` запускается от отдельного пользователя `steam` внутри контейнера. Данные Steam сохраняются в `players/pX_steam` и не теряются после перезапуска контейнеров/сервера.
### Порты
В Moonlight при ручном добавлении указывается один адрес в формате `IP:base_port`.
`base_port` для каждого клиента:
- `player1` -> `47989` (можно просто `IP`, это дефолт)
- `player2` -> `48019`
- `player3` -> `48049`
- `player4` -> `48079`
Порты проброшены для каждого клиента отдельно (формат: `host:container`):
- `player1`
- TCP: `47984-47990:47984-47990`
- TCP/UDP: `48010:48010`
- UDP: `47998-48000:47998-48000`
- `player2`
- TCP: `48014-48020:47984-47990`
- TCP/UDP: `48040:48010`
- UDP: `48028-48030:47998-48000`
- `player3`
- TCP: `48044-48050:47984-47990`
- TCP/UDP: `48070:48010`
- UDP: `48058-48060:47998-48000`
- `player4`
- TCP: `48074-48080:47984-47990`
- TCP/UDP: `48100:48010`
- UDP: `48088-48090:47998-48000`
Moonlight использует `base_port` и вычисляет остальные порты автоматически.
### Первый запуск Steam
При первом запуске Steam скачивает и распаковывает клиент (может занять 10-20 минут, в зависимости от канала). В это время в Moonlight может отображаться пустой/черный рабочий стол.
Проверка прогресса для `player1`:
```bash
docker exec -it game-player-1 bash -lc 'tail -f /home/steam/.local/share/Steam/debian-installation/logs/bootstrap_log.txt'
```
После завершения первичной загрузки повторно откройте сессию Moonlight и запустите `Steam Big Picture`.
Если запуск Steam прерывается после выхода из терминала (`Hangup`), используйте лог:
```bash
docker exec -it game-player-1 bash -lc 'tail -f /home/steam/steam-app.log'
```
## Отладка
Для проверки состояния контейнеров используйте:
```bash
docker-compose ps
```
Для просмотра логов:
```bash
docker-compose logs player1
```
## Улучшения
1. Добавлен healthcheck для лучшей стабильности
2. Добавлено логирование для отладки
3. Оптимизирован Dockerfile
4. Улучшена стабильность запуска контейнеров