Для развёртывания Galleon нужны сам сервер и PostgreSQL.
Сервер — один процесс, по умолчанию он принимает запросы
на порту 8080 и может отдавать HTTPS сам, если задать сертификат и ключ
(TLS). В PostgreSQL хранятся метаданные инсталляции.
При необходимости перед сервером ставят обратный прокси
(Обратный прокси).
Сами артефакты хранятся файлами в каталоге хранилища на диске сервера (Хранилище и сборка мусора).
За дистрибутивом Galleon обратитесь к вендору.
Системные требования
Минимальные требования к серверу:
- Процессор и память: 4 vCPU и 4 ГБ RAM.
- Диск: самому серверу дисковое пространство почти не требуется — объём определяется хранимыми артефактами (каталог хранилища) и базой данных.
- PostgreSQL версии 16 или новее. При настройках сервера по умолчанию базе данных нужно
max_connectionsне менее 110. - База данных и роль, указанные в конфигурации, создаются заранее. Galleon подключается к базе данных под этой ролью и от неё же применяет миграции, поэтому роли нужны права на создание таблиц и расширения
pg_stat_statements.
Первый запуск
Минимальная конфигурация состоит из четырёх блоков (полный перечень параметров приведён в разделе Параметры конфигурации):
database:
host: localhost
port: 5432
user: galleon
password_env: GALLEON_DATABASE_PASSWORD
dbname: galleon
storage:
default:
type: local
local:
root: /var/lib/galleon/data
security:
secret_key_file: /etc/galleon/secret-key.yaml
auth:
bootstrap_admin:
username: admin
password_env: GALLEON_BOOTSTRAP_ADMIN_PASSWORDЧтобы запустить сервер, выполните следующие действия:
Сохраните конфигурацию в файл, например
/etc/galleon/config.yaml.Создайте ключ шифрования и запишите его в файл ключей (подробнее — в разделе Секреты и ключ шифрования):
openssl rand -base64 32# /etc/galleon/secret-key.yaml active: 1 keys: - id: 1 key: "<BASE64>"Задайте пароли в переменных окружения, имена которых указаны в конфигурации:
export GALLEON_DATABASE_PASSWORD='<пароль базы данных>' export GALLEON_BOOTSTRAP_ADMIN_PASSWORD='<пароль первого администратора>'Запустите сервер:
galleon --config /etc/galleon/config.yaml
При первом запуске создаются первый администратор и стартовый набор репозиториев.
Миграции при старте
Запущенный без флагов сервер сам приводит схему базы данных к нужной версии и продолжает обслуживание — отдельный шаг для этого не нужен. Когда серверов инстанса несколько, миграции выполняет один из них, остальные ждут своей очереди и запускаются, когда схема готова.
Миграции можно вынести в отдельный запуск — например, чтобы обновить схему до развёртывания новой версии. Для этого есть два взаимоисключающих флага:
--migrate-only— применить миграции и завершиться, не начиная обслуживание;--skip-migrate— не применять миграции, а проверить, что схема не старее требуемой, и начать обслуживание. Если схема старее, сервер не стартует.
Если база данных на момент запуска ещё поднимается, сервер завершается сразу. Чтобы он её дождался, задайте бюджет ожидания:
database:
migrate_wait: 5mОжидание распространяется только на признаки «база ещё не готова»: отказ в соединении, неразрешимое имя, тайм-аут подключения, запуск или восстановление сервера базы данных, отсутствующая база. Неверные учётные данные под ожидание не подпадают — сервер завершается сразу.
Код выхода отличает временную причину от той, что требует вмешательства:
| Код | Значение |
|---|---|
0 | Миграции применены |
1 | Запуск не удался: неверные учётные данные, ошибка SQL. Нужно разобраться в причине |
75 | Запуск прерван внешней причиной: сигнал остановки или исчерпанный бюджет ожидания базы данных. Достаточно запустить сервер снова |
Прерывать миграции можно в любой момент. Незавершённый шаг откатывается целиком, и следующий запуск продолжает с него.
Проверка
Убедитесь, что сервер отвечает:
curl http://localhost:8080/healthz
curl http://localhost:8080/readyzhealthz подтверждает, что процесс жив;
readyz — что доступна база данных.
Подробнее — в разделе Мониторинг.