Разделы документации

Файлы установки, порты, службы и журналы

Где на сервере лежат файлы и секреты трекера, какие порты открыты, какие службы и тома созданы и где смотреть состояние.

Страница для администратора сервера: что установщик создал на сервере и где это искать. Команды выполняются на сервере от root или через sudo. В примерах каталог установки — /opt/tracker; если установка шла с параметром --path, подставьте свой каталог.

Каталог установки

Каталог принадлежит root и закрыт для остальных пользователей.

ПутьЧто это
/opt/tracker/.env.productionКонфигурация и секреты установки: домены, логин владельца, пароли баз, ключи
/opt/tracker/docker-compose.prod.ymlСостав сервисов трекера
/opt/tracker/manifest.jsonОписание установленного выпуска
/opt/tracker/install-state.jsonСостояние установки: версия выпуска, этап, домены и логин владельца
/opt/tracker/setup-access.txtСсылка на мастер с кодом доступа. Есть, пока мастер не завершён
/opt/tracker/owner-access.txtАдрес панели, логин и пароль владельца. Появляется после запуска трекера
/opt/tracker/deploy/Конфигурация веб-сервера и PHP, скрипты установки и обновления, файлы мастера
/opt/tracker/db/Файлы обновления структуры баз
/opt/tracker/data/geoip/Геобазы. При установке сюда загружается city.mmdb, см. Геобазы трекера
/opt/tracker/.setup/Состояние мастера первого запуска и его маршруты для веб-сервера. Создаётся при установке через мастер и нужен после его завершения
/opt/tracker/.updates/Состояние службы установки и ключ проверки выпусков trusted-release.pem. В подкаталоге work/ — прежние файлы установки и файлы выпуска из копий перед обновлениями
/opt/tracker/.update-socket/Сокет службы установки
/opt/tracker/.operation.lockБлокировка от одновременного запуска двух операций

Файлы docker-compose.prod.yml, manifest.json, каталоги deploy/ и db/ входят в выпуск. При обновлении из панели они заменяются файлами нового выпуска, ручные правки в них не сохраняются.

Файлы вне каталога установки:

ПутьЧто это
/usr/local/bin/trackerctlКоманда проверки установки
/usr/local/sbin/tracker-client-firewallСкрипт сетевой изоляции PHP
/usr/local/lib/tracker-updater/Файлы службы установки
/usr/local/lib/tracker-updater-releases/Новые версии службы установки. Появляется после её обновления командой install.sh --update-controller
/etc/systemd/system/tracker-setup.service, tracker-client-firewall.service, tracker-updates.serviceСлужбы systemd
/etc/systemd/system/docker.service.d/tracker-firewall.confДополнение к службе Docker: правила изоляции PHP применяются перед каждым её стартом
/etc/apt/sources.list.d/tracker-docker.sources, /etc/apt/keyrings/docker.ascРепозиторий Docker. Есть, если его подключал установщик

Файлы доступа

Оба файла читает только root.

  • setup-access.txt — ссылка вида http://203.0.113.10/setup/#key=… и строка «Код: …». Нужен, чтобы открыть мастер первого запуска. После завершения мастера код перестаёт действовать, файл удаляется. При установке в терминале файла нет.
  • owner-access.txt — три строки: «Панель», «Логин», «Пароль». Файл записывается один раз при запуске трекера: после смены пароля в панели он не обновляется. После восстановления из резервной копии в мастере в файле только адрес панели и строка «Войдите с учётной записью владельца из резервной копии. Пароли пользователей не изменялись.»
bash
sudo cat /opt/tracker/owner-access.txt
Внимание.

В owner-access.txt пароль владельца записан открытым текстом. Сохраните его в менеджере паролей и не передавайте файл другим людям.

Конфигурация .env.production

Файл создаётся при установке. В нём записаны:

  • домен панели, домен трекинга, email для сертификатов и логин владельца;
  • пароли баз и серверные ключи — установщик создаёт их случайными;
  • пароль владельца, название и логотип команды, ключ лицензии, если он введён в мастере.

Пароль владельца из файла применяется только при создании первой учётной записи. Дальше пароль меняется в панели, см. Мой профиль: пароль и часовой пояс.

Не редактируйте файл вручную. Установщик, trackerctl check и служба установки читают его в строгом формате: строки вида КЛЮЧ=значение без кавычек и пробелов. Если формат нарушен, установщик и trackerctl check останавливаются с сообщением «Формат .env.production изменён; проверьте конфигурацию вручную.»

Пароли баз и серверные ключи создаются один раз и автоматически не заменяются.

Порты и адреса

Наружу опубликованы только TCP 80 и 443. Их слушает веб-сервер трекера. Порты баз, PHP, панели и API наружу не публикуются: запросы к панели и API проходят через веб-сервер.

АдресЧто отвечает
https://panel.example.comПанель и API по пути /api/
https://track.example.comСсылки кампаний, редиректы, локальные страницы. Из API доступны только приём постбеков /api/v1/postback и приём лидов /api/v1/lead, /api/v1/lead-file
Домены, добавленные в разделе ДоменыТо же, что домен трекинга. Сертификат выпускается при первом обращении по HTTPS и только для доменов, добавленных в трекер, см. Домены

После установки через мастер адрес http://203.0.113.10 переводит на https://panel.example.com/login, а https://panel.example.com/setup/ — на страницу входа /login.

HTTPS-сертификаты веб-сервер выпускает сам. Для этого DNS-записи доменов должны вести на сервер, а порты 80 и 443 — быть доступны из интернета.

