Files
game-server/README.md
bilal cc39c8b766 Fix Docker dependency and align Moonlight port-family mapping.
Update Sunshine container ports/docs for single base-port client setup and correct missing Ubuntu package.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 15:36:30 +03:00

4.1 KiB
Raw Blame History

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. Запустите команду:

    docker-compose up -d
    

Настройка

Конфигурация Sunshine

Конфигурационные файлы Sunshine находятся в директориях players/pX_config/:

  • apps.json - список установленных игр
  • credentials/ - SSL сертификаты

sunshine.conf не хранится в репозитории и генерируется Sunshine автоматически при первом запуске контейнера.

Порты

В 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 и вычисляет остальные порты автоматически.

Отладка

Для проверки состояния контейнеров используйте:

docker-compose ps

Для просмотра логов:

docker-compose logs player1

Улучшения

  1. Добавлен healthcheck для лучшей стабильности
  2. Добавлено логирование для отладки
  3. Оптимизирован Dockerfile
  4. Улучшена стабильность запуска контейнеров