<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leoo Chet</title>
    <description>The latest articles on DEV Community by Leoo Chet (@leoo_chet_104d2b7cb6bcf98).</description>
    <link>https://dev.to/leoo_chet_104d2b7cb6bcf98</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3943147%2Ffcb03253-5058-48aa-a219-2c1458162c4c.png</url>
      <title>DEV Community: Leoo Chet</title>
      <link>https://dev.to/leoo_chet_104d2b7cb6bcf98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leoo_chet_104d2b7cb6bcf98"/>
    <language>en</language>
    <item>
      <title>Beginner’s Guide to Hosting Your First App on DigitalOcean</title>
      <dc:creator>Leoo Chet</dc:creator>
      <pubDate>Thu, 21 May 2026 02:40:45 +0000</pubDate>
      <link>https://dev.to/leoo_chet_104d2b7cb6bcf98/beginners-guide-to-hosting-your-first-app-on-digitalocean-1fo3</link>
      <guid>https://dev.to/leoo_chet_104d2b7cb6bcf98/beginners-guide-to-hosting-your-first-app-on-digitalocean-1fo3</guid>
      <description>&lt;p&gt;For the longest time, all my projects lived on localhost.&lt;/p&gt;

&lt;p&gt;Every side project I built stayed trapped inside my laptop like some secret nobody could actually use.&lt;/p&gt;

&lt;p&gt;Whenever I wanted to show a friend what I was building, I had to say things like:&lt;/p&gt;

&lt;p&gt;“Hold on, let me start the server first.”&lt;/p&gt;

&lt;p&gt;Or worse:&lt;/p&gt;

&lt;p&gt;“It works on my machine.”&lt;/p&gt;

&lt;p&gt;Eventually, I realized I had been avoiding one thing for months:&lt;/p&gt;

&lt;p&gt;Deploying to a real server.&lt;/p&gt;

&lt;p&gt;The problem was that cloud hosting always looked terrifying.&lt;/p&gt;

&lt;p&gt;AWS felt like I needed to study for an exam just to launch a VPS. Google Cloud had so many settings that I closed the tab after ten minutes.&lt;/p&gt;

&lt;p&gt;I just wanted something simple.&lt;/p&gt;

&lt;p&gt;That’s when I found DigitalOcean.&lt;/p&gt;

&lt;p&gt;And honestly, it ended up being the easiest introduction to VPS hosting I could’ve asked for.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll show you exactly how I hosted my first app on a DigitalOcean Droplet as a complete beginner.&lt;/p&gt;

&lt;p&gt;No complicated DevOps setup.&lt;/p&gt;

&lt;p&gt;No Kubernetes.&lt;/p&gt;

&lt;p&gt;Just a simple Linux server, Docker, and your first deployed app.&lt;/p&gt;

&lt;p&gt;Why I Picked DigitalOcean&lt;/p&gt;

&lt;p&gt;The first thing I noticed about DigitalOcean was how clean everything felt.&lt;/p&gt;

&lt;p&gt;The dashboard didn’t overwhelm me.&lt;/p&gt;

&lt;p&gt;I wasn’t buried under enterprise cloud terminology.&lt;/p&gt;

&lt;p&gt;It felt built for developers who just wanted to ship things.&lt;/p&gt;

&lt;p&gt;That mattered a lot because at the time, I wasn’t trying to become a cloud engineer.&lt;/p&gt;

&lt;p&gt;I just wanted my app online.&lt;/p&gt;

&lt;p&gt;If you want to follow along with the same setup I used, you can create a basic Droplet here:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://m.do.co/c/2896c0515135" rel="noopener noreferrer"&gt;[DIGITALOCEAN LINK]&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Create Your First Droplet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After signing up, click:&lt;/p&gt;

&lt;p&gt;Create → Droplets&lt;/p&gt;

&lt;p&gt;I chose:&lt;/p&gt;

&lt;p&gt;Ubuntu 24.04&lt;br&gt;
Shared CPU&lt;br&gt;
Basic plan&lt;br&gt;
$6/month option&lt;/p&gt;

&lt;p&gt;That was enough for my small projects.&lt;/p&gt;

&lt;p&gt;For authentication, you can use either:&lt;/p&gt;

&lt;p&gt;SSH keys&lt;br&gt;
Password login&lt;/p&gt;

&lt;p&gt;SSH keys are safer, but passwords are fine if you’re just getting started.&lt;/p&gt;

&lt;p&gt;After choosing a region close to your location, click:&lt;/p&gt;

&lt;p&gt;Create Droplet&lt;/p&gt;

&lt;p&gt;About a minute later, I had my first public server IP.&lt;/p&gt;

&lt;p&gt;It felt weirdly exciting.&lt;/p&gt;

&lt;p&gt;Like I had finally crossed some invisible line from “learning programming” into “actually building things.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Connect to the Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open your terminal:&lt;/p&gt;

