Fly.io cost vs self-hosted Coolify

Fly.io bills Machines, volumes, snapshots, egress, IPv4, certificates and plans by usage, while Coolify is free to self-host on servers you pay for. The gap depends on your fleet, data and the operating time you can staff.

On this page

When does Coolify on your own servers cost less than Fly.io?

If your Fly.io bill is hard to forecast and you are weighing self-hosting, start with this: Coolify's software is free under Apache-2.0, and its self-hosted edition is free with all features, so the comparison is the cost of servers you run plus the operating time self-hosting adds, set against Fly.io's metered charges. There is no universal price gap. The answer depends on fleet size, how much capacity must stay on around the clock, how much data you store and move, how much egress you pay for, and how many staff hours the platform consumes each month. Coolify itself needs at least 2 CPU cores, 2 GB RAM and 10 GB of free disk on each server it manages, so the smallest machine that meets those minimums is the floor for your fixed cost, not the ceiling.

Run the comparison on your own workload. List every Fly.io Machine that runs continuously, every volume and snapshot, your monthly egress, and the IPv4 addresses and certificates you pay for, then ask Fly.io's current pricing page for the rate on each line. On the Coolify side, price the servers that would host the same processes with headroom for deploys and restarts, and add the bandwidth and backup storage they need. Separate what is one-time from what recurs: installation and migration effort is paid once, while server rent, backup storage, patching and on-call time recur. Ask your provider for the exact instance sizes and transfer allowances, and confirm them against your own metrics before you commit. Self-hosting tends to favor steady, predictable workloads with modest burst needs and a team that already runs Linux servers. It tends to favor Fly.io when you depend on fast scaling across regions, when a small team cannot absorb the on-call work of databases and server patching, or when the operating time would cost more than the metered charges you avoid. Treat the operating time as a real cost line: budget the hours for upgrades, backups, restore tests and security updates, and decide who owns them before the first cutover.

Which cost components move between Fly.io and self-hosted Coolify?

This table maps each Fly.io charge to its self-hosted equivalent under Coolify and marks whether the cost is one-time or recurring. Coolify itself is free under Apache-2.0, so the real spend sits in servers, storage, backups and the staff time that operates them. Confirm every Fly.io unit price on Fly.io's current pricing page before comparing, since no rates are supplied here.

Cost componentFly.io chargeSelf-hosted under CoolifyOne-time or recurring
ComputeMachines billed by size and running timeServers you rent or own, sized for the apps and their buildsRecurring
VolumesPersistent volume storage billed per gigabyteServer disk or block storage, sized for databases and uploadsRecurring
SnapshotsVolume snapshot chargesScheduled backups from Coolify to S3-compatible storage you chooseRecurring
EgressOutbound bandwidth chargesIncluded transfer from your server provider, check its overage termsRecurring
Dedicated IPv4Per-address charge for a dedicated IPv4Usually included with the server, confirm with the providerRecurring
CertificatesFree TLS certificates through Fly.ioTraefik or Caddy issues certificates automatically, with no license costRecurring effort only
Support plansOptional paid support tiersCoolify's self-hosted edition has no license fee; any retainer is a separate written scopeRecurring if chosen
Coolify licenseNot applicableZero: Coolify is Apache-2.0 and its self-hosted edition is freeNone
Backup storageIncluded in volume snapshots and billed separatelyObject storage fees and retention policy you setRecurring
Engineering and upgradesLargely absorbed by Fly.io operationsStaff time for setup, patching, monitoring, restores and Coolify upgradesRecurring, the largest driver

What pushes the Fly.io bill up or down

Fly.io meters Machines, storage and transfer as they are used, while self-hosted Coolify costs the servers, storage and staff time you commit to each month. Six drivers move one side or the other, and each needs a check against your own usage data before you compare totals.

Always-on Machines and regions

Fly.io bills each Machine by usage, so every always-on Machine and every additional region adds recurring charges that grow with placement. On Coolify, the cost is the servers you rent, so extra apps share existing capacity until CPU or memory runs short. Count the processes that must run around the clock and whether each needs a second region. Check the host sizing against the Coolify minimum of 2 CPU cores and 2 GB RAM, which covers the platform itself, not your workloads.

Volume and snapshot count