Установщик не настраивает ufw и не меняет правила доступа к SSH, 80 и 443. Если на сервере или у хостера включён firewall, порты 80 и 443 открываются вручную — см. Требования к серверу и подготовка.

Сетевая изоляция PHP

Скрипт tracker-client-firewall ограничивает сеть для PHP из загруженных страниц. Он создаёт в iptables и ip6tables цепочку TRACKER-PHP, подключает её к DOCKER-USER и закрывает контейнерам PHP доступ к самому серверу через мосты trk-php и trk-egress. Для работы правил скрипт включает net.bridge.bridge-nf-call-iptables и net.bridge.bridge-nf-call-ip6tables. Другие правила на сервере он не сбрасывает.

  • Обычный PHP работает без выхода в сеть: исходящие соединения для него закрыты.
  • PHP с доступом в сеть обращается только к публичным адресам по TCP 80 и 443 и к DNS. Частные и служебные сети, адреса самого сервера и весь IPv6 для него закрыты.

Правила применяются при установке, при загрузке сервера до старта Docker и перед каждым стартом Docker. Docker стартует только после успешного применения правил. Когда нужен PHP с доступом в сеть — на странице PHP в локальных страницах и доступ в сеть.

Службы systemd

СлужбаНазначениеКогда работает
tracker-setup.serviceМастер первого запускаСоздаётся при установке через мастер. Работает, пока мастер не завершён, после сбоя перезапускается сама
tracker-client-firewall.serviceПравила сетевой изоляции PHPВыполняется один раз при загрузке сервера, до Docker. Состояние active (exited) — норма
tracker-updates.serviceСлужба установки (контроллер): ставит выпуски по команде из вкладки Настройки → ОбновленияПостоянно, перезапускается сама

При установке через мастер tracker-client-firewall.service и tracker-updates.service появляются после кнопки Запустить трекер, при восстановлении из копии — после кнопки Восстановить трекер. Службу docker установщик включает в автозапуск.

bash
sudo systemctl status tracker-updates.service
sudo journalctl -u tracker-updates.service -n 50

Для другой службы подставьте её имя. Журнал показывает причину, если служба не запустилась. Как обновить саму службу установки — на странице Обновление службы установки (контроллера).

Сервисы Docker

Все контейнеры трекера входят в проект Docker Compose с именем tracker.

СервисНазначение
caddyВеб-сервер: порты 80 и 443, HTTPS-сертификаты
webПанель
adminAPI панели, отчёты, приём конверсий и отправка постбеков
redirectОбработка трафика: ссылки кампаний, редиректы, локальные страницы
backupРезервные копии и восстановление
postgresPostgreSQL 16: настройки, кампании, задания
clickhouseClickHouse 24.8: статистика кликов и конверсий
redisRedis 7
phpPHP-FPM 8.3 для локальных страниц
php-netPHP-FPM 8.3 для страниц с доступом в сеть
pg-migrate, ch-migrateОбновление структуры баз. Запускаются при старте трекера и завершаются. Состояние «Exited (0)» — норма

Образы входят в подписанный выпуск: сервер не скачивает их из реестра и не собирает. После перезагрузки сервера сервисы, кроме pg-migrate и ch-migrate, запускаются сами, если их не останавливали вручную.

Пока трекер не запущен из мастера, порты 80 и 443 слушает временный контейнер tracker-setup-edge. Перед запуском трекера мастер его удаляет.

Тома Docker

Базы, загруженные страницы и сертификаты хранятся в томах Docker, а не в каталоге установки.

ТомЧто хранит
tracker_pgdataБаза PostgreSQL
tracker_chdataБаза ClickHouse
tracker_redisdataДанные Redis
tracker_hostedЗагруженные лендинги и офферы
tracker_ingestОчередь кликов на диске
tracker_backup_stateПодключения серверов хранения, история операций и рабочие файлы резервных копий
tracker_backup_gateПризнак паузы трафика на время копии, восстановления и обновления
tracker_caddy_data, tracker_caddy_configHTTPS-сертификаты и состояние веб-сервера
tracker_update_stateДанные копий перед обновлениями. Создаётся при первой установке обновления из панели
Внимание.

Удаление тома стирает его данные безвозвратно. Базы и загруженные страницы после этого возвращаются только из резервной копии.

Состояние и журналы

Состояние установки показывает команда trackerctl:

bash
sudo trackerctl status
sudo trackerctl check

status печатает версию и этап из install-state.json. check дополнительно один раз проверяет сервисы и HTTPS и при успехе печатает «Сервисы и HTTPS отвечают.» Значения этапа и остальные ответы — на странице Параметры install.sh и установка в терминале.

Отдельного файла журнала установщик не ведёт: сообщения он печатает в терминал, мастер показывает их на своей странице. Разбор сообщений — на странице Ошибки установки и их устранение.

Состояние и журналы сервисов смотрите через Docker Compose:

bash
cd /opt/tracker
sudo docker compose --project-name tracker --env-file .env.production -f docker-compose.prod.yml ps -a
sudo docker compose --project-name tracker --env-file .env.production -f docker-compose.prod.yml logs --tail 100 admin

Вместо admin подставьте имя сервиса из таблицы выше. Состояние трекера без терминала показывает страница панели Состояние, см. Состояние системы.

Что сохранить вне сервера

С копией трекер переносится на пустой сервер, см. Восстановление на новом сервере. При восстановлении в мастере ключ лицензии из копии не берётся: его вводят заново, см. Перенос лицензии на другой сервер.

Обновлено Нужна помощь? ↗