Ubuntu on Vultr is the foundation of half the internet's infrastructure in 2026. It's fast, stable, well-documented, and Vultr's SSDs make it scream. But if you've never set up a Linux VPS from scratch, the blank terminal screen can feel intimidating.
This guide fixes that. We'll go from zero to a hardened, production-ready Ubuntu 24.04 LTS server in under 30 minutes. No prior Linux experience required — just a Vultr account and a willingness to copy-paste commands.
Ubuntu 24.04 LTS ("Noble Numbat") is the long-term support release that enterprises and developers alike trust. It ships with Python 3.12, GCC 14, and a 5-year support window until 2029. Combined with Vultr's NVMe SSD storage, you're looking at I/O speeds that weren't possible on budget VPS plans even two years ago.
Vultr's cheapest compute instance — $5/month — gets you 1 vCPU, 1GB RAM, and 25GB NVMe. That's enough for a personal project, a dev server, or learning Linux hands-on. And yes, the SSD is real NVMe, not network-attached storage pretending to be local.
| Plan | vCPU | RAM | Storage | Price/mo |
|---|---|---|---|---|
| 1 vCPU | 1 | 1GB | 25GB NVMe | $5 |
| 2 vCPU | 2 | 2GB | 55GB NVMe | $10 |
| 4 vCPU | 4 | 4GB | 80GB NVMe | $20 |
| 6 vCPU | 6 | 8GB | 160GB NVMe | $40 |
If you haven't already, create an account at Vultr.com. New accounts get $100 free credit for 30 days — enough to run the $5 plan for nearly 6 months while you learn.
Your instance will be online in about 60 seconds. Vultr sends the root password to your email — save it. You'll also want to note your server's IP address from the dashboard.
Open your terminal (macOS/Linux) or use PuTTY on Windows. Replace YOUR_SERVER_IP with the IP address from your dashboard.
ssh root@YOUR_SERVER_IP
Accept the host key fingerprint (type yes and press Enter), then paste your root password when prompted. Note: the terminal won't show characters as you type — that's normal Linux password behavior. Just paste and hit enter.
Root is all-powerful — one typo can destroy your system. Create a regular user with sudo privileges instead:
# Create a new user (replace 'admin' with your preferred username)
adduser admin
# Grant sudo privileges
usermod -aG sudo admin
# Switch to the new user
su - admin
From this point forward, never log in as root for daily tasks.
Passwords are a liability — SSH keys are what professionals use. If you already have an SSH key pair on your local machine, skip the key generation step:
# On your LOCAL machine (not the server), generate an SSH key if you don't have one
ssh-keygen -t ed25519 -C "your_email@example.com"
# Copy your public key to the server
ssh-copy-id admin@YOUR_SERVER_IP
After copying, verify you can log in without a password:
ssh admin@YOUR_SERVER_IP
If it connects without asking for a password, you're set. Now let's harden SSH to disable password authentication entirely:
# On the server, edit SSH config
sudo nano /etc/ssh/sshd_config
Find and modify these lines:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Then restart the SSH service:
sudo systemctl restart sshd
Ubuntu ships with UFW (Uncomplicated Firewall). By default it blocks everything inbound. Configure it to allow only what you need:
# Allow SSH (port 22) - CRITICAL, or you'll lock yourself out!
sudo ufw allow 22/tcp
# Allow HTTP and HTTPS for web servers
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Enable the firewall
sudo ufw enable
# Check status
sudo ufw status verbose
Your firewall is now active. Only ports 22, 80, and 443 are open. Everything else is blocked by default.
Your base Ubuntu installation is lean. Let's install the tools you'll actually need:
# Update package lists and upgrade everything
sudo apt update && sudo apt upgrade -y
# Install essential tools
sudo apt install -y curl wget git htop net-tools unzip fail2ban
Here's what each does:
Let's put your server to work. Install Nginx and host a basic website:
# Install Nginx
sudo apt install -y nginx
# Start and enable Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
# Check it's running
sudo systemctl status nginx
Now visit http://YOUR_SERVER_IP in your browser. You should see the default Nginx welcome page. Congratulations — you just hosted a website on your own VPS.
Docker containers are the standard way to deploy applications in 2026. Install it with one command:
# Install Docker
curl -fsSL https://get.docker.com | sh
# Add your user to the docker group (avoids sudo for every docker command)
sudo usermod -aG docker admin
# Start Docker
sudo systemctl start docker
sudo systemctl enable docker
# Verify
docker --version
su - admin) for the group change to take effect.
Let's put this all together with a practical example. On your local machine, create a simple Express API:
# On your local machine
mkdir my-api && cd my-api
npm init -y
npm install express
echo 'const express = require("express");
const app = express();
app.get("/", (req, res) => res.json({ status: "ok", message: "Running on Vultr!" }));
app.listen(3000, () => console.log("Server running on port 3000"));' > index.js
# Create a Dockerfile
echo 'FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]' > Dockerfile
# Build and push to a registry, then pull on your Vultr server...
The full Docker deployment workflow on your Vultr instance would be:
# SSH into your server
ssh admin@YOUR_SERVER_IP
# Pull your Docker image (example)
docker pull yourusername/my-api:latest
# Run it
docker run -d -p 80:3000 --name my-api yourusername/my-api:latest
# Check it's running
docker ps
curl http://localhost
Your API is now live on port 80, accessible from the internet at http://YOUR_SERVER_IP.
Let's do a quick reality check. The $5/month Vultr plan gives you 25GB of real NVMe SSD — not a network drive, not slow storage pooled with other users. Here's how it stacks up against competitors at the same price point:
| Provider | Storage | Storage Type | Price |
|---|---|---|---|
| Vultr | 25GB | NVMe SSD | $5/mo |
| DigitalOcean | 25GB | SSD | $6/mo |
| Linode | 25GB | SSD | $5/mo |
| AWS Lightsail | 30GB | SSD | $3.50/mo |
Vultr wins on raw NVMe speed and consistent pricing. AWS Lightsail is cheaper but uses slower EBS storage. DigitalOcean's pricing tiers are similarly competitive, but Vultr's 32 global locations beat most competitors on geographic coverage.
If you're building a sports betting platform or odds comparison service, you'll need both compute (Vultr handles this well) and fast sports data feeds. Vultr gives you the infrastructure layer; for integrated sports data and odds APIs, Cloudbet's developer infrastructure provides ready-made endpoints that save weeks of integration work.
For pure server infrastructure and self-hosted applications, Ubuntu on Vultr is the right choice.
Setting up Ubuntu on Vultr isn't hard — it just requires knowing which commands to run. In this guide, you went from a blank server to a hardened, production-ready VPS with SSH keys, a firewall, Nginx, and Docker installed. That's the foundation for hosting websites, APIs, databases, or almost anything else in 2026.
The $5/month plan is more than enough to learn and experiment. When your project outgrows it, Vultr lets you resize instances with zero downtime. Start small, learn the stack, scale when you need to.