apt.
Before you begin
Three of these decide whether the rest of the page works at all, so they are worth reading rather than discovering at step three.No Java is needed, at any point. The gateway carries its own runtime, and so do the operator
commands —
fireflo db migrate, fireflo license activate and the rest all run from the same
executable. A JDK is wanted only for building from source. The optional SMPPSim test SMSC is the
one exception: choosing it adds your distribution’s Java runtime, for SMPPSim alone.1. Put the release on the host
You are sent the tarball, its checksum, the signature and the host preparation script.2. Verify it before anything else
3. Prepare the host
setup.sh installs the services the gateway talks to. The gateway’s own installer does not — it
adds the PostgreSQL client and no server, and never mentions a broker.
--no-node on a gateway-only host.
setup.sh is not signed, unlike the release tarball. It is one plain shell file with no network
fetch except the package repositories it names, and you are about to run it as root. Read it first.4. Create the database and role
Nothing does this for you, deliberately: installing a package is impersonal and reversible, and minting a credential is neither.guest account, which the broker itself restricts to loopback — the
correct default, and the only one that needs no secret.
5. Unpack
MANIFEST. It names the version, the commit and the platform this binary was compiled for.
6. Install the gateway
Check first. It changes nothing.psql missing — fatal in database mode
psql missing — fatal in database mode
The operational tokens and the configuration rows are written with it. Without it the install runs
the migrations and the bootstrap, then dies at the tokens — leaving a migrated, bootstrapped
database and a gateway that answers
404 on every /ops endpoint. setup.sh installs it.A port already held — fatal on install
A port already held — fatal on install
2775, 8080 and 9000. A second instance given ports the first already holds completes, never binds,
and then every check afterwards passes by answering from the old gateway. Give a second instance
its own
--smpp-port, --http-port and --ops-port — see
Multiple instances.rsync or python3 missing — warnings only
rsync or python3 missing — warnings only
Needed by
update and by fireflo send and verify respectively, not by the install itself.ps.
--yes skips the confirmation for a scripted
install; --dry-run shows the decisions without making them.
--bootstrap writes the minimum a fresh database needs — the default routing table, one
listener, one login. It refuses on a database that already has rows, so it is only ever right on a
new one. Coming from an existing configuration, use --import instead.--smpp-port-range 2775-2799 if you expect more than one listener later — it is the band the
firewall opens and the band new listeners are allocated within, so declaring it now covers every
listener you will ever create. Add --firewall to have the SMPP and HTTP ports opened for you, with
OpenSSH allowed first.
Full detail: Install in one command.
7. Activate the licence
ps.
8. Install the control panel
After the gateway, not before — the gateway owns the database schema and the panel only reads and writes rows in it. Run it from the panel’s own scripts directory: it locates its source relative to itself.--from.
Full detail: The control panel.
9. Confirm it came up
verify exiting 4 on a brand-new install means the configuration is sound and there is nothing to
route to yet — expected before you add a vendor.
Then sign in to the panel and work through
First configuration.
Optional, once it is running
Blocking abusive clients
Refused logins recorded, shown, and blocked at the firewall. Fill in the never-ban list before
you enable a jail — a ban covers every port of the host, including SSH.
A durable queue
Without a broker the queue is in memory and a restart drops whatever has not reached a vendor.
Pass
--broker-uri to use the RabbitMQ setup.sh installed.rest-panel/scripts/. It needs its own database — never the gateway’s, whose schema is
version-checked and would meet tables it does not know about.
When the next release arrives
Verify it, unpack it, and:update never touches your configuration directory, and keeps the previous version so
fireflo-install rollback is one command. The panel is upgraded separately by its own installer.
See Upgrading.
Related
Installing by hand
Every step the installer automates, for a host where it cannot run.
Removing an install
What comes off, and what deliberately survives.