How to Set Up Hostinger VPS — KVM Panel Walkthrough (2026)

Most people know Hostinger for shared hosting. Affordable plans, cPanel-adjacent interface, millions of WordPress sites. But Hostinger also sells unmanaged KVM VPS servers — and they are surprisingly good. The entry-level KVM 1 gives you 4GB RAM and 50GB NVMe for $6.49/mo. DigitalOcean charges $6/mo for 1GB of RAM. Read that again. Four times the memory, faster storage, lower price. The catch? You are on your own. No managed stack. No one-click WordPress. Just a root terminal and whatever you know how to do with it. If you are coming from shared hosting and this is your first VPS, I wrote this guide specifically for you. Every step, every command, explained.

What You'll Build

You will go from zero to a hardened, production-ready server: SSH keys, firewall, Nginx, SSL — the whole stack. Hostinger's KVM 1 plan (4GB RAM, 50GB NVMe, $6.49/mo) posted a 180ms WordPress TTFB in our benchmarks, beating providers that charge 3x as much. If you have never touched a terminal before, that is fine. Full Hostinger VPS review here.

Step 1 — Purchase Hostinger VPS & Access hPanel

Head to hostinger.com/vps-hosting. If you have bought shared hosting from Hostinger before, the VPS section will look familiar but feel different. No cPanel. No Softaculous. Just raw server plans:

  • KVM 1: 1 vCPU, 4GB RAM, 50GB NVMe — $6.49/mo (best entry point)
  • KVM 2: 2 vCPU, 8GB RAM, 100GB NVMe — $8.49/mo
  • KVM 4: 4 vCPU, 16GB RAM, 200GB NVMe — $14.99/mo
  • KVM 8: 8 vCPU, 32GB RAM, 400GB NVMe — $29.99/mo

Fair warning on pricing: Hostinger loves long billing cycles. The $6.49/mo rate is for annual billing. Monthly costs more. And the introductory price jumps at renewal — check the renewal rate before committing to a 4-year prepay. I recommend starting with 1 year to test the platform without overcommitting.

After purchase, you land in hPanel at hpanel.hostinger.com. If you are expecting something that looks like Vultr or DigitalOcean, adjust your expectations. hPanel is Hostinger's own creation. It is colorful, has a chatbot, and organizes things differently than every other VPS dashboard in existence. The VPS section lives under VPS Hosting in the left nav.

Provisioning takes 2–5 minutes. Completely automated, no human in the loop. Coming from Contabo (which can take 4 hours), this feels instant.

Step 2 — Initial VPS Setup via hPanel (OS Selection, SSH Key)

In hPanel, handle to VPS Hosting → click your server → VPS Manager. This is your home base. Everything you do with the server starts here. Think of VPS Manager as hPanel's version of a cloud dashboard — just with Hostinger's unique layout.

Select Operating System

In VPS Manager, click OS & PanelOperating System. Hostinger's supported OS list:

  • Ubuntu 24.04 LTS (recommended)
  • Ubuntu 22.04 LTS
  • Debian 12
  • CentOS Stream 9
  • AlmaLinux 9
  • Rocky Linux 9

Pick Ubuntu 24.04 LTS and click Change OS. The server wipes and reinstalls — 3 to 5 minutes. Wait until the dashboard shows "Running" before doing anything else. If you are used to shared hosting where the OS is invisible, this is a shift: you are choosing your operating system for the first time. Ubuntu 24.04 is the right choice for beginners. It has the most tutorials, the widest community support, and LTS means 5 years of security patches.

Add SSH Key via hPanel

SSH keys replace passwords for server login. If you have never used them before, here is the concept: your computer generates a pair of keys — one private (stays on your machine, never share it), one public (goes on the server). When you connect, the math checks out and you are in. No password to guess, no password to brute-force. Generate yours now:

# Generate Ed25519 key pair on your local machine
ssh-keygen -t ed25519 -C "hostinger-vps" -f ~/.ssh/hostinger_key

# Display the public key (copy the entire output)
cat ~/.ssh/hostinger_key.pub

Now go to hPanel: VPS Manager → SSH Keys → Add New Key. Paste the entire contents of your .pub file and give it a name you will recognize. Hostinger injects this key into /root/.ssh/authorized_keys on the server.

Did the key not get added automatically? That happens sometimes with already-running servers. No problem — Step 3 covers adding it manually via the command line. You can also grab the root password from VPS Manager → Access → Root Password for your first login.

Step 3 — Connect via SSH

