Llomiriby hyprr

Работа в продакшене

Обновления, ноды, свой обратный прокси, масштабирование и резервные копии.

Эта страница опирается на compose-файл из раздела Установка.

Обновление

Скачайте новые образы и пересоздайте контейнеры:

docker compose pull
docker compose up -d

API применяет обновления базы данных при запуске, отдельный шаг обновления не нужен. Чтобы закрепить версию, укажите в .env переменную LOMIRI_TAG: релиз вроде 1.2.3 (точная версия) или 1.2 (последний патч ветки 1.2). latest следует за самым свежим релизом.

Подключение нод Wings

  1. В разделе Админ → Ноды добавьте ноду с её доменом и ресурсами.
  2. Откройте ноду. В блоке Регистрация указано всё, что нужно Wings: UUID ноды, remote (адрес вашей панели), ID токена и сам токен.
  3. На ноде с установленным Wings запишите /etc/pelican/config.yml по этим значениям и настройкам демона ноды, затем перезапустите Wings.
/etc/pelican/config.yml
debug: false
uuid: <UUID>
token_id: <Token ID>
token: <Token>
api:
  host: 0.0.0.0
  port: 8080 # Порт демона
  ssl:
    enabled: true # false, если нода за прокси или работает по http
    cert: /etc/letsencrypt/live/node1.example.com/fullchain.pem
    key: /etc/letsencrypt/live/node1.example.com/privkey.pem
  upload_limit: 256 # Лимит загрузки (МиБ)
system:
  data: /var/lib/pelican/volumes # Базовый путь
  sftp:
    bind_port: 2022 # Порт SFTP
remote: https://panel.example.com
systemctl restart wings

Когда нода появится в сети, создайте для неё аллокации — и можно запускать серверы.

Свой обратный прокси

Если у вас уже работает Traefik, nginx или другой прокси, удалите сервис caddy (вместе с его configs и томами) из compose-файла, опубликуйте оба контейнера на локальных портах и маршрутизируйте домен так:

  • /api/* → контейнер api. Эти пути вызывают Wings и интеграции через API.
  • Всё остальное → контейнер web.
docker-compose.yml
  api:
    ports:
      - "127.0.0.1:3000:3000"
  web:
    ports:
      - "127.0.0.1:3001:3000"

Блок server для nginx под такую схему:

server {
    server_name panel.example.com;
    # listen 443 ssl; + настройки вашего сертификата

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

lomiri доверяет заголовку X-Forwarded-For только от прокси из TRUSTED_PROXIES. Значение по умолчанию (loopback и частные диапазоны) покрывает прокси на той же машине или в той же сети Docker. Если прокси подключается с публичного адреса, добавьте его туда. См. Настройка.

Масштабирование

Оба контейнера не хранят состояния, поэтому каждый можно запускать в нескольких репликах. Задайте scale для сервиса api или web и примените:

docker-compose.yml
  api:
    scale: 3
docker compose up -d

Встроенный Caddy распределяет запросы по всем репликам. Фоновые задачи координируются через базу данных, поэтому каждую задачу выполняет только одна реплика API.

Обновление при нескольких репликах

Каждый контейнер API применяет обновления базы данных при запуске. При обновлении масштабированного стека вернитесь к scale: 1, обновитесь и снова увеличьте число реплик, чтобы они не стартовали одновременно.

Резервное копирование

Всё, что знает lomiri, хранится в Postgres. Файлы игровых серверов лежат на ваших нодах, а их резервные копии — там, куда вы их направили (на ноде или в S3). Регулярно делайте дамп базы:

docker compose exec -T postgres pg_dump -U lomiri lomiri | gzip > lomiri-$(date +%F).sql.gz

Восстановление в чистый стек — gunzip -c backup.sql.gz | docker compose exec -T postgres psql -U lomiri lomiri до запуска API.

На этой странице