&lt;p&gt;ssh root@YOUR_SERVER_IP&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;ssh &lt;a href="mailto:root@143.xxx.xxx.xxx"&gt;root@143.xxx.xxx.xxx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first time I logged into my server successfully, I stared at the terminal for a few seconds thinking:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Wait… this is my server now?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then I immediately became terrified of breaking it.&lt;/p&gt;

&lt;p&gt;That feeling never fully disappears.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Update Ubuntu&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before installing anything, update the system:&lt;/p&gt;

&lt;p&gt;apt update &amp;amp;&amp;amp; apt upgrade -y&lt;/p&gt;

&lt;p&gt;Then install a few essentials:&lt;/p&gt;

&lt;p&gt;apt install curl git ufw -y&lt;/p&gt;

&lt;p&gt;This gives you:&lt;/p&gt;

&lt;p&gt;curl&lt;br&gt;
git&lt;br&gt;
firewall tools&lt;/p&gt;

&lt;p&gt;Basic stuff you’ll probably use constantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Configure the Firewall&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One mistake beginners make is exposing everything publicly.&lt;/p&gt;

&lt;p&gt;I definitely made that mistake later.&lt;/p&gt;

&lt;p&gt;So let’s avoid it early.&lt;/p&gt;

&lt;p&gt;Enable UFW:&lt;/p&gt;

&lt;p&gt;ufw allow OpenSSH&lt;br&gt;
ufw allow 80&lt;br&gt;
ufw allow 443&lt;br&gt;
ufw enable&lt;/p&gt;

&lt;p&gt;Then verify:&lt;/p&gt;

&lt;p&gt;ufw status&lt;/p&gt;

&lt;p&gt;You should see:&lt;/p&gt;

&lt;p&gt;22/tcp&lt;br&gt;
80/tcp&lt;br&gt;
443/tcp&lt;/p&gt;

&lt;p&gt;allowed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 — Install Docker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Docker completely changed how I deploy apps.&lt;/p&gt;

&lt;p&gt;Before Docker, deployment felt messy.&lt;/p&gt;

&lt;p&gt;After Docker, it started feeling repeatable.&lt;/p&gt;

&lt;p&gt;Install Docker:&lt;/p&gt;

&lt;p&gt;curl -fsSL &lt;a href="https://get.docker.com" rel="noopener noreferrer"&gt;https://get.docker.com&lt;/a&gt; | sh&lt;/p&gt;

&lt;p&gt;Verify installation:&lt;/p&gt;

&lt;p&gt;docker --version&lt;/p&gt;

&lt;p&gt;You should see something like:&lt;/p&gt;

&lt;p&gt;Docker version 27.x.x&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6 — Deploy Your First App&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To test the server, let’s run Nginx.&lt;/p&gt;

&lt;p&gt;docker run -d -p 80:80 nginx&lt;/p&gt;

&lt;p&gt;Now visit:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://YOUR_SERVER_IP" rel="noopener noreferrer"&gt;http://YOUR_SERVER_IP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And suddenly…&lt;/p&gt;

&lt;p&gt;Your website is online.&lt;/p&gt;

&lt;p&gt;No localhost.&lt;/p&gt;

&lt;p&gt;No tunnels.&lt;/p&gt;

&lt;p&gt;No temporary links.&lt;/p&gt;

&lt;p&gt;A real server on the internet.&lt;/p&gt;

&lt;p&gt;That moment genuinely changed how I viewed software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned From My First VPS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest surprise was realizing VPS hosting wasn’t nearly as complicated as I imagined.&lt;/p&gt;

&lt;p&gt;I had spent months avoiding deployment because I thought it belonged to “real engineers.”&lt;/p&gt;

&lt;p&gt;Turns out, beginners can learn this stuff surprisingly fast.&lt;/p&gt;

&lt;p&gt;Especially with a platform like DigitalOcean where everything feels beginner-friendly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistakes I Made&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are a few things I broke during my first week:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgetting firewall rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I accidentally exposed development ports publicly once.&lt;/p&gt;

&lt;p&gt;Not great.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deleting containers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I removed containers without understanding volumes yet.&lt;/p&gt;

&lt;p&gt;Also not great.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not taking snapshots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Always make backups before experimenting.&lt;/p&gt;

&lt;p&gt;You will thank yourself later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hosting my first app on DigitalOcean made development feel more real.&lt;/p&gt;

&lt;p&gt;I stopped thinking of deployment as this mysterious thing only DevOps people understood.&lt;/p&gt;

&lt;p&gt;It became another skill I could learn step by step.&lt;/p&gt;

&lt;p&gt;And honestly?&lt;/p&gt;

&lt;p&gt;Once your first app goes live, you immediately start wanting to deploy more things.&lt;/p&gt;

&lt;p&gt;If you want to try the same setup I used, you can create a beginner-friendly Droplet here:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://m.do.co/c/2896c0515135" rel="noopener noreferrer"&gt;[DIGITALOCEAN LINK]&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In my next experiment, I tried deploying another app on Vultr to compare the experience.&lt;/p&gt;

&lt;p&gt;And surprisingly, it felt very different.&lt;/p&gt;

&lt;p&gt;Happy building 🚀&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cloud</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