Fly.io volumes and snapshots are metered storage that accumulates as apps, environments and retention windows multiply. On Coolify, persistent data sits on the server disk and in the S3-compatible bucket that receives your scheduled backups, so storage cost moves to the host and the bucket provider. Coolify's PostgreSQL backups run on cron schedules with retention by count, days or size, so retention settings set the bill. Confirm the disk size your databases need and the bucket price with each provider.

Outbound data transfer

Egress is the charge teams most often underestimate on usage billing, because it follows user traffic, file downloads and API responses rather than app count. On a self-hosted server, outbound transfer is usually covered by the host's bandwidth allowance, which has its own terms and overage rules. Measure monthly outbound volume from your current invoice and compare it with the transfer allowance on the server plan. Get any overage rates in writing before you move traffic.

Apps and environments

Each app, staging environment and branch preview adds to the count of workloads that Fly.io bills. Coolify has no per-app fee, so the count matters only for the CPU, memory and disk the containers consume on the host. Preview deployments build from pull or merge requests at a default {{pr_id}}.{{domain}} address, need wildcard DNS, and are deleted when the request closes or merges. Decide which environments stay permanent and which should be short-lived to keep host load predictable.

Multi-server failover

Availability often doubles the bill, because a second server is a fixed cost whether or not it takes traffic. Coolify Cloud charges a fee for each server beyond the first two, while the self-hosted edition carries no license cost. Coolify's multi-server documentation describes deploying across servers, but failover is not automatic for every component. Confirm how traffic is balanced, how databases recover after a node failure, and how certificates renew on each node for your topology.

Team Linux and Docker skills

Staff time is the cost that self-hosting adds, and it recurs for patching, monitoring, backups and incident response. Coolify installs with a single script on supported Linux distributions, but your team owns OS updates, Docker upkeep and recovery testing. Coolify's migration guide notes that a rollback can redeploy a retained application image but does not restore databases or persistent files, so restore tests belong in your plan. Estimate the monthly hours with your own on-call rota before comparing totals.

How to build the Fly.io versus Coolify model with your own numbers

This sequence turns your current Fly.io bill and footprint into a like-for-like cost model for self-hosted Coolify over a period you choose, so the comparison rests on your workloads rather than on list prices.

  1. Export three months of Fly.io billing

    Finance or the account owner downloads the billing history from the Fly.io dashboard and splits it by line item: Machine compute, volumes, snapshots, egress, dedicated IPv4 addresses, certificates and any support plan. Keep three months so that usage spikes and seasonal peaks show up. The step is done when every charge on the bill maps to a named line item and the monthly totals reconcile with invoices.

  2. Inventory Machines, volumes and regions

    An engineer lists every app, its Machines, their sizes and counts, the regions they run in, attached volumes with their sizes, snapshot retention and the IPv4 addresses allocated. Record which Machines are always on and which scale to zero, because that changes both the bill and the server load. The output is a single inventory sheet with one row per app and per resource, checked against the Fly.io dashboard and the output of your own CLI queries.

  3. Measure actual resource use per workload

    Pull CPU, memory, disk and network figures for each app over the same three-month window from your monitoring or Fly.io metrics. Identify peak load and the memory each process needs. Coolify's installation docs give minimum requirements of at least 2 CPU cores, 2 GB RAM and 10 GB of free disk for the Coolify host itself, so these figures are separate from app workloads. The check is a table of peak and typical usage per app that you can defend in a review.

  4. Size target servers with headroom

    Using the usage table, an engineer sizes the servers that will run the apps on Coolify, adding headroom for deployments, build jobs, database growth and failover needs. Coolify manages servers over SSH and runs its own proxy and build processes on each host, so budget for those overheads. Confirm that the chosen Linux distributions and amd64 or arm64 architectures are on Coolify's supported list. The output is a server plan with CPU, memory, disk and count per server.

  5. Price servers and backup storage from your provider

    Procurement collects quotes from your cloud or hosting provider for the server plan, plus block storage, network transfer allowances, and S3-compatible object storage for PostgreSQL dumps that Coolify can upload on cron schedules. Ask whether backup storage is billed per gigabyte, per request or as a flat allowance, and how retention settings change the stored volume. Coolify software itself is free for self-hosted use, so the recurring costs sit with infrastructure. The step closes with an infrastructure line for each month.

  6. Estimate operating hours for the platform

    Engineering estimates hours for initial installation, Coolify upgrades, security patching of the host, backup restore tests and incident response, and records who carries each task. Coolify's own release history shows that the v4 line has moved through several versions, so plan for upgrade work. Treat these hours as an internal estimate built from your team's rates, not a figure from Coolify or DeployOpen. The output is a monthly labor table with a named owner for each activity.

  7. Compare totals over a stated period

    Finance places the Fly.io totals and the self-hosted totals side by side over the same period, separating one-time costs such as migration work and initial setup from recurring costs such as compute, storage, transfer and labor. Add a sensitivity line for growth in each driver, such as Machine count or stored data. Label the result as an illustrative model until your own quotes and hour estimates are final. The step is complete when the decision owner can see which assumptions move the answer most.

