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

Беречь нужно три разные вещи, и у каждой свой способ резервного копирования.

1. Секреты установки

/opt/game-panel/.env и /opt/game-panel/certs/. В них пароль базы, ключи шифрования настроек игр, центр сертификации нод и ключи NATS. В резервные копии панели они не входят.

Копируйте их с сервера после установки и после каждой смены ключей:

sudo tar czf game-panel-secrets.tar.gz -C /opt/game-panel .env certs

Без них восстановленная база не расшифрует секреты игр, а ноды не доверяют новому центру сертификации — каждую ноду пришлось бы подключать заново.

2. Резервная копия панели

Собственные данные панели: пользователи, API-ключи, каталог игр, тарифы, игровые серверы, хранилища S3, вебхуки, журнал аудита, логотип. Управляется на странице Система → Резервная копия.

  • Расписание — раз в сутки в выбранный час; хранятся последние N автоматических копий.
  • Где — в хранилище S3, настроенном в панели. Без S3 — кнопка Скачать файлом.
  • Пароль копий — задаётся на той же странице (не короче 12 символов, можно сгенерировать). Без него архив не шифруется и содержит хэши паролей, ключи S3 и секреты вебхуков.

Кроме того, каждое обновление пишет копию в /opt/game-panel/backups/ на самом сервере.

Восстановление

Из копии в S3 или из файла, на той же странице. Архив должен быть снят той же версией панели с теми же ключами шифрования — иначе панель откажет, перечислит причины и ничего не изменит. Перед восстановлением снимается страховочная копия, данные заменяются одной транзакцией.

После восстановления перезапустите панель (docker compose restart master) и войдите заново. Игровые серверы на нодах продолжают работать, панель сверит их с восстановленными данными.

3. Бэкапы игровых серверов

Бэкапы серверов клиентов хранятся в S3 и управляются в панели — для каждого сервера и через расписания. Объекты остаются в бакетах; если нужна вторая копия, резервируйте сами бакеты средствами вашего S3-провайдера. См. Бэкапы сервера и Хранилища S3.

Перенос панели на новый сервер

  1. Снимите свежую копию панели файлом (Скачать файлом) и остановите старую панель.
  2. На новом сервере положите сохранённые .env и certs/ в /opt/game-panel и запустите установщик той же версии, что и старая панель, — существующие секреты он не трогает. Если домен ещё указывает на старый сервер, установщик предупредит — ответьте «да». Ссылку мастера первого запуска не открывайте.
  3. Восстановите копию из командной строки:
cd /opt/game-panel
docker compose stop master
docker compose run --rm -T --no-deps -e PANEL_BACKUP_PASSPHRASE='<пароль копий>' \
  master panel-backup import - < panel-backup.tar.gz.age
docker compose up -d
  1. Направьте домен на новый сервер. Let's Encrypt выпустит сертификат, когда обновится DNS.

Ноды переподключатся сами: центр сертификации и домен прежние. Восстановленная панель сохраняет свой ID установки, поэтому лицензия продолжает продлеваться. Для незашифрованной копии уберите -e PANEL_BACKUP_PASSPHRASE=….