4.6.1.1 CT-101-DEVSRV
4.6.1 CT-101-DEVSRV | VuePress Development Environment
Στο ακόλουθο πλαίσιο, ομαδοποιούνται οι βασικές παράμετροι και η υφιστάμενη διαμόρφωση του συστήματος. Οι πληροφορίες αυτές λειτουργούν ως πρωτεύων οδηγός για έναν διαχειριστή συστήματος, καλύπτοντας στοιχεία όπως: ταυτότητα συστήματος (ID), διαχείριση χρηστών (Users), εγκατεστημένες εφαρμογές (Apps), Firewall και ρύθμιση δικτύου (DNAT), καθώς και την κατάσταση Snapshot_Level_0. Για την ενίσχυση της διαχειριστικής ικανότητας, στο τέλος κάθε καρτέλας (Tab) παρέχεται αναδιπλούμενο πλαίσιο (Εντολές τερματικού), το οποίο περιέχει τις βασικές σχετικές εντολές για το αντίστοιχο θέμα.
4.6.1.1 Τεχνικές πληροφορίες
Αναγνώριση Συστήματος
Τα θεμελιώδη τεχνικά χαρακτηριστικά του Container CT-101-DEVSRV-UBU2404.
| Στοιχείο | Τιμή |
|---|---|
| Λειτουργικό Σύστημα (OS) | Ubuntu 24.04.3 LTS x86_64 |
| Όνομα Κόμβου (Hostname) | ct-101-devsrv |
| Πυρήνας (Kernel) | Linux 6.8.0-85-generic |
| CPU | 4 cores |
| Μνήμη (Memory) | 4.00 GiB |
| Εικονική Μνήμη (Swap) | 2.00 GiB |
| Τοπική IP (enp0s3) | 10.11.100.101/24 |
| Τοπικές Ρυθμίσεις (Locale) | en_US.UTF-8 |
| Ζώνη Ώρας (Timezone) | Europe/Athens |
Καταγραφή Χρηστών
Απεικόνιση των λογαριασμών χρηστών και της πολιτικής πρόσβασης (PoLP) της υποδομής.
| Χρήστης | Ρόλος/Περιγραφή | Κωδικός |
|---|---|---|
| root | Ο βασικός χρήστης της εγκατάστασης και ελεύθερης πρόσβασης στο terminal / console. | N/A (Απενεργοποιημένος/Περιορισμένος) |
| digilady | Ο Sysadmin του συστήματος, με δικό του φάκελο στο home. | 3edc+^YHN |
Δεν έχει ρυθμιστεί Απομακρυσμένης Πρόσβασης
Καταγραφή Εργαλείων Υποδομής
Εφαρμογές και βοηθήματα που εγκαταστάθηκαν επιπρόσθετα για την ανάπτυξη, παρακολούθηση και διαχείριση της πτυχιακής.
| ΑΑ | Εφαρμογή | Χρήση | Πρόσβαση | Παρατηρήσεις |
|---|---|---|---|---|
| 1. | Fastfetch | Πληροφορίες Συστήματος Terminal | fastfetch | bash command |
| 2. | Rsync | Βοήθημα απομακρυσμένης μεταφοράς αρχείων | rsync | bash command |
| 3. | Webmin | Διαχείριση Διακομιστή μέσω Web | https://192.168.1.146:10101 | Web access |
| 4. | VuePress | Υποδομή Ανάπτυξης Τεκμηρίωσης | start-vue-digilady | Command Line |
Ο παρακάτω πίνακας παρουσιάζει τη συνολική διαμόρφωση του τείχους προστασίας (UFW) στον Host Server. Οι κανόνες διαχωρίζονται σε Είσοδος (Input) για την απευθείας πρόσβαση στον Host και Δρομολόγηση (Forwarding) για τη δικτύωση των LXD containers.
| Κατηγορία | Πρωτόκολλο/Θύρα (To) | Ενέργεια (Action) | Πηγή (From) | Διεπαφή (Interface) | Περιγραφή/Σκοπός |
|---|---|---|---|---|---|
| I. Είσοδος (Input) | 10000 | ALLOW | Anywhere | Any | Πρόσβαση στο Webmin (Διεπαφή διαχείρισης). |
| 8080 | ALLOW | Anywhere | Any | Πρόσβαση στον VuePress Development Server. | |
| Any | ALLOW | Anywhere | lxdbr0 | Εισερχόμενη κίνηση στη γέφυρα lxdbr0 (Επικοινωνία Host $\to$ Containers). | |
| II. Δρομολόγηση (Routing) | Any | ALLOW FWD | Anywhere | lxdbr1 | Δρομολόγηση κίνησης μεταξύ των Containers στη γέφυρα lxdbr1. |
| Any | ALLOW FWD | Anywhere | lxdbr0 | Δρομολόγηση κίνησης μεταξύ των Containers στη γέφυρα lxdbr0. | |
| Any | ALLOW FWD | lxdbr0 | Anywhere | Εξερχόμενη δρομολόγηση (NAT) για πρόσβαση των Containers (lxdbr0) στο Internet. |
Μετάφραση Διευθύνσεων Δικτύου (DNAT)
Αντιστοίχιση των θυρών του Host Server στις υπηρεσίες που φιλοξενούνται εντός των Containers.
| Host IP | Host Port | Container IP | Container Port | Reason |
|---|---|---|---|---|
| 192.168.1.146 | 10101 | 10.11.100.101 | 10000 | DEVSRV - Webmin Panel |
| 192.168.1.146 | 1010 | 10.11.100.101 | 8080 | Vuepress Dev Mode Web |
Σημεία Ανάκτησης Συστήματος (Recovery Points)
Καταγραφή των βασικών Snapshots του DL-THESIS-SRV για γρήγορη επαναφορά (Rollback) σε προκαθορισμένα ασφαλή σημεία.
| Όνομα | Περιγραφή | Ημερομηνία Δημιουργίας |
|---|---|---|
| Αρχικο DL-THESIS_SRV | Αρχικο DL-THESIS_SRV σε περιπτωση λαθους επιστροφη εδω. | 10 Sep 2025 07:31 μ.μ. |
| First-Level-Ready | Περιέχει τους βασικούς χρήστες με ρυθμισμένους κωδικούς/δικαιώματα-ομάδες και όλα τα ενημερωμένα πακέτα (updates). | 20 Sep 2025 11:44 π.μ. |
4.6.1.2 Αρχική Διαμόρφωση και Ενίσχυση Ασφάλειας (Hardening)
Η εγκατάσταση του βασικού λειτουργικού συστήματος (OS) ακολουθήθηκε από μία σειρά ενεργειών για τη βελτιστοποίηση, την επικαιροποίηση και την ενίσχυση της ασφάλειας του Host Server. Η διαδικασία αυτή είναι κρίσιμη για τη διασφάλιση της σταθερής λειτουργίας του περιβάλλοντος VuePress και των LXD containers.
4.6.1.2.1 Ρυθμίσεις Συστήματος και Επικαιροποίηση
Πριν από την έναρξη της εγκατάστασης των επιμέρους υπηρεσιών, πραγματοποιήθηκαν οι απαραίτητες ρυθμίσεις ζώνης ώρας και η πλήρης αναβάθμιση του συστήματος, συμπεριλαμβανομένου του πυρήνα (Kernel).
Η εντολή timedatectl χρησιμοποιήθηκε για τον ακριβή συγχρονισμό του συστήματος. Ακολούθησε η ανανέωση του ευρετηρίου πακέτων και η πλήρης αναβάθμιση του συστήματος:
# Θέτει τη ζώνη ώρας
timedatectl set-timezone Europe/Athens
# Ανανέωση ευρετηρίου και πλήρης αναβάθμιση
apt update -y
apt dist-upgrade
# Απαιτείται άμεση επανεκκίνηση για την εφαρμογή των αλλαγών στον πυρήνα
reboot
4.6.1.2.2 Διαχείριση Λογαριασμών Χρηστών
Για λόγους ασφαλείας, δημιουργήθηκε ένας νέος λογαριασμός διαχειριστή (digilady) και αφαιρέθηκε ο προεπιλεγμένος λογαριασμός. Ο νέος χρήστης εντάχθηκε στην ομάδα sudo, λαμβάνοντας τα απαραίτητα προνόμια διαχειριστή:
# Δημιουργία νέου χρήστη και ορισμός κωδικού
adduser digilady
# Παραχώρηση δικαιωμάτων διαχειριστή (sudo privileges)
usermod -aG sudo digilady
# Διαγραφή του default λογαριασμού (πρέπει να εκτελεστεί από τον νέο χρήστη digilady)
deluser ubuntu --remove-home
4.6.1.2.3 Ενίσχυση Ασφάλειας Δικτύου (UFW)
Για τη διασφάλιση των υπηρεσιών και των LXD containers, ενεργοποιήθηκε το UFW (Uncomplicated Firewall). Ιδιαίτερη έμφαση δόθηκε στους κανόνες δρομολόγησης (routing) που αφορούν τη δικτυακή γέφυρα lxdbr0, ώστε να επιτραπεί η απρόσκοπτη επικοινωνία μεταξύ του host και των guests, καθώς και η πρόσβαση των containers στο Διαδίκτυο:
# Ενεργοποίηση του UFW (αρχικά)
ufw enable
# Ρυθμίσεις για την επικοινωνία Host/Container (lxdbr0 bridge)
ufw allow in on lxdbr0 comment 'Επιτρέπει την εισερχόμενη κίνηση στη γέφυρα lxdbr0'
ufw route allow in on lxdbr0 comment 'Επιτρέπει τη δρομολόγηση κίνησης εντός της γέφυρας'
ufw route allow out on lxdbr0 comment 'Επιτρέπει τη δρομολόγηση κίνησης προς το εξωτερικό δίκτυο'
ufw allow 8080 comment 'Επιτρέπει την προσβαση στον διακομιστή της ανάπτυξη'
# Επαναφορά του UFW για εφαρμογή των κανόνων
ufw enable
4.6.1.2.4 Εγκατάσταση και Ασφάλεια Webmin
Για την ευκολότερη διαχείριση του server, εγκαταστάθηκε το Webmin. Η εγκατάσταση έγινε μέσω του επίσημου αποθετηρίου, ακολουθώντας τα συνιστώμενα βήματα. Μετά την εγκατάσταση, έγινε άνοιγμα της θύρας 10000 στο τείχος προστασίας:
# Κατέβασμα και εκτέλεση του setup script
curl -o webmin-setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repos.sh
sh webmin-setup-repos.sh
# Εγκατάσταση του πακέτου Webmin
apt-get install webmin --install-recommends -y
# Άνοιγμα της θύρας 10000 στο UFW και εφαρμογή
ufw allow 10000 comment 'Webmin'
ufw reload
4.6.1.2.5 Εγκατάσταση και Χρήση Fastfetch για Διαγνωστικά
Ως συμπληρωματικό διαγνωστικό εργαλείο για την εξαγωγή πληροφοριών συστήματος, εγκαθίσταται το βοηθητικό πρόγραμμα Fastfetch. Το Fastfetch αποτελεί μία σύγχρονη και ταχύτατη εφαρμογή (γραμμένη σε C), η οποία συλλέγει και παρουσιάζει τις κρίσιμες παραμέτρους του συστήματος (όπως την έκδοση του πυρήνα, τη χρήση της μνήμης RAM, τις πληροφορίες της CPU και το θέμα του τερματικού) με συνοπτικό και ευανάγνωστο τρόπο. Η χρήση του είναι ιδιαίτερα χρήσιμη για τη γρήγορη τεκμηρίωση της κατάστασης του server, καθώς παρέχει όλες τις απαραίτητες πληροφορίες σε μία και μόνο έξοδο. Η διαδικασία εγκατάστασης πραγματοποιείται μέσω του προσωπικού αποθετηρίου (PPA) του προγραμματιστή:
# Προσθήκη του προσωπικού αποθετηρίου (PPA) του Fastfetch
sudo add-apt-repository ppa:zhangsongcui3371/fastfetch
# Ενημέρωση της λίστας των διαθέσιμων πακέτων
sudo apt update
# Εγκατάσταση του πακέτου fastfetch
sudo apt install fastfetch -y
4.6.1.3 Υλοποίηση Περιβάλλοντος Ανάπτυξης VuePress
Η αρχιτεκτονική του περιβάλλοντος ανάπτυξης για το MyThesis βασίστηκε στον Static Site Generator (SSG), VuePress, χρησιμοποιώντας το σύγχρονο VuePress Theme Hope. Η διαδικασία εγκατάστασης του framework και των απαραίτητων επεκτάσεων αναλύθηκε διεξοδικά στα Κεφάλαια 5.6 και 5.7.
4.6.1.3.1 Εγκατάσταση Node.js μέσω NVM
Αυτό το πρώτο block κώδικα περιγράφει τη διαδικασία εγκατάστασης του Node Version Manager (NVM) και την εγκατάσταση της σταθερής έκδοσης 24 του Node.js. Η χρήση του NVM εξασφαλίζει ότι ο server μπορεί εύκολα να διαχειριστεί πολλαπλές εκδόσεις Node.js στο μέλλον.
# Μετάβαση στον προσωπικό κατάλογο του χρήστη
cd ~
# Download and install nvm:
# Κατεβάζει το επίσημο script εγκατάστασης του NVM (Node Version Manager)
# και το εκτελεί μέσω 'bash'. Το NVM είναι απαραίτητο για τη διαχείριση εκδόσεων Node.js.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# in lieu of restarting the shell
# Φόρτωση των ρυθμίσεων του NVM στην τρέχουσα συνεδρία του Shell.
# Αυτό είναι απαραίτητο ώστε οι επόμενες εντολές 'nvm' να λειτουργήσουν άμεσα,
# χωρίς να χρειαστεί επανεκκίνηση του τερματικού.
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
# Εγκαθιστά την πιο πρόσφατη έκδοση του Node.js της κύριας γραμμής 24.
# Η έκδοση 24 είναι LTS (Long Term Support), εξασφαλίζοντας σταθερότητα.
nvm install 24
# Verify the Node.js version:
# Επαλήθευση της εγκατεστημένης έκδοσης Node.js.
node -v # Should print "v24.x.x".
# Verify npm version:
# Επαλήθευση της έκδοσης του npm (Node Package Manager).
npm -v # Should print την αντίστοιχη έκδοση npm.
4.6.1.3.2 Δημιουργία Project VuePress & Εγκατάσταση Θέματος
Αυτό το block δημιουργεί τη δομή καταλόγων για το MyThesis και πραγματοποιεί την αρχική ρύθμιση του project χρησιμοποιώντας το VuePress Theme Hope.
# Δημιουργία της δομής καταλόγων για το project VuePress
# Η επιλογή -p εξασφαλίζει τη δημιουργία του γονικού καταλόγου (~/Vuepress) αν δεν υπάρχει.
mkdir -p ~/Vuepress/MyThesis
# Μετάβαση στον κύριο κατάλογο του project
cd ~/Vuepress/MyThesis
# Εγκατάσταση του VuePress Theme Hope (το οποίο φέρνει το VuePress v2)
# Η εντολή 'npm init' εκτελεί scaffolding.
# Η σημαία '-D' προσθέτει το πακέτο ως development dependency.
# Η επιλογή '@latest' διασφαλίζει τη χρήση της πιο πρόσφατης έκδοσης.
npm init -D vuepress-theme-hope@latest .
4.6.1.3.3 Εγκατάσταση Επιπρόσθετων Plugins
Το τρίτο block περιλαμβάνει την εγκατάσταση μιας σειράς επίσημων plugins του VuePress v2, τα οποία είναι απαραίτητα για την επέκταση της λειτουργικότητας της τεκμηρίωσης του MyThesis (π.χ., αναζήτηση, στυλιζάρισμα κώδικα).
# =================================================================
# ΕΓΚΑΤΑΣΤΑΣΗ ΕΠΕΚΤΑΣΕΩΝ VUEPRESS V2 (PLUGINS)
# Η εντολή επαναλαμβάνεται, μία είναι αρκετή για την εγκατάσταση.
# =================================================================
# Εγκαθιστά πολλαπλά plugins και τον Sass compiler ως development dependencies.
# Χρησιμοποιούνται τα @^2.0.0-rc.112 (Release Candidate) για συμβατότητα με το VuePress v2.
npm install -D \
@vuepress/plugin-search@^2.0.0-rc.112 \
@vuepress/plugin-prismjs@^2.0.0-rc.112 \
@vuepress/plugin-shiki@^2.0.0-rc.112 \
@vuepress/plugin-copyright@^2.0.0-rc.112 \
@vuepress/plugin-watermark@^2.0.0-rc.112 \
@vuepress/plugin-reading-time@^2.0.0-rc.112 \
sass-embedded@^1.89.2
4.6.1.4 Εκκίνηση του VuePress και Web Access
Με την ολοκλήρωση της εγκατάστασης των dependencies, η εκκίνηση του διακομιστή ανάπτυξης του VuePress πραγματοποιείται μέσω της εντολής που έχει οριστεί στο αρχείο package.json του MyThesis. Η συγκεκριμένη διαδικασία ενεργοποιεί τον τοπικό server, ο οποίος καθίσταται άμεσα προσβάσιμος μέσω του Host Server.
4.6.1.4.1 Διαδικασία Εκκίνησης
Η εκτέλεση της εντολής npm run docs:dev εκκινεί την υπηρεσία:
# Εντός του καταλόγου ~/Vuepress/MyThesis:
npm run docs:dev
Εναλλακτική εκκίνηση ανεξάρτητα της θέσης εργασίας, με εκτέλεση της εντολής _svd_ :
# Εναλλακτικά ανεξάρτητα καταλόγου:
_svd_
4.6.1.4.2 Πρόσβαση στον Web Server
Μόλις ο διακομιστής εκκινήσει, γίνεται προσβάσιμος μέσω της θύρας 1010 στη διεύθυνση IP του Host Server.
- Τοπική Πρόσβαση (από τον Host Server):
http://localhost:8080/ - Πρόσβαση από το Δίκτυο:
http://[Server_IP]:1010/http://192.168.1.146:1010
Σημείωση Ασφαλείας: Η θύρα 8080 έχει ήδη επιτραπεί στο UFW Firewall (βλ. Κεφάλαιο 4.6.1.2.3) για να επιτευχθεί η πρόσβαση από το δίκτυο.
4.6.1.5 Scripting Παραγωγικότητας και Ταχύτητα Εργασίας
Για τη βελτιστοποίηση της ταχύτητας εκτέλεσης επαναλαμβανόμενων εργασιών και την ελαχιστοποίηση των σφαλμάτων κατά την πληκτρολόγηση, υιοθετήθηκε μία στρατηγική συντομευμένων εντολών (scripting aliases). Η χρήση αυτών των ολιγογράμματων ψευδωνύμων μειώνει τον χρόνο που απαιτείται για την εκκίνηση, τη δημιουργία (build) και την τοπική δημιουργία αντιγράφων ασφαλείας (backup) του έργου.
| Συντόμευση | Πλήρης Ενέργεια (Full Action) | Τεχνική Εντολή / Script | Σκοπός |
|---|---|---|---|
_svd_ (Start Vue Digilady) | Εκκίνηση Διακομιστή Ανάπτυξης | npm run docs:clean-dev | Ενεργοποιεί τον τοπικό server VuePress με καθαρισμό cache. |
_bvd_ (Build Vue Digilady) | Δημιουργία Παραγωγής | npm run docs:build | Δημιουργεί τα τελικά στατικά αρχεία (dist) για Deployment. |
bck-sp (backup-startup) | Δημιουργία βασικού αντιγράφου του κώδικα src και αυτόματη μεταφορά στον File Server κατά την εκκίνηση του συστήματος | backup-startup | Δημιουργεί ένα συμπιεσμένο αντίγραφο ασφαλείας, με χρονοσφραγίδα |
bck-lcl (Backup Local) | Πλήρες τοπικό backup, απομακρυσμένη μεταφορά (rsync) απαιτεί (sudo) | backup-local | Δημιουργεί ένα συμπιεσμένο αντίγραφο ασφαλείας του project. |
Η υιοθέτηση αυτών των συντομεύσεων αποτελεί μέρος των βέλτιστων πρακτικών (best practices) στο DevOps και την ανάπτυξη λογισμικού, εξασφαλίζοντας ένα εργασιακό περιβάλλον με υψηλή πολυπαραγοντική αποτελεσματικότητα.