Πρακτικός οδηγός / Πρώτος ιστότοπος

Ρύθμιση Ubuntu VPS για τον πρώτο ιστότοπο με HTTPS

Η ρύθμιση Ubuntu VPS ξεκινά εδώ από νέα μηχανή Ubuntu 24.04 LTS και καταλήγει σε μικρό στατικό site με Nginx και HTTPS. Χρειάζεσαι δημόσια διεύθυνση, δικό σου domain, αρχικό χρήστη με sudo και κονσόλα ανάκτησης. Σε υπάρχουσα παραγωγική εγκατάσταση, έλεγξε πρώτα τις ρυθμίσεις και τις διαδρομές.

· Ενημέρωση: · Περίπου 4 λεπτά ανάγνωσης

Περιεχόμενα

Ετοίμασε το κλειδί και επιβεβαίωσε τον server

Οι τοπικές εντολές εκτελούνται σε Bash σε Linux, macOS ή WSL. Δημιούργησε το κλειδί πριν παραγγείλεις τη νέα VM. Αν το αρχείο υπάρχει ήδη, χρησιμοποίησε άλλο όνομα σε όλα τα βήματα και πρόσθεσε συνθηματικό.

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

Δώσε μόνο το δημόσιο .pub στο πεδίο SSH της νέας μηχανής. Το παράδειγμα χρησιμοποιεί αρχικό χρήστη ubuntu και θύρα 22· έλεγξε τις τιμές του παρόχου. Από την αξιόπιστη κονσόλα ανάκτησης διάβασε το fingerprint του host key:

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

Στον υπολογιστή σου αντικατάστησε την 203.0.113.10 με την πραγματική διεύθυνση. Πριν αποδεχθείς το κλειδί, σύγκρινε αλγόριθμο και SHA256 με την κονσόλα.

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

Από άλλο τοπικό τερματικό ανέβασε το δημόσιο κλειδί για τον ξεχωριστό διαχειριστή που θα δημιουργήσεις:

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

Κράτησε διαθέσιμη την αρχική πρόσβαση και την κονσόλα. Η δημόσια διεύθυνση και το app.example.com που ακολουθεί είναι παραδείγματα τεκμηρίωσης, όχι τιμές για αντιγραφή χωρίς αλλαγή.

Δημιούργησε διαχειριστή και δοκίμασε νέα συνεδρία

Στον server έλεγξε πρώτα getent passwd deploy. Αν υπάρχει ήδη ο χρήστης, επίλεξε αχρησιμοποίητο όνομα και άλλαξε παντού ομάδα και home directory. Μην αντικαταστήσεις το αρχείο κλειδιών κάποιου υπάρχοντος χρήστη.

Επιβεβαίωσε σύστημα και πόρους, διάβασε τις αναβαθμίσεις και δημιούργησε τον λογαριασμό. Βάλε ισχυρό κωδικό για τα αιτήματα sudo.

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

Από νέο τερματικό στον υπολογιστή σου μπες ως ο νέος χρήστης:

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

Μέσα στη νέα συνεδρία του server έλεγξε sudo. Η εντολή πρέπει να επιστρέψει root αφού δεχτεί τον κωδικό του deploy:

sudo whoami

Συνέχισε από αυτή τη συνεδρία μόνο όταν λειτουργούν και οι δύο έλεγχοι. Μην απενεργοποιήσεις προηγούμενο τρόπο εισόδου πριν επιβεβαιώσεις τον αντικαταστάτη του.

Εγκατάστησε Nginx με το κατάλληλο firewall

Στον νέο server, αφού ολοκληρωθεί η αρχικοποίηση, εγκατέστησε και έλεγξε το Nginx:

sudo apt install nginx
sudo systemctl enable --now nginx

Στο firewall του παρόχου επέτρεψε την πραγματική θύρα SSH από τη θέση διαχείρισής σου και TCP 80/443 για επισκέπτες. Το firewall του guest αποτελεί ξεχωριστό επίπεδο· οι κανόνες του δικτύου δεν το παρακάμπτουν.

