Αυτόματη εγκατάσταση

Αυτόματος τρόπος: ένα script από τον λογαριασμό προετοιμάζει ολόκληρο τον διακομιστή (στοίβα web Apache + PHP, βάση δεδομένων, εργαλεία ασφαλείας, cron). Στη συνέχεια — ανάπτυξη του dashboard, έκδοση SSL και εισαγωγή της άδειας. Λειτουργεί σε Ubuntu/Debian: σε νέο VPS ρυθμίζει τα πάντα από την αρχή, σε ήδη ρυθμισμένο διακομιστή — μόνο προσθετικά (προφίλ «Ρυθμισμένος διακομιστής», βήμα 01). Όλες οι εντολές παρακάτω είναι με τη σειρά, απλώς κυλήστε από πάνω προς τα κάτω.

Τις τιμές-κράτησης θέσης στις εντολές αντικαταστήστε με τις δικές σας: monitor.example.com — ο τομέας σας· 203.0.113.10 — η πραγματική IP του διακομιστή· /var/www/monitor — η ρίζα του dashboard (όπου βρίσκονται τα public/, assets/, config.php)· τον κωδικό της ΒΔ ορίστε τον δικό σας.
Το πλήρες πακέτο («Πλήρης προστασία») προορίζεται για νέο VPS. Σε καθαρό Ubuntu/Debian ρυθμίζει το σύστημα ασφαλείας από την αρχή — Fail2ban (jail.local), root-crontab, κανόνες UFW, ρυθμίσεις Apache. Αν ο διακομιστής είναι ήδη ρυθμισμένος (λειτουργικό dashboard, ιστότοποι, email, δικά σας jail) — επιλέξτε το προφίλ «Ρυθμισμένος διακομιστής»: κάνει μόνο προσθετικές αλλαγές και δεν αγγίζει το firewall, το Fail2ban, το email, το SSH και το sysctl σας. Όταν εντοπίσει hosting panel, το script μεταβαίνει μόνο του σε αυτή τη λειτουργία. Πριν την πρώτη εκτέλεση μπορείτε να ενεργοποιήσετε το dry run (επιλογή στον λογαριασμό) — δείχνει τι θα γίνει, χωρίς να αλλάζει τίποτα. Σε λειτουργικό διακομιστή, για κάθε ενδεχόμενο, δημιουργήστε ένα snapshot.

01. Εντολή αυτόματης ρύθμισης από τον λογαριασμό

Την εντολή τη λαμβάνετε στον λογαριασμό σας my.arciveo.com → ενότητα «Ρύθμιση διακομιστή» (διαθέσιμη μετά την απόκτηση του Arcivéo Monitor). Είναι συνδεδεμένη με τον λογαριασμό σας και περιέχει προσωπικό token.

Το script προετοιμάζει ολόκληρο τον διακομιστή: web-stack (Apache + PHP), βάση δεδομένων, εργαλεία για SSL, πλήρες σύνολο μέσων προστασίας και cron-εργασίες (Lynis, SMART, debsums, Logwatch, ημερήσια αναφορά, ενημέρωση ipsum).

1) Επιλέξτε το επίπεδο προστασίας (στον λογαριασμό, πριν αντιγράψετε την εντολή):

  • Πλήρης προστασία (συνιστάται) — UFW (τείχος προστασίας), Fail2ban, CrowdSec + bouncer, ipsum (λίστα αποκλεισμού IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (ακεραιότητα αρχείων), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (έλεγχος), Logwatch, αυτόματες ενημερώσεις ασφαλείας.
  • Ελαφριά — για VPS με λίγη RAM: βασικό σύνολο χωρίς βαριά στοιχεία.
  • Ρυθμισμένος διακομιστής (πάνελ φιλοξενίας) — για διακομιστή που ήδη λειτουργεί με πάνελ (HestiaCP κ.λπ.), ιστότοπους και email: μόνο προσθετικές αλλαγές (εγκατάσταση εργαλείων, cron, κανόνες sudo), ενώ το τείχος προστασίας, το Fail2ban, το email, το SSH και το sysctl παραμένουν ως έχουν. Σε διακομιστή με πάνελ το script επιλέγει μόνο του αυτή τη λειτουργία.
Δοκιμαστική εκτέλεση. Στον λογαριασμό μπορείτε να επιλέξετε «Δοκιμαστική εκτέλεση» — τότε η εντολή θα δείξει μόνο τι θα εγκαταστήσει και θα αλλάξει το script και θα τερματίσει, χωρίς να αγγίξει τίποτα. Χρήσιμο σε ήδη ρυθμισμένο διακομιστή: πρώτα δοκιμή, μετά πραγματική εκτέλεση χωρίς την επιλογή.

2) Εκτελέστε στον διακομιστή ως root την εντολή από τον λογαριασμό — έχει την εξής μορφή:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Την εντολή κρατήστε την μυστική — είναι συνδεδεμένη με τον λογαριασμό σας. Ο σύνδεσμος έχει περιορισμένη διάρκεια ισχύος· αν έχει λήξει, πατήστε στον λογαριασμό «Λήψη νέου συνδέσμου».
Μετά την αυτόματη ρύθμιση, ο web-διακομιστής είναι Apache + PHP-FPM, ενώ τα εργαλεία ασφαλείας και οι cron-εργασίες είναι ήδη εγκατεστημένα και λειτουργούν «out of the box» — δεν χρειάζεται καμία επιπλέον ρύθμιση.

