Rails hosting, at server prices.

Push to GitHub and your Puma web, your Sidekiq or Solid Queue worker, Postgres and Redis deploy to a server you rent. Migrations run before every deploy, and every pull request gets its own preview.

One Rails app, five bills.

A small Rails app (one Puma web process, one Sidekiq worker, Postgres and a small Redis) costs $26 a month on Heroku, $30 on Railway, $51 on Fly.io and $59 on Render. The same app runs on a rented server for $16, including $9 for custom domains on Ployz Cloud. At a medium size (two 1 GB web processes, 4 GB Postgres, 256 MB Redis) it's $105 to $316 on the platforms and $28 on a server. Move the sliders to match your app.

RAM the stack needs
3.02 GB
  • Heroku$26/mo

    Smallest dyno with that RAM (Basic allows one per process type), Essential or Standard Postgres by size, Key-Value Store Mini, Premium-2 or Premium-5.

  • Render (Hobby)$59/mo

    Smallest plan with that RAM, Postgres storage $0.30/GB, Key Value from $10, traffic past 5 GB at $0.15/GB. Full-stack previews need Pro, $25 more.

  • Railway$30/mo

    $10/GB RAM and $20/vCPU a month, assuming the RAM is in use all month and 0.1 vCPU per GB. Egress $0.05/GB, volume $0.15/GB. Pro once the volume passes 5 GB.

  • Fly.io (iad)$51/mo

    Shared Machines at $6/GB RAM, Managed Postgres Basic, Starter or Launch (no 4 GB plan) plus $0.28/GB, Redis on its own Machine, egress $0.02/GB.

  • Your own server + Ployz$16/mo

    Smallest Hetzner CX23/CX33/CX43/CX53 with that RAM (1 GB added for the OS) and twice the database on disk, $0.60 IPv4, $9 for Ployz custom domains.

Prices checked 2026-10-01. Move the sliders to match your app.

The per-platform maths, with every source, is in Heroku pricing, Render pricing, Railway pricing and Fly.io pricing. Server prices are Hetzner's in Europe. In the US, a DigitalOcean Droplet or Netcup's Manassas datacenter is the cheap option; see Hetzner vs DigitalOcean.

Everything a Rails app needs, on one server.

Rails 8 shipped with the line "No PaaS Required". The idea is right: you shouldn't pay a platform many times the price of the server for a friendly deploy. Here's how the PaaS workflow maps onto your own server.

What you needHeroku, Render, Railway, Fly.ioPloyz on your server
BuildsBuildpacks, Railpack or your Dockerfile, depending on the platformNo Dockerfile needed for Ruby (Railpack runs assets:precompile for you), or use the Dockerfile `rails new` generates
Web and workerA dyno, service or Machine per process, each with its own priceOne service for Puma, one for Sidekiq or bin/jobs, sharing the server's RAM
Postgres and RedisManaged add-ons, from $5 to $38 for the smallest PostgresOne-click Postgres and Redis on your server (plain services with a volume)
MigrationsRelease phase, pre-deploy or release commandA pre-deploy command, `bin/rails db:migrate`, runs before each deploy
Previews per PRReview apps or PR environments, billed per service; Render needs Pro, Fly has none built inA preview environment for every pull request, with its own HTTPS address, on your servers
Zero-downtime deploysYes, on most plansWith a health check set (Rails 8's /up works), the new version must pass it before the old one stops. Postgres and Redis have a short gap instead
PricePer process, per add-on, per GBYour server, plus $9 a month for custom domains. Free on your own servers

What about Kamal? Kamal 2 ships with Rails 8, it's free and MIT licensed, and I think it's a great choice if you're happy owning a config/deploy.yml. It builds your image, pushes it to a registry and swaps containers with zero downtime. It has no dashboard and no preview environments, Postgres and Redis run as accessories that "do not have zero-downtime deployments", and across several servers you put a load balancer in front yourself. Ployz is for people who want Kamal's outcome with a UI, previews per pull request and a private network between servers. Git push deploys, five ways compares the two.

Do you still need Redis? Less than you used to. Rails 8's Solid Queue, Solid Cache and Solid Cable keep jobs, cache and WebSocket pub/sub in your database. In the Rails team's words, Solid Queue "replaces the need for not just Redis, but also a separate job-running framework." If you're on Sidekiq, keep Redis; it's one click either way. Set Redis to None above to see the Solid Queue bill.

What you give up.

Leaving a managed platform means taking some jobs back. These are the ones that matter, stated plainly:

  • Backups. Managed Postgres backs itself up. Ployz doesn't back up databases yet, so you run a pg_dump on a schedule from another machine (how, in the docs). The Postgres hosting guide has the script.
  • Scheduled jobs. Ployz has no built-in cron. Solid Queue's recurring tasks (config/recurring.yml, run by bin/jobs) or sidekiq-cron cover most apps; otherwise use an external cron.
  • Failover. One server is one server. Ployz runs replicas across servers, but a database volume lives on one machine.
  • OS updates. The server's operating system is yours to keep patched.
  • Team roles. Ployz is built for one operator today.
  • GitHub only. Ployz deploys from GitHub or any Docker image, not GitLab or Bitbucket.

If those are dealbreakers, stay on a managed platform. Railway alternatives, ranked by price compares the hosted options.

From repo to running app.

Run this from your Rails app's directory. Ployz installs itself on the server, builds the app and gives it an HTTPS address.

your rails app

$ curl -fsSL https://ployz.sh | sh

Installs the ployz CLI on macOS or Linux.

$ ployz login

Signs in to Ployz Cloud in your browser.

$ ployz up --server root@your-server

Installs Ployz on the server, builds this directory and gives it an HTTPS address.

Then add Postgres (and Redis if you use Sidekiq) from the dashboard, reference DATABASE_URL from Postgres (the docs show how), set RAILS_MASTER_KEY as a sealed secret, add bin/rails db:migrate as the pre-deploy command, and add a worker service that runs bundle exec sidekiq or bin/jobs. Coming from Heroku, the migration steps cover copying the database.

Questions

Where is the best place to host a Rails app?

For the lowest bill, a server you rent: a 4 GB server runs Puma, a worker, Postgres and Redis for about $7 a month at Hetzner (Europe) or €8.26 incl. VAT at Netcup. If you never want to touch a server, Render or Railway are the closest to Heroku. Heroku itself still works but stopped adding features in February 2026.

How do I deploy a Rails app to a VPS?

With Kamal, you write config/deploy.yml and run kamal setup. With Ployz, you run ployz up --server root@your-server from the app directory; it builds without a Dockerfile and gives the app an HTTPS address. Either way you add Postgres, set RAILS_MASTER_KEY and run migrations before each deploy.

Do I need Kamal for Rails 8?

No. Kamal is the default Rails 8 ships with, not a requirement. The generated Dockerfile works with any tool that runs containers, and Ployz can build a Rails app without it.

Does Rails 8 still need Redis?

Not by default. Solid Queue, Solid Cache and Solid Cable run jobs, caching and Action Cable on your database. You need Redis if you use Sidekiq or want Redis for caching.

How do I run cron jobs for Rails on Ployz?

Ployz has no cron. Put recurring jobs in Solid Queue's config/recurring.yml, which bin/jobs runs, or use sidekiq-cron. For anything else, an external cron calling a rake task works.

What does Ployz cost?

Ployz is free on your own servers, with unlimited servers, projects and preview environments. Custom domains on Ployz Cloud are $9 a month. You pay your server provider for the servers.

Your servers. The whole platform. Free on your own servers.

Deploy your app

Facts checked 2026-10-02.