VPS Tallinnas ise seadistada: Ubuntu + Nginx + SSL 30 minutiga

Tehniline juhend VPS-serveri seadistamiseks nullist: SSH, Ubuntu uuendamine, Nginx, Let's Encrypt SSL, tulemüür ja Docker — samm-sammult arendajatele.

VPS Tallinnas ise seadistada: Ubuntu + Nginx + SSL 30 minutiga

Kellele see juhend on?

Juhend on mõeldud arendajatele ja tehnilistele kasutajatele, kes tahavad VPS-serveri ise seadistada, ilma halduspaneelita. Kui eelistad cPanelit või Pleski, vali jagatud majutus või hallatud VPS.

Näitena kasutame VPS-i Tallinnas (nt is*hosting, alates 5.94 $ kuus), Ubuntu 24.04 operatsioonisüsteemi ja Nginxi veebiserverit. Samad sammud sobivad ka Helsingi serverile (nt Hetzner CX23, 5.99 € kuus ilma KM-ta).

Eeldused

  • VPS on ostetud ja käivitatud
  • Sul on root-ligipääs (IP-aadress, kasutajanimi, parool)
  • Domeen on registreeritud ja DNS-i A-kirje viitab serveri IP-le
  • Arvutis on SSH-klient (Terminal Macis/Linuxis, Windows Terminal või PuTTY Windowsis)

Samm 1: SSH-ühendus

Ühenda serveriga SSH kaudu:

ssh root@SINU_SERVERI_IP

Esimesel ühendamisel küsitakse, kas usaldad serverit — kirjuta yes ja sisesta parool.

Loo eraldi kasutaja

Root-kasutajana töötamine on turvarisk. Loome eraldi kasutaja:

adduser deploy
usermod -aG sudo deploy

Nüüd saad sisse logida: ssh deploy@SINU_SERVERI_IP

SSH-võti (soovituslik)

Parooli asemel on turvalisem kasutada SSH-võtit:

# Oma arvutis:
ssh-keygen -t ed25519 -C "minu-vps"
ssh-copy-id deploy@SINU_SERVERI_IP

Pärast seda saad sisse logida ilma paroolita.

Samm 2: Uuenda Ubuntu

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git unzip software-properties-common

See uuendab kõik paketid ja paigaldab põhitööriistad.

Samm 3: Paigalda Nginx

Nginx on kerge ja kiire veebiserver, mis sobib VPS-ile hästi.

sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

Kontrolli, kas töötab:

sudo systemctl status nginx

Ava brauseris http://SINU_SERVERI_IP — peaksid nägema Nginxi vaikelehte.

Serveriplokk (server block)

Loo oma domeeni konfiguratsioonifail:

sudo nano /etc/nginx/sites-available/sinu-domeen.ee

Sisu:

server {
    listen 80;
    server_name sinu-domeen.ee www.sinu-domeen.ee;
    root /var/www/sinu-domeen.ee/html;
    index index.html index.php;

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

Aktiveeri sait:

sudo ln -s /etc/nginx/sites-available/sinu-domeen.ee /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Loo saidi kaust ja testfail:

sudo mkdir -p /var/www/sinu-domeen.ee/html
echo '<h1>Tere tulemast!</h1>' | sudo tee /var/www/sinu-domeen.ee/html/index.html
sudo chown -R www-data:www-data /var/www/sinu-domeen.ee

Samm 4: Let's Encrypti SSL-sertifikaat

SSL on kohustuslik — ilma selleta näitab brauser hoiatust "Ei ole turvaline".

Paigalda Certbot

sudo apt install -y certbot python3-certbot-nginx

Küsi sertifikaat

sudo certbot --nginx -d sinu-domeen.ee -d www.sinu-domeen.ee

Certbot küsib e-posti aadressi ja nõusolekut tingimustega. Seejärel:

  • hangib sertifikaadi automaatselt
  • seadistab Nginxi HTTPS-i jaoks
  • seadistab HTTP → HTTPS suunamise

Automaatne uuendamine

Let's Encrypti sertifikaadid kehtivad 90 päeva. Certbot seadistab automaatse uuendamise; kontrolli:

sudo certbot renew --dry-run

Samm 5: Tulemüür (UFW)

UFW kaitseb serverit soovimatute ühenduste eest.

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

See lubab ainult SSH (port 22) ja veebiserveri (pordid 80 ja 443) ühendused, kõik muu on blokeeritud.

Lisaturvalisus: Fail2Ban

sudo apt install -y fail2ban
sudo systemctl enable fail2ban

Fail2Ban blokeerib automaatselt IP-d, mis teevad liiga palju ebaõnnestunud sisselogimiskatseid.

Samm 6: PHP (valikuline)

Kui vajad PHP-d (WordPress, Laravel jms):

sudo apt install -y php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip php8.3-gd

Nginxi PHP-plokk:

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Samm 7: Docker (valikuline)

Docker võimaldab käivitada rakendusi eraldatud konteinerites.

Paigaldus

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker deploy

Docker Compose

sudo apt install -y docker-compose-plugin

Näide: WordPress Dockeris

# docker-compose.yml
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_PASSWORD: salajane_parool
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: salajane_parool

Käivita: docker compose up -d

Samm 8: Seire ja hooldus

Serveri seire

  • htop — ressursid reaalajas: sudo apt install -y htop
  • df -h — kettaruum
  • free -m — mälu kasutus
  • journalctl -xe — süsteemi logid

Automaatsed turvauuendused

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Varukoopiad

Automaatne varukoopia cron-tööga:

# Iga öö kell 3:00
0 3 * * * tar -czf /backup/veebileht-$(date +\%Y\%m\%d).tar.gz /var/www/

Hoia varukoopiat ka väljaspool serverit (teine server või objektisalvestus) — kui server kaob, kaob muidu ka varukoopia.

Kokkuvõte

VPS-i seadistamine võtab nende sammudega umbes 30 minutit: SSH-ühendus, Ubuntu uuendamine, Nginx, Let's Encrypti SSL, UFW tulemüür ning vajadusel PHP või Docker. Tulemuseks on kiire, turvaline ja täielikult sinu kontrolli all olev server. Kuukulu algab umbes 5–6 €-st (dollarist) väikese VPS-i puhul.