JFUH+D GitHub

Familiar VMs. Less platform theater.

Just fucking use Hetzner and devopsellence.

You want your app online. You do not want Kubernetes homework, surprise PaaS bills, or a control plane that turns every deploy into a ceremony. Rent a fast Hetzner box, let devopsellence ship the container, and keep ordinary Linux escape hatches.

Why this exists

Because most small teams need boring power, not a platform subscription.

Hetzner is cheap and fast

Good CPUs, lots of RAM, sane bandwidth, and pricing that does not punish you for being successful.

devopsellence keeps it legible

Build an image, stream it to your VM, run health checks, keep secrets out of git, and inspect the result with normal tools.

You can leave anytime

The server is still yours. The app is still a container. The logs are still logs. No magic cliff when you outgrow the first box.

Comparison

Pick the least annoying tool for the job.

Option

Hetzner + devopsellence

Best when you want ownership without cosplay SRE.

PaaS

Great early, until pricing, limits, buildpacks, and platform quirks become the product you manage.

Kamal

Solid Rails-native deploys. devopsellence aims for agent-friendly workflows, explicit node state, and broader app shapes.

Kubernetes

Powerful, real, and usually too much when the actual requirement is one app on one or a few servers.

Workflow

The deploy path should fit in your head.

Start solo, point at a server later, dry-run before mutation, deploy when ready. No hosted dependency required for the first useful version.

  1. 01

    Build your Rails app locally.

  2. 02

    Configure devopsellence solo.

  3. 03

    Attach a Hetzner VM when you are ready.

  4. 04

    Dry-run, deploy, inspect status and logs.

FAQ

Blunt answers.

Is this anti-PaaS?

No. PaaS is great when its constraints match your app. This is for the moment you want cheaper, clearer, more ordinary infrastructure.

Do I need to provision a server now?

No. Build the app first. Run a devopsellence dry run before any production mutation. Attach Hetzner when the deployment target is real.

What is the catch?

You still own the server. That means updates, backups, capacity, and incident response are not outsourced. The win is that the system remains understandable.