Skip to main content

Command Palette

Search for a command to run...

From Local to Live: Your Strapi v5 Deployment Roadmap

How I built a reliable $6/month environment for Strapi v5 that works for staging, MVPs, and even light production.

Updated
6 min read
From Local to Live: Your Strapi v5 Deployment Roadmap

I know many people are working with Strapi these days to quickly build what they want. But where they get stuck is when they need to do the deployment. Most people try to use Render or services like that since Heroku killed their free tier. But here's the thing, services like Render put your app to sleep every few minutes when you're on their free plans. Nothing like watching your demo app take 30 seconds to wake up while someone waits. Plus, you can't run Docker containers properly on most free platforms, which introduces new errors when you're going to deploy. This makes testing realistic deployments nearly impossible.

Going straight to AWS can feel like overkill when you're just trying to test an MVP with real users. If you're new to AWS, the learning curve is steep, setup takes forever, and costs can spiral quickly if you're not careful. There's a reason 'AWS for beginners' tutorials are often 40+ parts long. (Spoiler: I might write one of those in the future if I feel like it 😅 coz I've already got the same kinda setup running on AWS with ECS. But that's a whole different beast.)

This series will show you how DigitalOcean provides a perfect middle ground for early-stage projects. For just $6/month, you get a complete virtual machine where you can run your Strapi backend, PostgreSQL database, and even host your frontend if needed. It’s budget-friendly, fast to deploy, and ideal for side projects or MVPs you want to test with real users. And no, this isn’t a DigitalOcean ad and nobody is throwing money at me (yet) 🫢. You can probably set this up on Hetzner, Vultr, Linode, or any VPS with SSH access.

Is This Setup Right for Your Project?

Let me be honest about what this environment is really for. This isn't a bulletproof production system that can handle Black Friday traffic. It's something much more valuable for early-stage projects, a proper staging environment that feels real.

This setup is perfect when you're:

  • Testing your MVP with real users for the first time

  • Showing demos to investors or potential customers

  • Running beta programs with small user groups

  • Learning how all the DevOps pieces fit together

  • Building something that might become bigger (but isn't there yet)

  • Need more than localhost but can't justify enterprise costs

What it's not built for is mission-critical applications where downtime equals lost revenue, or high-traffic applications that need auto-scaling. But for everything else? It works well for the use case. And let's be honest, if you're at the stage where you need auto-scaling, you're probably not reading blog posts about $6 hosting 🤷‍♂️

If you’re confident in your setup and your app won’t lose money, users, or orders if something goes wrong, you can totally run this in production too. I even use it for one of my own projects. Just remember, this isn’t meant for mission-critical apps or anything with real-time transactions. If your database crashes at 3 AM and you lose an order, please don’t come hunting for me. Make sure you understand the trade-offs before hitting “deploy.”

What You Actually Get

This setup ends up costing $6.01 per month - $6 for the DigitalOcean droplet and about a penny for S3 backups (even less if you only backup daily instead of multiple times). That's budget-friendly for a complete staging environment.

Here's what's included:

  • Containerized Strapi v5 with PostgreSQL database

  • SSL certificate and custom domain setup

  • Automated database backups to S3

  • Basic deployment pipeline with GitHub Actions

  • Nginx reverse proxy with logging and health checks

  • Rollback scripts when things break

Everything runs on a single virtual machine, so there's no complex infrastructure to manage. Since you already have Nginx set up, you can easily throw your frontend on the same server if you want to stretch the budget even further.

The performance is decent for early-stage projects. It handles normal traffic well and gives you a staging environment to test with actual users, though it's not going to survive a Reddit hug or anything crazy like that.

What This Series Will Walk You Through

Over the next few weeks, I'll break this down into manageable parts so you can follow along step-by-step. Each article focuses on one piece of the puzzle, with real code and actual lessons learned from setting this up.

Part 1: Containerizing Strapi v5

Tackles containerizing Strapi v5 from scratch. I'll show you how to build a production-ready Docker image, optimize it for performance, and get it stored in GitHub Container Registry. This foundation is crucial for everything that follows.

Part 2: Deploying to DigitalOcean

Takes that container and deploys it to DigitalOcean using Docker Compose. We'll set up PostgreSQL, configure the networking, and get your Strapi app accessible via IP address.

Part 3: Production Web Server Setup

Makes it feel like a real application. We'll configure Nginx as a reverse proxy, set up your custom domain, and get free SSL certificates working with Let's Encrypt. This is also where you could easily add your frontend if you want everything on one server.

Part 4: Automated Database Backups

Covers the boring but critical stuff - automated database backups to AWS S3. I'll show you how to set up reliable backup and restore procedures that cost pennies per month but work when you actually need them.

Part 5: CI/CD Pipeline with GitHub Actions

Builds a deployment pipeline with GitHub Actions. Push to your dev branch, and your staging environment updates automatically. We'll include basic testing, security scanning, and rollback procedures.

So yeah, that's the core setup. If there's interest, I might write a follow-up about real-world performance of this setup. you know, actual costs, uptime stats, and what breaks when you're pushing this $6 setup to its limits. Because let's be honest, we're squeezing a lot out of coffee money here

I could also cover optimization tricks, scaling strategies, or when it's time to graduate to managed services.

Ready to Build Something That Actually Works?

If you're tired of expensive staging environments or localhost limitations, this series will give you a practical alternative. This setup has limitations - I've been upfront about those - but you won't be dealing with surprise $200 hosting bills either.

Each article includes working code and the exact commands I used, so you can follow along without getting stuck. The first article drops next week, where we'll start with containerizing Strapi v5.

By the end, you'll have your $6/month staging environment running. More importantly, you'll understand Docker, reverse proxies, SSL certificates, and CI/CD pipelines - skills that transfer to any platform you work with later.

Let's get started 🚀

Building a Complete Deployment Environment for Strapi v5: A Practical Series

Part 7 of 7

Learn how to build a production-ready, budget-friendly staging environment for Strapi v5 using Docker, DigitalOcean, and modern DevOps practices. Complete with automated backups and CI/CD.

Start from the beginning

CI/CD Pipeline Part 2: Automated Deployment with GitHub Actions

Part 5b of "Building a Complete Deployment Environment for Strapi v5: A Practical Series"