What stops being billed and what starts

The first change is that Fly.io's metered charges stop, and the bill that replaces them is mostly fixed. On Fly.io, the charges that move with activity are Machine time, volume storage, snapshots, egress, dedicated IPv4 addresses, certificates and any support plan. Coolify itself costs nothing under its Apache-2.0 license, so the new spend is the servers that run it, the bandwidth those servers draw from their provider, off-server backup storage, and the operator time to keep everything running. Server prices are usually set per month and change in steps when you add capacity, so a traffic spike does not automatically raise the invoice. Confirm the bandwidth allowance and overage rules with each hosting provider before you size the fleet, because egress is the line item most likely to remain variable. Ask Coolify's own pricing page for the current self-hosted terms, since the Coolify Cloud subscription is a separate option you may or may not choose.

The second change is labor, and it is where teams most often underestimate cost. Someone must patch the host operating system, renew and monitor TLS through the coolify-proxy container, watch disk space, and upgrade Coolify across releases. Backups are the largest of these tasks. Coolify's guide for teams coming from managed platforms notes that a rollback can redeploy a retained application image but does not restore databases or persistent files. That means the database dumps you schedule, the S3-compatible storage you pay for, and the restore tests you run are recurring costs that Fly.io volumes and snapshots previously covered in part. Decide the retention policy, the restore target and who performs a restore before go-live, and ask any implementation partner to price those steps as separate line items in the written scope.

Costs teams forget on each side

Fly.io's metered bill is easy to read, but several of its costs come from placement and data movement that a single self-hosted server does not reproduce. Self-hosting with Coolify removes the metered line items, but it moves backups, patching, monitoring and routing work onto your team, and that work has a recurring cost.

Multi-region placement you give up

Fly.io Machines can run in several regions, and each extra region adds Machine, volume and traffic charges on the Fly.io side. A single self-hosted server does not replicate that placement, so latency-sensitive users may see a different experience. Confirm which regions your users need and whether Coolify's multi-server deployments are enough for your topology before you compare totals.

Cross-environment data movement

Moving data between Fly.io volumes, a Fly.io database and a new server adds egress, export time and a cutover window that nobody budgets for. Ask who pays for outbound transfer during the migration and during any parallel running period. Plan the copy of persistent files and database dumps as a separate task with its own rehearsal.

Backup and restore testing

Coolify schedules PostgreSQL, MySQL, MariaDB, MongoDB and ClickHouse backups, but it does not schedule Redis, Dragonfly or KeyDB backups. Its rollback guidance also notes that redeploying an image does not restore databases or persistent files. Budget time to test restores on a schedule, and cover any Redis-compatible data with a separate method.

Host security patching

Managed platforms patch the infrastructure beneath your app. On Coolify, your team owns the operating system on each server, which supports Debian, Ubuntu, Red Hat family, SUSE, Arch, Alpine and Raspberry Pi OS. Plan recurring patch windows, kernel reboots and Docker updates, and confirm who is on call when a host needs an emergency fix.

Monitoring and alerting

Fly.io and managed PaaS vendors surface platform health for you, while a self-hosted Coolify install needs its own metrics, log retention and alert routing. Without it, a full disk or a failed certificate renewal can go unnoticed. Ask what your team will use for uptime checks, disk alerts and log storage, and include those tools in the cost comparison.

Preview DNS and certificate handling

Coolify preview deployments use a default {{pr_id}}.{{domain}} URL that needs wildcard DNS. If you choose the Custom (None) proxy, routing and TLS certificates become your responsibility, which adds renewal monitoring and certificate management work. Confirm the DNS zone, the certificate method and the renewal owner before you enable previews or switch proxies.

