A containerized telecom stack — Kamailio (SIP edge) + FreeSWITCH (call core) + PostgreSQL + HOMER (HEP-based call-flow capture and visualization) — wired together with Docker Compose for fast, repeatable local/staging environments.
This is the deployment/infra counterpart to
kamailio-sbc-router
and freeswitch-cloud-pbx
— those repos are the routing logic and dialplan; this one is how you
actually stand the whole thing up.
┌─────────────┐ HEP/9060 ┌──────────────────┐
SIP traffic ────►│ Kamailio │───────────────────────►│ homer-heplify │
:5060/:5061 │ (SIP edge) │ │ (capture server) │
└──────┬──────┘ └─────────┬────────┘
│ signaling │
▼ ▼
┌─────────────┐ ┌──────────────────┐
│ FreeSWITCH │ │ homer-webapp │
│ :5070 │ │ :9080 (UI) │
└──────┬──────┘ └──────────────────┘
│
▼
┌─────────────┐
│ PostgreSQL │ (CDRs, provisioning, HOMER schema)
└─────────────┘
Running Kamailio and FreeSWITCH without HEP-based capture means your only
visibility into a production call-flow problem is grepping raw logs after
the fact. HOMER gives a searchable SIP ladder UI across both Kamailio
and FreeSWITCH in one place — the same kind of visibility sngrep gives
you on a single box, but for a multi-node stack.
kamailio:ghcr.io/kamailio/kamailio— Kamailio's current official image (the project moved off Docker Hub to GitHub Container Registry).freeswitch: built locally fromsignalwire/freeswitch-public-base(SignalWire's official base image) — there's no single ready-to-run upstream FreeSWITCH application image, sofreeswitch/Dockerfilelayers config on top of the base, same approach as deploying it anywhere else.homer-heplify/homer-webapp:sipcapture/heplify-serverandsipcapture/homer-app— HOMER 7's official images from the SIPCAPTURE project.
docker compose up -d
docker compose logs -f kamailio freeswitch- Kamailio SIP:
5060/udp+tcp,5061/tcp(TLS) - FreeSWITCH SIP:
5070/udp+tcp(intentionally offset from Kamailio so both can run on one host without colliding) - HOMER web UI:
http://localhost:9080 - PostgreSQL:
5432(CDRs + HOMER schema)
Real TLS certificates, production-grade Kamailio/FreeSWITCH config (see
the other two repos for that), and secrets management — changeme
passwords here are for local/staging use only. A production rollout would
pull config from a secrets manager and TLS certs from Let's Encrypt/ACM,
not bake either into the compose file.