02. Domain και DNS

Για να ανοίγει ο πίνακας σε διεύθυνση όπως monitor.example.com και να λάβετε δωρεάν SSL, το domain πρέπει να δείχνει στον διακομιστή. Στον πίνακα διαχείρισης DNS (στον καταχωρητή ή στον πάροχο φιλοξενίας) δημιουργήστε μια εγγραφή A:

Τύπος: A Όνομα: monitor (υποτομέας → monitor.example.com) ή @ (ρίζα domain → example.com) Τιμή: 203.0.113.10 ← IP του διακομιστή σας TTL: 3600

Μετά από λίγα λεπτά (μερικές φορές έως και μία ώρα) ελέγξτε ότι το domain δείχνει στον διακομιστή:

dig +short monitor.example.com # πρέπει να επιστρέψει το IP σας # ή, αν δεν υπάρχει dig: getent hosts monitor.example.com
Το πιστοποιητικό SSL (βήμα 06) εκδίδεται μόνο για domain — γι' αυτό το DNS πρέπει να δείχνει στον διακομιστή πριν από την έκδοση του πιστοποιητικού.

03. Ανεβάστε τα αρχεία του πίνακα

Η αυτόματη ρύθμιση έχει ήδη δημιουργήσει τον κατάλογο του πίνακα /var/www/monitor και ρύθμισε τον ιστότοπο Apache (DocumentRoot στη ρίζα του πίνακα, PHP-FPM, AllowOverride για .htaccess). Δεν χρειάζεται να δημιουργήσετε ξεχωριστά κατάλογο και vhost — απλώς ανεβάστε τα αρχεία και ορίστε τα δικαιώματα.
Τα αρχεία του πίνακα (το αρχείο διανομής) κατεβαίνουν μετά την αγορά στον λογαριασμό my.arciveo.com«Λήψεις». Αποσυμπιέστε το αρχείο πριν το ανεβάσετε στον διακομιστή.

Ανεβάστε το περιεχόμενο της διανομής στο /var/www/monitor (ώστε μέσα να βρίσκονται τα public/, assets/, config.php κ.λπ.) — μέσω SFTP/SCP (FileZilla / WinSCP) ή με την εντολή scp από τον τοπικό υπολογιστή:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Για να καταχωρηθεί αμέσως στο vhost ο τομέας σας (ServerName), τον περνάτε στην εντολή αυτόματης ρύθμισης ήδη στο βήμα 01: … | sudo bash -s -- monitor.example.com (ή δηλώνετε τον τομέα στο πεδίο «Τομέας πίνακα» στον λογαριασμό). Αν δεν περάσατε τομέα — ο πίνακας απαντά σε οποιονδήποτε host και μέσω IP, ενώ το ServerName θα το καταχωρήσει το certbot κατά την έκδοση SSL (βήμα 06)· δεν χρειάζεται καμία επανεγκατάσταση.
Ορίστε τα δικαιώματα των αρχείων — είναι υποχρεωτικό βήμα. Αν ανεβάσατε ως root ή μέσω SFTP, τα αρχεία ανήκουν στον root και ο διακομιστής web (www-data) δεν θα μπορεί να τα διαβάσει — ο πίνακας θα ανοίξει κενός ή με σφάλμα 403 (στο log: .htaccess unreadable / directory not executable). Η παρακάτω εντολή το διορθώνει:
# Κανονικοποιούμε τα δικαιώματα όλου του webroot: ο κατάλογος που δημιούργησε ο root είναι απροσπέλαστος # για τον διακομιστή web (www-data) — χωρίς αυτό ο πίνακας εμφανίζει κενή σελίδα ή 403. cd /var/www/monitor # Τους φακέλους εργασίας τους δημιουργούμε ΠΡΙΝ το chown — αλλιώς οι νέοι κατάλογοι θα μείνουν root:root # και με chmod 750 ο διακομιστής web (www-data) δεν θα μπορεί να γράψει σε αυτούς. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

