Praktický návod / Prvý web s HTTPS

Nastavenie Ubuntu VPS pre prvý web s HTTPS

Nastavenie Ubuntu VPS si prejdeme na čerstvom Ubuntu 24.04 LTS. Výsledkom bude statický web s Nginx, samostatným správcom, kľúčovým prístupom SSH a HTTPS. Nakoniec overíme obnovu certifikátu a návrat webu po reštarte.

· Aktualizované · Približne 6 min čítania

Obsah návodu

Pripravte server, doménu a konzolu

Potrebujete nový Ubuntu 24.04 VPS s verejnou IPv4, SSH na porte 22, úvodným účtom so sudo a doménou, ktorú ovládate. Kľúč vytvorte ešte pred objednaním stroja. Pre už vytvorený prázdny server je nižšie vetva cez fungujúci prístup. Ak ukážkové cesty patria existujúcemu webu, zastavte sa a použite samostatné testovacie prostredie.

Príkazy pre počítač používajú Bash na Linuxe, macOS alebo WSL; príkazy pre server patria do SSH. Všade nahraďte 203.0.113.10 vlastnou IP a app.example.com vlastným hostname. Názov ubuntu nahraďte úvodným účtom poskytovateľa. Pred zmenou prístupu alebo firewallu otvorte konzolu obnovy a skontrolujte pravidlá konkrétneho obrazu.

Vytvorte kľúč a overte prvé spojenie

Na počítači vytvorte kľúč s heslovou frázou. Existujúci súbor neprepisujte; prípadný nový názov používajte v celom postupe. Súkromný kľúč zostáva na počítači.

mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pub

Nový server: teraz vytvorte Ubuntu 24.04 a do poľa SSH vložte verejný obsah súboru .pub. Potvrďte meno úvodného účtu a preskočte nasledujúce dva príkazy pre existujúci server.

Už vytvorený prázdny server: zachovajte fungujúcu reláciu. Z druhého lokálneho terminálu preneste nový verejný kľúč cez existujúce overenie. existing_vps_key nahraďte platným súkromným kľúčom; ak používate heslo alebo agenta, vynechajte príslušné -i. Nemeňte politiku overovania servera.

scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pub

V existujúcej serverovej relácii overte verejný súbor a pripojte ho k authorized_keys úvodného účtu. Príkaz zachová doterajšie záznamy aj správne oddelenie posledného riadka. Ak nemáte žiadny funkčný prístup, najprv použite obnovu poskytovateľa.

if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    printf '\n' >> ~/.ssh/authorized_keys
    cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
fi

Pri oboch vetvách pred prvým potvrdením servera porovnajte odtlačok. Pre hostiteľský kľúč Ed25519 spustite v dôveryhodnej konzole servera:

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Z počítača otvorte nové spojenie. Prijmite iba zodpovedajúci overený kľúč; pôvodný prístup zatiaľ nezatvárajte.

ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10

Z ďalšieho lokálneho terminálu preneste verejný kľúč pre samostatného správcu. Opakované prenesenie tohto dočasného verejného súboru je v poriadku.

scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pub

Vytvorte správcu a vyskúšajte sudo

Na serveri najprv vykonajte getent passwd deploy. Nemal by sa vrátiť účet. Ak existuje, zvoľte iné voľné meno a nahraďte ho v celom postupe vrátane ciest a skupín; neprepisujte cudzí authorized_keys.

Overte systém a zdroje, prezrite aktualizácie a vytvorte správcu. Nastavte silné heslo na výzvy sudo. Príkazy install nastavia vlastníctvo aj obmedzené oprávnenia kľúčového súboru.

cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keys

Na počítači sa v novom termináli prihláste ako nový správca:

ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10

V tejto novej serverovej relácii otestujte sudo. Po zadaní hesla účtu deploy má vypísať root. Pokračujte, až keď fungujú obe kontroly; pôvodný prístup zachovajte.

sudo whoami

Nainštalujte Nginx a zvoľte správny firewall

Na serveri nainštalujte a spustite Nginx. Sieťový firewall poskytovateľa a firewall Ubuntu sú samostatné vrstvy.

sudo apt install nginx
sudo systemctl enable --now nginx

V sieti poskytovateľa povoľte TCP 22 zo svojej správcovskej adresy a TCP 80/443 pre návštevníkov. Ak používate iný SSH port, zachovajte jeho pravidlo. Konzolu obnovy a funkčné SSH nechajte dostupné.

Ubuntu v Oracle Cloud: preskočte celý nasledujúci blok UFW. Zachovajte dodané iptables pravidlá vrátane iSCSI; UFW môže narušiť dôležité pravidlá obrazu aj štart systému. HTTP/HTTPS povoľte v OCI security list alebo NSG aj dokumentovaným spôsobom vo firewalle hosťa. Pravidlá nevyprázdňujte ani nenahrádzajte firewallové balíky obrazu.

Ostatné čerstvé obrazy podporujúce UFW: nasledujúci blok použite len vtedy, keď poskytovateľ UFW povoľuje a obraz nemá iný spravovaný firewall. Pred aktiváciou povoľte skutočný SSH port; tu je to 22.

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Po každej vetve skúste nové SSH spojenie. Už otvorená relácia nepotvrdzuje prijímanie nových spojení. Pred certifikátom musí fungovať aj vonkajšia HTTP kontrola v ďalšom kroku.

Publikujte stránku v samostatnej konfigurácii

Na serveri vytvorte nový koreň webu a konfiguráciu. Hostname nahraďte aj vo vnútri bloku. Zachovajte úvodzovky pri EOF: bránia shellu rozbaliť premenné Nginx, napríklad $uri. Text ukážkovej stránky je zámerne ponechaný ako v príkazovom príklade.

sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="en"><title>First deployment</title><h1>Ubuntu VPS is serving this page</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;
    root /var/www/first-site;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -t

Iba po úspešnom nginx -t načítajte konfiguráciu:

sudo systemctl reload nginx

Z počítača otestujte hostname na IP servera ešte pred zmenou DNS. Očakávajte nadpis vytvorenej stránky, nie predvolenú uvítaciu stránku Nginx.

curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/

Nastavte DNS a vydajte certifikát

Pridajte DNS A záznam s IPv4 servera. AAAA publikujte len pre fungujúce IPv6; starý záznam môže poslať návštevníkov aj overovanie certifikátu inde. Tento postup predpokladá priame DNS bez proxy.

Z počítača načítajte http://app.example.com/ bez --resolve. Keď vracia vašu stránku, na serveri nainštalujte Certbot a Nginx plugin z archívu Ubuntu. Vyžadujú komponent Universe; chybu nenájdeného balíka najprv vyriešte.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timer

Dokončite výzvy na email a podmienky. Certbot upraví konfiguráciu a presmeruje HTTP na HTTPS. Overte naplánovaný časovač obnovy; ak je neaktívny, povoľte sudo systemctl enable --now certbot.timer. Port 80 musí zostať dostupný pre overovanie a obnovu HTTP certifikátu.

Overte web zvonka a po reštarte

Na počítači skontrolujte presmerovanie, certifikát a obsah. HTTP má presmerovať na HTTPS a HTTPS má vrátiť ukážkový nadpis. Nepoužívajte -k, ktoré skryje chyby overenia certifikátu.

curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/

Kým je nasadenie skúšobné, na serveri vykonajte sudo reboot. SSH sa tým zámerne ukončí. Po návrate sa prihláste ako deploy, skontrolujte systemctl is-active nginx a zopakujte vonkajší HTTPS test. Ak sa stroj nevráti, použite konzolu.

Odstráňte konkrétnu chybu a pripravte obnovu

Na malom displeji posuňte tabuľku do strán, aby ste videli všetky stĺpce.

PríznakPrvá kontrola
SSH vypršíAdresa, oba firewally a konzola
Permission denied (publickey)Používateľ, súkromný kľúč a oprávnenia authorized_keys
Predvolená stránka NginxCieľ DNS, server_name a povolená konfigurácia
Certifikát sa nedá overiťVerejné A/AAAA a dostupný port 80
Nginx po zmene nefungujenginx -t a journalctl pre nginx

Pri probléme s prístupom pokračujte diagnostikou SSH. Súbory webu, konfiguráciu, DNS a postup opätovného nasadenia uchovávajte mimo VPS. Cvičenie obnovy súborov otestuje nezávislú kópiu bez prepísania živého webu.

Pridajte sledovanie dostupnosti a platnosti certifikátu. Toto je statický web; databáza a aplikačný runtime vyžadujú vlastné nastavenie aj konzistentnú zálohu. TLS súkromné kľúče pri zálohovaní potrebujú chránené úložisko. Merajte skutočnú záťaž, keď pridáte ďalšie služby.

Otázky a odpovede

Môžem príkazy použiť na existujúcom produkčnom webe?

Najprv použite samostatný testovací VPS. Príklad vytvára súbory, mení firewall a povoľuje Certbotu upraviť Nginx. Existujúce weby, prístup a obnovu treba vopred preskúmať.

Nainštaluje sa aj WordPress alebo databáza?

Nie. Výsledkom je statický HTTPS web. Aplikáciu, runtime a databázu pridajte samostatne s kontrolou štartu a obnovy dát.

Príklad je určený pre čerstvé Ubuntu 24.04, priame DNS a SSH na porte 22. Použite firewall podporovaný obrazom; Oracle Ubuntu musí vynechať UFW. Postup nebol overený na každom obraze poskytovateľov.

Ďalší užitočný krok