AI context/memory from Claude Code sessions covering all infrastructure: JARVIS, NovaCPX, DO sites, Proxmox, FusionPBX, MediaStack, and project feedback/preferences.
4.7 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| fusionpbx-backup | FusionPBX (134.209.72.226) config backup to GitHub — weekly cron, restore wizard, PostgreSQL dump, full rebuild guide |
|
GitHub repo myronblair/fusionpbx-config (private) — PostgreSQL DB dump + FreeSWITCH configs + full rebuild guide.
Why: FusionPBX stores ALL config in PostgreSQL — extensions, dialplans, SIP gateways, IVR, ring groups, devices, voicemail, users. The DB dump IS the backup.
How to apply: Reference when discussing FusionPBX DR, the backup cron, or if the server needs to be rebuilt. See fusionpbx-freeswitch-setup for full FusionPBX operational config.
SSH Access (critical — port 22 firewalled from internet)
Only accessible from: 107.178.2.130 (FortiGate home) and 97.154.109.245 (FortiGate secondary). From anywhere else, relay through DO:
sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
'sshpass -p "Joker1974!@#" ssh -o StrictHostKeyChecking=no root@134.209.72.226 "command"'
Repo Structure
database/fusionpbx.sql.gz— Full PostgreSQL dump (gzip compressed; 306MB raw → ~29MB)database/postgres_globals.sql— PostgreSQL roles/passwordsfreeswitch/— vars.xml, freeswitch.xml, extensions.conf, sip_profiles/, autoload_configs/fusionpbx-app/config.php— DB credentials for FusionPBX web appnginx/fusionpbx.conf— nginx config (includes provisioning URL rewrites)fail2ban/— jail.local (trusted IPs: 107.178.2.130, 97.154.109.245)network/— netplan 50-cloud-init.yaml, hosts, hostnamesystemd/— 9 FusionPBX service units (active_calls, email_queue, event_guard, etc.)ssh/authorized_keysrecordings/— call recordings (~4KB currently)
Schedule
Weekly Sunday 5am: 0 5 * * 0 /usr/local/bin/fusionpbx-backup >> /var/log/fusionpbx-backup.log 2>&1
Manual trigger
/usr/local/bin/fusionpbx-backup on the fusion server (or via DO relay)
What's NOT backed up
- SSL certs — re-issue:
certbot --nginx -d fusion.orbishosting.com - FusionPBX web app
/var/www/fusionpbx/— reinstalled by official installer - FreeSWITCH binary — installed by FusionPBX installer
- Voicemail audio files — small, not critical
Full Rebuild Flow (30–45 min)
1. New Debian 12 droplet
Create fresh DO droplet, same region. SSH in (relay via DO if needed).
2. Clone repo and run restore
apt update && apt install -y git
git clone https://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@github.com/myronblair/fusionpbx-config.git /opt/fusionpbx-config
bash /opt/fusionpbx-config/restore.sh
3. Restore script phases (interactive)
- SSH authorized_keys + hostname
- Run FusionPBX official installer (separate terminal, ~10-15 min):
wget -O - https://raw.githubusercontent.com/fusionpbx/fusionpbx-install.sh/master/debian/install.sh | bash→ When asked for domain:fusion.orbishosting.com - Critical: PostgreSQL restore — stops all services, drops+recreates DB, restores from
.sql.gz - FreeSWITCH config files
- FusionPBX app config.php (DB credentials)
- nginx config
- fail2ban
- Recordings
- Backup script + cron
- SSL (manual:
certbot --nginx -d fusion.orbishosting.com)
4. Post-restore checks
- Update fail2ban trusted IPs if FortiGate IP changed
- Update Yealink provisioning URL if server IP changed (was 134.209.72.226)
- Verify SignalWire trunk: FusionPBX → Accounts → Gateways
- Delete Sofia XML cache:
rm /var/cache/fusionpbx/FusionPBX.configuration.sofia.conf - Test ext 1000 (Myron Yealink T48S at 10.48.200.43)
- Test ext 1001 (Tommy)
- Test IVR 900
Key Credentials
| Item | Value |
|---|---|
| FusionPBX web | https://fusion.orbishosting.com (admin / fY7XP5swgtpbzrYLhkeVYkA4744) |
| Root SSH | root / Joker1974!@# |
| PostgreSQL | fusionpbx database, user fusionpbx |
| Relay DO server | root@165.22.1.228 / Gonewalk1974!@# |
Architecture Notes
- FusionPBX uses Lua XML handler — FreeSWITCH queries PostgreSQL via PHP/Lua for all routing. Static XML config in
/etc/freeswitch/is mostly skeleton. - SignalWire SIP trunk uses
transport=udp— TCP caused re-INVITE issues (gateway External URI must end in;transport=udp) - Ext 1000 (Yealink T48S) registers from behind FortiGate on port 5080 with
aggressive-nat-detection=true - FusionPBX cache at
/var/cache/fusionpbx/FusionPBX.configuration.sofia.conf— delete to force full Sofia reload
PostgreSQL Dump Size Note
306MB uncompressed, 29MB gzipped. Exceeds GitHub's 100MB limit uncompressed. Must use gzip (pg_dump | gzip > fusionpbx.sql.gz). Restore.sh handles both .sql.gz (zcat) and plain .sql formats.