I had a Flask app sitting on my laptop for three months. It worked. It ran locally. Every time someone asked "can I try it?" I'd send a screenshot and mumble something about "deploying soon." Soon never came. Then a friend told me he'd put his Flask project on DigitalOcean in an afternoon, and I felt that particular shame of a developer who talks more than ships. So I finally looked into it. Here's what I learned, the boring parts skipped and the expensive mistakes flagged.
Flask is a microframework, which is a fancy way of saying "you're in charge." That freedom is great until you need to put the thing on the internet. Suddenly you're choosing between PaaS options that bill you for breathing and VPS providers that hand you a root shell and a pat on the back.
DigitalOcean sits in the middle, and that's why it shows up in so many "host flask app on digitalocean" searches. You get two clean paths. You can use App Platform, which is their fully managed PaaS — push your code, walk away. Or you can spin up a Droplet, their name for a Linux VM, and wire up Gunicorn and Nginx yourself like a grown-up. Both paths are cheap, both are well documented, and neither requires you to sell a kidney.
App Platform is the option I wish I'd known about earlier. You connect a GitHub repo, it detects that you're running a Python app, and it builds and deploys the thing. There's even an official sample Flask app you can fork and deploy with one click to see how the whole flow works before you risk your own code.
The catch is that App Platform isn't free for anything beyond static sites. A Flask app is a web service, not a static site, so you'll be on the paid side. Here's how the container plans shake out, straight from their pricing page:
Shared (Fixed) — 1 vCPU, 512 MiB RAM, 50 GiB transfer: $5/month. The cheapest real option for a Flask web service. Single instance only, no autoscaling. Fine for a portfolio site, a side project API, or anything that gets traffic in bursts.
Shared (Fixed) — 1 vCPU, 1 GiB RAM, 100 GiB transfer: $10/month. Double the memory and transfer. A reasonable jump if your Flask app loads models, does image processing, or just tends to eat RAM.
Shared — 1 vCPU, 1 GiB RAM, 150 GiB transfer: $12/month. This one allows more than one instance, so you can scale horizontally.
Shared — 1 vCPU, 2 GiB RAM, 200 GiB transfer: $25/month. More headroom for heavier workloads.
Shared — 2 vCPUs, 4 GiB RAM, 250 GiB transfer: $50/month. The top shared tier before you move into dedicated instances.
The Free Tier does exist, but it's only for static sites — three apps, 1 GiB of transfer each, automatic HTTPS, custom domains, global CDN. If your Flask project renders a few templates and never talks to a database, you can split it: serve the static front end on the Free Tier and run the Flask API on a $5 container. It's hacky but it works.
One small thing that bit me: when you deploy a Flask repo that uses Gunicorn, App Platform only detects a partial run command. You have to finish it yourself, something like gunicorn --worker-tmp-dir /dev/shm project.wsgi, where project is your module name. Forget that and the build "succeeds" while the app refuses to serve.
If you want to skip the trial-and-error, you can 👉 get started with App Platform through this referral link and have the sample Flask app running before your coffee gets cold.
A Droplet is just a Linux VM. You get a public IPv4 address, SSD storage, and a generous chunk of free outbound transfer. From January 1, 2026, DigitalOcean bills Droplets per second, with a 60-second minimum and a monthly cap, which means short-lived test runs cost cents instead of a full month.
For hosting a Flask app, the Basic Droplets are usually enough. The lineup, from smallest up:
512 MiB / 1 vCPU / 500 GiB transfer / 10 GiB SSD: $4/month. Tight. Fine for a tiny API or a demo, but a Flask app with a real database will feel cramped.
1 GiB / 1 vCPU / 1,000 GiB transfer / 25 GiB SSD: $6/month. The sweet spot for a personal Flask project. This is the plan most tutorials quietly assume.
2 GiB / 1 vCPU / 2,000 GiB transfer / 50 GiB SSD: $12/month. Comfortable. Good for a small production app with light traffic.
2 GiB / 2 vCPUs / 3,000 GiB transfer / 60 GiB SSD: $18/month. Adds a second core, which matters if you run Gunicorn with multiple workers.
4 GiB / 2 vCPUs / 4,000 GiB transfer / 80 GiB SSD: $24/month. A proper small-production box.
8 GiB / 4 vCPUs / 5,000 GiB transfer / 160 GiB SSD: $48/month, and it keeps scaling up from there.
The trade-off is obvious: with a Droplet you're responsible for the OS, the firewall, Gunicorn, Nginx, SSL renewal, and your own deployment script. It's more work, but it's also more control and a lower base price than App Platform for a single always-on service.
If you're going this route, 👉 spin up your first Droplet using this referral link — the Basic $6 plan is where I'd start for a Flask app that's meant to be seen by other humans.
A lot of older blog posts still promise $200 in credit for 60 days. That offer is gone. According to a current answer on DigitalOcean's own community pages, as of July 15, 2026, new accounts get a $5 credit valid for 90 days. It's not life-changing money, but it's enough to run the $4 or $6 Droplet for a couple of months at effectively zero cost, or to kick the tires on App Platform without committing. The credit only applies after you add a payment method, and once it's spent or the 90 days run out, your card gets charged normally.
I'm not going to invent a coupon code here. The third-party sites that list strings like "DO10" or "DOPRODUCT15" are recycling old promos, and I couldn't confirm any of them actually work right now. The $5 new-user credit is the only offer I could verify against DigitalOcean's own pages.
If you're deploying your first Flask app and you'd rather not learn systemd and Nginx tonight, use App Platform. The $5 shared container is the floor, and it gets you HTTPS, CDN, deploys from Git, and zero server babysitting. You pay a little more for a lot less pain.
If you already know your way around a Linux box, or you want the absolute cheapest always-on option, a $6 Basic Droplet is hard to beat. You'll spend an evening on setup, but after that it's yours.
And if you're me — three months of "I'll deploy it this weekend" — just pick one and ship. Either path puts your Flask app on the internet for less than the price of a fancy lunch. You can 👉 claim your new-user credit and get started here, and finally stop sending people screenshots.