Ανοίξτε για τον εαυτό σας το ανέβασμα αρχείων μέσω SFTP. Μετά την παραπάνω εντολή όλα τα αρχεία ανήκουν στον www-data, ενώ το FileZilla / WinSCP συνδέονται με τον δικό σας χρήστη — το ανέβασμα τότε αποτυγχάνει με SSH_FX_PERMISSION_DENIED (Permission denied). Επιλέξτε μία από τις δύο παραλλαγές.

Παραλλαγή A — μια ACL μόνο για τον χρήστη σας (συνιστάται). Δικαίωμα εγγραφής παίρνετε μόνο εσείς· ο διακομιστής web εξακολουθεί να μην μπορεί να αντικαταστήσει τον κώδικα του πίνακα:

sudo apt install -y acl # Δικαίωμα εγγραφής για τον χρήστη σας σε ολόκληρο τον κατάλογο του πίνακα: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Ο ίδιος κανόνας ως προεπιλογή — για αρχεία και φακέλους που θα δημιουργηθούν αργότερα: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Παραλλαγή B — μέσω της ομάδας www-data. Πιο απλή, αλλά δικαίωμα εγγραφής στα αρχεία του πίνακα αποκτά και ο διακομιστής web: με μια ευπάθεια στην PHP ο κώδικας θα μπορούσε να αντικατασταθεί. Η σειρά των εντολών έχει σημασία — το config.php και οι φάκελοι εργασίας κλείνουν τελευταίοι:

sudo usermod -aG www-data deploy # Εγγραφή για την ομάδα + setgid (το bit 2): τα αρχεία που ανεβαίνουν μέσω SFTP # παραμένουν στην ομάδα www-data — αλλιώς ο πίνακας δεν μπορεί να τα αντικαταστήσει. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
Μετά την παραλλαγή B συνδεθείτε ξανά στο FileZilla (Διακομιστής → Αποσύνδεση και έπειτα νέα είσοδος) — η νέα ομάδα ισχύει μόνο σε νέα σύνδεση, ως τότε δικαιώματα πάλι δεν θα έχετε. Έλεγχος: id deploy — στη λίστα ομάδων πρέπει να εμφανιστεί το www-data· ls -ld /var/www/monitor — δικαιώματα drwxrwsr-x, το γράμμα s στη θέση του x σημαίνει ότι το setgid είναι ενεργό.

04. Βάση δεδομένων

Δημιουργήστε τη βάση και τον χρήστη, μετά εισαγάγετε το σχήμα. Το μπλοκ με τη ΒΔ επικολλάται στο τερματικό ολόκληρο (το sudo mysql συνδέεται ως root μέσω unix-socket — δεν χρειάζεται κωδικός root). Τα monitor_db και monitor_user είναι ενδεικτικά ονόματα, μπορείτε να ορίσετε τα δικά σας· θυμηθείτε το όνομα της βάσης, τον χρήστη και τον κωδικό — θα τα καταχωρίσετε στο config.php στο επόμενο βήμα:

