Three months into running a self-hosted Keitaro box, the number that actually hurts isn’t the $30 VPS invoice. It’s the eleven hours a developer spent migrating the click database onto a bigger volume after logs blew past 40GB, plus the ninety minutes of silent downtime during a Friday traffic spike nobody caught until a buyer asked why postbacks had stopped firing. The server itself cost almost nothing. The server ops cost a week of somebody’s attention — and attention is the one resource a media buying team can’t spend twice.
That’s the real question hiding inside “self-hosted vs cloud tracker.” It’s rarely about which redirect engine is faster — Keitaro, Binom, Voluum, and half a dozen open-source forks all route clicks and catch postbacks competently. It’s about who absorbs the operational risk when something breaks mid-scale, and whether the hours that risk consumes are worth more spent optimizing campaigns than patching servers.
What “self-hosted” really means
Running Keitaro, Binom, or a comparable tracker on your own VPS or dedicated box gives you full control over the stack — your own domains, database, redirect logic, and click data sitting on infrastructure you personally chose. For a technically strong team already running serious volume through trusted providers, that control is genuinely valuable. Nobody upstream ever touches your logs, you decide when to upgrade hardware, and you can build redirect logic no vendor UI would ever expose as a setting.
The catch: you also own everything that goes wrong, forever, not just on setup day. A tracker under real load isn’t a “configure once” project — it’s a standing DevOps commitment: SSL renewals, database growth that eventually needs partitioning, log rotation before disk fills up mid-campaign, DDoS mitigation when a competitor or a bored script decides your redirect domain is worth hitting, runtime patches for the tracker software and the OS underneath it, and the page at an inconvenient hour when a domain gets flagged or CPU maxes out during exactly the spike you were hoping for.
The true cost of self-hosting — beyond the server bill
The VPS or dedicated server is the smallest line item in self-hosted total cost of ownership, and the easiest one to point to when justifying the decision — which is why it’s misleading on its own. What tends to sit underneath a tracker doing meaningful volume:
- Compute — sized for peak traffic, not average traffic. Under-provision and campaigns choke during the exact spike you were hoping to scale into.
- Redis — most trackers lean on it for caching and queuing; it needs its own monitoring, its own memory ceiling, and its own recovery plan when it falls over under load.
- ClickHouse or MySQL at scale — click and conversion logs grow fast. A few million clicks a month is a manageable table; tens of millions is a partitioning and retention-policy problem that doesn’t solve itself.
- Backups that are actually tested — a backup nobody has restored from is a belief, not a backup. Testing restores costs time every month, not once.
- Security patching — the tracker software, the OS, the database engine, the reverse proxy, each with its own release cadence and its own CVE history to track.
- On-call coverage — someone has to be reachable when a stream stops firing postbacks at 2 AM on a Saturday, mid scale-up.
- Data loss risk — a single-region, single-server setup has a single point of failure. Disk corruption, a bad migration, or a provider outage can cost attribution history that’s expensive to explain to an affiliate manager whose payout no longer matches your numbers.
None of that shows up on the hosting invoice. It shows up as hours pulled off campaign work, or as an outage nobody budgeted for. A rough illustrative monthly breakdown for a small team running a few dozen streams:
Self-hosted, illustrative example (not a quote):
VPS / dedicated server ........... $40 - $150
Backup storage .................... $10 - $30
Domain rotation / SSL .............. $5 - $20
Redis + ClickHouse ops time ....... 6 - 15 hrs/month
Patching & security time ........... 3 - 6 hrs/month
Incident response, average ......... 2 - 8 hrs/month
-----------------------------------------------
Cash cost: roughly $55 - $200/month
Team time: roughly 11 - 29 hrs/month, priced at
whatever a developer-hour actually
costs your business, not what the
invoice says
The cash line looks cheap. The time line is where self-hosting quietly stops being free — especially once a developer’s hour is priced at what it actually costs the business, not what a hosting dashboard shows.
![]()
When self-hosted genuinely wins vs when it’s a false economy
None of this makes self-hosting the wrong choice — it makes it the wrong default for a specific kind of team. The tradeoff usually comes down clearly in a few concrete situations.
Self-hosted genuinely wins when:
- Data has to physically sit in a specific jurisdiction for regulatory reasons, and no vendor’s region options satisfy that requirement.
- Your team already runs in-house DevOps for other infrastructure, so a tracker is marginal cost, not a discipline you’re standing up from zero.
- You need redirect or routing logic so specific that no vendor UI, however flexible, will ever expose it as a setting.
It’s a false economy when:
- Two to five media buyers become part-time sysadmins because nobody else is going to patch the box.
- The “savings” from a cheap VPS get erased the first time a scale-up coincides with an outage nobody caught in time.
- Backups exist but have never been restored, so the real recovery time from a failure is unknown until it’s tested under pressure.
- A ClickHouse partitioning cleanup or a Redis memory-ceiling fix keeps getting deferred because there’s always a campaign that feels more urgent — until the day there isn’t a choice.
![]()
What “cloud” (managed) actually means — and what you’re trusting
A managed cloud tracker runs on infrastructure the vendor operates, scales, and monitors — you get a workspace, connect streams and offers, and the redirect layer, database, and domain rotation stop being your problem. Uptime, capacity planning, and patching are priced into the subscription instead of billed in developer hours.
The honest downside hasn’t gone away: you’re trusting a third party with click, conversion, and finance data, bound by their roadmap and pricing. A mature platform running redundant infrastructure across regions should have far fewer bad days than a single self-managed box ever will — but “fewer” isn’t “zero,” and it’s worth asking any vendor directly how they handle regional failover and data export before committing at volume.
The nuance that gets lost in this debate: managed doesn’t have to mean your data becomes the vendor’s data. A well-built managed platform still processes and stores click, conversion, and finance data server-side, tied to your workspace, exportable on demand — you’re renting the operations, not surrendering the asset.
Migration friction: what actually happens when you switch
Neither direction is a weekend project, and pretending otherwise is how migrations turn into outages. Moving between self-hosted and managed — either direction — usually means:
- Re-pointing every postback URL across every affiliate network and offer, one at a time, because the endpoint changes.
- Re-registering tracking domains and DNS, with propagation delays that can cost attribution during the cutover window.
- Exporting historical click and conversion data in a format the new system can actually ingest, not just a CSV nobody’s checked for gaps.
- Retraining the team on new dashboards and new places to find the reports they check daily.
- Running a parallel verification window where both systems log traffic side by side, because the first time you discover a mismatch shouldn’t be during a live scale-up.
This is the part vendors on both sides tend to gloss over. A hard cutover — old system off, new system on, hope every postback landed — is exactly how teams lose a week of attribution history mid-scale, the same pain this decision is supposed to solve, not recreate.
![]()
Self-hosted vs cloud: the decision matrix
| Factor | Self-hosted | Cloud (managed) |
|---|---|---|
| Control | Full control over servers, domains, data location, configuration | Limited to what the platform exposes; infrastructure run by the vendor |
| DevOps burden | Ongoing — patching, monitoring, scaling, incident response | Bundled into the subscription; vendor absorbs it |
| Scaling | Manual — add servers, tune databases, load-balance as volume grows | Elastic — vendor absorbs spikes and scale-ups |
| Cost predictability | Variable — server plus ops time scale with volume and incidents | Predictable subscription; ops cost is fixed |
| Data loss risk | Depends entirely on your own backup discipline and redundancy | Vendor-managed redundancy, typically multi-region |
| Uptime | As good as your infrastructure and on-call discipline | Backed by redundant infrastructure; fewer 502s during spikes |
| Switching cost | High if migrating off a heavily customized setup | Lower if the platform supports parallel sync during transition |
Neither column is universally right. A large affiliate network with in-house engineers can legitimately prefer self-hosted for the data-residency argument alone. A lean team of two to five running dozens of streams across Facebook and TikTok usually can’t afford someone on call for tracker uptime — for them, the ops overhead quietly eats into the margin the tracker was supposed to protect.
Where DarkCore fits — managed cloud, still your data, plus Keitaro sync
DarkCore is built as a managed cloud tracker and CRM for the second group in that matrix: teams of media buyers, not sysadmins, who want the operational risk sitting somewhere else without giving up ownership of their data or control over their own tracking setup.
Under the hood, that means no server ops on your end — no VPS to size, no Redis or ClickHouse to babysit, no page at 2 AM when a domain gets flagged. But the click, conversion, and finance data stays server-side, tied to your workspace, not locked into a vendor-only format you can’t extract. It’s the operations you’re outsourcing, not the asset.
The part that actually addresses the migration-friction problem above: DarkCore’s PWA tracker supports simultaneous Keitaro sync. If your team already runs a self-hosted Keitaro instance — for compliance reasons, sunk infrastructure cost, or because one person knows it cold — you don’t have to rip it out to get a managed CRM, server-side postback routing per stream and status, or real deposit-based P&L. Both sources feed the same analytics layer, so Keitaro keeps handling routing you’ve already built while DarkCore owns finance, team permissions, and Facebook conversions API mapping on top — verifying both systems side by side for as long as you need before deciding whether to fully cut over, if you ever do.
That’s a genuinely different migration path than the usual all-or-nothing switch. See the fuller feature-for-feature breakdown in DarkCore vs Keitaro and DarkCore vs Binom if you’re comparing more than the hosting model. And if domain flags or redirect-chain reliability are part of what’s pushing the decision, the domains layer — rotation and health-checking handled server-side — is usually the detail that tips it.
Common mistakes
- Comparing only the hosting bill, not the ops hours. A $40/month VPS looks cheaper than a subscription until the hours keeping it alive are priced at what a developer’s time actually costs the business.
- Never testing a backup restore. An untested backup is a belief, not a recovery plan — the first real test shouldn’t happen during an actual outage.
- Treating migration as a single cutover weekend. Re-pointing postback URLs and re-verifying domains without a parallel verification window is how teams lose attribution mid-scale.
- Assuming “managed” automatically means losing the data. Not every managed platform locks data into a proprietary silo — check whether it’s exportable before assuming self-hosting is the only path to real ownership.
- Picking self-hosted for control you’ll never use. Full server access sounds valuable until you inventory how often the team actually touches redirect logic no vendor UI supports — for most teams, rarely, while the DevOps overhead runs every day regardless.
FAQ
Is a self-hosted tracker actually cheaper than a cloud tracker?
Often not once ops time is priced in. The server bill is usually the smallest cost; developer hours spent patching, scaling databases, and handling incidents are the real expense, and they tend to grow with traffic volume rather than shrink.
Can I run a self-hosted Keitaro instance and a managed cloud tracker at the same time?
Yes — that’s the model DarkCore’s simultaneous Keitaro sync is built for. Keep existing Keitaro routing and get DarkCore’s CRM, finance, and server-side conversion tracking on the same underlying data, without a forced cutover.
What’s the biggest risk of self-hosting a tracker?
Untested data-loss recovery. A single-server or single-region setup with backups nobody’s restored from is the most common way teams discover, during a real outage, that the recovery plan never worked.
How long does migrating between self-hosted and managed take?
It varies with how customized the setup is, but budget a parallel verification window measured in days, not hours: re-pointing postback URLs, re-registering domains, and confirming both systems log matching conversions before fully cutting over.
The honest answer
Neither column in that matrix is right for every team. A large network with in-house engineers can reasonably prefer owning the box. A lean buying team can reasonably prefer never thinking about the box at all. What matters is picking deliberately, with ops hours priced in, instead of defaulting to whatever a teammate used at their last job.
If your current setup spends more hours on server babysitting than on creative testing and scaling, talk to us on Telegram and walk through what a managed workspace — with or without keeping your existing Keitaro running alongside it — would look like for your streams.