Deploy Keitaro on a VPS in 15 minutes
Keitaro is a self-hosted TDS: it lives on your VPS, runs on a flat license, and keeps every click of campaign data on hardware you own. Provision CentOS 9 Stream, run the install script, and you're routing paid traffic in about 15 minutes.
What can you do with self-hosted Keitaro on a VPS
Keitaro is a self-hosted TDS and ad tracker for affiliate marketing and media buying. On your Keitaro VPS hosting, it logs clicks, applies flow rules, and redirects each visitor to the right offer in real time.
A production TDS for media buying
Traffic distribution by flow rules
Conversion tracking via S2S postback
Private tracking with data on your own server
Bot filtering and cloaking at the entry point
Click tracking with a flat license
Choose a Keitaro VPS plan
Keitaro's own minimum is 4 GB RAM, so the entry point is Medium VPS (3 CPU, 4 GB RAM, 40 GB NVMe, $21.24/mo): fine for under 100,000 clicks a day. For 100,000-500,000 go with Premium VPS (8 GB), and for 500,000-1,000,000 take Elite VPS (16 GB) or higher. Every plan includes a dedicated IPv4 address plus free weekly backups, KVM, and full root/SSH access.
- 40 CountriesFrom$21.24 / 1 month$20.18 with is*smart
- Xeon 3x2.20 GHz CPU
- 4 Gb RAM
- 40GB SSD Drive
- Unmetered Bandwidth
- 40 CountriesFrom$33.99 / 1 month$32.29 with is*smart
- Xeon 4x2.20 GHz CPU
- 8 Gb RAM
- 50GB SSD Drive
- Unmetered Bandwidth
- 40 CountriesFrom$50.99 / 1 month$48.44 with is*smart
- Xeon 6x2.20 GHz CPU
- 16 Gb RAM
- 80GB SSD Drive
- Unmetered Bandwidth
Boost Your VPS Server Resources
Check out how you can change the configuration of your VPS. You can purchase additional drive space, increase CPU performance, add RAM, and take advantage of additional services without having to switch to a new plan.
How to deploy Keitaro on a VPS
A clean CentOS 9 Stream server and Keitaro's install script.
The fast path is a clean CentOS 9 Stream server and Keitaro's install script. The full walkthrough with every edge case lives in our step-by-step Keitaro install guide.
Before you start, buy a license at keitaro.io and point a clean domain at your server, you'll need both to finish setup.
Step 01 — Order a VPS and connect over SSH
At checkout, select CentOS 9 x64, as Keitaro doesn't run on Ubuntu or Debian, and the installer exits if the OS doesn't match. It also won't run behind NAT, so a direct public IP is required. Connect once access details arrive:
ssh root@YOUR_VPS_IPThe server must be clean, with no control panel installed, and at least 20 GB free.
Step 02 — Run the installer
Keitaro installs via a single script that handles Podman containers, nginx, MariaDB, ClickHouse, Redis, certbot, and the firewall. The script installs podman-docker itself:
curl https://files.keitaro.io/scripts/releases/stable/kctl.sh | bash -s -- installIt checks the OS, pulls each component in parallel, and finishes in about 15 minutes. The terminal then prints your admin URL: http://YOUR_VPS_IP/admin.
Step 03 — Verify and configure
Confirm every service passed its health check, then open the admin panel:
kctl checkAt http://YOUR_VPS_IP/admin (it auto-redirects to HTTPS) Keitaro runs a short wizard: enter your license key, set currency, language, and timezone, then create your admin user. Pick the currency carefully, it won't convert historical data later.
Step 04 — Add your domain and lock down admin
Add an A record from a clean, dedicated domain to your Keitaro VPS IP, then add it under the Domains tab. Keitaro automatically requests a Let's Encrypt certificate. Enable HTTPS-only and Admin Dashboard, set Crawlers to Disallowed, then restrict /admin to your IP under Maintenance → Settings. Firewall ports 22, 80, and 443 are already open; everything else is bound to localhost.
Common issues
A few gotchas on a first Keitaro install.
- OS check kills the installer on launch. Keitaro is CentOS-only. Point it at Ubuntu or Debian, and the script bails before it does anything. Choose CentOS 9 x64 in the OS menu at checkout.
- Install won't proceed without a public IP. The tracker refuses to run behind NAT. This is why the dedicated IPv4 on every is*hosting plan matters.
- 2 GB feels fine until traffic arrives. Keitaro's floor is 4 GB. The install finishes, then memory pressure shows up the moment the real volume hits. Start with a Medium VPS and step up as your daily clicks increase.
- SSL never issues on your domain. Keitaro wants the domain to itself. Strip any leftover A, AAAA, or CNAME records, let DNS settle (allow up to an hour), then add it in the Domains tab, and Let's Encrypt handles the rest.
- Clicks quietly stop being processed. The tell is in Maintenance → Status: a frozen cron timestamp stops traffic dead, and a queue that won't drain means you've outgrown the box — size up. Pair with Uptime Kuma, so you hear about downtime first.