Real-time call path visualiser for FreePBX / Asterisk, using the AMI (Asterisk Manager Interface).
Browser ──ws──▶ nginx (:8080)
│ /ws proxy_pass
▼
ami-proxy (:3000, internal)
│ TCP
▼
Asterisk AMI (:5038)
In /etc/asterisk/manager.conf (or via FreePBX Admin → Asterisk Manager):
[admin]
secret = changeme
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0 ; or your Docker host IP
read = all
write = allReload: asterisk -rx "manager reload"
cp .env.example .env
nano .env # set AMI_HOST, AMI_USER, AMI_SECRETdocker compose up -dOpen http://your-server:8080 in a browser. Click Connect (leave host/port blank to use the built-in nginx proxy path).
docker compose logs -f # watch all logs
docker compose logs ami-proxy # proxy only
curl http://localhost:8080/health- The AMI proxy port (3000) is not exposed externally — only nginx is public.
- For production, put nginx behind a reverse proxy with TLS (Caddy, Certbot, etc).
- Restrict the AMI
permitto the Docker bridge network CIDR only. - The FreePBX AMI user should be
read = all, write = noneunless you need to send actions.
docker compose pull
docker compose up -d --build