How server sizing changes the comparison

A small team with a handful of apps and one database usually pays for Fly.io mostly through Machine runtime, then volumes for the database and any persistent files. Self-hosting on Coolify replaces those usage lines with the fixed cost of one or more servers you rent or own, plus your own time to patch the host, watch disk and keep backups running. Coolify is free to self-host under Apache-2.0, so the recurring cost is infrastructure and operator time. Coolify needs at least 2 CPU cores, 2 GB RAM and 10 GB of free disk, so the smallest viable host is set by those minimums, not by a server size recommendation from DeployOpen.

  • Machine runtime: Fly.io bills running time per Machine, so idle apps still cost money unless you stop them.
  • Volumes and backups: Database volumes on Fly.io are one line; on Coolify, scheduled PostgreSQL backups to S3-compatible storage are a separate storage cost you control.
  • Operator time: A single host means one place to patch and one place to restore from, which is manageable but still recurring work.
  • Database coverage: Coolify's scheduled backups cover PostgreSQL, MySQL, MariaDB, MongoDB and ClickHouse, but not Redis, Dragonfly or KeyDB, so confirm how cache data is handled.
  • Egress: Confirm your outbound traffic on the host provider's terms, since Fly.io egress is a separate usage charge.

Confirm the current Fly.io bill line by line and ask your host provider for the monthly price of a server that meets the Coolify minimums.

Questions buyers ask before comparing costs

Is Coolify free to self-host, and what does it cost to run?

Yes. The self-hosted edition of Coolify is licensed under Apache-2.0, and its pricing page describes the self-hosted edition as free forever with all features and no limitations or restrictions. What you pay for is the infrastructure underneath it: the servers Coolify manages, their storage, bandwidth, backups and any managed database or object storage you choose to use. Coolify Cloud is a separate paid option. It costs $5 per month for 2 connected servers plus $3 per month for each additional server, with a 20% discount for annual billing, and it runs the Coolify instance on Coolify's infrastructure while you bring your own servers. Confirm current plan terms on the pricing page before you model costs.

How much staff time does self-hosting add, and what drives it?

The main cost is operating time, not software fees. Someone must patch the host operating system, keep Docker and Coolify updated, watch disk and memory, manage DNS and certificates, and respond when a deployment fails. Coolify requires at least 2 CPU cores, 2 GB RAM and 10 GB of free disk on a supported Linux distribution, and it installs with a single script. The hours depend on how many servers and applications you run, how often you deploy, how many stateful services you host, and whether you already run Linux operations. Ask your team to estimate these drivers in its own environment, because no supplied figure gives a reliable number of hours.

Can our team do the work itself, or do we need outside help?

A team with Linux, Docker and DNS experience can usually run a single Coolify server with its own staff, provided someone owns patching and on-call response. Outside help is most useful for the parts that are easy to get wrong the first time: translating Fly.io configuration, moving volumes and database data, setting up backups and restore tests, and writing the runbook that the team will follow later. DeployOpen plans, implements, hardens, backs up, upgrades, documents and supports self-hosted platforms in your own infrastructure, typically under a fixed-scope agreement or an ongoing retainer. Decide which parts your team keeps before you ask for a quote.

How long does a migration take, and what sets the duration?

No supplied figure gives a reliable migration duration, so treat any number from a vendor or consultant as unverified until it is scoped. The duration is set by the number of applications and environments, how much Fly.io configuration must be translated, the volume of data to move, whether multi-region placement must be replaced with a different design, how many preview or staging workflows exist, and how much testing and cutover planning your organization requires. Ask for a written plan that lists each application, its builder, its stateful services and the acceptance test for each cutover step.

What do backups and restores require when we leave Fly.io?

On Fly.io, the platform helps with volumes and snapshots, but on Coolify the backup and recovery responsibility moves to you. Coolify's scheduled backups cover PostgreSQL, MySQL, MariaDB, MongoDB and ClickHouse, using cron schedules, retention rules and optional upload to S3-compatible storage. PostgreSQL backups use the pg_dump custom format. Coolify's guide for teams coming from managed platforms notes that a rollback can redeploy a retained application image but does not restore databases or persistent files. Plan separate backups for persistent files, and test restores on a schedule. Restore procedures are documented by Coolify, but confirm that your database and file layout fits them.