Your server's IP address is in hPanel under VPS Manager → Overview. Copy it. This is the moment where shared hosting experience stops being useful — there is no file manager, no FTP, no "upload files" button. You connect via SSH, which is a command-line tool. It looks scary for about 30 seconds, and then it feels powerful.

# Connect with your SSH key
ssh -i ~/.ssh/hostinger_key root@YOUR_HOSTINGER_IP

# If you have not added your key yet, connect with the root password:
ssh root@YOUR_HOSTINGER_IP
# Enter password from hPanel > VPS Manager > Access > Root Password

If you had to use the password method, add your SSH key right now so you never need that password again:

# On the server: create .ssh directory
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# Add your public key
# Replace the key content below with your actual public key
echo "ssh-ed25519 AAAA...your-key-here... hostinger-vps" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Or from your local machine (faster):
ssh-copy-id -i ~/.ssh/hostinger_key.pub root@YOUR_HOSTINGER_IP

Critical step: verify the key works from a new terminal window before you change anything else. Keep your current session open as a safety net:

# Open a new terminal and verify key-based login
ssh -i ~/.ssh/hostinger_key root@YOUR_HOSTINGER_IP

# Should log in without asking for a password

Step 4 — System Update & Configuration

On shared hosting, your host handled updates. On a VPS, that is your job now. Hostinger's images are fairly recent, but "fairly recent" still means packages need updating:

# Update and upgrade
apt update && apt upgrade -y

# Install essential tools
apt install -y curl wget git unzip htop ufw fail2ban \
  software-properties-common net-tools

# Set timezone
timedatectl set-timezone America/New_York

# Set hostname
hostnamectl set-hostname hostinger-web01

Now let's confirm you are actually getting the NVMe performance you are paying for. This is one of Hostinger's main selling points, so verify it:

# Check disk type (should show nvme device)
lsblk -d -o name,rota,size
# rota=0 means NVMe/SSD

# Quick disk speed test
dd if=/dev/zero of=/tmp/disktest bs=1M count=512 oflag=direct
# Expected on Hostinger NVMe: 800-1200 MB/s write

# Check RAM (should be ~3.8GB available)
free -h

# Check CPU
nproc
lscpu | grep "Model name"

Step 5 — Using Hostinger's AI Assistant (Kodee)

Here is something none of the other providers offer: Hostinger built an AI assistant called Kodee right into hPanel. For someone coming from shared hosting who has never configured Nginx or written a cron job, Kodee is genuinely helpful. It is not a gimmick. I asked it to generate an Nginx config for a Laravel app and it produced something perfectly usable on the first try.

Find Kodee in the bottom-right corner of any hPanel page, or through VPS Manager → AI Assistant. Here is the kind of thing you can ask it:

# Example queries you can ask Kodee:
# "How do I install Redis on Ubuntu 24.04?"
# "Generate an Nginx config for a Django app with SSL"
# "How do I set up MySQL replication?"
# "What does 'connection refused' mean in Nginx error logs?"
# "Write a cron job that runs a backup script every night at 2 AM"

# Kodee outputs actual terminal commands you can copy-paste
# It is aware of your server's OS (Ubuntu 24.04 in this case)

Where Kodee shines brightest:

  • Generating Nginx/Apache config blocks for specific frameworks (Laravel, Django, Next.js)
  • Writing systemd service files for custom applications
  • Explaining error messages and providing fix commands
  • Security hardening checklists tailored to your OS
  • Database setup scripts (MySQL, PostgreSQL, Redis)

One important caveat: do not blindly copy-paste Kodee's output onto a production server. Read the commands first. Understand what they do. Kodee is a shortcut to finding the right commands, not a substitute for learning what those commands mean. Treat it like a knowledgeable coworker, not an autopilot.

Step 6 — Create a Non-Root User with Sudo

On shared hosting, you never thought about user permissions. The host handled that. On a VPS, running everything as root is like driving without a seatbelt — fine until it is catastrophically not fine. Create a regular user for daily work:

# Create deploy user
adduser deploy

# Add to sudo group
usermod -aG sudo deploy

# Copy SSH keys from root to deploy user
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
# Test deploy user in a new terminal
ssh -i ~/.ssh/hostinger_key deploy@YOUR_HOSTINGER_IP

# Confirm sudo access
sudo whoami
# Output: root

# Verify you can install packages
sudo apt list --upgradable 2>/dev/null | head -3