Εικόνες Ubuntu στο Oracle Cloud: παράλειψε ολόκληρο το παρακάτω block UFW. Μπορεί να επηρεάσει ουσιώδεις κανόνες της εικόνας, μαζί με το iSCSI για boot και block volumes. Διατήρησε τους υπάρχοντες κανόνες και χρησιμοποίησε την τεκμηριωμένη ρύθμιση OCI και guest για HTTP/HTTPS. Μην αδειάσεις τα iptables και μην αντικαταστήσεις τα πακέτα firewall.

Άλλες νέες εικόνες: χρησιμοποίησε αυτό το block μόνο όταν ο πάροχος υποστηρίζει UFW. Επέτρεψε πρώτα την πραγματική θύρα SSH· εδώ είναι η 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

Μετά από οποιαδήποτε διαδρομή, δοκίμασε νέα είσοδο SSH. Η παλιά συνεδρία δεν ελέγχει τη δυνατότητα νέας σύνδεσης. Διατήρησε την κονσόλα και την προηγούμενη πρόσβαση όσο εξετάζεις ένα πρόβλημα.

Δημοσίευσε τη σελίδα σε ξεχωριστό Nginx site

Οι διαδρομές και το όνομα first-site πρέπει να είναι διαθέσιμα στον νέο server. Αντικατάστησε το app.example.com με το hostname σου. Κράτησε τα εισαγωγικά γύρω από το EOF ώστε το shell να μη μεταβάλει τις μεταβλητές Nginx, όπως το $uri.

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

Κάνε reload μόνο αν το nginx -t πετύχει:

sudo systemctl reload nginx

Στον υπολογιστή σου έλεγξε το hostname πάνω στην IP του server πριν αλλάξεις DNS. Αντικατάστησε και τα δύο στοιχεία:

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

Περίμενε τον τίτλο της δικής σου σελίδας. Ένα HTTP 200 με την προεπιλεγμένη σελίδα Nginx δεν επιβεβαιώνει το σωστό site.

Σύνδεσε DNS και πιστοποιητικό HTTPS

Η διαδικασία υποθέτει DNS απευθείας στη VM, χωρίς proxy. Το A record δείχνει στη δημόσια IPv4. Πρόσθεσε AAAA μόνο αν η IPv6 λειτουργεί και εξυπηρετεί το ίδιο site· μια παλιά διεύθυνση μπορεί να οδηγήσει αλλού επισκέπτες και έλεγχο πιστοποιητικού.

Από τον υπολογιστή σου ζήτησε το http://app.example.com/ με το δικό σου όνομα και χωρίς --resolve. Όταν εμφανιστεί η σωστή σελίδα, εγκατέστησε στον server την έκδοση Certbot και το plugin Nginx από τα αποθετήρια Ubuntu. Χρειάζεται Universe· διόρθωσε τυχόν έλλειψη πακέτου πριν συνεχίσεις.

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

Ακολούθησε τα αιτήματα email και αποδοχής όρων. Το Certbot αλλάζει το site και προσθέτει ανακατεύθυνση HTTP προς HTTPS. Έλεγξε τη δοκιμή ανανέωσης και το certbot.timer. Αν ο timer είναι ανενεργός, εξέτασε την αιτία και ενεργοποίησέ τον με sudo systemctl enable --now certbot.timer. Η θύρα 80 πρέπει να παραμένει προσβάσιμη για ανανέωση μέσω HTTP.

Έλεγξε εξωτερικά και μετά από επανεκκίνηση

Από τον υπολογιστή σου έλεγξε ανακατεύθυνση, πιστοποιητικό και περιεχόμενο. Μην προσθέσεις curl -k, γιατί κρύβει σφάλματα επαλήθευσης πιστοποιητικού.

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

