Файлы установки, порты, службы и журналы
Где на сервере лежат файлы и секреты трекера, какие порты открыты, какие службы и тома созданы и где смотреть состояние.
Страница для администратора сервера: что установщик создал на сервере и где это искать. Команды выполняются на сервере от 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— три строки: «Панель», «Логин», «Пароль». Файл записывается один раз при запуске трекера: после смены пароля в панели он не обновляется. После восстановления из резервной копии в мастере в файле только адрес панели и строка «Войдите с учётной записью владельца из резервной копии. Пароли пользователей не изменялись.»
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 установщик включает в автозапуск.
sudo systemctl status tracker-updates.service
sudo journalctl -u tracker-updates.service -n 50Для другой службы подставьте её имя. Журнал показывает причину, если служба не запустилась. Как обновить саму службу установки — на странице Обновление службы установки (контроллера).
Сервисы Docker
Все контейнеры трекера входят в проект Docker Compose с именем tracker.
| Сервис | Назначение |
|---|---|
caddy | Веб-сервер: порты 80 и 443, HTTPS-сертификаты |
web | Панель |
admin | API панели, отчёты, приём конверсий и отправка постбеков |
redirect | Обработка трафика: ссылки кампаний, редиректы, локальные страницы |
backup | Резервные копии и восстановление |
postgres | PostgreSQL 16: настройки, кампании, задания |
clickhouse | ClickHouse 24.8: статистика кликов и конверсий |
redis | Redis 7 |
php | PHP-FPM 8.3 для локальных страниц |
php-net | PHP-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_config | HTTPS-сертификаты и состояние веб-сервера |
tracker_update_state | Данные копий перед обновлениями. Создаётся при первой установке обновления из панели |
Удаление тома стирает его данные безвозвратно. Базы и загруженные страницы после этого возвращаются только из резервной копии.
Состояние и журналы
Состояние установки показывает команда trackerctl:
sudo trackerctl status
sudo trackerctl checkstatus печатает версию и этап из install-state.json. check дополнительно один раз проверяет сервисы и HTTPS и при успехе печатает «Сервисы и HTTPS отвечают.» Значения этапа и остальные ответы — на странице Параметры install.sh и установка в терминале.
Отдельного файла журнала установщик не ведёт: сообщения он печатает в терминал, мастер показывает их на своей странице. Разбор сообщений — на странице Ошибки установки и их устранение.
Состояние и журналы сервисов смотрите через Docker Compose:
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 подставьте имя сервиса из таблицы выше. Состояние трекера без терминала показывает страница панели Состояние, см. Состояние системы.
Что сохранить вне сервера
- Пароль владельца из
owner-access.txt. - Резервные копии на отдельном сервере хранения. В копию входят данные трекера и
.env.productionс серверными ключами, HTTPS-сертификаты в неё не входят — см. Создание резервной копии и расписание. Подключение хранилища — на странице Подключение сервера хранения копий. - Доступ к личному кабинету: в нём показан ключ лицензии.
С копией трекер переносится на пустой сервер, см. Восстановление на новом сервере. При восстановлении в мастере ключ лицензии из копии не берётся: его вводят заново, см. Перенос лицензии на другой сервер.