Once the deploy user is confirmed working with sudo access, lock down root and password login for good. This is the step that turns your server from "technically online" to "actually secure":

# Edit SSH config
sudo nano /etc/ssh/sshd_config

# Set these values:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

# Save and restart SSH
sudo systemctl restart sshd

Step 7 — Configure UFW Firewall

On shared hosting, the firewall was invisible — your host managed it. On a Hostinger VPS, you are the firewall admin. Hostinger does not offer a cloud-level firewall like Linode or Lightsail, so UFW on the server is your only protection. This sounds intimidating but the commands are simple:

# Set default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow SSH BEFORE enabling — or you will lose access
sudo ufw allow 22/tcp

# Allow web traffic
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Enable UFW
sudo ufw enable

# Verify rules
sudo ufw status verbose

Add rate limiting on SSH to slow down automated attacks, and understand a key concept about ports:

# Rate limit SSH (protect against brute force)
sudo ufw limit ssh/tcp

# If running a Node.js app on port 3000 (behind Nginx proxy)
# You do NOT need to open 3000 externally — only Nginx needs it
# Only open ports that external clients need directly

# Check current rules with numbers
sudo ufw status numbered

# Delete a rule if needed
sudo ufw delete 5

Step 8 — Install & Configure Nginx

On shared hosting, Apache was already running and you never thought about it. On a VPS, you install the web server yourself. We are going with Nginx because it is faster, uses less memory, and pairs beautifully with Hostinger's NVMe storage for static file delivery:

# Install Nginx
sudo apt install nginx -y

# Enable and start
sudo systemctl enable nginx
sudo systemctl start nginx

# Confirm it is running
sudo systemctl status nginx

# Test: visit http://YOUR_HOSTINGER_IP in a browser

The default Nginx config is conservative. Tune it for Hostinger's hardware — the KVM 1 has 1 vCPU, so set workers accordingly:

sudo nano /etc/nginx/nginx.conf
# Key performance settings for Hostinger KVM 1 (1 vCPU):
worker_processes 1;          # Match vCPU count

events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
}

http {
    # Fast static file serving (benefits from NVMe)
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    # Gzip compression
    gzip on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_types text/plain text/css application/json
               application/javascript text/xml application/xml;

    # Keepalive for better connection reuse
    keepalive_timeout 65;
    keepalive_requests 100;
}

Now create a "server block" — this is Nginx's equivalent of what Apache calls a "virtual host." If you ran multiple domains on shared hosting, same concept, different syntax:

# Create document root
sudo mkdir -p /var/www/yourdomain.com/html
sudo chown -R deploy:www-data /var/www/yourdomain.com
sudo chmod -R 755 /var/www/yourdomain.com

# Create test page
echo '<h1>Hostinger KVM VPS is live</h1>' | sudo tee /var/www/yourdomain.com/html/index.html

# Create site config
sudo nano /etc/nginx/sites-available/yourdomain.com
server {
    listen 80;
    listen [::]:80;

    server_name yourdomain.com www.yourdomain.com;
    root /var/www/yourdomain.com/html;
    index index.html index.php;

    # Log to separate files per domain
    access_log /var/log/nginx/yourdomain.access.log;
    error_log /var/log/nginx/yourdomain.error.log;

    location / {
        try_files $uri $uri/ =404;
    }

    # PHP-FPM for WordPress/Laravel/etc.
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
}
# Enable site
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default

# Test config syntax
sudo nginx -t

# Reload Nginx
sudo systemctl reload nginx

Step 9 — Point Your Domain (Hostinger DNS or External)

If you bought your domain through Hostinger (many shared hosting customers do), you have a nice advantage here: DNS management is already in hPanel. One fewer external tool to deal with. If your domain is registered elsewhere, that works too — you just need to add A records pointing to your VPS IP.

Option A: Using Hostinger DNS (Domain Registered at Hostinger)

In hPanel: Domains → Manage → DNS / Nameservers → Edit DNS Zone. Add or edit:

# DNS records to set in Hostinger DNS Zone:
# A record: yourdomain.com -> YOUR_HOSTINGER_VPS_IP  (TTL: 300)
# A record: www            -> YOUR_HOSTINGER_VPS_IP  (TTL: 300)

# Hostinger DNS propagates changes within 15-30 minutes
# Full global propagation: up to 24 hours

Option B: External DNS (Domain at Another Registrar)

Type Name Value TTL
A @ YOUR_HOSTINGER_VPS_IP 300
A www YOUR_HOSTINGER_VPS_IP 300
# Verify DNS from your server before running Certbot
dig yourdomain.com A +short
dig www.yourdomain.com A +short

