Supaffi

Self-hosting/Overview

Overview

What runs on your server, what it needs, and where everything lives.

Self-hosted Supaffi is the whole product, free under AGPL-3.0. You run it on a Linux server with Docker, and one install serves every product you add to it.

What you run

The installer starts a small Docker Compose stack. There is no Redis and no queue service: Stripe events wait in the database until the app processes them.

ServiceWhat it doesPorts
appSupaffi itself: owner dashboard, affiliate portal, tracking script, Stripe webhook, and the worker that turns Stripe events into commissions.127.0.0.1:3000
dbPostgreSQL 18. Reachable only from the other containers.None
caddyServes every product hostname over HTTPS and gets its certificates. Bundled proxy mode only.80, 443
caddy-dashboardServes the owner dashboard on the server's own address, with a self-signed certificate. Always on.3443

The app image is published for Intel and ARM on ghcr.io/ugolbck/supaffi. Database migrations run each time the app starts.

Requirements

  • A Linux server you can run commands on as root, with a public IPv4 address. IPv6 is not supported yet.
  • git and openssl. Most distributions ship both.
  • Docker 24 or newer with Docker Compose v2. If Docker is missing, the installer offers to install it.
  • Ports 80 and 443 free for Supaffi's proxy, or a reverse proxy you already run. See Reverse proxy and HTTPS.
  • Port 3443 open in your hosting provider's firewall, for the owner dashboard.
  • Outbound access to GitHub, ghcr.io and Docker Hub, to download the release.

The installer pulls a ready-made image, so nothing is compiled on your server. Building from source instead needs about 2 GB of memory.

Where things live

LocationWhat it holds
/opt/supaffiThe install: a checkout of the release tag, with the compose file and Caddyfiles.
/opt/supaffi/.envSettings and secrets, readable by root only. See Configuration.
/opt/supaffi/backupsThe database dump taken before each update.
supaffi_dbDocker volume holding the database.
supaffi_caddy_dataDocker volume holding the product certificates.
supaffi_caddy_dashboard_dataDocker volume holding the dashboard certificate.

Run Docker Compose commands from /opt/supaffi, where the compose file and .env are. For example, to read the app's log:

Terminal
cd /opt/supaffi && docker compose logs app