Praktični vodič / Prvi HTTPS sajt

Podešavanje Ubuntu VPS-a za prvi sajt sa HTTPS-om

Ovo podešavanje Ubuntu VPS-a vodi od novog servera do statičkog sajta sa HTTPS-om. Napravićete zaseban administratorski nalog, podesiti Nginx i DNS, a zatim proveriti sertifikat, novu SSH prijavu i rad posle ponovnog pokretanja.

· Ažurirano · Oko 6 min čitanja

Sadržaj ovog vodiča

Šta vam je potrebno

Pripremite nov Ubuntu 24.04 VPS sa javnom IPv4, početnim sudo nalogom, SSH-om na portu 22 i domenom kojim upravljate. Za lokalne komande potreban je Bash na Linuxu, macOS-u ili WSL-u. Komande za server izvršavaju se u SSH sesiji. Ne nastavljajte ako su putanje iz primera već deo aktivnog sajta.

Svuda zamenite 203.0.113.10 adresom servera, app.example.com svojim domenom, a ubuntu početnim korisničkim imenom provajdera. Otvorite konzolu za oporavak. Pre firewall koraka proverite zahteve slike: Oracle Ubuntu ne koristi UFW granu ovog primera.

Pripremite i proverite novi ključ

Na lokalnom računaru izaberite slobodan naziv i zaštitnu lozinku. Ako datoteka već postoji, koristite drugo ime u svim sledećim koracima.

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

Ako tek kreirate VPS: pošaljite .pub ključ kroz panel pri kreiranju Ubuntu 24.04 instance i potvrdite početni nalog. Preskočite sledeća dva bloka za postojeći server.

Ako prazan VPS već radi: sačuvajte postojeću sesiju. Iz drugog lokalnog terminala kopirajte javni ključ koristeći pristup koji već radi. existing_vps_key zamenite postojećim privatnim ključem; ako koristite lozinku ili agent, izostavite taj -i argument bez izmene 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 proverite javnu datoteku i dodajte je u authorized_keys svog početnog naloga. Postojeći ključevi ostaju; dodatni novi red razdvaja i poslednji zapis bez završnog preloma. Ako nema radnog pristupa, prvo koristite provajderov 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 pre prve potvrde uporedite host ključ. U pouzdanoj konzoli servera za Ed25519 pokrenite:

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

Sa računara se prijavite novim ključem tek kada se otisci poklapaju. Originalnu sesiju zadržite.

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

Iz još jednog lokalnog terminala prenesite javni ključ za administratora koji se pravi u sledećem koraku. Ponovno kopiranje iste privremene javne datoteke je očekivano.

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

Napravite administratora sa sopstvenim pristupom

Na serveru proverite getent passwd deploy. Ako nalog postoji, izaberite drugo slobodno ime i promenite ga svuda, uključujući putanje i grupe. Ne prepisujte datoteku ključeva postojećeg korisnika.

Sledeći blok proverava sistem, nudi nadogradnje i pravi nalog. Postavite jaku lozinku za sudo. Install komande podešavaju vlasništvo i ograničene dozvole.

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

Iz novog terminala na računaru prijavite se kao novi administrator:

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

U toj novoj sesiji testirajte sudo. Posle lozinke treba da ispiše root. Dalji rad nastavite tek kada i prijava i sudo uspeju.

sudo whoami

Nginx i dve mrežne zaštite

Na serveru instalirajte Nginx. Mrežni firewall provajdera i firewall operativnog sistema proveravaju se odvojeno.

sudo apt install nginx
sudo systemctl enable --now nginx

Kod provajdera dozvolite stvarni SSH port sa svoje administrativne adrese i TCP 80/443 za posetioce. Primer koristi SSH 22. Ostavite otvorene konzolu i radnu sesiju.

Oracle Cloud Ubuntu: preskočite ceo naredni UFW blok. UFW može narušiti obavezna pravila slike i sprečiti pokretanje. Sačuvajte postojeća iptables i iSCSI pravila; za HTTP/HTTPS koristite OCI security lists ili NSG i dokumentovana pravila gosta. Ne praznite pravila i ne zamenjujte firewall pakete.

