Обновление с v3 до v4
Обновиться с GameAP 3, сохранив существующую базу данных, можно только на версии 4.0 и 4.1. Они распознают базу третьей версии, дополняют её схему своими таблицами и продолжают работать с теми же пользователями, серверами и играми.
Начиная с версии 4.2 обновление на месте не поддерживается. Более поздние версии рассчитаны на схему четвёртой версии и с базой GameAP 3 работать не будут.
Если нужна последняя версия панели, установите её на чистую базу и перенесите данные самостоятельно — см. Если нужна последняя версия.
Последняя версия в поддерживаемой линейке — 4.1.2.
Перед обновлением
Сделайте резервную копию базы данных вручную.
gameapctlкопирует каталог установки v3 и конфигурацию веб-сервера, но базу данных не сохраняет, а обновление изменяет её схему необратимо.
# MySQL или MariaDB
mysqldump -u root -p gameap > gameap-v3-backup.sql
# PostgreSQL
pg_dump -U gameap gameap > gameap-v3-backup.sql
# SQLite
sqlite3 /var/www/gameap/database.sqlite ".backup 'gameap-v3-backup.sqlite'"
Проверьте, что копия не пустая, и только потом продолжайте.
Для SQLite используйте именно
.backup, а неcp. Простое копирование файла на работающей панели может дать повреждённую копию: часть данных в этот момент находится в журнале WAL и в основной файл ещё не перенесена.
С каких баз данных обновление возможно
| СУБД в GameAP 3 | Обновление на месте |
|---|---|
| MySQL, MariaDB | да |
| SQLite | да |
| PostgreSQL | нет |
Для MySQL и SQLite панель распознаёт существующую базу GameAP 3 и не пытается создать таблицы заново. Для PostgreSQL такого распознавания нет: первая же миграция попытается создать уже существующие таблицы и завершится с ошибкой.
Если GameAP 3 работает на PostgreSQL, установите GameAP 4 на чистую базу и перенесите данные самостоятельно.
Обновление до 4.1
gameapctl устанавливается вместе с панелью и умеет выполнять переход.
gameapctl self-update
gameapctl panel upgrade
Утилита сама определит, что установлена третья версия, и выполнит обновление.
Проверьте, какую версию ставит
gameapctl. При переходе с третьей версии он игнорирует флаг--versionи устанавливает последнюю стабильную версию из линейки 4.x. Если это окажется 4.2 или новее, обновление рабочей базы делать нельзя.Сначала проверьте переход на копии базы данных — порядок описан в разделе Проверка на копии базы. Убедитесь, что установилась 4.0 или 4.1, и только после этого обновляйте рабочую установку.
Что происходит при обновлении:
- Читается файл
.envустановки GameAP 3, из него берутся параметры подключения к базе. - Каталог установки v3 и конфигурация веб-сервера копируются во временный каталог. Путь к копии выводится в консоль — запишите его.
- Формируется конфигурация GameAP 4
config.env, в неё подставляется та же база данных и генерируются новые ключиAUTH_SECRETиENCRYPTION_KEY. - Устанавливается и запускается GameAP 4.
При первом запуске панель применяет миграции: обнаруживает, что база принадлежит третьей версии, пропускает создание таблиц и добавляет только то, чего не хватает четвёртой версии.
Не установлен gameapctl
Скачайте его со страницы релизов или командой, подставив нужную версию:
VERSION=$(curl -sL https://api.github.com/repos/gameap/gameapctl/releases/latest \
| grep -m1 '"tag_name"' | cut -d'"' -f4)
curl -OL "https://github.com/gameap/gameapctl/releases/download/${VERSION}/gameapctl-${VERSION}-linux-amd64.tar.gz"
tar xvfz "gameapctl-${VERSION}-linux-amd64.tar.gz" -C /usr/local/bin
Что меняется при переходе
Веб-сервер и PHP больше не нужны. GameAP 4 — один исполняемый файл со встроенным веб-интерфейсом. После обновления nginx или Apache можно оставить обратным прокси либо убрать вовсе.
Порт по умолчанию — 8025, а не 80.
Пароли пользователей продолжают работать. Версии 4.0 и 4.1 проверяют пароли тем же способом, что и третья версия. Просить пользователей менять пароли не нужно.
Демоны продолжают работать по прежнему протоколу. В версиях 4.0 и 4.1 панель обменивается
данными с GameAP Daemon так же, как третья версия, и подключается к демону сама. Настройки
выделенных серверов менять не нужно, порт демона (по умолчанию 31717) должен оставаться открытым.
Не выполняйте
gameapctl daemon upgrade --switch-to-grpcпосле обновления до 4.1. Обмен данными по gRPC появился только в версии 4.2, и панель 4.1 к такому демону подключиться не сможет.
Откат
Если после обновления что-то не работает:
- Остановите GameAP 4:
gameapctl panel stop. - Восстановите базу данных из резервной копии, сделанной до обновления.
- Верните каталог установки v3 из временной копии, путь к которой вывел
gameapctl. - Восстановите конфигурацию веб-сервера и запустите его.
Откат без резервной копии базы данных невозможен: схема изменена, и GameAP 3 с ней уже не заработает.
Проверка на копии базы
Прежде чем обновлять рабочую установку, стоит прогнать переход на копии базы данных. Заодно это
показывает, какую именно версию установит gameapctl.
Не подключайте пробную установку к рабочей базе: при первом запуске панель применит к ней миграции, и GameAP 3 перестанет работать.
Создайте копию базы:
mysqldump -u root -p gameap > /tmp/gameap.sql
mysql -u root -p -e "CREATE DATABASE gameap_v4_test"
mysql -u root -p gameap_v4_test < /tmp/gameap.sql
Скачайте версию из линейки 4.1 со страницы релизов и распакуйте:
curl -OL https://github.com/gameap/gameap/releases/download/v4.1.2/gameap-v4.1.2-linux-amd64.tar.gz
tar xvfz gameap-v4.1.2-linux-amd64.tar.gz -C /usr/bin
Создайте отдельный файл конфигурации /etc/gameap-v4-test/config.env:
DATABASE_DRIVER=mysql
DATABASE_URL=gameap:пароль@tcp(127.0.0.1:3306)/gameap_v4_test?parseTime=true
# получить значения: openssl rand -base64 24
AUTH_SECRET=замените_на_32_случайных_байта
ENCRYPTION_KEY=замените_на_32_случайных_байта
HTTP_PORT=8125
GRPC_PORT=31818
Пути, порты и имя сервиса здесь намеренно отличаются от рабочих. Если пробную установку развернуть на тех же
/etc/gameap,8025и31718, она перезапишет конфигурацию рабочей панели и займёт её порты.
Запустите:
gameap --env /etc/gameap-v4-test/config.env
Панель будет доступна на порту 8125. Полный список параметров конфигурации — Справочник config.env.
Убедитесь, что данные на месте: пользователи входят, игровые серверы и игры отображаются. После этого можно обновлять рабочую установку.
Настройка systemd-сервиса
Для удобного управления пробной установкой создайте отдельный сервис.
Создайте пользователя и каталог — с именами, отличными от рабочей установки:
useradd -r -s /usr/sbin/nologin -d /var/lib/gameap-v4-test gameap-test
mkdir -p /var/lib/gameap-v4-test
chown gameap-test:gameap-test /var/lib/gameap-v4-test
Затем файл /etc/systemd/system/gameap-v4-test.service:
[Unit]
Description=GameAP 4 (trial installation)
Documentation=https://docs.gameap.com
After=network.target
Wants=network-online.target
Requires=network.target
[Service]
Type=simple
User=gameap-test
Group=gameap-test
WorkingDirectory=/var/lib/gameap-v4-test
ExecStart=/usr/bin/gameap --env /etc/gameap-v4-test/config.env
# Корректное завершение
ExecStop=/bin/kill -TERM $MAINPID
KillMode=mixed
KillSignal=SIGTERM
TimeoutStopSec=30
# Политика перезапуска
Restart=always
RestartSec=5
StartLimitInterval=60
StartLimitBurst=3
RuntimeDirectory=gameap-v4-test
PIDFile=/run/gameap-v4-test/gameap.pid
# Права доступа к файловой системе
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/gameap-v4-test
# Логирование
StandardOutput=journal
StandardError=journal
SyslogIdentifier=gameap-v4-test
[Install]
WantedBy=multi-user.target
Включите и запустите сервис:
systemctl daemon-reload
systemctl enable gameap-v4-test
systemctl start gameap-v4-test
Когда пробная установка больше не нужна, уберите её целиком, чтобы она не запускалась вместе с системой:
systemctl disable --now gameap-v4-test
rm /etc/systemd/system/gameap-v4-test.service
systemctl daemon-reload
Если нужна последняя версия
Обновиться с GameAP 3 сразу на 4.2 или новее нельзя. Порядок такой:
- Установите актуальную версию GameAP 4 на чистую базу данных, не трогая рабочую установку — см. Установка на Linux.
- Перенесите данные из GameAP 3: заведите заново пользователей, выделенные серверы, игры и игровые серверы — вручную или через API.
- Убедитесь, что всё работает, и только после этого выводите старую установку из эксплуатации.
Файлы игровых серверов при этом никуда переносить не нужно: они остаются на выделенном сервере, достаточно описать серверы в новой панели с теми же каталогами и портами.
А вот демонов придётся зарегистрировать заново. У чистой панели свой центр сертификации, свои
идентификаторы выделенных серверов и свои ключи доступа, а в конфигурации работающего демона
записаны ds_id, api_key и сертификаты от старой панели — просто указать прежние пути и порты
недостаточно.
Для каждого выделенного сервера:
- В новой панели откройте «Администрирование» → «Выделенные серверы» → «Создать» и возьмите оттуда команду установки или connect URL.
- На выделенном сервере выполните регистрацию:
gameap-daemon enroll --connect=grpc://новая-панель:31718/ключ - Перезапустите демона:
systemctl restart gameap-daemon. - Убедитесь, что он подключился: выделенный сервер появился в панели, в журнале демона нет
gRPC connection failed.
Команда
enrollперезаписывает файл конфигурации демона целиком, без слияния и без резервной копии. Сохраните прежний файл, если в нём были ручные настройки — менеджер процессов, учётная запись Steam, замены адресов репозиториев.