Deploy FastAPI to Hetzner
Run your FastAPI 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 FastAPI repository
Paste the GitHub link. Railyard reads the repository, detects FastAPI 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 FastAPI
- Detected from requirements.txt or pyproject.toml.
- uvicorn serves main:app on $PORT. Point it at your own module if it lives elsewhere.
- psycopg, asyncpg or SQLAlchemy becomes Postgres, with DATABASE_URL injected.
- Set alembic upgrade head as the release command to migrate on every release.
- Any Procfile process becomes a worker you can scale on its own.
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 FastAPI app's data live?
What does it cost to run FastAPI on Hetzner?
FastAPI on other clouds
Deploy FastAPI 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.