Το HTTP πρέπει να ανακατευθύνει σε HTTPS και εκεί να εμφανίζεται η δική σου σελίδα με έγκυρο πιστοποιητικό. Αν δημοσιεύεις IPv6, έλεγξε και αυτή τη διαδρομή.

Όσο ο server είναι ακόμη δοκιμαστικός, εκτέλεσε sudo reboot. Μπες ξανά ως deploy, έλεγξε systemctl is-active nginx και επανάλαβε το εξωτερικό αίτημα. Η επανεκκίνηση διακόπτει σκόπιμα το SSH· χρησιμοποίησε κονσόλα αν η VM δεν επανέλθει.

Κράτησε ανακτήσιμη τη λειτουργική εγκατάσταση

Σε μικρή οθόνη, σύρε τον πίνακα οριζόντια για να δεις όλες τις στήλες.

ΣύμπτωμαΠρώτος έλεγχος
SSH timeoutΔιεύθυνση, firewalls και κονσόλα
Permission deniedΧρήστης, κλειδί και δικαιώματα
Προεπιλεγμένη σελίδα NginxDNS, server_name και ενεργό site
Αποτυχία πιστοποιητικούΔημόσια A/AAAA και πρόσβαση στη θύρα 80
Nginx δεν ξεκινάnginx -t και journal υπηρεσίας

Για αποτυχία πρόσβασης ακολούθησε τη διάγνωση με το ακριβές μήνυμα SSH. Φύλαξε αρχεία, ρυθμίσεις DNS και βήματα επαναδημιουργίας εκτός VPS. Κάνε ξεχωριστή δοκιμή επαναφοράς και βάλε ειδοποιήσεις διαθεσιμότητας, αποτυχίας backup και λήξης πιστοποιητικού.

Αυτό είναι στατικό site. WordPress, Node.js και βάση δεδομένων χρειάζονται δική τους διαμόρφωση, έλεγχο συμβατότητας και συνεπή ανάκτηση δεδομένων. Σε μεταφορά υπάρχοντος site, σχεδίασε τελικό συγχρονισμό, email, uploads και προγραμματισμένες εργασίες, κρατώντας την παλιά υπηρεσία μέχρι να ελεγχθεί η νέα.

Για νέο Ubuntu 24.04, απευθείας DNS και SSH στη θύρα 22 του παραδείγματος. Σε OCI Ubuntu παραλείπεται το UFW. Η διαδικασία βασίζεται σε τεκμηρίωση και δεν δηλώνεται δοκιμασμένη σε κάθε εικόνα παρόχου.

Συχνές ερωτήσεις

Μπορώ να το εφαρμόσω σε site που ήδη λειτουργεί;

Δοκίμασέ το πρώτα σε άλλη VM. Οι εντολές δημιουργούν αρχεία, μπορεί να ενεργοποιούν firewall και αφήνουν το Certbot να αλλάξει το Nginx. Μια υπάρχουσα εγκατάσταση θέλει έλεγχο της κατάστασής της.

Εγκαθίσταται και βάση δεδομένων;

Όχι, το παράδειγμα δημοσιεύει στατικά αρχεία με HTTPS. Πρόσθεσε runtime και βάση ξεχωριστά, μαζί με έλεγχο εκκίνησης, λειτουργίας και ανάκτησης.

Αρκεί ένα επιτυχημένο HTTPS αίτημα;

Επιβεβαιώνει εκείνη τη διαδρομή εκείνη τη στιγμή. Δεν αντικαθιστά παρακολούθηση, ενημερώσεις, δοκιμή επαναφοράς ή έλεγχο της αυριανής ανανέωσης.

Το επόμενο χρήσιμο βήμα

Πόροι μαζί με σχέδιο επαναφοράς.

Σύγκρινε την προσφορά με τις απαιτήσεις της εφαρμογής και τους τρέχοντες όρους του παρόχου.

Δες διαθέσιμους server

Σύνδεσμος συνεργάτη · Έλεγξε την προσφορά πριν παραγγείλεις.