You want a server. You want it now. Not next week, not after three support tickets — now. That's exactly what Vultr delivers. Deploy a Ubuntu VPS in under 60 seconds, have it configured and production-ready in 10 minutes. This guide walks you through every step.
We're using Ubuntu 22.04 LTS — the long-term support release that works for everything from a personal blog to a production API. Everything here applies to Ubuntu 24.04 LTS as well, with minor differences noted where relevant.
Head to Vultr's homepage and create an account if you haven't already. Once logged in, click "Deploy" on the dashboard.
1 Choose Cloud Compute — this gives you the best balance of price and performance for most workloads.
2 Select your location. Pick something geographically close to your users. For Asia-Pacific traffic, Singapore or Tokyo are your best bets. For US/EU, choose accordingly.
3 Pick Ubuntu 22.04 LTS x64 as your OS image. It's in the "Application" section under "Ubuntu."
4 Choose your plan. Here's a quick breakdown:
| Use Case | Recommended Plan | Spec | Price |
|---|---|---|---|
| Personal blog / small site | Starter | 1 vCPU, 1GB RAM, 32GB NVMe | $5/mo |
| WordPress / dev server | Basic | 2 vCPU, 2GB RAM, 64GB NVMe | $10/mo |
| Production web app | General | 4 vCPU, 8GB RAM, 200GB NVMe | $40/mo |
| AI / heavy workloads | High Frequency | 4 vCPU, 8GB RAM, 200GB NVMe | $60/mo |
5 Under Additional Features, check "Enable IPv6" and "Automatic Backups" if you want redundancy. Private networking is free — enable it if you're running multi-server setups.
6 Set your root password. This is critical — make it long, random, and store it somewhere safe (a password manager, ideally).
7 Click "Deploy Now". Your server is typically online in under 60 seconds. You'll get an email with the server IP and root credentials.
Open your terminal (macOS Terminal, Windows Terminal, or PowerShell) and connect:
ssh root@YOUR_SERVER_IP
Replace YOUR_SERVER_IP with your actual Vultr server IP. You'll be prompted for the root password you set during deployment.
If you're on Windows, use PowerShell or PuTTY. For PuTTY, enter the IP address, port 22, and connection type SSH.
Once you're in, run the update immediately. Fresh deployments often have outdated packages:
apt update && apt upgrade -y
This fetches and installs all the latest security patches and package updates. It takes 1-2 minutes on a fresh system.
Running everything as root is a security risk. Create a regular user with sudo privileges:
adduser deployer
usermod -aG sudo deployer
Replace deployer with whatever username you prefer. When prompted, set a strong password. You can skip the extra info prompts by pressing Enter through them.
Now switch to your new user for daily operations:
su - deployer
Password authentication is a liability — it's only a matter of time before someone brute-forces your server. SSH keys are orders of magnitude more secure.
On your local machine (not the server), generate an SSH key pair if you don't already have one:
ssh-keygen -t ed25519 -C "your_email@example.com"
Press Enter to accept the default file location. Optionally add a passphrase for an extra layer of security — but note it down somewhere.
Copy your public key to the server:
ssh-copy-id deployer@YOUR_SERVER_IP
Enter your deployer user's password when prompted. This installs your public key on the server so you can log in without a password.
Test it:
ssh deployer@YOUR_SERVER_IP
You should connect without being asked for a password. If it works, password authentication is disabled for this user.
As root, open the SSH config file:
sudo nano /etc/ssh/sshd_config
Find and modify these lines:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
Save the file (Ctrl+O, then Enter, then Ctrl+X) and restart SSH:
sudo systemctl restart sshd
Now your server is significantly more secure. No passwords, no root login, only your specific SSH key can access it.
Ubuntu comes with UFW (Uncomplicated Firewall). Enable it, but configure rules first so you don't lock yourself out:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
This allows SSH (port 22), HTTP (port 80), and HTTPS (port 443). If you're running a custom service on a different port, add it with sudo ufw allow PORT/tcp.
Check the status anytime:
sudo ufw status verbose
Here's the stack most people need. Install only what applies to your project:
# Nginx (web server)
sudo apt install nginx -y
# Python 3 and pip
sudo apt install python3 python3-pip -y
# Git
sudo apt install git -y
# Certbot (for SSL certificates)
sudo apt install certbot python3-certbot-nginx -y
# Docker (if you need containers)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
After Docker installation, log out and back in for the group change to take effect:
exit
ssh deployer@YOUR_SERVER_IP
Let's verify everything works. Start Nginx and visit your server's IP in a browser:
sudo systemctl start nginx
sudo systemctl enable nginx
Open your browser and go to http://YOUR_SERVER_IP. You should see the default Nginx welcome page. That's your server — live and running.
If you're serving a domain, get free SSL in under 2 minutes:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Follow the prompts — Certbot handles the certificate issuance and Nginx configuration automatically. Certificates renew automatically too. Zero maintenance after setup.
Here's a real example of deploying a FastAPI application on your new Vultr server:
# Install FastAPI and Uvicorn
pip3 install fastapi uvicorn
# Create your app
cat > ~/api.py << 'EOF'
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello from Vultr!"}
@app.get("/health")
def health():
return {"status": "ok"}
EOF
# Run it
uvicorn --host 0.0.0.0 --port 8000 ~/api:app &
Open http://YOUR_SERVER_IP:8000 in your browser. Your API is live. For production, you'd use a process manager like systemd or a reverse proxy with Nginx, but this shows how quickly you can go from zero to running.
Most common cause: the SSH service isn't running or the firewall blocked port 22. Check with sudo systemctl status sshd and sudo ufw status.
Make sure Nginx is running: sudo systemctl status nginx. Also check that your UFW rules allow port 80.
Your server's DNS might not be configured. Run sudo nano /etc/resolv.conf and add nameserver 8.8.8.8, then try again.
The default Vultr partition uses the full disk. If you see "No space left on device," check with df -h. The 32GB plan is tight — consider upgrading or cleaning up old packages with sudo apt autoremove.
Your Vultr server is now production-ready in terms of security and basic configuration. From here, you can:
Check out our Cloudbet VPS comparison guide for more on how Vultr compares to other managed cloud platforms. And if you're looking for a step-by-step Nginx configuration tutorial, that's coming in our next post.
Ready to deploy your first server?