Praktiese gids / Ubuntu VPS-opstelling

Ubuntu VPS-opstelling met SSH, Nginx en HTTPS

Stel ’n Ubuntu 24.04 LTS VPS op en publiseer ’n klein statiese webwerf met Nginx en HTTPS. Jy skep ’n aparte administrateur, toets SSH-sleutels en sertifikaathernuwing, en kyk of die webwerf ná ’n herbegin terugkom.

· Bygewerk: · Leestyd: sowat 7 min

In hierdie gids

Berei bediener, domein en hersteltoegang voor

Gebruik ’n nuwe Ubuntu 24.04 VPS met openbare IPv4, SSH op poort 22, ’n aanvanklike rekening met sudo en ’n domein wat jy beheer. Skep eers die sleutel in die volgende afdeling. Vir ’n leë VPS wat reeds bestaan, gebruik die alternatiewe roete deur werkende toegang. Kliëntopdragte gebruik Bash op Linux, macOS of WSL; bedieneropdragte loop binne SSH. Stop as die voorbeeldpaaie aan ’n bestaande ontplooiing behoort.

Vervang 203.0.113.10 en app.example.com oral met jou adres en gasheernaam; dit is dokumentasievoorbeelde. Vervang ubuntu met die verskaffer se aanvanklike gebruiker. Maak die herstelkonsole oop voordat jy toegang of brandmure verander. Gaan die stelselbeeld se instruksies na; Oracle Ubuntu vereis ’n ander benadering as UFW.

Skep die sleutel vóór die VM of voeg dit met bestaande toegang by

Skep op jou rekenaar ’n toegewyde sleutel met ’n wagfrase. As die lêernaam bestaan, kies oral ’n ander naam. Die .pub-lêer is openbaar; die private sleutel bly op jou rekenaar.

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

Nuwe VPS: skep nou die Ubuntu 24.04-bediener en gee die openbare sleutel in die verskaffer se SSH-veld. Bevestig die gebruiker en gaan na die bedienervingerafdruk. Slaan die opdragte vir ’n bestaande VPS oor.

Bestaande leë VPS: hou jou werkende SSH-sessie oop. Kopieer die openbare sleutel uit ’n ander plaaslike terminaal met die bestaande aanmeldmetode. Vervang existing_vps_key met die huidige private lêer. As jy ’n wagwoord of agent gebruik, laat -i ~/.ssh/existing_vps_key weg; moenie die bediener se aanmeldbeleid verander nie.

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

Valideer die opgelaaide openbare sleutel in die bestaande bedienersessie en voeg dit by die aanvanklike gebruiker se authorized_keys. Die byvoeging behou bestaande inskrywings en hanteer ’n laaste reël sonder ’n newline. Gebruik dit net vir jou eie aanvanklike rekening. Sonder werkende toegang moet jy eers die verskaffer se herstelproses volg.

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

Vir albei roetes: vergelyk die eerste verbinding se vingerafdruk met die ooreenstemmende openbare bedienersleutel in die vertroude herstelkonsole. Vir Ed25519, voer dit in daardie konsole uit:

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

Maak op jou rekenaar ’n nuwe verbinding met die nuwe sleutel. Hou die oorspronklike toegang oop totdat dit werk.

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

Kopieer uit nog ’n plaaslike terminaal die openbare sleutel vir die aparte administrateur wat volgende geskep word. Jy kan hierdie tydelike openbare lêer weer kopieer as dit reeds opgelaai is.

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

Skep en toets ’n aparte administrateur

Kontroleer op die bediener eers getent passwd deploy. Geen rekening moet terugkom nie. As deploy bestaan, kies ’n ongebruikte naam en vervang dit oral, ook in tuispaaie en groepname. Moenie ’n ander gebruiker se sleutellêer vervang nie.

Bevestig die stelselbeeld en hulpbronne, hersien opgraderings en skep die rekening. Kies ’n sterk wagwoord vir sudo. Die install-opdragte stel eienaarskap en beperkte sleuteltoestemmings.

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

Koppel vanaf ’n nuwe terminaal op jou rekenaar as die nuwe administrateur:

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

Toets sudo binne dié nuwe bedienersessie. Dit moet root wys nadat deploy se wagwoord aanvaar is. Gaan hier voort wanneer albei toetse werk; behou die oorspronklike toegang.

sudo whoami

Installeer Nginx en gebruik die regte brandmuur

Installeer Nginx op die bediener. Beide die gasstelsel se brandmuur en die verskaffer se netwerkreëls bepaal toegang. Hou konsole en werkende SSH beskikbaar.

sudo apt install nginx
sudo systemctl enable --now nginx

Laat by die verskaffer TCP 22 vanaf jou administrasieligging en TCP 80/443 vir besoekers toe. Behou jou werklike SSH-poort as dit anders is. Netwerkreëls open nie ’n poort wat die gasstelsel blokkeer nie.

Oracle Cloud Ubuntu: slaan die hele UFW-blok oor. Oracle waarsku dat UFW noodsaaklike reëls kan ontwrig en aanskakeling kan verhinder. Behou die bestaande iptables-reëls, ook vir iSCSI-boot- en blokvolumes. Gebruik OCI security lists of NSG en die gedokumenteerde gasbrandmuurreëls vir HTTP/HTTPS. Moenie reëls leegmaak of brandmuurpakkette vervang nie.