# 1. Βάση δεδομένων. Ο κωδικός ορίζεται ΜΙΑ φορά στο DBPASS και εισάγεται σε όλες τις γραμμές. # Το μπλοκ επικολλάται στο τερματικό ΟΛΟΚΛΗΡΟ· το sudo mysql συνδέεται ως root μέσω unix-socket # (δεν χρειάζεται κωδικός root). ΜΗΝ χρησιμοποιείτε διαδραστικό `sudo mysql -u root -p` # με copy-paste — κατά την επικόλληση οι SQL-γραμμές θα σταλούν στην ερώτηση κωδικού και θα χαθούν. DBPASS='CHOOSE_A_PASSWORD' # ← αλλάξτε μόνο αυτή τη γραμμή sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # Έλεγχος (πρέπει να εμφανίσει το monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Τον ίδιο κωδικό καταχωρίστε στο config.php → DB_PASS.
Δεν χρειάζεται εισαγωγή σχήματος — ο πίνακας δημιουργεί μόνος του τους πίνακες και τον λογαριασμό admin στην πρώτη είσοδο από τον browser (από το database/db.sql), αν η ΒΔ είναι κενή.
sudo για τον web διακομιστή έχει ήδη ρυθμιστεί από την αυτόματη εγκατάσταση — οι μονάδες βλέπουν αμέσως τα δεδομένα του συστήματος. Ξεχωριστή ρύθμιση του sudo χρειάζεται μόνο αν η PHP εκτελείται με μη τυπικό χρήστη (όχι www-data).

05. Ρύθμιση του config.php

Το config.php στη ρίζα του πίνακα (/var/www/monitor/config.php) είναι το μοναδικό αρχείο που πρέπει να επεξεργαστείτε χειροκίνητα. Όλες οι ρυθμίσεις του πίνακα ορίζονται εκεί ως σταθερές define(). Ανοίξτε το σε έναν επεξεργαστή:

sudo nano /var/www/monitor/config.php

Βάλτε τις δικές σας τιμές στα επισημασμένα σημεία· τα υπόλοιπα αφήστε τα ως έχουν:

// --- Βάση δεδομένων (από το βήμα 04) --- define('DB_HOST', 'localhost'); // αφήστε το define('DB_NAME', 'db_name'); // ό,τι δημιουργήσατε στο βήμα 04 define('DB_USER', 'user'); // ό,τι δημιουργήσατε στο βήμα 04 define('DB_PASS', 'db_password'); // ό,τι ορίσατε στο βήμα 04 define('DB_CHARSET', 'utf8mb4'); // αφήστε το // --- Εφαρμογή --- define('APP_URL', 'https://monitor.example.com'); // διεύθυνση πίνακα, χωρίς κάθετο στο τέλος define('TIMEZONE', 'Europe/Athens'); // η ζώνη ώρας σας // --- Διάρκεια συνεδρίας --- define('SESSION_LIFETIME', 28800); // αδράνεια έως νέα σύνδεση, δευτ. (28800 = 8 ώρες)

Τι να αλλάξετε:

  • DB_NAME, DB_USER, DB_PASS — ακριβώς το ίδιο όνομα βάσης, χρήστη και κωδικό που ορίσατε κατά τη δημιουργία της βάσης στο βήμα 04 (αν αφήσατε τα παραδείγματα — monitor_db / monitor_user). Τα DB_HOST και DB_CHARSET μην τα πειράξετε.
  • APP_URL — η πλήρης διεύθυνση του πίνακα με https://, χωρίς κάθετο στο τέλος και χωρίς www. Πρέπει να συμπίπτει με τον τομέα στον οποίο ενεργοποιείτε την άδεια (βήμα 07), αλλιώς το κλειδί θα απορριφθεί.
  • TIMEZONE — η ζώνη ώρας σας (λίστα — timedatectl list-timezones). Επηρεάζει μόνο πώς ο πίνακας εμφανίζει τις ημερομηνίες· στην ώρα εκτέλεσης των εργασιών cron δεν επηρεάζει (εκεί ισχύει η ζώνη του συστήματος).
  • SESSION_LIFETIME — μετά από πόσα δευτερόλεπτα αδράνειας ο πίνακας θα ζητήσει νέα σύνδεση (προεπιλογή 8 ώρες). Π.χ. 3600 = 1 ώρα, 86400 = μία ημέρα.
  • Το τμήμα καταγραφής σφαλμάτων (display_errors, log_errors, error_log) — αφήστε το στην προεπιλογή.

Αποθηκεύστε το αρχείο (Ctrl+O, Enter, μετά Ctrl+X) και επανεκκινήστε το PHP-FPM — αλλιώς λόγω του OPcache οι αλλαγές δεν θα εφαρμοστούν:

