Базы данных
Многим плагинам и модам нужна база данных: LuckPerms, CoreProtect, Oxide-плагинам, статистике и банлистам. Клиент создаёт базу MySQL или PostgreSQL одной кнопкой на странице своего сервера и сразу получает адрес, имя, пользователя и пароль. Базы панель создаёт сама на серверах БД, которые вы подключили или подняли.
Чтобы клиенты могли создавать базы, нужны две вещи: хотя бы один хост (сервер БД) и хотя бы одно правило, которое говорит, на какой хост попадёт новая база. Всё это — в разделе Инфраструктура → Базы данных.
Хосты
Хост — сервер MySQL, MariaDB или PostgreSQL, на котором панель создаёт базы клиентов. Его можно поднять прямо из панели или подключить уже работающий.
Поднять сервер БД
Самый простой вариант: панель сама запустит сервер БД в контейнере на одной из ваших нод. Нажмите Поднять сервер БД:
- Что и где — Название, Нода, Движок и версия (MySQL 8.4 или 8.0, MariaDB 11.4 или 10.11, PostgreSQL 17 или 16), Память, МБ (по умолчанию 1024, не меньше 256) и CPU, ядер (пусто — без лимита).
- Сеть — Адрес ноды для порта: по нему к базе ходят игровые серверы ноды. По умолчанию выбран внутренний адрес. Если выбрать публичный адрес или все интерфейсы, порт базы будет виден из интернета — закройте его фаерволом, если клиентам не нужно подключаться к базе снаружи. Порт — пусто значит свободный из диапазона 33100–33999. Адрес для клиентов — что клиент увидит в строке подключения; пусто — адрес ноды.
- Правило — галочка Новые базы серверов ноды … создавать здесь сразу заводит правило «эта нода → этот сервер».
Панель сгенерирует пароль root и хранит его зашифрованным. Первый запуск со скачиванием образа может занять несколько минут. Статус хоста: Запускается, Работает, Остановлен или Ошибка с причиной. Если контейнер пропал или остановился сам, панель запустит его снова.
В меню хоста:
- Остановить сервер / Запустить сервер. Пока сервер не работает или его нода не на связи, новые базы на нём не создаются.
- Логи контейнера — последние строки вывода сервера БД.
- Пересоздать контейнер… — пересоздать контейнер с тем же образом и лимитами, если он сломался. Данные сохраняются.
- Изменить… — раздел Контейнер: Версия, память и CPU. При сохранении нода пересоздаёт контейнер на тех же данных, базы недоступны, пока он не поднимется. Версию можно только повысить в пределах того же сервера: MySQL 8.0 → 8.4, MariaDB 10.11 → 11.4. Вернуться на прежнюю версию нельзя, сменить MySQL на MariaDB тоже. У PostgreSQL мажорная версия не меняется — чтобы перейти с 16 на 17, поднимите новый сервер и перенесите базы через бэкапы серверов.
Порт управляемого сервера БД занят в общем пуле портов ноды, игровые серверы его не получат. Он виден на странице Порты.
Данные сервера БД лежат на одной ноде. Сам он целиком не бэкапится, но базы клиентов попадают в бэкапы их игровых серверов, см. ниже.
Подключить внешний
Если у вас уже есть сервер БД, нажмите Подключить внешний:
- Название, Движок — MySQL/MariaDB или PostgreSQL 13+. Движок после создания не меняется.
- Подключаться — напрямую с панели или через агента ноды. Второй вариант — для хоста во внутренней сети, который видит нода, но не видит панель: тогда SQL выполняет агент выбранной ноды, а адрес и порт указывайте такими, какими их видит нода.
- Адрес, Порт — как до хоста достучится панель (или нода).
- Пользователь, Пароль — админская учётка. Для MySQL ей нужны
CREATE/DROP DATABASE,CREATE USERиGRANT OPTION; для PostgreSQL — суперпользователь или роль сCREATEDBиCREATEROLE. Пароль хранится зашифрованным и нигде не показывается; при изменении хоста пустое поле оставляет прежний. - Адрес для клиентов — что увидит клиент в строке подключения. Пусто — тот же адрес.
- Максимум баз — заполненный хост пропускается. Пусто — без ограничения.
Проверить подключение в меню хоста пробует войти под этой учёткой и показывает ошибку, если не вышло.
Если панель подключается к хосту напрямую, она должна видеть его по сети. Игровые серверы и клиенты подключаются по адресу для клиентов — проверьте, что он доступен с нод.
У PostgreSQL, откуда клиентам можно подключаться, решает pg_hba.conf на самом сервере, поэтому поле Откуда подключаться у баз PostgreSQL не показывается.
Изменить и удалить
- Выключить (новые базы не создаются) — хост перестаёт получать новые базы, существующие работают как раньше.
- Пока на хосте есть базы, его адрес и порт менять нельзя. Учётку и пароль — можно.
- Удалить хост можно, только когда на нём нет баз и на него не ссылается ни одно правило. У внешнего хоста удаляется только подключение, сам сервер БД не трогается. У поднятого панелью удаляется контейнер вместе с данными, порт освобождается. Если нода не ответила, панель предложит забыть сервер — тогда контейнер и его том на ноде придётся удалить вручную.
- Ноду с поднятым на ней сервером БД, или ноду, через которую идёт подключение к хосту, удалить нельзя.
Правила
Правило говорит, на какой хост попадёт новая база. Задайте условия — Локация, Нода, Тариф, Игра — и отметьте хосты в блоке Куда. Пустое условие означает «любое».
Для новой базы панель берёт самое точное подходящее правило — с бо́льшим числом заданных условий. При равенстве побеждает правило с большим приоритетом, затем более новое. Из хостов правила выбирается включённый, не заполненный и с наименьшим числом баз. Если ни один не подошёл (все выключены, заполнены, другого движка или их нода не на связи), берётся следующее правило.
- В поле Тариф можно выбрать не один тариф, а группу тарифов — все тарифы с одной меткой, например «все с меткой «premium»». Метка задаётся в форме тарифа, см. Тарифы.
- Правила с одинаковыми условиями и приоритетом помечаются Конфликт — побеждает более новое.
- Для начала хватит одного правила без условий. Если правила есть, а правила без условий нет, панель предупредит: серверы, которым не подошло ни одно правило, не смогут создать базу.
Пример: премиум-тарифы получают базы на отдельном сервере, остальные — на общем.
| Тариф | Куда | Приоритет | |---|---|---| | все с меткой «premium» | mysql-premium | 0 | | любой | mysql-shared-1, mysql-shared-2 | 0 |
Проверить для сервера под списком правил показывает, на какой хост попадёт новая база выбранного сервера и почему не подошли остальные правила.
Изменение правил не переносит существующие базы: каждая база остаётся на хосте, где её создали.
Базы сервера
Вкладка Базы данных на странице сервера. Её видят владелец и совладельцы с правом Базы данных (см. Пользователи и роли).
Создать базу:
- Имя — строчные латинские буквы, цифры и
_, до 53 символов. Панель добавляет к нему префикс сервера: изluckpermsполучитсяs1a2b3c4d_luckperms. - Движок — показывается, если подключены хосты и MySQL, и PostgreSQL.
- Откуда подключаться (только MySQL) — IP или подсеть (CIDR), с которых разрешён вход. Пусто — откуда угодно.
- Хост — видит только админ: создать базу на конкретном хосте в обход правил.
Пользователя и пароль генерирует панель. В строке базы видны адрес подключения и пользователь. Пароль — по кнопке Показать пароль, каждый просмотр пишется в журнал аудита. Сменить пароль выпускает новый: старый перестаёт работать сразу, поэтому обновите его в конфигах плагинов.
Удаление базы удаляет её и её пользователя на сервере БД вместе со всеми данными. Если хост не ответил, админ может забыть базу в панели — тогда её придётся удалить на хосте вручную.
Подставить в параметры
Чтобы не переписывать адрес и пароль в конфиги вручную, базу можно подставить в параметры сервера: панель запишет её адрес, порт, имя, пользователя и пароль в параметры db_host, db_port, db_name, db_user и db_password, а игра получит их как переменные окружения DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD.
Это работает, если в настройках игры объявлены такие параметры. Проще всего добавить их набором: в форме игры, в блоке параметров, выберите набор База данных: DBHOST, DBPORT, DBNAME, DBUSER, DB_PASSWORD. Параметр db_password в наборе — типа «секрет», клиент не увидит его в карточке сервера. Как параметры попадают в игру, см. Каталог игр.
- Подставленной может быть одна база сервера. Новая база подставляется сама, если у сервера ещё нет подставленной; галочка Подставить в параметры сервера в форме создания позволяет отказаться или забрать подстановку у другой базы.
- Подставить в параметры / Убрать из параметров — в меню базы. Запущенный сервер пересоздаётся с новыми переменными.
- Смена пароля подставленной базы сразу обновляет
db_password. Удаление или отвязка базы очищает всеdb_*. - Без подстановки панель параметры
db_*не трогает: админ может прописать в них внешнюю базу руками.
Лимиты тарифа
В тарифе, раздел Базы данных: Запретить базы данных и Сколько на сервер (пусто — без ограничения). На вкладке видно, сколько баз уже создано из лимита. Лимиты действуют сразу на все серверы тарифа, уже созданные базы остаются. Админа лимиты не ограничивают.
У приостановленного сервера клиент не может создавать и удалять базы, но видит список и пароли.
Базы в бэкапах
Бэкап сервера сам снимает дамп каждой его базы, а восстановление умеет залить дамп обратно — в ту же базу, в новую или в другую базу сервера. Перед заливкой снимается страховочная копия. Подробно — в статье Бэкапы сервера.
Удаление сервера
При удалении сервера удаляются и его базы. Переустановка сервера базы не трогает.
Создание и удаление баз можно получать вебхуками database.created и database.deleted, см. HTTP API и вебхуки.