Installing FunnelFlux
FunnelFlux is self-hosted. You install it on a server you control, then point a domain at that server.
If you would rather not do this yourself, email support or use the chat icon on this page.
We can deploy a server for you if you send hosting-account access.


This article is the current install path: a fresh Ubuntu 24.04 LTS VPS and the ff1.sh → ff4.sh scripts.
Do not use shared hosting, cPanel, Plesk, or a machine that already serves other sites.
What you need
Section titled “What you need”- A new Ubuntu 24.04 LTS VPS with root (or sudo) SSH access.
- A domain or subdomain you control, for example
tracker.example.com. - The licensed email and license key from your FunnelFlux account.
- Outbound internet from the server (package mirrors, Let’s Encrypt, and license checks).
Recommended size: 2 vCPU, 4 GB RAM, and at least 50 GB SSD. Plans under about $20/month are usually too small.
We recommend:
- Vultr (referral link includes testing credit)
- DigitalOcean
Pick the datacenter near your traffic, not near you. Western Europe is a reasonable default for mixed global traffic.
When you create the VPS:
- OS: Ubuntu 24.04 LTS x64
- Enable provider backups if they offer them
- Attach an SSH key so you can log in as
root
More hardware notes: Minimum installation requirements.
Provider click-through screenshots (use Ubuntu 24.04, not 22.04): Install on Vultr.
Overview
Section titled “Overview”| Step | What you do |
|---|---|
| 1 | Point DNS at the server |
| 2 | SSH in and run ff1.sh |
| 3 | Issue a Let’s Encrypt certificate |
| 4 | Run ff2.sh (databases) |
| 5 | Run ff3.sh (download and unpack FunnelFlux) |
| 6 | Finish install.php in the browser |
| 7 | Run ff4.sh (remove installer files) |
| 8 | Install the V2 UI |
Scripts live at https://licensing.funnelflux.com/installers/ubuntu_24/.
ff1.sh installs Nginx, PHP 8.4-FPM, ionCube Loader, MariaDB, ClickHouse, Memcached, and a firewall with SSH, HTTP, and HTTPS open.
1. Point DNS at the server
Section titled “1. Point DNS at the server”Create an A record for your tracker hostname to the VPS public IP.
tracker.example.com. A 203.0.113.10Wait until it resolves from your laptop:
dig +short tracker.example.comIt must return that IP before you continue.
DNS overview: How DNS works. Cloudflare notes: Using Cloudflare DNS.
If the domain is on Cloudflare, set the record to DNS only (grey cloud) until the certificate in step 3 exists. Orange-cloud proxying usually breaks Let’s Encrypt HTTP-01. After HTTPS works, you can enable the proxy. Use SSL/TLS mode Full (strict), never Flexible.
2. Run system setup (ff1.sh)
Section titled “2. Run system setup (ff1.sh)”ssh root@YOUR_SERVER_IPThen:
wget https://licensing.funnelflux.com/installers/ubuntu_24/ff1.shbash ff1.shThis is non-interactive and often takes 10–20 minutes. It updates the OS, installs the stack above, writes a temporary self-signed certificate, opens the firewall, and enables FunnelFlux’s once-per-minute cron.
If SSH drops, reconnect and go on to the next step.
Do not re-run ff1.sh unless the first run failed.
3. Install a TLS certificate
Section titled “3. Install a TLS certificate”Nginx is already listening on 80 and 443.
sudo apt-get updatesudo apt-get install -y certbot python3-certbot-nginxsudo certbot --nginx -d tracker.example.comAdd extra names with more -d flags, for example -d www.tracker.example.com.
Confirm HTTPS:
curl -I https://tracker.example.comYou want a response from Nginx, not a certificate warning.
4. Create application databases (ff2.sh)
Section titled “4. Create application databases (ff2.sh)”wget https://licensing.funnelflux.com/installers/ubuntu_24/ff2.shbash ff2.shThis creates MariaDB database flux_db and user flux_user, sets up ClickHouse access, and writes:
/usr/share/nginx/html/fluxdb.ini/usr/share/nginx/html/clickhouse-password.xml
The script prints the database password. Keep that terminal output until the wizard in step 6 has finished. The wizard prefills these values; you should not invent new database credentials.
5. Unpack FunnelFlux (ff3.sh)
Section titled “5. Unpack FunnelFlux (ff3.sh)”wget https://licensing.funnelflux.com/installers/ubuntu_24/ff3.shbash ff3.shIt asks for:
- Licensed email (the address the license is registered to)
- License key
It writes those into fluxlic.ini so the wizard can prefill them.
If latest_version.zip is not already in the current directory or /tmp, it downloads:
https://licensing.funnelflux.com/downloads/installers/latest_version.zipThen it extracts install.php and data.bin into /usr/share/nginx/html/.
6. Complete the web installer
Section titled “6. Complete the web installer”Open:
https://tracker.example.com/install.phpUse the same hostname you put on the certificate.
The first page unpacks data.bin.
That can take a minute on a small VPS.
Do not close the tab.
Then you get three forms.
License — license key and licensed email.
These should already be filled from ff3.sh.
If they are empty, paste the same values you typed there.
Database — keep the prefilled host (localhost), name (flux_db), user (flux_user), and password from ff2.sh.
Admin user — this is the FunnelFlux login, not the Linux user.
- Username — default
admin - Password — choose a strong password and store it
- Email for notifications — can be the same as the license email
Click Create and wait until it reports success. Do not close the tab while it creates tables.
When it finishes, sign in at:
https://tracker.example.com/admin/or:
https://tracker.example.com/admin/login.php7. Remove installer files (ff4.sh)
Section titled “7. Remove installer files (ff4.sh)”Only after the wizard has completed:
wget https://licensing.funnelflux.com/installers/ubuntu_24/ff4.shbash ff4.shThis deletes install.php, data.bin, fluxdb.ini, fluxlic.ini, and the downloaded scripts in your home directory.
It also tightens permissions under /usr/share/nginx/html.
If you run it too early, the web installer cannot finish.
ff1.sh currently allows ports 22, 80, 443, 3306, and 8123.
MariaDB (3306) and ClickHouse HTTP (8123) do not need to be public.
After a normal install you can close them:
sudo ufw delete allow 3306/tcpsudo ufw delete allow 8123/tcpsudo ufw status8. Install the V2 UI
Section titled “8. Install the V2 UI”The encoded ZIP does not include the React admin UI.
cd /usr/share/nginx/htmlbash ./scripts/install-v2-ui-from-release.sh --latestThen open:
https://tracker.example.com/v2-ui/It uses the same login as /admin/.
To list versions without installing:
bash ./scripts/install-v2-ui-from-release.sh --listAfter install
Section titled “After install”If the VPS is larger than 2 vCPU / 4 GB:
wget https://licensing.funnelflux.com/installers/ubuntu_24/optimize-server.shsudo bash optimize-server.shPick the preset closest to the real CPU and RAM.
Next: Getting in to the tracker for the first time.
If the license key is rejected, see My license key is not accepted during installation.

