A couple of weeks ago, I decided to start learning Blazor. I had bought a course on Udemy a while ago and figured it was time to give it a real shot. I followed the lessons, played around with the code, and slowly started to get a clearer picture of how everything fits together.
Then I thought, what better way to learn than by building something helpful that I could share as an open-source project?
So I started a small side project — nothing serious, just a simple app to deepen my understanding of Blazor. But after discovering MudBlazor (which I’ll probably talk more about in another post), a slick UI framework, the app started to look… kinda professional.
Which of course made me think: “Hey, maybe I should deploy this somewhere.”
And that’s when I hit the wall.
I wasn’t trying to launch a company, I just wanted to get the thing online. But every option I found felt like overkill: Docker images, CI pipelines, cloud configs, subscription plans… all to deploy a basic Blazor Server app.
I missed the old days of FTP and hitting refresh.
After some frustrated Googling, I stumbled across Fly.Io — and it promised exactly what I was looking for.
What is Fly.Io?
Fly.Io is a developer-friendly platform that lets you deploy full-stack apps globally — without setting up servers or dealing with cloud infrastructure.
You don’t need to write a Dockerfile or configure a pipeline. Just run flyctl launch
, and it figures out most of it for you. It even sets up HTTPS and regional scaling out of the box.
For me, it felt like the modern version of dragging files via FTP — but smarter. No dashboards, no DevOps, no stress.
And the best part? If your usage stays under $5/ month, it’s free.
Prerequisites
- .NET SDK – required to create and run your app
- Fly.io CLI (
flyctl
) – used to deploy and manage your app - A Fly.io account – to host your app
- A terminal (Command Prompt, Terminal, or PowerShell)
How I Got It Online
I started by creating a new Blazor Server app using the .NET CLI:
dotnet new blazorserver -o FlyIo.NET
cd FlyIo.NET
dotnet run
This opened the app locally at https://localhost:5001. Everything seemed to work fine — so far, so good.

Setting Up Fly.Io
After installing the Fly.io CLI (flyctl
), I logged into my account with:
flyctl auth login
This opens a browser window where you can authenticate.

Deployment
Next, I ran:
flyctl launch
This was the part that surprised me.
Fly.io automatically detected I was using a .NET app, created the necessary files, and asked if I wanted to customize the deployment. For now, I just said no to everything and went with the defaults.
FlyIo.NET Live
After a short build and deploy process, I got a live URL in the terminal — something like:
Detected a .NET app
Creating app in /path/to/FlyIo.NET
We're about to launch your .NET app on Fly.io...
Organization: Cosmin Irimescu
Name: flyio-net
Region: Frankfurt, Germany
App Machines: shared-cpu-1x, 1GB RAM
...
Created app 'flyio-net'
Wrote config file fly.toml
✓ Configuration is valid
Visit your newly deployed app at https://<your-app-name>.fly.dev/
It also added two new files to my project:
Dockerfile
– Fly.io uses Docker under the hood, but I didn’t have to touch it.fly.toml
– This is the configuration file for the deployment (you can tweak it later if needed).
Conclusion
Deploying an app isn’t always this simple.
In production, there are real concerns — CI/CD, secrets, monitoring, scaling, security…
But in many cases, we make things more complicated than they need to be.
We reach for complex tools to solve simple problems — maybe out of habit, or just because we think that’s what we’re supposed to do.
Fly.Io reminded me that simplicity still has value.
For side projects, learning experiments, or even small internal tools, getting something online should be fast, painless, and maybe even fun.
But that’s just how I see it.
What about you?
Ever tried Fly.Io or something similar?
Let me know what worked for you — or didn’t. I’d love to hear your experience.
I’ve published the full source code on GitHub, in case you want to explore or reuse it: FlyIo.NET