# Both must return your Hostinger VPS IP before SSL will work

Step 10 — Install Free SSL with Certbot

On shared hosting, SSL was usually a checkbox or a one-click install. On a VPS, you run Certbot yourself. The good news: it is 3 commands and then it auto-renews forever. Hostinger's DDoS protection does not interfere with Let's Encrypt validation, so this should work on the first try.

# Install Certbot
sudo apt install certbot python3-certbot-nginx -y

# Issue certificate
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# Prompts:
# - Email address for renewal notifications
# - Agree to Terms of Service: A
# - Redirect HTTP to HTTPS: 2 (Yes, redirect)
# Test auto-renewal
sudo certbot renew --dry-run

# View certificate info
sudo certbot certificates

# Check renewal timer
sudo systemctl status certbot.timer

Certbot rewrites your Nginx config automatically to handle HTTPS and redirect all HTTP traffic. Your site is now live at https://yourdomain.com. You just did what your shared host used to do for you — except now you understand exactly how it works.

Want to double-check? Verify from the command line:

# Check SSL certificate details
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com \
  2>/dev/null | openssl x509 -noout -dates

# Output shows notBefore and notAfter dates
# Certificate is valid for 90 days and auto-renews at 30 days remaining

Step 11 — Hostinger VPS Manager Features (Restart, Console, Reinstall)

hPanel has several features you should know about before an emergency forces you to discover them under pressure. Take 5 minutes to familiarize yourself with these now.

Browser-Based Console (Emergency Access)

This is your "I broke SSH and cannot get in" escape hatch. Bookmark this now:

  • In hPanel: VPS Hosting → VPS Manager → Console
  • Click Start Console — a browser-based terminal opens
  • Log in with root credentials (from VPS Manager → Access → Root Password)
  • Fix your SSH config or UFW rules from the console, then reconnect via SSH

Restart Server

# Graceful reboot from within the server (preferred)
sudo reboot

# Hard reset via hPanel (if server is unresponsive):
# hPanel > VPS Manager > Actions > Restart
# This is equivalent to pressing the hardware reset button

OS Reinstall

The nuclear option. Wipes everything — all files, all configs, all data — and starts fresh. Use this when:

  • Starting over after a compromised server
  • Switching Linux distributions
  • Resolving deep system corruption issues

In hPanel: VPS Manager → OS & Panel → Operating System → Change OS. Pick your OS, confirm, and 3–5 minutes later you have a blank slate. On shared hosting, "starting over" meant calling support. Here, you are two clicks away. That is both liberating and terrifying.

Resource Monitoring in hPanel

# hPanel shows: CPU usage, RAM usage, disk usage, network in/out
# Updated every few minutes in the VPS Manager Overview tab

# For real-time server-side monitoring, use htop:
htop

# Check disk usage
df -h

# Check memory
free -m

# Check top processes by CPU
ps aux --sort=-%cpu | head -10

# Check top processes by memory
ps aux --sort=-%mem | head -10

Step 12 — Automated Backups in hPanel

On shared hosting, your host probably ran daily backups automatically. Hostinger does include weekly automated backups for VPS — which is more than Vultr or DigitalOcean include for free. But weekly is not daily, so you should also set up your own backup routine.

Weekly Automated Backups

The built-in weekly backups are in hPanel under VPS Manager → Backups. You can:

  • Browse available backup dates
  • Restore individual files or the full server
  • Download backup archives for off-server storage

Manual Snapshots

# In hPanel: VPS Manager > Snapshots > Create Snapshot
# Best practice: create a snapshot before:
# - Upgrading the OS
# - Deploying new application versions
# - Changing Nginx configuration significantly
# - Running database migrations

# Snapshots take 5-10 minutes to complete
# The server stays online during snapshot creation

Set Up Local Backups with rsync

For anything you cannot afford to lose, run your own daily backups. This script takes 30 seconds to set up and could save your business:

# Create a backup script
sudo nano /usr/local/bin/backup.sh
#!/bin/bash
BACKUP_DIR="/var/backups/daily"
DATE=$(date +%Y-%m-%d)
mkdir -p "$BACKUP_DIR"

# Backup web root
tar -czf "$BACKUP_DIR/webroot-$DATE.tar.gz" /var/www/

