Для развёртывания 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

Чтобы запустить сервер, выполните следующие действия:

  1. Сохраните конфигурацию в файл, например /etc/galleon/config.yaml.

  2. Создайте ключ шифрования и запишите его в файл ключей (подробнее — в разделе Секреты и ключ шифрования):

    openssl rand -base64 32
    # /etc/galleon/secret-key.yaml
    active: 1
    keys:
      - id: 1
        key: "<BASE64>"
  3. Задайте пароли в переменных окружения, имена которых указаны в конфигурации:

    export GALLEON_DATABASE_PASSWORD='<пароль базы данных>'
    export GALLEON_BOOTSTRAP_ADMIN_PASSWORD='<пароль первого администратора>'
  4. Запустите сервер:

    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/readyz

healthz подтверждает, что процесс жив; readyz — что доступна база данных. Подробнее — в разделе Мониторинг.