Does Coolify cover every database that Fly.io users run?

Not necessarily. Coolify deploys PostgreSQL, MySQL, MariaDB, MongoDB, Redis, Dragonfly, KeyDB and ClickHouse, so PostgreSQL and Redis-compatible services are covered for deployment. Scheduled backups, however, cover PostgreSQL, MySQL, MariaDB, MongoDB and ClickHouse, but not Redis, Dragonfly or KeyDB. If your Fly.io apps use other databases, Redis data that must persist, or managed features such as failover, check each one against the Coolify documentation and your own recovery requirements. Where Coolify does not fit, you may need a separate database service on your own infrastructure.

What should we ask for in a fixed-scope quote?

Ask for a written scope that names each deliverable, the environments in scope and the exact systems covered. Request the translation plan for each Fly.io application, the server design with capacity, the network and TLS approach, the backup schedule and restore test method, the cutover and rollback steps, the handover documentation and the support period after go-live. Also ask what is excluded, such as application code changes, new features, or ongoing upgrades, and whether those are available as a retainer. DeployOpen does not publish a price list, and a quote follows from the written scope.

How DeployOpen scopes the cost of a self-hosted move

DeployOpen plans, implements, backs up, upgrades and documents Coolify inside your own infrastructure, whether that is your cloud accounts, your data center or an air-gapped network. For a move off Fly.io, the scope turns on which of your Machines, volumes, Postgres databases and certificates come across, which servers Coolify will manage over SSH, and who owns the proxy, TLS and backup decisions after handover. Those choices change the cost more than the Coolify license does, because the license is free for the self-hosted edition. Before any quote, confirm with your own team how many apps and databases are in scope, which regions and traffic patterns they run today, and whether you need Coolify's multi-server deployments or a single host.

Most DeployOpen engagements are fixed-scope. The scope, deliverables and timelines are agreed in writing before work starts, so the cost of each component (server capacity, migration of volumes and database data, backup configuration, restore testing, and documentation) is visible up front. Ask for each of these to be listed separately in the written scope, along with which items recur. Server and storage charges from your own cloud or data center recur and are paid to that provider, not to DeployOpen. Ongoing support, upgrades and continuous testing are offered as retainers and are a separate decision from the one-time migration.

DeployOpen does not publish a price list. A quote follows from the written scope, so the useful preparation is an inventory of what runs on Fly.io today and what must keep running after cutover. Ask for the quote to state its assumptions, including which tasks are your team's responsibility, which need your cloud or network access, and how restore testing is verified. Ask how the scope will be validated before cutover, and what you will receive as documentation. DeployOpen prepares systems and evidence for compliance assessments, but it does not issue audit reports or certifications. If your readiness work supports an assessment, confirm with the independent auditor what evidence they will expect.

How DeployOpen scopes a fixed-price Coolify implementation

DeployOpen is a Chainscore Labs company that plans, implements, hardens, backs up and documents self-hosted open-source platforms inside your own infrastructure. For a move from Fly.io to Coolify, we start from a written scope that separates the Coolify setup from the application, data and operating work that your team still owns.

How we scope

  • Inventory every Fly.io app, Machine, volume, certificate and Postgres database you currently pay for each month.
  • Agree which target servers, cloud accounts or data centers will host Coolify and the migrated workloads.
  • Write down which regions, backups, TLS responsibilities and monitoring tasks move to your operators and which stay with you.

How we build

  • Install Coolify on Linux servers you control, checking the documented minimum of 2 CPU cores, 2 GB RAM and 10 GB free disk.
  • Configure the reverse proxy choice, Traefik or Caddy, and test HTTPS and domain routing before cutover.
  • Set up database backups to S3-compatible storage and run a restore test before any production data moves.

How we hand over

  • Document each application's build pack, environment variables, domains, scheduled backups and rollback steps in a runbook.
  • Walk your platform and security staff through deployments, restores and preview deployment cleanup.
  • Deliver written test results and configuration records so your auditors or internal reviewers can check the setup.

How we support

  • Offer ongoing support, upgrades and continuous testing as a retainer after handover, scoped separately in writing.
  • Plan Coolify upgrades and server patching with your change windows, since you own the servers after handover.
  • Ask for a quote built from the written scope, with server, storage and labor components itemized for your environment.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.