Deploy Flask to Hetzner
Run your Flask 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 Flask repository
Paste the GitHub link. Railyard reads the repository, detects Flask 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 Flask
- Detected from requirements.txt or pyproject.toml.
- gunicorn serves app:app on $PORT. Point it at your own module if it lives elsewhere.
- Set flask db upgrade or alembic upgrade head as the release command.
- psycopg becomes Postgres, with DATABASE_URL injected.
- RQ is offered as a worker, and any Procfile process becomes one.
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 Flask app's data live?
What does it cost to run Flask on Hetzner?
Flask on other clouds
Deploy Flask 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.