Ostale nove slike: UFW blok koristite samo kada ga provajder podržava i nema drugog obaveznog firewall mehanizma. Prvo dozvolite stvarni SSH port, pa tek onda uključite zaštitu.

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

Posle bilo koje grane proverite potpuno novu SSH vezu. Radna stara sesija ne dokazuje da je nova dozvoljena. Pre izdavanja sertifikata mora uspeti i spoljašnja HTTP provera.

Dodajte svoj Nginx sajt

Na serveru napravite nov direktorijum i zasebnu konfiguraciju. Unesite svoj domen i unutar bloka. Navodnici oko EOF sprečavaju ljusku da proširi Nginx promenljive kao što je $uri. Tekst demo HTML-a u komandi može ostati na engleskom.

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

Ponovo učitajte samo konfiguraciju koja prolazi test:

sudo systemctl reload nginx

Pre promene DNS-a proverite sa svog računara baš svoj hostname na IP adresi servera. Treba da vidite naslov primera, ne podrazumevanu Nginx stranicu.

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

Povežite domen i HTTPS

A zapis usmerite na IPv4. AAAA dodajte samo kada IPv6 radi; zastarela IPv6 adresa može odvesti proveru sertifikata drugde. Ovde DNS pokazuje direktno na server, bez proxyja.

Sa računara otvorite http://app.example.com/ bez --resolve. Kada vraća vaš sadržaj, na serveru instalirajte Certbot i Nginx dodatak iz Ubuntu arhive. Potreban je Universe; grešku nedostupnog paketa rešite pre nastavka.

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

Odgovorite na pitanja o emailu i uslovima. Certbot menja konfiguraciju i uključuje HTTP→HTTPS preusmeravanje. Ako tajmer nije aktivan, koristite sudo systemctl enable --now certbot.timer. Port 80 ostaje potreban za HTTP proveru i obnovu sertifikata.

Potvrdite rezultat i posle restarta

Na lokalnom računaru proverite preusmeravanje, sertifikat i sadržaj. Nemojte dodavati curl -k: sakrio bi grešku sertifikata.

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

Dok je server još testni, pokrenite sudo reboot na njemu. Posle očekivanog prekida SSH-a prijavite se kao deploy, proverite systemctl is-active nginx i ponovite spoljašnji HTTPS zahtev. Ako se mašina ne vrati, otvorite konzolu.

Ako provera ne uspe

Na užem ekranu pomerite tabelu vodoravno da vidite ostale kolone.

SimptomPrvo proverite
SSH timeoutAdresu i oba firewall sloja
Odbijen javni ključNalog, privatni ključ i authorized_keys
Podrazumevana Nginx stranicaDNS, server_name i uključenu konfiguraciju
Greška sertifikataA/AAAA i dostupnost porta 80
Nginx ne prihvata izmenunginx -t i journalctl log

Za prijavu koristite vodič za SSH probleme. Datoteke sajta, Nginx konfiguraciju, DNS zapise i korake ponovne instalacije sačuvajte van VPS-a. Vežba vraćanja kopije proverava datoteke bez promene aktivnog sajta.

Dodajte nadzor dostupnosti i isteka sertifikata. Baza, Node.js ili druga aplikacija nisu instalirani ovim postupkom: zahtevaju svoje servise, testove i dosledne kopije. Privatne TLS ključeve zaštitite ako ih arhivirate. Kada dodate aplikaciju, izmerite opterećenje.

Pitanja i odgovori

Da li je postupak prikladan za server sa postojećim sajtom?

Najpre ga primenite na izdvojenoj testnoj mašini. Primer stvara datoteke i menja firewall i Nginx; aktivni server zahteva pregled pristupa, sajtova i oporavka.

Šta dobijam na kraju?

Statički sajt sa HTTPS-om i proverenim pristupom. Aplikacijski runtime, bazu ili CMS dodajte zasebno.

Okruženje primera: nov Ubuntu 24.04, direktan DNS i SSH port 22. Oracle slike preskaču UFW. Postupak nije testiran na svakoj slici svakog provajdera.

Nastavite sa povezanim zadatkom