# Backup MySQL/MariaDB databases (if installed)
if command -v mysqldump &>/dev/null; then
    mysqldump --all-databases --single-transaction \
      -u root > "$BACKUP_DIR/mysql-$DATE.sql"
    gzip "$BACKUP_DIR/mysql-$DATE.sql"
fi

# Delete backups older than 7 days
find "$BACKUP_DIR" -name "*.gz" -mtime +7 -delete

echo "Backup completed: $DATE"
# Make executable and schedule via cron
sudo chmod +x /usr/local/bin/backup.sh

# Run at 3 AM daily
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1") | crontab -

# Verify cron is scheduled
crontab -l

Frequently Asked Questions

How do I access Hostinger's VPS console if I get locked out?

In hPanel, go to VPS Hosting → VPS Manager → Console. This opens a browser-based console connected directly to the server (like KVM out-of-band access) — it works even if SSH is broken or firewall is misconfigured. Fix your SSH config or firewall from the console, then reconnect normally. Log in using the root password from VPS Manager → Access → Root Password.

What is Hostinger's AI assistant and how useful is it for VPS management?

Hostinger's AI assistant (Kodee) is integrated into hPanel and can generate server configuration commands on request. Ask it: "How do I install Redis on Ubuntu 24.04?" or "Generate an Nginx config for a Django app with SSL." It produces accurate commands for common tasks. It is particularly useful for beginners who need help with specific configurations without extensive googling. Kodee is aware of your server's operating system and can tailor commands accordingly. It does not have access to your server directly — it generates commands for you to run.

Why is Hostinger's entry VPS 4GB RAM while competitors give 1GB at similar prices?

Hostinger restructured their VPS plans in 2026–2026 to lead with higher RAM to differentiate from competitors. Their KVM 1 plan gives 4GB RAM at $6.49/mo vs DigitalOcean's 1GB for $6/mo. The tradeoff: Hostinger has only 2 US datacenter locations (Ashburn VA primary) vs DigitalOcean's 3 US DCs and Vultr's 9 US DCs. If geographic distribution matters for your use case, Vultr or Linode offer more US region options. If RAM per dollar is the priority, Hostinger wins at this tier.

Does Hostinger support custom ISO or unusual operating systems?

No. Hostinger VPS only supports their approved OS list: Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux, and a few others. No Windows, no FreeBSD, no custom ISO upload. If you need Windows VPS or a non-standard OS, choose Vultr (supports Windows, custom ISO, FreeBSD) or Kamatera (Windows available). For standard Linux workloads — web servers, Node.js apps, Python applications, databases — Hostinger's OS selection covers all common needs.

How does Hostinger's NVMe storage affect real-world performance?

NVMe storage (50GB on KVM 1) delivers approximately 65,000 IOPS read in our benchmarks — 3–4x faster than standard SSD VPS from competitors. In practice: WordPress admin pages load faster, database queries are quicker, and application startup times improve. PHP-FPM serving WordPress TTFB averaged 180ms on Hostinger NVMe vs 280ms on standard SSD in our testing. For read-heavy workloads (blogs, news sites, content-heavy apps), the NVMe advantage is measurable and consistent. See our full VPS benchmark data for detailed comparisons.

Can I install cPanel or Plesk on Hostinger VPS?

Hostinger VPS supports cPanel and Plesk installation, but the license costs are separate ($15–45/mo for cPanel, $10–30/mo for Plesk). Hostinger's own hPanel is included free with their web hosting, but VPS plans use a different management interface. For most users, the command line setup in this guide is more cost-effective than paying for a panel license.

How does Hostinger VPS compare to their shared hosting?

Hostinger VPS gives you dedicated resources (guaranteed RAM, CPU), root access, custom software installation, and no noisy neighbors. Shared hosting is easier but limits you to their pre-configured environment. The KVM 1 VPS ($6.49/mo) offers 4GB RAM — far more than any shared plan. Switch to VPS when you need custom server software, more RAM, or consistent performance under load.

Your First VPS Does Not Have to Be Hard

Hostinger's KVM 1 gives you 4GB RAM and NVMe storage for $6.49/mo — more power than the shared hosting plan you are outgrowing, at a similar price. The AI assistant helps when you get stuck. And now you have this guide.

Full Hostinger VPS Review Hostinger vs DigitalOcean Best VPS for WordPress
AC
Alex Chen — Senior Systems Engineer

Alex Chen is a Senior Systems Engineer with 7+ years of experience in cloud infrastructure and VPS hosting. He has personally deployed and benchmarked 50+ VPS providers across US datacenters. Learn more about our testing methodology →