Edge
Rails logo

For Rails

Rails on Edge,
no platform tax

Real VMs for Puma, S3-compatible Active Storage, global CDN with zero egress fees. Keep your Capistrano or Kamal workflow, keep your sanity.

# config/storage.yml

edge:

service: S3

endpoint: https://storage.edge.run

access_key_id: <%= ENV['EDGE_KEY'] %>

secret_access_key: <%= ENV['EDGE_SECRET'] %>

bucket: rails-uploads

# config/environments/production.rb

config.active_storage.service = :edge

config.asset_host = 'https://cdn.example.com'

# Provision and front the VM

$ edge compute create --plan small ...

$ edge cdn create app.example.com ...

Why Rails teams pick Edge

DHH was right about Linux + a VM. We've added a global CDN and S3 to make it sing.

Puma / Falcon on real VMs

Run any Rack server you like — Puma, Falcon, Iodine — on a sized-to-fit VM. Boring, predictable, fast.

Active Storage on S3

Configure Active Storage with the AWS adapter and point it at Edge Storage. Variants, direct uploads, the lot — works unchanged.

PostgreSQL or MySQL alongside

Run your database on the same VM, a separate VM via private networking, or your existing managed provider. Low-latency either way.

Image processing without queues

Skip MiniMagick / libvips per-request — let Edge Image Optimization generate variants from a URL. Active Storage stays declarative.

Global CDN, zero egress

Front asset_host through the Edge CDN, point Active Storage URLs at it too. Fast, free egress on everything users download.

Capistrano or Kamal

Stick with the deployment workflow you love — Capistrano, Kamal, plain SSH, all work. The Edge CLI provisions the VMs.

Reference architecture

How Rails maps to Edge

Standard Puma + Postgres + Sidekiq, with Active Storage on object storage and the CDN out front.

Compute

Runs Puma (or Falcon) behind Nginx/Caddy on a VM

Storage

S3-compatible bucket for Active Storage uploads and variants

CDN

Caches the asset pipeline output and Storage URLs

Image Optimization

On-the-fly variants without per-request processing

DNS

Anycast DNS for the apex, www and email records

# config/deploy.yml (Kamal)

service: app

image: ghcr.io/me/app

servers:

web:

- <edge-vm-ip>

env:

RAILS_ENV: production

EDGE_ENDPOINT: https://storage.edge.run

# Deploy

$ kamal deploy

Common questions

Does Kamal work on Edge?

Yes — Kamal provisions any VM with SSH access. Use the Edge CLI to create the VM, then point Kamal at its IP. The container-based deploys play nicely with our infrastructure.

How does Active Storage work?

Configure the `:amazon` service with `endpoint: https://storage.edge.run` and your Edge Storage credentials. Direct uploads, variants and `service_url` all work as documented.

Where do background jobs run?

Run Sidekiq / GoodJob / SolidQueue as systemd services on the same VM (cheap, simple) or a dedicated worker VM (scalable). Backed by Redis on Edge Compute.

How do I deploy multi-region?

Provision VMs in two regions, point a multi-region DNS record at them, and have the Edge CDN serve assets globally. Active Storage stays in one region; reads are cached at the CDN.

By Stack

Other stacks on Edge

View all stacks →

Ship Rails on Edge

30-day trial. Bring your `bin/rails new` or your existing monolith.