sudo systemctl restart php*-fpm
Το config.php είναι μυστικό αρχείο (περιέχει τον κωδικό της βάσης). Βρίσκεται στη ρίζα του πίνακα, που είναι και η ρίζα του web, αλλά προστατεύεται: δικαιώματα 640 (ορίστηκαν στο βήμα 03) και ρητή απαγόρευση στο κεντρικό .htaccess. Μην το ανεβάζετε σε δημόσια αποθετήρια και μην το στέλνετε στην υποστήριξη με τον πραγματικό κωδικό.
Αναλυτική επεξήγηση όλων των παραμέτρων — στο FAQ: «Το αρχείο config.php — όλες οι ρυθμίσεις του πίνακα».

06. Έκδοση SSL (HTTPS)

Ο πίνακας λειτουργεί μόνο μέσω HTTPS. Η σύνοδος σύνδεσης χρησιμοποιεί ασφαλές cookie, ενώ το WebAuthn (2FA) εξ ορισμού λειτουργεί μόνο σε HTTPS. Μέσω http:// δεν θα μπορέσετε να συνδεθείτε.

Το certbot και το πρόσθετο για τον Apache έχουν ήδη εγκατασταθεί από την αυτόματη ρύθμιση. Το DNS του τομέα πρέπει ήδη να δείχνει στον διακομιστή (βήμα 02). Έκδοση με μία εντολή:

sudo certbot --apache -d monitor.example.com
Τι θα ρωτήσει το certbot:
  1. Enter email address — το e-mail σας (εκεί θα έρχονται οι ειδοποιήσεις λήξης του πιστοποιητικού).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — κατά την κρίση σας.
Στη συνέχεια το certbot θα εκδώσει το πιστοποιητικό, θα προσθέσει το <VirtualHost *:443>, θα ρυθμίσει την ανακατεύθυνση http→https και την αυτόματη ανανέωση. Στο τέλος — Successfully enabled HTTPS.
Αν η έκδοση αποτύχει — ελέγξτε ότι το dig +short monitor.example.com επιστρέφει την IP του διακομιστή και ότι είναι ανοιχτές οι θύρες 80/443 (sudo ufw allow 80,443/tcp).

Μετά την έκδοση: το https://monitor.example.com ανοίγει με λουκέτο, και το http:// ανακατευθύνει στο https://.

07. Είσοδος και αρχική ρύθμιση

Ανοίξτε https://monitor.example.com, συνδεθείτε με admin / useradmin και ακολουθήστε τη λίστα ελέγχου:

  1. Αλλαγή κωδικού admin — ενότητα «Χρήστες» στο μενού.
  2. Ενεργοποίηση WebAuthn (2FA) — «Κλειδιά WebAuthn» → καταχωρίστε κλειδί/passkey (απαιτεί HTTPS). Καταχωρίστε αμέσως δύο: σε περίπτωση απώλειας του μοναδικού κλειδιού, η είσοδος με αυτό θα είναι αδύνατη. Περισσότερα.
  3. Περιορισμός πρόσβασης ανά IP — «Ρυθμίσεις» → «Περιορισμός πρόσβασης ανά IP» (καταχωρίστε τη δική σας IP πριν την ενεργοποίηση, αλλιώς θα κλείσετε την πρόσβασή σας).
  4. Καταχώριση άδειας — τον κωδικό ενεργοποίησης ARCIVEO-… από τον λογαριασμό ενεργοποιήστε τον στον δικό σας domain και εισαγάγετε το κλειδί στις «Ρυθμίσεις» → «Άδεια». Περισσότερα.
  5. Ρύθμιση ειδοποιήσεων — Telegram ή/και Email στις «Ρυθμίσεις». Περισσότερα.
  6. Διαγραφή του εγκαταστάτη public/start_db.php, αν έχει απομείνει: επιτρέπει την αναδημιουργία της βάσης χωρίς αυθεντικοποίηση. Όσο το αρχείο βρίσκεται στη ρίζα του πίνακα ή στο public/, ο πίνακας προειδοποιεί γι' αυτό με κόκκινο μπάνερ.
Έτοιμο. Τα εργαλεία ασφαλείας ήδη λειτουργούν — ο πίνακας θα εμφανίσει αμέσως την κατάστασή τους και τη Βαθμολογία ασφαλείας. Οδηγός για κάθε εργαλείο στο FAQ.
Arcivéo - Security Monitor © 2026