v1.0.0 — the personal server edition

Extension to extension
calling for the masses.

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.

↓ Get SIPBXGO Quick Install →
Phone A ──TLS/SRTP──┐ ┌──TLS/SRTP── Phone B (home, NAT) │ │ (office, NAT) │ SIPBXGO │ ├── your VPS ───┤ audio ═══════════════╪═══ relay ════╪═══════════ audio ✓ No STUN. No ICE. No router config. NAT just works.
1 binary, zero dependencies
1 SQLite file, all state
512MB RAM — plenty for a family
$0 per month, forever
Apache 2.0 open source, free forever
Features

Everything a private PBX needs.
Nothing it doesn't.

Built for real phones, real NAT, and real security. Not for feature checklists.

📞

Extension-to-Extension Calls

Phones anywhere on the internet dial each other by extension. Audio relayed through the server — home routers and office NAT work without configuration.

🔒

TLS + SRTP Encryption

SIP over TLS, audio over SRTP. Certificates from Let's Encrypt via Traefik, auto-renewed. Per-extension "require encryption" switch.

🛡️

Hostile Internet Ready

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.

🎵

Conference Rooms + Hold

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.

📱

Multi-Phone Extensions

Register a desk phone and a softphone on the same extension. All ring simultaneously. First to answer wins the call.

🖥️

Live Web Dashboard

See registered phones, calls in progress, conference rooms, bans, and certificate status. Updates every few seconds. Light and dark themes.

🐳

One Compose Entry

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.

⚙️

Full CLI Control

Add extensions, rooms, admins, view registrations and call history — all from the command line, while the server is running. No restart required.

🔧

Quirky Phone Friendly

SDP rewriting handles cheap OBi/Polycom phones that send malformed SDP. Tested with Obihai OBi2182 and Linphone on iOS, on and off network.

Use Cases

Who it's for.

If you need phones talking to each other across the internet, with no monthly bill and no lock-in — this is for you.

01 / FAMILY

The Family PBX

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.

02 / COMMUNITY

Community Groups

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.

03 / WAN OFFICE

Remote Teams

Distributed team with desk phones at multiple locations. The VPS is the middle. Everyone dials extensions. No outside line needed for internal coordination.

04 / LAB

Homelabs & Tinkerers

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.

Install

Up in five minutes.

A VPS, Docker, and a domain. That's the whole list.

1. Clone and configure
# 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
2. Open firewall ports
ufw allow 5060          # SIP (UDP + TCP)
ufw allow 5061/tcp      # SIP over TLS
ufw allow 10000:10999/udp  # RTP audio
3. Start it and create your admin
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.

Scope

Deliberately small.

v1.0 is complete for its job. Not a stepping stone — a finished thing.

✗ No outside line

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.

✗ No voicemail

If someone doesn't pick up, call their mobile. Voicemail is where SIP projects go to become FreePBX. Not today.

→ v2: Small Org edition

Voicemail, call transfer, busy lamp fields, and phone auto-provisioning are planned for a future version for larger deployments.

→ Contribute or fork

Apache 2.0 licensed. PRs welcome. The codebase is clean Go with full end-to-end tests. Build what you need.