Ander nuwe Ubuntu-stelselbeelde: gebruik UFW net as die verskaffer dit ondersteun en geen ander bestuurde brandmuur vereis nie. Laat die werklike SSH-poort toe voordat jy UFW aktiveer; die voorbeeld gebruik 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

Toets ná enige roete ’n nuwe SSH-aanmelding. ’n Oop sessie bewys nie dat ’n nuwe verbinding werk nie. Die eksterne HTTP-toets hieronder moet ook slaag vóór die sertifikaat. Behou bestaande aanmeldmetodes terwyl jy foute ondersoek.

Publiseer ’n aparte Nginx-webwerf

Skep op die bediener ’n nuwe dokumentwortel en konfigurasie. Vervang die gasheernaam in die blok. Behou die aangehaalde EOF-merkers sodat die shell nie Nginx-veranderlikes soos $uri uitbrei nie.

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

Herlaai op die bediener slegs as die konfigurasietoets slaag:

sudo systemctl reload nginx

Vra vanaf jou rekenaar dié gasheernaam by die VPS-adres vóór jy DNS verander. Verwag jou opskrif, nie Nginx se verstekblad nie.

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

Koppel DNS en kry HTTPS

Skep ’n DNS A-rekord na die VPS se IPv4. Publiseer AAAA net wanneer IPv6 op dié bediener werk; ’n ou AAAA kan besoekers en sertifikaatverifikasie elders stuur. Hier wys DNS direk na die VPS sonder proxy.

Vra op jou rekenaar http://app.example.com/ sonder --resolve. Gaan voort as jou bladsy verskyn. Installeer op die bediener Ubuntu se Certbot-pakkette en Nginx-inprop. Universe moet beskikbaar wees; los ontbrekende pakkette op voordat jy voortgaan.

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

Volg die e-pos- en voorwaardestappe. Certbot wysig hierdie webwerf en aktiveer HTTP→HTTPS. Kontroleer die hernuwingstimer; aktiveer dit indien nodig met sudo systemctl enable --now certbot.timer. Hou poort 80 bereikbaar vir HTTP-verifikasie en hernuwing.

Toets van buite en ná ’n herbegin

Kontroleer op jou rekenaar die herleiding, sertifikaat en inhoud. HTTP moet na HTTPS lei; HTTPS moet jou opskrif sonder sertifikaatfoute teruggee. Moenie curl -k gebruik om verifikasiefoute weg te steek nie.

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

Terwyl dit nog ’n toetsontplooiing is, voer sudo reboot op die bediener uit. Koppel daarna as deploy, toets systemctl is-active nginx en herhaal die eksterne HTTPS-versoek. Herbegin sluit SSH doelbewus; gebruik die konsole as die masjien nie terugkom nie.

Ondersoek foute en bewaar die ontplooiing

Skuif die tabel sywaarts op klein skerms om al die kolomme te sien.

SimptoomEerste kontroles
SSH timeoutAdres, verskaffer- en gasbrandmuur, herstelkonsole
Permission denied (publickey)Gebruiker, private sleutel en authorized_keys-toestemmings
Nginx se verstekbladDNS-bestemming, server_name en geaktiveerde webwerf
Sertifikaatverifikasie mislukOpenbare A/AAAA-rekords en poort 80
Nginx faal ná ’n veranderingsudo nginx -t en sudo journalctl -u nginx -n 50 --no-pager

Volg die SSH-diagnose voordat jy toegang verander. Bewaar webwerflêers, Nginx-konfigurasie, DNS en herboustappe buite die VPS en herstel dit apart. Private TLS-sleutels verg beskermde berging. Stel waarskuwings vir beskikbaarheid en sertifikaatverval op; een suksesvolle toets monitor nie môre nie.

Die rugsteunoefening toets ’n onafhanklike kopie sonder om die werkende webwerf te oorskryf. Volledige herstel benodig ook ander bates, sertifikate en dienste. Hierdie ontplooiing bedien statiese lêers; ’n runtime of databasis het eie konfigurasie en rugsteun nodig. Gebruik die meetgids wanneer jy dit byvoeg.

Gereelde vrae

Kan ek dit op ’n bestaande webwerf uitvoer?

Gebruik eers ’n aparte toets-VPS. Die voorbeeld skep lêers, stel ’n brandmuur in en laat Certbot Nginx wysig. ’n Bestaande bediener vereis ’n hersiening van webwerwe, toegang en herstel.

Installeer dit WordPress, Node.js of ’n databasis?

Nee. Dit lewer ’n statiese HTTPS-webwerf. Behou dié werkende basis en voeg dan die runtime by met toetse vir aanskakeling, gesondheid en dataherstel.

Toets nuwe toegang en eksterne HTTPS voordat jy die vorige herstelroete laat vaar.

Amptelike bronne

  1. Dokument 1: ubuntu.com
  2. Dokument 2: ubuntu.com
  3. Dokument 3: ubuntu.com
  4. Dokument 4: eff-certbot.readthedocs.io
  5. Dokument 5: packages.ubuntu.com
  6. Dokument 6: docs.oracle.com

Verwante gidse