The self-hosted and managed editions use the same transform grammar, but they are not the same operational decision. One puts Postgres, cache capacity, updates, and incidents on your team. The other puts the service boundary and delivery bill with Keenpix.
Start by deciding which team will own failures in the image path. Cost makes more sense after that responsibility is clear.
Self-hosting fits an infrastructure team
Run Keenpix yourself when your team needs to control where the application and database run, or modify the AGPL-3.0 code. Self-hosting alone does not guarantee residency or compliance: source requests, CDN traffic, email, backups, and logs may still leave the selected network or region. Document those paths separately. This model makes sense when Docker, PostgreSQL backups, TLS, monitoring, and capacity planning are already routine work.
There is no managed delivery charge in this model. There is still infrastructure cost. Cold transforms consume CPU, the disk cache needs space, Postgres needs backups, and the public endpoint needs abuse controls. Horizontal replicas also need an outer CDN because their local disk caches are separate; bundled self-host mode does not currently provide a shared object-storage cache.
The Docker deployment guide covers a pinned release, health checks, cache boundaries, and the first database dump. Read it before estimating the operating cost from the container count alone.
Managed cloud fits a product team
Use the managed service when the team wants to create projects and deliver images without operating the database and transform workers. This removes a deployment from your on-call list, but it introduces a provider dependency and a bandwidth bill.
Check the current pricing page against the successful bytes you expect the managed network to deliver. Cloudflare edge hits, Keenpix cache hits, and new transforms each count once; browser hits and customer-owned CDN hits do not reach the managed network. Include expected growth and any regions or origins that need special handling. Do not compare a cloud plan only with the price of one self-hosted VM. Include backups, monitoring, upgrades, and the time spent responding to failures on that VM.
Moving later is possible, but plan the details
Both editions understand the same core path and query parameters. A migration can still change the hostname, project identifier, signing secret, cache behavior, and DNS. Put the delivery hostname behind a configuration value from the beginning, and avoid scattering complete transform URLs through stored content.
Test signed URLs and cache keys before switching traffic. A matching ?w=1200&fmt=webp query does not prove that both deployments share the same project policy or signature.
A practical decision
Choose self-hosting when infrastructure control is a requirement and the team already owns the work it creates. Choose managed cloud when the image pipeline is supporting infrastructure that the product team does not want to operate.
If the answer is still unclear, run the same source set through both for a week. Measure delivered bytes, cold-transform latency, cache hits, operator time, and failure recovery. That record is more useful than a generic cost calculator.
Keep reading
- How the Keenpix managed-delivery meter works, including its cache boundary.
- Keenpix vs Cloudinary, imgix, and ImageKit compare the managed option.
