Requirements
- An Asterisk-based PBX — FreePBX 14, 15, 16, 17, a FreePBX-derived fork, or VitalPBX. The installer auto-detects.
- Root /
sudoon the PBX server. - Outbound HTTPS to
callflowstudio.io— for trial registration and update checks. - ~25 MB free on the web tree.
Not supported: FreePBX older than 14. The installer detects this and stops with an explanation rather than installing something that won’t work.
Install
SSH to your PBX as root and run two commands. The bootstrap fetches the current release, verifies its SHA-256, extracts, and hands off to the in-tree installer — there’s nothing to download or unpack by hand:
wget https://callflowstudio.io/install.sh
sudo bash install.sh
To read the script before running it as root, view it with less install.sh after the download — it’s a plain shell script, and q quits the viewer:
wget https://callflowstudio.io/install.sh
less install.sh
sudo bash install.sh
What the installer does
- Auto-detects your PBX (FreePBX, VitalPBX, or a fork).
- Creates the
cfstudiodatabase alongside your existingasteriskDB, so its own tables live separately from your PBX’s. When you edit a dial plan, Call Flow Studio doesn’t write SQL into theasteriskdatabase itself — it calls FreePBX’s own module functions, the same code the FreePBX admin screens use to save that IVR, queue, or ring group. - Sets up
/etc/cfstudio/with restricted permissions for the admin credential and license key. - On FreePBX: drops an Apache config snippet for
/cfstudio/, gated byapache2ctl configtest— it rolls back if that doesn’t pass. VitalPBX uses its existing vhost; no web-server changes. - Prints a one-time setup URL for the welcome flow.
It stays in its own lane: it does not change your call routing or your PBX software. It installs alongside them and reads your existing configuration to draw it. Nothing leaves your PBX without your explicit consent.
The compatibility checks
The installer checks your environment before it changes anything. If something is a genuine blocker — PHP < 5.6, no MariaDB/MySQL, no Asterisk, an unsupported platform, or no network to fetch the licensing component — it stops at that first problem, tells you exactly what failed and why, and nothing has been installed or altered. If it spots something merely unfamiliar rather than blocking (a newer database version it hasn’t been tested against, say), it flags it and continues.
When a check stops the install it also writes a plain-text diagnostic to /tmp/cfstudio-install-error-<time>.log. That file contains only versions, your detected PBX type, and the failing step — no credentials, no personal data, nothing sent anywhere automatically. You can read it before emailing it to support@callflowstudio.io.
Re-running & scripted rollouts
The installer is idempotent — safe to re-run. If a download is interrupted or your SSH session drops, just run it again; existing admin credentials, license keys, and your call-flow data are preserved. That also makes it safe to drive from a configuration-management run across a fleet.
Finishing in the browser
Open the URL the installer prints (it ends in ?setup_token=<random> — the token is long, so copy the whole line). The welcome flow asks for a username, email, password, and EULA acceptance. Submit, and your 30-day trial registers automatically. Call Flow Studio is then served from /cfstudio/ on the PBX.
If the welcome page won’t load, re-check the printed URL. If trial registration doesn’t go through, your admin account still exists — log in normally and retry from Settings → License. Next: Licensing & activation.
What’s collected at registration
From the welcome form: business email, name, optional company. From the PBX itself:
- Machine fingerprint — a one-way identifier derived from this server’s hardware and OS, used only to bind your license to one PBX. It can’t be reversed back into the underlying details.
- Hostname, PBX brand + version, OS distribution, CFS version, PHP version.
- Public IP at registration, geolocated to country / region / city.
What is not collected: phone numbers, DIDs, caller IDs, call recordings, voicemail content, dial-plan content, queue or extension lists, any caller PII. Your dial plan stays on your PBX. Full inventory and handling: Privacy Policy. License terms: Terms of Service.
Uninstalling
FreePBX:
sudo bash /var/www/html/cfstudio/uninstall.sh
VitalPBX:
sudo bash /usr/share/vitalpbx/www/cfstudio/uninstall.sh
Removes the install tree, /etc/cfstudio/, the cfstudio database, and the Apache snippet on FreePBX. It does not touch your asterisk database, your web server, or Asterisk itself.
If you have an active license and want to move it to another PBX, run cfs release-license before uninstalling to free the binding. See moving a license.