Справочник конфигурации

Здесь собраны все переменные разом. Что именно каждая из них меняет в конкретном модуле, когда её стоит трогать и чем это грозит — описано на странице этого модуля в docs/modules/ (оглавление — MODULES.md).

Все параметры живут в config/defaults.conf и могут быть переопределены переменными окружения перед запуском инсталлятора:

sudo NODE_MAJOR=24 SWAP_SIZE_MB=4096 ./install.sh

Файл сорсится bash'ем — допустимы только строки KEY=VALUE и комментарии. Каждая переменная объявлена в форме VAR="${VAR:-значение}", поэтому значение из окружения всегда выигрывает.

Брендинг

Переменная По умолчанию Назначение
BRAND_NAME MITDEV SERVER SETUP Заголовок в шапке TUI и диалогах

Требования к платформе

Переменная По умолчанию Назначение
REQUIRED_UBUNTU_VERSION 22.04 Ожидаемая версия Ubuntu; иная версия — предупреждение, не Ubuntu — отказ
MIN_DISK_GB 10 Минимум свободного места на /; меньше — отказ
MIN_RAM_MB 1024 Минимум RAM; меньше — предупреждение + swap

Модуль system

Переменная По умолчанию Назначение
TIMEZONE UTC Часовой пояс (timedatectl set-timezone)
SWAP_FILE /swapfile Путь swap-файла
SWAP_SIZE_MB 2048 Размер создаваемого swap
SWAP_RAM_THRESHOLD_MB 2048 Swap создаётся только при RAM ниже порога и отсутствии swap

Пользователь деплоя

Переменная По умолчанию Назначение
DEPLOY_USER_DEFAULT deploy Имя, подставляемое в диалог
DEPLOY_HOME_DIRS apps docker logs backups scripts Каталоги в домашней директории (0750)

SSH / безопасность

Переменная По умолчанию Назначение
SSH_PORT_DEFAULT 22 Порт, подставляемый в диалог
SSH_MAX_AUTH_TRIES 3 MaxAuthTries в drop-in sshd
SSH_LOGIN_GRACE_TIME 30 LoginGraceTime (секунды)
GENERATE_SSH_KEYS_DEFAULT yes Предлагать генерацию Ed25519-ключей для deploy-пользователя и root
GENERATE_DEPLOY_SSH_KEY_DEFAULT yes Совместимый alias для старых неинтерактивных запусков
GENERATED_SSH_KEY_DIR /root/.mitdev-keys Root-only каталог приватных ключей для импорта в Termius/SSH-клиенты

Файрвол и Fail2Ban

Переменная По умолчанию Назначение
UFW_EXTRA_PORTS 80/tcp 443/tcp Порты, открываемые помимо SSH (через пробел)
F2B_BANTIME 1h Длительность бана
F2B_FINDTIME 10m Окно подсчёта неудачных попыток
F2B_MAXRETRY 5 Попыток до бана

Node.js

Переменная По умолчанию Назначение
NODE_MAJOR 24 Мажорная версия NodeSource-репозитория

Базы данных и службы

Переменная По умолчанию Назначение
POSTGRES_DB_DEFAULT app Имя базы, подставляемое в вопрос инсталлятора
MONGO_VERSION 8.0 Ветка официального репозитория MongoDB
REDIS_BIND пусто Значение bind в redis.conf. Пусто = модуль сам определит loopback. Синтаксис -::1 поддерживают только Redis 6.2+/7 — на Redis 6.0.x (Ubuntu 22.04) он ломает старт, поэтому задавайте вручную только осознанно

Redis HA / Sentinel (mitdev redis cluster-init / join)

Переменная По умолчанию Назначение
REDIS_PORT 6379 Порт Redis. Должен быть открыт между всеми узлами кластера
REDIS_SENTINEL_PORT 26379 Порт Sentinel. Тоже между всеми узлами
REDIS_SENTINEL_DOWN_AFTER 10000 Мс без ответа, после которых Sentinel считает master упавшим. Значения около 5000 на публичной сети дают ложные срабатывания
REDIS_SENTINEL_FAILOVER_TIMEOUT 180000 Мс на весь failover, включая переконфигурацию реплик, и минимальный интервал до следующей попытки. Малое значение обрывает синхронизацию реплики и разрешает немедленный повторный failover — два Sentinel'а начинают бесконечно повышать разные узлы. Не опускайте ниже времени полной синхронизации вашей базы
REDIS_SENTINEL_PARALLEL_SYNCS 1 Сколько реплик синхронизируются с новым master одновременно
REDIS_PEERS_FILE /etc/default/mitdev-redis Список узлов кластера (пишется командами, не руками)

База, пользователь и пароль БД задаются вопросами инсталлятора (или окружением: PG_APP_DB, PG_APP_USER, PG_APP_PASSWORD; пустой пароль — сгенерировать).

Кластер PostgreSQL (pgcluster)

Переменная По умолчанию Назначение
PG_REPLICATION_USER replicator Имя роли репликации
PG_MAX_WAL_SENDERS 10 max_wal_senders на primary
PG_MAX_REPLICATION_SLOTS 10 max_replication_slots на primary
PG_WAL_KEEP_SIZE 512MB wal_keep_size на primary
PG_WATCHDOG_INTERVAL 5 Период проверки primary watchdog'ом (сек)
PG_WATCHDOG_THRESHOLD 6 Подряд неудач до автоматического promote
PG_WATCHDOG_PROMOTE_DELAY 0 Задержка перед promote (сек) — приоритет между репликами
PG_VIP_VRID 51 VRRP virtual_router_id (уникален в пределах L2-сегмента)
PG_ROLE_PORT 8008 Порт эндпоинта роли (200 primary / 503 replica) на DB-узлах
PG_PROXY_PORT 5432 Локальный порт HAProxy на серверах приложений (pg proxy)

