A small, self-hosted SIP PBX written in Go. One binary. One container. One SQLite file. Your phones. Your VPS. Your calls. No Google Voice. No Asterisk sprawl. No subscription.
Built for real phones, real NAT, and real security. Not for feature checklists.
Phones anywhere on the internet dial each other by extension. Audio relayed through the server — home routers and office NAT work without configuration.
SIP over TLS, audio over SRTP. Certificates from Let's Encrypt via Traefik, auto-renewed. Per-extension "require encryption" switch.
Port 5060 gets probed within minutes. SIPBXGO auto-bans scanners and password guessers. Banned IPs get no response at all — not even a hint you exist.
Dial a room number to join. Optional PIN, join/leave chimes, music while alone. Hold music built-in — generated, royalty-free, or your own WAV.
Register a desk phone and a softphone on the same extension. All ring simultaneously. First to answer wins the call.
See registered phones, calls in progress, conference rooms, bans, and certificate status. Updates every few seconds. Light and dark themes.
One container. Host networking for SIP/RTP. Web UI on the Docker bridge. Spin up a new PBX by adding a compose entry. That's it.
Add extensions, rooms, admins, view registrations and call history — all from the command line, while the server is running. No restart required.
SDP rewriting handles cheap OBi/Polycom phones that send malformed SDP. Tested with Obihai OBi2182 and Linphone on iOS, on and off network.
If you need phones talking to each other across the internet, with no monthly bill and no lock-in — this is for you.
Cheap SIP desk phones for family members across different homes. One VPS, one compose entry, everyone on an extension. Call mom. Call your brother. Free, forever.
A small nonprofit or community org that needs internal comms. Extension-to-extension, a conference room, and a web admin panel. No per-seat SaaS subscription.
Distributed team with desk phones at multiple locations. The VPS is the middle. Everyone dials extensions. No outside line needed for internal coordination.
You have OBi phones you love and Google Voice flaked out on you. Spin up SIPBXGO, point the phones at it, and never think about it again.
A VPS, Docker, and a domain. That's the whole list.
# Clone to your VPS git clone https://github.com/JustSparx/SIPBXGO.git /opt/SIPBXGO cd /opt/SIPBXGO && cp .env.example .env # Edit .env — the essentials: SIPBX_PUBLIC_IP=203.0.113.10 # your server's public IP SIPBX_DOMAIN=pbx.example.com # your domain TZ=America/Los_Angeles
ufw allow 5060 # SIP (UDP + TCP) ufw allow 5061/tcp # SIP over TLS ufw allow 10000:10999/udp # RTP audio
docker compose up -d --build docker compose exec sipbxgo sipbxgo admin add admin # Add your first extension docker compose exec sipbxgo sipbxgo ext add 101 -name "Kitchen"
Point a phone at your domain, register with the extension number and generated password — it appears on the dashboard within seconds. Full setup guide in the README.
v1.0 is complete for its job. Not a stepping stone — a finished thing.
No SIP trunks, no PSTN. Use your phone's other account (Google Voice, etc.) for that. SIPBXGO is for talking to each other, not to the phone network.
If someone doesn't pick up, call their mobile. Voicemail is where SIP projects go to become FreePBX. Not today.
Voicemail, call transfer, busy lamp fields, and phone auto-provisioning are planned for a future version for larger deployments.
Apache 2.0 licensed. PRs welcome. The codebase is clean Go with full end-to-end tests. Build what you need.