We’ve added documentation and new scripts for High Availability (HA) deployments in FS PBX
With two FS PBX nodes, you can now run your platform in Primary–Standby mode — both servers stay synchronized, ready for instant cutover if one fails.
The floating record can be flipped manually or via a small health probe script (e.g., with Cloudflare or Route 53 API).
Each article includes the full automation script and detailed explanations of what it does.
Check out the full HA setup guide in the FS PBX Docs, and feel free to share your experiences or improvements in this thread!
With two FS PBX nodes, you can now run your platform in Primary–Standby mode — both servers stay synchronized, ready for instant cutover if one fails.
Overview
The HA setup uses bi-directional replication for both:- PostgreSQL Database
A bash automation script configures PostgreSQL logical replication in both directions.
It sets up publications, subscriptions, replication slots, and peer firewall rules — creating a true master-to-master database link between two servers. - Syncthing File Replication
Another script installs and configures Syncthing on both servers, pairs them automatically, and shares the core FS PBX directories (recordings, voicemails, sounds, and cache).
Files stay mirrored in near real time.
Typical Architecture
| Role | DNS Record | Example |
|---|---|---|
| Primary Node | server1.fspbx.com | Handles live calls and GUI |
| Standby Node | server2.fspbx.com | Continuously synced |
| Floating DNS | pbx.fspbx.com | Points to the active node |
Requirements
- SSH key-based access between both nodes
- Open ports:
- 5432 (Postgres replication)
Documentation
Step-by-step guides are now live in our documentation:Each article includes the full automation script and detailed explanations of what it does.
Result
Once configured:- Both servers continuously replicate databases + files
- Failover takes only a DNS change
- The standby can take over immediately with minimal interruption
Check out the full HA setup guide in the FS PBX Docs, and feel free to share your experiences or improvements in this thread!