Открытая платформа захвата и анализа VoIP-сигнализации. Перехватывает SIP, RTCP, HEP/EEP протоколы в реальном времени. Хранит в PostgreSQL/Elasticsearch, визуализирует в веб-интерфейсе. Используется для forensics VoIP-инфраструктуры и обнаружения toll fraud.
Кросс-платформенный монитор сетевого трафика с графическим интерфейсом на Rust. Отображает соединения в реальном времени, определяет геолокацию …
ntopng — это инструмент для мониторинга трафика с удобным веб-интерфейсом. Он показывает трафик в реальном времени, …
Фреймворк сетевого мониторинга с семантикой уровня приложений — не классическая IDS, а платформа для исследования трафика: …
Ведущий open source фреймворк для forensics памяти. Анализирует дампы оперативной памяти Windows, Linux и macOS — …
# Docker (самый простой путь): git clone https://github.com/sipcapture/homer-docker docker-compose up -d # Веб-интерфейс на :9080
100% открытая телеком-наблюдаемость с 2011 года
homer — это монолитный сервер захвата HEP и API всё-в-одном, лежащий в основе дата-лейка Homer 11.x
application/vq-rtcpxr → DuckLake + UI QoS транзакций)Homer использует модульную архитектуру с четырьмя основными компонентами:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Homer Core │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌──────────┐ ┌─────────────────┐ │
│ │ Ingest │ │ Storage │ │ Node │ │ Coordinator │ │
│ │ (HEP recv) │──▶│ (DuckLake) │──▶│ gRPC/HTTP│──▶│ (REST API) │ │
│ └─────────────┘ └─────────────┘ └──────────┘ └─────────────────┘ │
│ UDP/TCP/HTTP Parquet+S3 Airport :50051 HTTP :8080 │
│ FlightSQL :50055 (opt. proxy :32010) │
└─────────────────────────────────────────────────────────────────────────────┘
| Модуль | Описание |
|---|---|
| Ingest | Принимает пакеты HEP через UDP/TCP/TLS/HTTP/HTTPS; опциональные SIP-слушатели для VQRTCP и SIPREC |
| Storage | Записывает данные в DuckLake (Parquet + каталог) |
| Node | Airport gRPC + HTTP /query; опциональный Arrow FlightSQL для Grafana (docs/FLIGHTSQL.md) |
| Coordinator | Шлюз REST API для UI и внешних приложений |
homer для вашей ОС/архитектуры{
"ingest": {
"enable": true,
"udp": { "enable": true, "port": 9060 },
"tcp": { "enable": true, "port": 9061 },
"http": { "enable": true, "port": 9080 }
},
"storage": {
"enable": true,
"ducklake": {
"catalog_path": "/data/homer/homer_catalog.sqlite",
"data_path": "/data/homer/parquet"
}
},
"node": {
"enable": true,
"flight_server": { "port": 50051 },
"ducklake": {
"lake_name": "homer_lake",
"volumes": [
{
"name": "default",
"type": "local",
"catalog_type": "sqlite",
"catalog_path": "/data/homer/homer_catalog.sqlite",
"path": "/data/homer/parquet"
}
]
}
},
"coordinator": {
"enable": true,
"http_server": { "port": 8080 }
}
}
Дополнительные варианты хранения описаны в доступной документации STORAGE POLICIES
Обе функции отключены по умолчанию и требуют модуль writer (DuckLake). Включите их в секции ingest файла homer.json:
{
"ingest": {
"vqrtcp": {
"enable": true,
"bind_ip": "0.0.0.0",
"sip_port": 5063,
"transports": ["udp", "tcp"],
"methods": ["PUBLISH", "MESSAGE"],
"reply_200": true
},
"siprec": {
"enable": true,
"bind_ip": "0.0.0.0",
"advertise_ip": "203.0.113.10",
"sip_port": 5062,
"transports": ["udp", "tcp"],
"require_siprec": true
}
}
}
| Функция | Слушатель | Хранилище | UI |
|---|---|---|---|
| VQRTCP | Выделенный SIP (по умолчанию :5063) |
vqrtcpxr_stats |
Вкладка Transaction QoS → VQRTCP |
| SIPREC | SRS внутри процесса (по умолчанию :5062) |
hep_proto_1_siprec |
Профиль поиска протокола siprec |
Направьте ваш SBC или медиашлюз на SIP-порт VQRTCP для передачи отчётов application/vq-rtcpxr. Направьте SIPREC Session Recording Client (SRC) на порт SIPREC для записи сигнализации и rs-metadata.
Подробности о форматах, корреляции и настройке см. в docs/VQRTCP.md и docs/SIPREC.md.
# Build
make
# Run as server (default mode)
./homer --config-path /etc/homer/homer.json
# With debug logging
./homer --config-path /etc/homer/homer.json --log-level debug
О рабочем процессе разработки внутри контейнера (сборка + тесты) читайте в docs/DEVCONTAINER.md.
Homer использует CLI на основе подкоманд. Запуск homer без аргументов запускает сервер.
homer Run the server (default)
homer search [flags] Search Homer data via coordinator API
homer cli [flags] Interactive DuckLake SQL shell
homer system [flags] System operations (compaction, extensions, reload)
homer wizard [flags] Interactive config generator wizard
homer config show [flags] Print effective config (file + env + defaults)
homer mcp [flags] Start MCP stdio server
homer version Show version
homer help Show full help with all flags
homer --config-path /etc/homer/homer.json
homer --config-path /etc/homer/homer.json --log-level debug --syslog-disable
| Флаг | Описание |
|---|---|
--config-path <path> |
Путь к файлу конфигурации или каталогу |
--log-level <level> |
Уровень логирования: debug, info, warn, error, trace |
--syslog-disable |
Отключить syslog, использовать только stdout |
--pid-file <path> |
Путь к PID-файлу (по умолчанию: /var/run/homer-core.pid) |
Ищите данные Homer из командной строки с выводом в виде таблицы, вертикального списка, CSV, JSON, графика, call flow или PCAP (только SIP; используйте --format pcap с -o / --output).
# Basic SIP search (last hour)
homer search --host 10.0.0.1:8081 --user admin --pass secret
# Search INVITE messages with call flow diagram
homer search --host 10.0.0.1:8081 --method INVITE --format callflow
# Export SIP messages to a pcap file (same framing as API /transactions/export/pcap)
homer search --host 10.0.0.1:8081 --call-id "abc123@host" --format pcap -o /tmp/call.pcap
# Search by Call-ID
homer search --host 10.0.0.1:8081 --call-id "abc123@host" --format vertical
# Post-filter: only INVITEs and BYEs, exclude provisional responses
homer search --host 10.0.0.1:8081 --grep "INVITE,BYE" --exclude "100,183"
# Interactive TUI mode
homer search --host 10.0.0.1:8081 --interactive
Полную документацию и примеры см. в docs/SEARCH.md.
Интерактивная SQL-оболочка для прямых запросов к DuckLake:
# Start interactive CLI
homer cli --config-path /etc/homer/homer.json
# Execute single query and exit
homer cli --config-path /etc/homer/homer.json --query "SELECT COUNT(*) FROM homer_lake.main.hep_proto_1_call"
| Команда | Описание |
|---|---|
help, \h, \? |
Показать справку |
tables, \dt |
Список доступных таблиц |
clear, \c |
Очистить экран |
exit, quit, \q |
Выйти из CLI |
| ### Системные операции |
# Run full compaction
homer system --config-path /etc/homer/homer.json --compaction-force
# Install DuckDB extensions
homer system --config-path /etc/homer/homer.json --install-extensions
# Show DuckDB version
homer system --config-path /etc/homer/homer.json --duckdb-version
# Generate example config
homer system --generate-example-config > homer.json
# Reload running process
homer system --reload
Каталог DuckLake SQLite содержит только метаданные (файлы parquet не копируются). Резервное копирование безопасно во время работы Homer; для восстановления необходимо остановить процесс записи.
homer catalog backup --config-path /etc/homer/homer.json
homer catalog list --config-path /etc/homer/homer.json
homer catalog restore --config-path /etc/homer/homer.json
См. docs/CATALOG.md для флагов, --out, и информации о том, когда использовать восстановление, а когда --rebuild-catalog.
Выводит действующую конфигурацию, с которой Homer будет запущен (JSON-файл + переменные окружения HOMER_*
+ значения по умолчанию структуры). Эта команда не подключается к запущенному
процессу. Секреты (пароли, токены, ключи) скрываются, если не задан флаг
--include-secrets.
homer config show --config-path /etc/homer/homer.json
homer config show --config-path /etc/homer/homer.json --section storage.ducklake.compaction
| Флаг | Описание |
|---|---|
--config-path <path> |
Путь к файлу или каталогу конфигурации |
--section <path> |
Только путь к JSON в виде точечной нотации |
--include-secrets |
Не скрывать учетные данные |
--compact |
JSON в одну строку |
Интерактивный мастер, который генерирует полный конфигурационный файл homer.json:
# Interactive TUI wizard
homer wizard
# Non-interactive: generate config for a specific deployment profile
homer wizard --profile all-in-one --output homer.json
homer wizard --profile writer --output homer-writer.json
homer wizard --profile coordinator --output homer-coordinator.json
homer wizard --profile edge --output homer-edge.json
homer wizard --profile node --output homer-node.json
| Профиль | Включенные модули |
|---|---|
all-in-one |
прием + хранилище + узел + координатор |
writer |
прием + хранилище |
edge |
прием + хранилище + узел |
coordinator |
только координатор |
node |
только узел |
См. каталог examples/:
| Файл | Описание |
|---|---|
homer.json |
Развертывание «всё в одном» |
homer-writer.json |
Прием + Хранилище + Узел |
homer-node.json |
Только узел (только для чтения) |
homer-coordinator.json |
Только координатор |
homer-edge.json |
Пограничное развертывание |
Опубликованная документация (GitHub Pages): https://sipcapture.github.io/homer/ — собрана из docs/ с помощью MkDocs при отправке (push) в homer11. Включите Settings → Pages → Build and deployment: GitHub Actions один раз после первого запуска рабочего процесса.
python3 -m venv .venv-docs && .venv-docs/bin/pip install -r docs-requirements.txt
.venv-docs/bin/mkdocs serve # http://127.0.0.1:8000
scripts/profile_ingest_load.sh / make profile-ingest для воспроизводимых профилей загрузки ЦПvqrtcpxr_stats, интерфейс QoS)hep_proto_1_siprec)Выпущено под лицензией AGPL-3.0 License
Авторские права (C) 2025 QXIP BV