04Architecture
Every call takes the guarded route.
A security edge in front, a call engine nobody can reach, and one control plane deciding everything in between.
How a call travels through AZOREL PBX
- SIP signalling
- RTP media
- Control · ESL / xml_curl / HTTPS
- State
Design principles of the architecture
- 01Edge and engine are separate
- Only OpenSIPS (signalling) and RTPengine (media) face the network. They filter malformed SIP, rate-limit, hide topology and enforce bans. FreeSWITCH lives on a private network with nothing published.
- 02Changes apply on the next call
- The SIP directory and dialplan are served live by the backend on every REGISTER and INVITE. Structural configuration is generated, validated, swapped atomically and reloaded per component — never a full engine restart.
- 03One source of truth
- PostgreSQL holds every business object. Redis keeps only state that can be rebuilt; if it is lost, the system recovers from the database and fresh engine events.
- 04A modular monolith
- The control plane is a single Go service organised by domain — extensions, trunks, routing, records, provisioning, authentication, audit — with one deliberate seam to the call engine.
Technology stack
- Go
- Next.js
- FreeSWITCH
- OpenSIPS
- RTPengine
- PostgreSQL
- Redis
- Docker Compose
- Debian
