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.
VPSuntu · 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.pubNuwe 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.pubValideer 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
fiVir 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.pubMaak 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.10Kopieer 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.pubSkep 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_keysKoppel vanaf ’n nuwe terminaal op jou rekenaar as die nuwe administrateur:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Toets 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 whoamiInstalleer 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 nginxLaat 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 verboseToets 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 -tHerlaai op die bediener slegs as die konfigurasietoets slaag:
sudo systemctl reload nginxVra 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.timerVolg 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.
| Simptoom | Eerste kontroles |
|---|---|
| SSH timeout | Adres, verskaffer- en gasbrandmuur, herstelkonsole |
| Permission denied (publickey) | Gebruiker, private sleutel en authorized_keys-toestemmings |
| Nginx se verstekblad | DNS-bestemming, server_name en geaktiveerde webwerf |
| Sertifikaatverifikasie misluk | Openbare A/AAAA-rekords en poort 80 |
| Nginx faal ná ’n verandering | sudo 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.