Обновление и удаление¶
Все операции выполняются тем же скриптом, которым ставили трекер.
Если трекер стоит не в /opt/minik, добавляйте --dir /путь к любой команде —
иначе скрипт скажет, что установки нет.
Обновление¶
Что делает update:
- тянет новый образ трекера и перезапускает его;
- заново применяет инфраструктуру из шаблона: compose-файл, конфиг ClickHouse, swap, конфиг Caddy;
- домен и e-mail ACME берёт из
.env— флаги передавать не нужно; - дожидается, пока контейнер трекера не станет healthy, и только после этого удаляет старые образы трекера (без чистки каждое обновление оставляет сотни мегабайт мусора);
- если трекер не поднялся — старые образы не удаляются, чтобы можно было откатиться, а скрипт напечатает, где смотреть логи.
Образы баз данных не обновляются: обновляется только их конфигурация, и контейнер пересоздаётся, лишь если она действительно изменилась.
Миграции схемы PostgreSQL и ClickHouse применяются автоматически при старте.
Конфиг Caddy перед применением проверяется: если новый Caddyfile не прошёл
валидацию, edge остаётся на прежней конфигурации и трафик не рвётся.
Ручные правки docker-compose.yml не переживут update
Файл перезаписывается из шаблона (предыдущая версия остаётся рядом как
docker-compose.yml.bak). Большинство параметров задаётся в .env, но
переменную, которой нет в списке compose, приходится дописывать в
environment: сервиса server заново после каждого update — см.
Переменные окружения.
Конкретная версия¶
Версия запоминается в .env — следующий update без флага останется на ней.
Чтобы вернуться на плавающий тег, укажите --version latest.
Откат на предыдущую версию¶
Тем же флагом, с прошлым тегом:
Откат откатывает код, а не схему
Миграции вперёд применяются автоматически, обратных миграций нет. Откат безопасен, пока новая версия не меняла схему; если меняла — восстанавливайте базу из дампа, снятого перед обновлением. Учтите и то, что после успешного обновления старый образ с сервера удаляется, поэтому откат заново тянет тег из реестра.
Включить или выключить PHP¶
curl -fsSL https://get.minik.sh/install.sh | bash -s update --with-php
curl -fsSL https://get.minik.sh/install.sh | bash -s update --no-php
Без явного флага update не трогает PHP-рантайм: он остаётся в том состоянии,
в котором был.
Сменить лицензионный ключ¶
Ключ пишется в .env, и перезапущенный трекер активирует его сам. Обычный
update без флага уже активированный ключ не стирает. Тот же ключ можно ввести
из панели: Настройки → Лицензия.
Логи¶
Или напрямую:
Остановка¶
Контейнеры останавливаются, данные остаются на месте.
Удаление¶
Контейнеры удаляются, данные остаются в /opt/minik/data. Удалить их —
осознанное отдельное действие:
Бэкап¶
Своей команды бэкапа у установщика нет — резервируйте штатными средствами.
Минимум, без которого трекер придётся настраивать заново: PostgreSQL, .env и
каталог лендингов.
cd /opt/minik
# конфигурация: кампании, потоки, лендинги, офферы, пользователи, лицензия
docker compose exec -T postgres pg_dump -U minik minik | gzip > backup-pg-$(date +%F).sql.gz
# секреты и параметры установки
cp .env backup-env-$(date +%F)
# файлы лендингов
tar czf backup-landings-$(date +%F).tgz -C /opt/minik data/landings
.env содержит JWT_SECRET и TRACKER_SECRET_KEY: без них восстановленная
установка не примет старые токены и подписи. Храните его как секрет.
PostgreSQL держит всю конфигурацию. ClickHouse хранит клики и конверсии: это
тяжёлые данные, их резервируют штатными средствами ClickHouse (BACKUP, снапшот
диска) в зависимости от того, насколько критична история статистики.
Проверяйте восстановление
Бэкап, который никогда не разворачивали, — это не бэкап. Разверните дамп на тестовом сервере хотя бы раз.
Восстановление¶
Из холодной копии всё проще: поставьте трекер той же версии, остановите его
(down), распакуйте архив поверх /opt/minik и поднимите обратно.
Из дампа PostgreSQL порядок такой:
- Поставьте трекер той же версии:
install --version <тег> --license-key XXXX-XXXX-XXXX-XXXX. - Остановите стек и верните сохранённый
.env— в нём домен и секреты. - Очистите каталог PostgreSQL: дамп должен лечь в пустую базу.
- Поднимите только PostgreSQL и залейте дамп:
docker compose up -d postgres
# база только что создана с нуля — дождитесь готовности, иначе psql
# упрётся в «the database system is starting up»
until docker compose exec -T postgres pg_isready -U minik; do sleep 1; done
gunzip -c backup-pg-2026-08-01.sql.gz | docker compose exec -T postgres psql -U minik minik
- Поднимите остальной стек — недостающие миграции применятся сами:
- Распакуйте лендинги обратно в
data/landings. - Проверьте Настройки → Лицензия. Состояние лицензии лежит в PostgreSQL и восстанавливается вместе с дампом; если статус не сошёлся — нажмите Проверить сейчас.
ClickHouse восстанавливается отдельно, своими средствами. Без него трекер поднимется и будет принимать трафик, но история кликов и конверсий окажется пустой.
Порядок обновления в бою¶
- Снимите дамп PostgreSQL.
- Запустите
update. - Проверьте:
docker compose ps— все контейнерыUp; откройте панель; дёрните тестовый клик curl'ом. - Загляните в раздел Система: базы отвечают, в системном логе нет новых
ошибок (источник
queue). Глубину очередей раздел не показывает — она видна только в метриках на/metrics.
Если что-то не так — Диагностика.