VIP-адрес, пиры и интерфейс задаются интерактивно (или окружением: PG_VIP_ADDRESS=10.0.0.100/24, PG_VIP_PEERS="ip1 ip2", PG_VIP_IFACE).

Роль узла и адрес primary задаются интерактивно (или окружением: PG_CLUSTER_ROLE=primary|replica, PG_PRIMARY_HOST, PG_REPLICATION_PASSWORD, PG_REPLICA_IPS="ip1 ip2", PG_CLUSTER_PEERS="ip1 ip2" — пиры для самовосстановления, PG_AUTO_FAILOVER=yes|no).

Kubernetes (kubernetes)

Режим кластера задаётся интерактивно (или окружением): K8S_CLUSTER_MODE=single|init|join, K8S_SERVER_URL=https://<ip>:6443, K8S_TOKEN (из mitdev k8s token), K8S_PEERS="ip1 ip2" — IP остальных серверов кластера для точечных правил файрвола.

MinIO

Переменная По умолчанию Назначение
MINIO_DATA_DIR /var/lib/minio Каталог данных
MINIO_PORT 9000 Порт S3-API
MINIO_CONSOLE_PORT 9001 Порт веб-консоли

Cloudflare app-ingress (mitdev cf)

Командный модуль 24-cloudflare: ingress через Cloudflare (туннель/DNS/LB) + локальные health-эндпоинт и tunnel-watchdog. Секреты (CF_API_TOKEN) задаются перед mitdev cf login и сохраняются в креды — в config/defaults.conf они пусты по умолчанию.

Переменная По умолчанию Назначение
CF_API_TOKEN пусто Scoped API-токен Cloudflare (Tunnel/DNS/LB Edit + Account Read). Только в кредах, никогда в argv/лог
CF_ACCOUNT_ID пусто ID аккаунта Cloudflare (нужен для tunnel/lb)
CF_ZONE_ID пусто ID зоны (нужен для dns/lb)
CF_INGRESS_MODE lb-over-tunnel Режим ingress: tunnel-only / lb-only / lb-over-tunnel
CF_HEALTH_PORT 8009 Порт health-эндпоинта узла
CF_HEALTH_BIND_IP 127.0.0.1 Bind health-эндпоинта (loopback/WG-адрес). Никогда 0.0.0.0 — сигнал failover не должен светить наружу
CF_APP_PORT 80 Порт локального фронта, который проверяет health
CF_HEALTH_HOST_PREFIX health Префикс скрытого health-хоста <prefix>.<домен> (публичной DNS-записи на него нет)
CF_TUNNEL_UNIT mitdev-cf-tunnel Имя systemd-юнита cloudflared, которым управляет watchdog
CF_TUNNEL_FAIL_THRESHOLD 3 Сколько 503 подряд до снятия узла из ротации
CF_TUNNEL_RESTORE_THRESHOLD 2 Сколько 200 подряд до возврата узла
CF_TUNNEL_CHECK_INTERVAL 5 Интервал опроса health tunnel-watchdog'ом, с
CF_TUNNEL_CURL_TIMEOUT 3 Таймаут одной пробы health, с
CF_LB_MONITOR_INTERVAL 60 Период пробы LB-монитора, с (второй эшелон)
CF_LB_MONITOR_TIMEOUT 5 Таймаут пробы LB-монитора, с
CF_LB_MONITOR_RETRIES 2 Провалов подряд до «origin мёртв» (анти-флаппинг)

Пути

Переменная По умолчанию Назначение
MITDEV_PREFIX /opt/mitdev Куда копируется проект
MITDEV_STATE_DIR /var/lib/mitdev Маркеры состояния, стек отката, install.env, манифесты k8s
MITDEV_LOG_DIR /var/log/mitdev Журналы

Очистка

Переменная По умолчанию Назначение
PRUNE_DOCKER no yes — выполнять docker system prune -f в модуле cleanup

Прочие переменные окружения

Переменная Назначение
NO_COLOR=1 Отключить цветной вывод
LOG_FILE, ERROR_LOG Переопределить пути журналов

Файлы состояния (генерируются, не редактируются вручную)

Файл Содержимое
/var/lib/mitdev/state/<модуль>.done Маркер выполнения модуля (unix-время)
/var/lib/mitdev/rollback.stack Стек команд отката текущей установки
/var/lib/mitdev/install.env Факты установки: DEPLOY_USER, SSH_PORT, компоненты, роль PG, MITDEV_URL (для self-update)
/root/.mitdev-credentials Сгенерированные пароли служб (0600)
/etc/default/mitdev-pg-watchdog Конфиг watchdog самовосстановления (PEERS, пороги)
~postgres/.mitdev-repl-pass Пароль репликации для авто-восстановления (0600, postgres)
~postgres/.mitdev-pg-primary Текущий primary после авто-перецепления
/etc/sudoers.d/mitdev-pg-watchdog Узкое право postgres на systemctl stop/start/restart postgresql
/opt/mitdev.prev Прежняя версия после self-update (ручной откат)
/root/.mitdev-keys/<user>_ed25519 Сгенерированный приватный SSH-ключ deploy-пользователя (0600)
/root/.mitdev-keys/root_ed25519 Сгенерированный приватный SSH-ключ root (0600)