December 15, 2025 · 12 min read
How to Deploy a Rails 8 SaaS to Production in 2026
Jeronim Morina
Founder, Omaship
You can build a Rails 8 SaaS in a weekend. Deploying it to production? That's where most founders lose weeks.
Deployment is the unglamorous part of shipping software. Nobody tweets about configuring SSL certificates, setting up PostgreSQL backups, or debugging Docker networking. But it's the difference between "I built something" and "I have a business."
This guide covers every realistic option for deploying a Rails 8 SaaS in 2026—from managed platforms to bare metal—with honest trade-offs so you can pick the right path for your stage and budget.
Why deployment is the hardest part of shipping a SaaS
Building features is the fun part. Rails makes it fast. But between "it works on localhost" and "customers can use it" lies a minefield:
- Infrastructure provisioning — servers, databases, Redis, background job workers
- SSL/TLS certificates — Let's Encrypt setup, auto-renewal, custom domains
- CI/CD pipelines — automated tests, security scans, zero-downtime deploys
- Database management — migrations, backups, point-in-time recovery
- Monitoring & alerting — knowing when things break before your users tell you
- Security — firewall rules, secret management, dependency scanning
- DNS & email — SPF, DKIM, DMARC so your transactional emails actually arrive
Each of these is a rabbit hole. Together, they can easily consume 2–4 weeks of a solo founder's time. That's a month of not building your product.
The 2026 deployment landscape for Rails
The good news: you have more options than ever. The bad news: you have more options than ever.
Heroku
The OG. Still works. Heroku pioneered git push deploys and it still offers the lowest friction path from code to production. In 2026, Heroku runs on Fir (their new generation runtime) with better container support and HTTP/2.
- Pros: Fastest time-to-deploy, great add-on ecosystem, managed Postgres, review apps
- Cons: Expensive at scale ($25–50/mo per dyno, $50/mo+ for managed Postgres), vendor lock-in on proprietary buildpacks, cold starts on eco tier
- Best for: Validating an idea fast when you value time over money
- Monthly cost (production-ready): ~$100–200/mo minimum
Render
The modern Heroku alternative. Native Docker support, free managed PostgreSQL (with limits), and a cleaner pricing model. Render has matured significantly and is a solid choice for Rails apps.
- Pros: Simple pricing, native Docker, free SSL, managed Postgres included, background workers
- Cons: Limited regions (US/EU), slower deploys than Heroku, less mature add-on ecosystem
- Best for: Solo founders who want Heroku simplicity at lower cost
- Monthly cost (production-ready): ~$50–100/mo
Fly.io
Deploy containers close to your users on a global edge network. Fly runs your app in Firecracker microVMs, which means fast cold starts and multi-region deploys. Rails has first-class support via the fly launch command.
- Pros: Multi-region by default, fast deploys, built-in Postgres (LiteFS for SQLite), good Rails integration
- Cons: Complexity creep (networking, volumes, scaling config), Postgres isn't fully managed (you manage failover), pricing can surprise you
- Best for: Apps that need global distribution or edge performance
- Monthly cost (production-ready): ~$30–80/mo
Hetzner + Kamal (bare metal / VPS)
This is the 2026 default for serious Rails developers. DHH and the Rails team built Kamal specifically to make deploying to your own servers as easy as a PaaS—without the PaaS price tag.
Hetzner gives you a dedicated 4-core, 16GB RAM server for €8/mo. That's not a typo. The same specs on Heroku would cost you $250+/mo.
- Pros: 10–20x cheaper than PaaS, full control, no vendor lock-in, Kamal handles zero-downtime deploys with Docker
- Cons: You own the infrastructure (security patches, backups, monitoring), initial setup takes 1–3 days, need to understand Docker and Linux basics
- Best for: Founders who want to keep margins high and own their infrastructure
- Monthly cost (production-ready): ~€15–40/mo
Quick comparison
| Platform | Monthly cost | Setup time | Control | Best for |
|---|---|---|---|---|
| Heroku | $100–200 | Minutes | Low | Quick validation |
| Render | $50–100 | 30 min | Low–Med | Budget PaaS |
| Fly.io | $30–80 | 1–2 hours | Medium | Global / edge |
| Hetzner + Kamal | €15–40 | 1–3 days | Full | Serious builders |
| Omaship | €15–40* | 10 minutes | Full | Ship today, own it |
* Omaship is a one-time purchase. The €15–40/mo is just your Hetzner server cost.
What a production Rails 8 deployment actually requires
Regardless of which platform you choose, a production-ready Rails 8 SaaS needs these components:
1. Application server
Rails 8 ships with Puma by default—a solid, battle-tested multi-threaded server. You'll want to configure it for your server's RAM: typically 2–4 workers with 3–5 threads each for a 4GB server.
2. Database
PostgreSQL is the standard. You need automated backups (daily at minimum, ideally continuous WAL archiving for point-in-time recovery), connection pooling, and a plan for migrations that don't take your app down.
3. Background jobs
Rails 8 includes Solid Queue, which uses your existing database for job storage—no Redis required for basic job processing. For higher throughput, you can add Redis-backed Sidekiq later.
4. Caching & real-time
Solid Cache and Solid Cable round out the Rails 8 "no external dependency" trio. Cache in your database, WebSockets via Solid Cable. Add Redis when you need the performance.
5. Reverse proxy & SSL
Kamal 2 uses kamal-proxy (replacing Traefik) for routing, SSL termination via Let's Encrypt, and zero-downtime deploys. It handles the complexity of rolling deployments automatically.
6. CI/CD pipeline
At minimum: run your test suite and deploy on green. A proper pipeline also includes security scanning (Brakeman for Rails, bundler-audit for dependencies), linting, and asset compilation checks.
7. Monitoring
You need to know when things break. Options range from free (UptimeRobot + Rails error reporting) to paid (AppSignal, Honeybadger, Sentry). At minimum, set up exception tracking and uptime monitoring.
The Kamal deployment walkthrough
Since Kamal + Hetzner is the most cost-effective production setup, here's what the process actually looks like:
Step 1: Provision a server
Create a Hetzner Cloud server (CX22 or higher). Ubuntu 24.04, SSH key auth, firewall allowing ports 22, 80, 443.
Step 2: Configure Kamal
Rails 8 generates config/deploy.yml by default. Configure your server IP, Docker registry credentials, and environment variables:
# config/deploy.yml
service: myapp
image: myregistry/myapp
servers:
web:
hosts:
- 159.69.xxx.xxx
options:
network: "private"
proxy:
ssl: true
host: myapp.com
registry:
server: ghcr.io
username: myuser
password:
- KAMAL_REGISTRY_PASSWORD
env:
secret:
- RAILS_MASTER_KEY
- DATABASE_URL
Step 3: Set up secrets
Kamal reads secrets from .kamal/secrets. Store your master key, database credentials, and registry password there (never commit this file).
Step 4: First deploy
$ kamal setup
This installs Docker on your server, pushes your image, starts the proxy, provisions SSL certificates, and boots your app. Subsequent deploys are just kamal deploy.
Step 5: The stuff Kamal doesn't do
Here's where the real time goes. After kamal setup, you still need to:
- Set up PostgreSQL (install, configure, create databases, set up backups)
- Configure DNS records (A record, MX, SPF, DKIM, DMARC)
- Set up transactional email (Postmark, SES, or similar)
- Create a CI/CD pipeline (GitHub Actions, GitLab CI)
- Configure monitoring and alerting
- Set up log aggregation
- Harden the server (fail2ban, unattended-upgrades, firewall rules)
- Set up database backups with off-site storage
This is the "1–3 days" part. Each item is doable, but the cumulative work adds up fast.
How Omaship handles all of this automatically
Omaship takes the Kamal + Hetzner approach (the best cost/control trade-off) and automates the entire setup. When you create a new project, here's what happens in about 10 minutes:
What gets provisioned
- GitHub repository — Private repo with your full Rails 8 SaaS codebase, pre-configured with AGENTS.md for AI coding agents
- CI/CD pipeline — GitHub Actions workflow: tests, Brakeman security scan, bundler-audit, and automatic deploy on green
- Hetzner Cloud server — Provisioned and hardened automatically (firewall, SSH hardening, fail2ban)
- PostgreSQL — Installed, configured, with automated daily backups
- Kamal deployment — Fully configured
deploy.yml, secrets management, zero-downtime deploys - SSL certificates — Auto-provisioned via Let's Encrypt, auto-renewed
- DNS configuration — Instructions for your registrar, or automatic if you use a supported provider
- Transactional email — Pre-configured with proper SPF/DKIM/DMARC
- Monitoring — Health checks, error tracking, uptime monitoring built in
What you get as the developer
After those 10 minutes, you have:
- A live Rails 8 app at
yourapp.comwith SSL - Full source code ownership — it's your GitHub repo, your server
- A working CI/CD pipeline that deploys on every push to main
- Authentication, payments (Stripe), and admin dashboard already wired up
- A codebase optimized for AI coding agents (AGENTS.md, clean conventions, comprehensive tests)
The key difference from other starter kits: Omaship doesn't just give you code and wish you luck with deployment. It provisions the entire production stack. You skip the 1–3 days of infrastructure work and go straight to building your product.
When to use what
Be honest about your situation:
- Use Heroku if you're validating an idea this weekend and money isn't the constraint
- Use Render if you want PaaS simplicity at a lower price point and don't need full control
- Use Fly.io if you genuinely need multi-region or your users are globally distributed
- Use Hetzner + Kamal if you enjoy DevOps, have the time, and want to learn the stack
- Use Omaship if you want the Hetzner + Kamal cost advantage with zero setup time, and you'd rather build features than configure infrastructure
The real cost of deployment
Founders underestimate deployment cost because they only count dollars, not time. Here's the real math:
If you bill $150/hour as a freelancer (or value your founder time at that rate), spending 3 days on infrastructure costs you $3,600 in opportunity cost. That's before you've built a single feature your customers care about.
Every hour spent on deployment is an hour not spent on:
- Talking to potential customers
- Building differentiating features
- Setting up your payment flow
- Writing content that brings in organic traffic
The best deployment strategy in 2026 is the one that gets you to "customers can pay me" the fastest while keeping your monthly costs low enough to survive the early months.
Pick your approach, ship your product, and remember: nobody ever won a market by having the most elegant CI/CD pipeline.
Skip the deployment rabbit hole
Omaship gives you a production-ready Rails 8 SaaS deployed on your own Hetzner server in 10 minutes. Full source code, Kamal deploys, CI/CD, SSL, backups—all provisioned automatically. One-time purchase. You own everything.
Start buildingWant more guides?
Create a free account and we'll send new guides straight to your inbox.
Start building