Хранилища S3

Бэкапы игровых серверов, резервные копии панели и файлы карт и модов панель хранит не у себя, а в S3-совместимом хранилище: AWS S3, Backblaze B2, Selectel, Cloudflare R2, свой MinIO и т. п. Хранилища настраиваются на странице Модули → Бэкапы и хранилища S3 → Хранилища S3.

Пока нет ни одного хранилища, бэкапы и загрузка аддонов недоступны.

Добавить хранилище

Сначала создайте бакет и ключ доступа к нему у своего провайдера. Затем в панели нажмите Добавить хранилище:

  • Endpoint — адрес S3 API провайдера, например https://s3.eu-central-003.backblazeb2.com. Пусто — настоящий AWS S3.
  • Регион — регион бакета, например eu-central-1.
  • Бакет — имя бакета.
  • Название — как хранилище подписано в панели. Пусто — имя бакета.
  • Path-style адресация — включите для MinIO и тех провайдеров, которые требуют адреса вида endpoint/бакет.
  • Access Key ID и Secret Access Key — ключи доступа. Пусто — стандартная цепочка AWS (переменные окружения, роль инстанса).
  • TTL подписанной ссылки, сек — сколько живут ссылки на загрузку и скачивание. По умолчанию 15 минут.
  • Сделать хранилищем по умолчанию — первое добавленное хранилище становится им само.

Изменения применяются сразу, без перезапуска панели.

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

Куда пишутся новые файлы

  • Хранилище по умолчанию — туда идут новые бэкапы и файлы аддонов, если ниже не задано иное.
  • Хранилище для аддонов (блок Куда идут новые файлы аддонов) — отдельное хранилище для загрузок, массового импорта, Modrinth и файлов пользователей. Пригодится, если для аддонов нужны другие правила хранения или CDN.
  • Куда идут новые бэкапы — своё хранилище для локации или ноды, например MinIO в том же датацентре, чтобы не гонять трафик между регионами. Привязка ноды сильнее привязки её локации, а без привязок используется хранилище по умолчанию.

Каждый бэкап и каждый файл аддона запоминает, в каком хранилище лежит, и всегда читается оттуда. Поэтому смена хранилища по умолчанию или привязок ничего не ломает: уже сохранённое остаётся на месте, а новое пишется в новое хранилище.

Загрузка аддонов из браузера (CORS)

Файлы аддонов админка загружает из браузера сразу в бакет, минуя панель, — так проходят и большие архивы. Для этого бакет должен разрешать загрузку с адреса панели: в меню хранилища выберите Разрешить загрузку из браузера (CORS). Панель добавит нужное правило, не трогая остальные.

MinIO разрешает загрузку с любых адресов сам. Если провайдер не даёт настроить CORS через API, настройте его в панели провайдера. Без CORS загрузка тоже сработает: админка загрузит файл через панель, только медленнее.

Сменить ключи или переехать

Ключи, регион, TTL и название можно менять в любой момент, например при ротации ключей.

Endpoint и Бакет у хранилища, в котором уже что-то лежит, поменять нельзя, иначе панель потеряла бы сохранённые объекты. Чтобы переехать в другой бакет:

  1. Добавьте новое хранилище и сделайте его хранилищем по умолчанию (и хранилищем для аддонов, если оно было отдельным).
  2. Перенесите на новое хранилище привязки локаций и нод.
  3. Новые бэкапы и файлы пойдут туда. Старое хранилище понадобится, пока в нём остаются нужные бэкапы.

Удалить хранилище

Удалить можно только пустое хранилище, на которое нет привязок локаций и нод. Иначе пункт меню выглядит как Удалить (сначала освободите): удалите старые бэкапы или дождитесь, пока их вытеснят новые, и снимите привязки.

Встроенный MinIO

Если своего S3 нет, панель может поднять MinIO на том же сервере. Это удобно для старта и тестов, но в продакшене лучше внешнее хранилище: встроенный MinIO работает по HTTP без TLS и лежит на той же машине, что и панель.

  1. В /opt/game-panel/.env добавьте minio в COMPOSE_PROFILES и выполните docker compose up -d.
  2. Создайте бакет:
cd /opt/game-panel
docker compose exec minio sh -c 'mc alias set local http://localhost:9000 "$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD" && mc mb local/panel'
  1. Добавьте хранилище в панели: Endpoint http://<домен панели>:9000, Бакет panel, Path-style адресация включена, ключи — MINIO_ROOT_USER (по умолчанию panel) и MINIO_ROOT_PASSWORD из .env.
  2. Откройте порт 9000/tcp на сервере панели для нод.

См. также Бэкапы сервера, Резервные копии и Карты и моды.