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

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

Kellele see juhend?

See juhend on mooneldud arendajatele ja tehnilistele kasutajatele, kes soovivad seadistada VPS-serveri ise, ilma halduspaneelita. Kui eelistad cPanelit voi Pleski, siis see juhend pole sinu jaoks — vali jagatud majutus voi hallatav VPS.

Kasutame naeitena VPS-serverit Tallinna andmekeskuses (is*hosting, 4VPS voi THE.Hosting), Ubuntu 24.04 operatsiooonisuusteemi ja Nginx veebiiserverit.

Eeldused

  • VPS-server on ostetud ja sisse lylitatud
  • Sul on root-juurdepaaes (IP-aadress, kasutajanimi, parool)
  • Domeen on registreeritud ja DNS A-kirje viitab serveri IP-le
  • Arvutis on SSH-klient (Terminal Macil/Linuxil, PuTTY voi Windows Terminal Windowsil)

Samm 1: SSH yhenduse loomine

Yhenda serveriga SSH kaudu:

ssh root@SINU_SERVERI_IP

Esimesel yhendamisel kyysitakse, kas usaldad serverit — kirjuta yes. Seejaerel sisesta parool.

Turvaomadused: loo eraldi kasutaja

Root-kasutajana toootamine on turvarisk. Loome eraldi kasutaja:

adduser deploy
usermod -aG sudo deploy

Nyyyd saad sisse logida: ssh deploy@SINU_SERVERI_IP

SSH-vootme seadistamine (soovituslik)

Parooli asemel on turvalisem kasutada SSH-vootmit:

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

Paarast seda saad sisse logida ilma paroolita.

Samm 2: Ubuntu uuendamine

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

See uuendab koik paketid ja paigaldab pohilised tooriistad.

Samm 3: Nginx paigaldamine

Nginx on kerge ja kiire veebiserver, mis on ideaalne VPS-i jaoks.

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

Kontrolli, kas toootab:

sudo systemctl status nginx

Ava brauser ja mine http://SINU_SERVERI_IP — peaksid naagema Nginx vaikimisi lehte.

Serveri ploki (server block) seadistamine

Loo konfiguratsioonifail oma domeeni jaoks:

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 veebilehe 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 Encrypt SSL sertifikaat

SSL on kohustuslik — ilma selleta naeitab brauser "Ei ole turvaline" hoiatust ja Google karistab sind otsingutulemustes.

Certboti paigaldamine:

sudo apt install -y certbot python3-certbot-nginx

Sertifikaadi hankimine:

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

Certbot kyysib sinu e-posti aadressi ja noousolekut tingimustega. Seejaerel:

  • Hangib sertifikaadi automaatselt
  • Seadistab Nginx HTTPS-i jaoks
  • Seadistab HTTP -> HTTPS suunamise

Automaatne uuendamine:

Let's Encrypt sertifikaadid kehtivad 90 paaeva. Certbot seadistab automaatse uuendamise, kuid kontrolli:

sudo certbot renew --dry-run

Samm 5: Tulemyuyur (UFW)

UFW (Uncomplicated Firewall) kaitseb serverit soovimatute yhenduste 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) yhendused. Koik muu on blokeeritud.

Lisaturvalisus — Fail2Ban:

sudo apt install -y fail2ban
sudo systemctl enable fail2ban

Fail2Ban blokeerib automaatselt IP-d, mis yyritavad liiga palju ebaonnestunud sisselogimisi.

Samm 6: PHP paigaldamine (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-konfiguratsioon:

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 voimaldab rakendusi kaeivitada isoleeritud konteinerites.

Paigaldamine:

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

Docker Compose:

sudo apt install -y docker-compose-plugin

Naeidis — 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

Kaeivita: docker compose up -d

Samm 8: Seire ja hooldus

Serveri seire:

  • htop — reaalajas ressursside jaalgimine: sudo apt install -y htop
  • df -h — kettaruumi kontroll
  • free -m — maalu kasutus
  • journalctl -xe — suusteemi logid

Automaatsed turvapaigad:

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

See paigaldab turvapaigad automaatselt.

Varukoopiad:

Seadista automaatne varukoopia cron-jobiga:

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

Kokkuvote

VPS-serveri seadistamine Tallinnas on voimalik 30 minutiga, kui jargid neid samme: SSH yhendus, Ubuntu uuendamine, Nginx paigaldamine, Let's Encrypt SSL, UFW tulemyyur ja valikuliselt PHP voi Docker. Tulemuseks on kiire, turvaline ja taiuslikult sinu kontrolli all olev server. Igakuine kulu: 3-16 EUR solltuvalt VPS-plaanist.