How to host a Web Application using DigitalOcean Apps

By

Learn how to deploy and host a web app on the DigitalOcean App Platform by pushing to a GitHub repo, letting the platform handle the server for you.

~~~

I was searching for the perfect place where to host a new app I’m building when I decided to try DigitalOcean Apps.

DigitalOcean is one of the giants in the VPS space, and you can read my tutorial on it in how to create your first VPS on DigitalOcean.

I thought about Heroku, which is a solid choice. But I also remembered about DigitalOcean Apps (officially called App Platform), which lets you run an app just by pushing it to a GitHub repo.

Sign up for DigitalOcean with my referral link and you get $200 in credit for 60 days. This is an affiliate link: if you sign up through it and then spend $25, I get $25 in DigitalOcean credit.

DigitalOcean Apps are attractive because instead of managing a server, worrying about its security, updates and maintenance, you just worry about your app and you let the DigitalOcean team worry about everything else.

You have to pay more dollars, in comparison to running your own server, but you don’t have to pay more time. It’s up to you to decide which is the resource that’s more scarce in your situation. If you want to compare it with the other options, I wrote a guide on where to host your web app.

But before deciding you can always try it first. Let’s try the DigitalOcean Apps workflow.

The screenshots in this walkthrough are from January 2021, when I first tried it. The dashboard looks different today and a few labels changed, so I’ll point out what’s different along the way. The overall flow is still the same: pick a source, configure the app, pick a size, create it.

Head to https://cloud.digitalocean.com/apps/

DigitalOcean Apps homepage with Focus on Code Not Servers slogan and Launch Your App button

On this page, click the “Launch Your App” button. Today you get there by clicking Create in the top right of the control panel and picking App Platform.

Repository selection page showing GitHub integration and Launch a Demo App button option

Back then you could deploy an app from a GitHub repository, or launch a demo app. I did the latter by clicking the Launch a Demo App button, which showed a big list of options:

Demo app selection grid showing various technology options including React, Node.js, Python, Ruby on Rails and others

I clicked “Ruby on Rails” (but the process was the same for any other tool, language or framework listed).

That demo picker is gone now. The first screen asks you for a source: a GitHub, GitLab or Bitbucket repository, or a container image from DigitalOcean Container Registry, Docker Hub or GitHub Container Registry. If you just want to try it, DigitalOcean publishes sample apps for Node.js, Python, Ruby and many other stacks as GitHub repositories you can fork and deploy.

Then I could choose a name for the app, a region to deploy, and the branch to use (main is the default). In the current flow you pick the branch together with the repository, and the region and the app name come later, before you create the app:

App naming and deployment configuration form with name field, region dropdown set to Amsterdam, and branch field

Here came the app configuration page, which depended on the option chosen before. I could choose the type of app (“Web Service” was the only option here), a path where this component listens for HTTP requests, the environment variables, a build command and the HTTP port to run on.

Today the same settings live in the Resource settings step, and a component can be a web service, a static site, a worker or a job.

We can also add a database if our app needs one. A development database costs $7/month.

App configuration page showing Ruby on Rails detected, Web Service type, HTTP routes, environment variables and database options

When I was ready I clicked Next and chose the plan to host this app on. Back then there were three tiers: a free Starter plan for static sites, a Basic plan from $5/month and a Pro plan from $12/month. I had picked a server-rendered app, so Basic was the cheapest option:

Pricing plan selection showing Starter, Basic selected at $5/mo, and Pro at $12/mo with feature comparisons

Those Starter, Basic and Pro tiers only apply to apps created before 7 May 2024. New apps don’t pick a plan. You pick an instance size for each component, and this is what it costs (checked in October 2026):

App Platform bills by the second, with a one-minute minimum. You can quickly spin up an app to try it, and pay next to nothing.

In 2021 the final price showed $10, because the form auto-selected the $10 container. It was a common default choice for DigitalOcean (that I didn’t understand) to show a more pricey option, also for normal DigitalOcean droplets.

I recommend starting with the most basic options and then scale up as needed. When that moment comes, I built a free scaling helper that suggests a strategy based on where your bottleneck is.

I chose the $5/month option to get the 512MB RAM container, and clicked the Launch Basic App button. Today the last step is a Summary page with a Create App button:

Container size dropdown menu showing Basic Size options from $5/mo 512MB RAM to $40/mo 4GB RAM with prices

The interface switches to the app dashboard:

App dashboard overview showing sample-rails app created successfully with metrics, deployment info and navigation tabs

and the build process starts:

Build progress screen showing Building service sample-rails at 17% complete with progress bar and View Logs option

After a while you will get the “Deployed successfully!” message:

Deployment success page showing Deployed successfully message with Live App link and deployment history table

Click the Live App link to see the app running:

Live Ruby on Rails demo app welcome page showing Yay! You're on Rails! with cartoon illustration and version info

The dashboard has several useful screens to monitor the CPU and memory consumption, the deployments logs, access to the app server through a console:

App dashboard overview tab showing Healthy status with RAM and CPU indicators and deployment information Insights tab displaying CPU and memory usage charts over time with 6-hour monitoring data Deployments tab showing deployment history with creation time, status and details for initial deployment Logs tab displaying detailed Rails application startup logs with server boot and request processing messages Console tab showing command line terminal interface for direct app server access

And you can tweak the configuration, scale the app, and more:

Components tab showing app configuration details including scaling, source, environment variables and HTTP settings

Settings tab with app configuration options including plan, deployment settings, domains and destroy option

The Settings tab also has an App Spec section. That’s a YAML file describing the whole app: its components, sizes, routes and environment variables. Click Edit and then Download to save a copy. You can recreate the same app later with doctl apps create --spec your-app.yaml, or keep the file in your repo.

If you want to stop running the app, and stop paying DigitalOcean to run it, scroll to the bottom of the Settings tab and click Destroy. You have to type the app name to confirm:

App destruction confirmation dialog requiring app name entry with warning about permanent component deletion

Tagged: Services · All topics

Want me to talk about your product? You can sponsor this site.

~~~

Related posts about services: