Praktični vodič / Prva HTTPS stranica

Postavljanje Ubuntu VPS-a za prvu HTTPS stranicu

Postavljanje Ubuntu VPS-a u ovom vodiču završava malom statičnom web-stranicom s Nginxom i HTTPS-om. Krećemo od SSH ključa i zasebnog administratora, a završavamo provjerom obnove certifikata i rada nakon ponovnog pokretanja.

· Ažurirano · Oko 6 min čitanja

Sadržaj vodiča

Pripremite novi poslužitelj, domenu i oporavak

Treba vam svježi Ubuntu 24.04 VPS s javnom IPv4, SSH na portu 22, početni račun sa sudo ovlastima i domena kojom upravljate. Ključ izradite prije stvaranja stroja. Ako prazan VPS već postoji, koristite put za dodavanje ključa kroz postojeći pristup. Zaustavite se ako putanje iz primjera pripadaju postojećem webu.

Naredbe za klijent izvode se u Bashu na Linuxu, macOS-u ili WSL-u. Naredbe za server pripadaju SSH sesiji. Svaki 203.0.113.10 zamijenite vlastitom IP adresom, a app.example.com svojom domenom. Početno ime ubuntu zamijenite računom koji je dao pružatelj. Otvorite konzolu za oporavak i provjerite upute za vatrozid slike; Oracle Ubuntu zahtijeva posebnu granu.

Izradite ključ i provjerite prvu prijavu

Na računalu stvorite ključ i odaberite zaporku za njega. Ako datoteka već postoji, upotrijebite drugo ime u svim koracima. Privatni ključ ostaje na računalu.

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

Novi VPS: stvorite Ubuntu 24.04 i predajte javni .pub ključ u odgovarajuće polje pružatelja. Potvrdite početno korisničko ime pa preskočite sljedeća dva bloka za postojeći stroj.

Već stvoren, prazan VPS: zadržite radnu SSH sesiju. Iz drugog terminala računala prenesite novi javni ključ koristeći postojeću provjeru identiteta. existing_vps_key zamijenite trenutačnim privatnim ključem. Za postojeću prijavu zaporkom ili agentom izostavite odgovarajući -i; ne mijenjajte politiku autentikacije servera.

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

U postojećoj sesiji na serveru provjerite učitanu javnu datoteku i dodajte je u authorized_keys početnog računa. Postojeći zapisi se čuvaju, a dodatni novi red odvaja zadnji zapis bez završnog novog reda. Ako nemate radni pristup, prvo koristite pružateljev oporavak.

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

Za oba puta prvo provjerite otisak host ključa. Za Ed25519 pokrenite u pouzdanoj konzoli poslužitelja:

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

Na računalu otvorite novu vezu s novim ključem. Prihvatite otisak samo ako se podudara. Stari pristup ostavite otvoren dok ovo ne uspije.

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

Iz drugog lokalnog terminala prenesite javni ključ za zasebnog administratora kojeg ćemo stvoriti. Ponovno kopiranje ove privremene javne datoteke je u redu.

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

Stvorite administratora i zasebno provjerite sudo

Na serveru prvo pokrenite getent passwd deploy. Račun ne bi trebao postojati. Ako postoji, odaberite slobodno ime i zamijenite ga u cijelom postupku, uključujući putanje i grupe. Nemojte zamijeniti tuđi authorized_keys.

Provjerite sustav i resurse, pregledajte nadogradnje i stvorite administratora. Postavite snažnu zaporku za sudo upite. Naredbe install postavljaju vlasništvo i ograničene dozvole datoteke ključa.

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

U novom terminalu na računalu prijavite se kao administrator:

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

U toj novoj sesiji na serveru testirajte sudo. Nakon zaporke računa deploy treba ispisati root. Nastavite tek nakon uspjeha; sačuvajte početni pristup.

sudo whoami

Instalirajte Nginx i koristite odgovarajući vatrozid

Na serveru instalirajte i pokrenite Nginx. Vatrozid pružateljeve mreže i vatrozid Ubuntu sustava zasebno utječu na pristup.

sudo apt install nginx
sudo systemctl enable --now nginx

Kod pružatelja dopustite TCP 22 iz svoje administrativne lokacije te TCP 80/443 za web-posjetitelje. Ako SSH koristi drugi port, zadržite njegovo pravilo. I dalje čuvajte radnu vezu i konzolu.

Oracle Cloud Ubuntu: preskočite cijeli sljedeći UFW blok. Očuvajte isporučena iptables pravila, uključujući iSCSI. UFW može poremetiti važna pravila i pokretanje sustava. HTTP/HTTPS dopustite kroz OCI security lists ili NSG i dokumentirana pravila vatrozida gosta. Ne praznite pravila niti zamjenjujte njegove firewall pakete.

Druge svježe slike s podrškom za UFW: ovaj blok koristite samo ako pružatelj dopušta UFW i slika ne zahtijeva drukčije upravljanje vatrozidom. Stvarni SSH port dopustite prije uključivanja; ovdje 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

Nakon odabrane grane provjerite novu SSH prijavu. Postojeća veza ne dokazuje dostupnost novih veza. Vanjska HTTP provjera iz sljedećeg koraka mora uspjeti prije certifikata.

Objavite stranicu u zasebnoj Nginx konfiguraciji

Na serveru stvorite novi korijen weba i konfiguraciju. Domenu zamijenite i unutar bloka. Zadržite navodnike oko EOF kako ljuska ne bi proširila Nginx varijable poput $uri. Tekst demonstracijske stranice ostaje kakav je u primjeru naredbe.

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

Ponovno učitajte konfiguraciju samo nakon uspješnog testa:

sudo systemctl reload nginx

S računala zatražite domenu na IP adresi prije promjene DNS-a. Očekujte naslov svoje stranice, a ne zadanu Nginx dobrodošlicu.

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

Povežite DNS i izdajte certifikat

Dodajte A zapis prema IPv4 servera. AAAA objavite samo ako IPv6 stvarno radi; stari zapis može poslati korisnike i provjeru certifikata drugdje. Ovdje DNS vodi izravno na VPS, bez proxyja.

S računala otvorite http://app.example.com/ bez --resolve. Kada vraća vašu stranicu, na serveru instalirajte Certbot i Nginx dodatak iz Ubuntu repozitorija. Potreban je Universe; prije nastavka riješite pogrešku nedostupnog paketa.

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

Slijedite upite za email i uvjete. Certbot mijenja konfiguraciju i preusmjerava HTTP na HTTPS. Provjerite tajmer obnove; ako nije aktivan, uključite sudo systemctl enable --now certbot.timer. Port 80 mora ostati dostupan za HTTP provjeru i obnovu certifikata.

Provjerite web izvana i nakon restarta

Na računalu provjerite preusmjeravanje, certifikat i sadržaj. HTTP treba voditi na HTTPS, a HTTPS vratiti vašu stranicu. Nemojte koristiti curl -k jer skriva pogreške certifikata.

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

Dok je sustav testni, na serveru pokrenite sudo reboot. SSH će se namjerno prekinuti. Nakon povratka prijavite se kao deploy, provjerite systemctl is-active nginx i ponovite vanjsku HTTPS provjeru. Ako se stroj ne vrati, koristite konzolu.

Dijagnosticirajte pogrešku i pripremite kopiju

Na malom zaslonu pomaknite tablicu vodoravno za pregled svih stupaca.

SimptomPrve provjere
SSH timeoutIP adresa, oba vatrozida i konzola
Permission denied (publickey)Korisnik, privatni ključ i authorized_keys
Zadana Nginx stranicaDNS odredište, server_name i uključena konfiguracija
Neuspjela potvrda certifikataA/AAAA i dostupnost porta 80
Nginx ne radi nakon promjenenginx -t i dnevnik journalctl za nginx

Kod problema s prijavom slijedite SSH dijagnostiku. Izvan VPS-a čuvajte datoteke, konfiguraciju, DNS zapise i postupak ponovnog postavljanja. Vježba povrata datoteka provjerava neovisnu kopiju bez promjene živog weba.

Dodajte nadzor dostupnosti i isteka certifikata. Ovo je statična stranica; baza i aplikacijsko okruženje traže vlastitu konfiguraciju i dosljednu kopiju. Privatni TLS ključevi trebaju zaštićenu pohranu ako ih kopirate. Kad dodate usluge, izmjerite njihovo opterećenje.

Pitanja i odgovori

Mogu li ovo pokrenuti na postojećem webu?

Prvo koristite zaseban testni VPS. Primjer stvara datoteke, uključuje vatrozid i dopušta Certbotu izmjenu Nginxa. Postojeći web, pristup i oporavak potrebno je zasebno pregledati.

Instalira li se WordPress ili baza?

Ne. Rezultat je statični HTTPS web. Aplikaciju i bazu dodajte poslije, uz provjeru pokretanja i povrata podataka.

Primjer je za novi Ubuntu 24.04, izravni DNS i SSH na portu 22. Oracle Ubuntu mora preskočiti UFW. Postupak nije testiran na svim slikama pružatelja.

Sljedeći koristan korak