Deploy Phoenix to Hetzner
Run your Phoenix app on a Hetzner server in your own account, with Postgres, HTTPS and zero-downtime releases. Hetzner bills you for the server directly, and Railyard adds no markup.
Steps
- 1
Create a Hetzner API token
In the Hetzner Cloud Console, open your project, then Security, then API tokens, and generate a token with Read & Write permission. Paste it into Railyard and tick Save it to the team, so it's reused for every server after this one.
- 2
Add a Hetzner server
In Railyard, open Servers, then Add a server, then Create on your cloud, and pick Hetzner, a region and a size. Railyard preselects cx22 (2 vCPU, 4 GB of memory). It creates the server in your Hetzner account and installs Docker, Caddy and its agent in about two minutes.
- 3
Deploy your Phoenix repository
Paste the GitHub link. Railyard reads the repository, detects Phoenix and fills in the build, the port, the release command, workers and Postgres.
- 4
Go live on HTTPS
Railyard builds on a separate build server, runs the release command, health-checks the new version and moves traffic only when it answers. Add your domain and the certificate is issued and renewed for you.
What Railyard sets up for Phoenix
- ecto_sql or postgrex becomes Postgres, redix becomes Redis, and ecto_ch becomes ClickHouse.
- Migrations run through the compiled release, so no mix is needed at runtime.
- Variables read in config/runtime.exs are wired for you.
- SECRET_KEY_BASE is generated, and MIX_ENV and PHX_SERVER are set.
- mix phx.server becomes the release's start command.
Hetzner regions
Nuremberg, Falkenstein and Helsinki keep your data in the EU.
- Nuremberg
- Falkenstein
- Helsinki
- Ashburn
- Hillsboro
- Singapore
Questions
Which Hetzner server size should I start with?
Where does my Phoenix app's data live?
What does it cost to run Phoenix on Hetzner?
Phoenix on other clouds
Deploy Phoenix to your own Hetzner server.
No credit card. Your provider bills you for servers at its own price.
Free plan, no card, and 14 days of Pro for every new team. One flat price per team.