Работа в продакшене
Обновления, ноды, свой обратный прокси, масштабирование и резервные копии.
Эта страница опирается на compose-файл из раздела Установка.
Обновление
Скачайте новые образы и пересоздайте контейнеры:
docker compose pull
docker compose up -dAPI применяет обновления базы данных при запуске, отдельный шаг обновления не нужен. Чтобы
закрепить версию, укажите в .env переменную LOMIRI_TAG: релиз вроде 1.2.3 (точная версия)
или 1.2 (последний патч ветки 1.2). latest следует за самым свежим релизом.
Подключение нод Wings
- В разделе Админ → Ноды добавьте ноду с её доменом и ресурсами.
- Откройте ноду. В блоке Регистрация указано всё, что нужно Wings: UUID ноды, remote (адрес вашей панели), ID токена и сам токен.
- На ноде с установленным Wings запишите
/etc/pelican/config.ymlпо этим значениям и настройкам демона ноды, затем перезапустите Wings.
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.comsystemctl restart wingsКогда нода появится в сети, создайте для неё аллокации — и можно запускать серверы.
Свой обратный прокси
Если у вас уже работает Traefik, nginx или другой прокси, удалите сервис caddy (вместе с его
configs и томами) из compose-файла, опубликуйте оба контейнера на локальных портах и
маршрутизируйте домен так:
/api/*→ контейнер api. Эти пути вызывают Wings и интеграции через API.- Всё остальное → контейнер web.
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 и примените:
api:
scale: 3docker 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.