Στο οικιακό μου δίκτυο έχω στημένο ένα NextCloud καθώς και ένα pihole. Αλλά θέλεις 2 raspberry pi για να το έχεις αυτό; Σίγουρα όχι και σε αυτόν τον οδηγό θα δείξω πως μπορείς να το κάνεις αυτό.
Η υπάρχουσα εγκατάσταση
Ο ρούτερ μου ακούει στην διεύθυνση 192.168.2.1
τρέχει dhcp και αυτό δίνει διευθύνσεις πάνω από την διεύθυνση 292.168.2.1
άρα κάθε διεύθυνση κάτω από αυτήν είναι διαθέσιμη. Μην ακολουθήσεις τυφλά τον οδηγό χωρίς να το προσαρμόσεις στις διευθύνσεις του τοπικού σου δικτύου. Για παράδειγμα πολύ ποιο πιθανό είναι να έχεις το δίκτυο στο 192.168.1.XΧΧ
οπότε κάνε τις ανάλογες αλλαγές.
Υπάρχει ήδη εγκατεστημένο ένα nextcloudpi
σε μια μηχανή με την διεύθυνση 192.168.2.20
. Όχι σε αυτόν τον οδηγό δεν θα δείξω πως θα το εγκαταστήσεις, είναι εύκολο απλά ακολούθα τον επίσημο οδηγό. Υπάρχουν πολλοί άλλοι τρόποι εγκατάστασης, αλλά το nextcloudpi
έχει πολύ καλά εργαλεία διαχείρισης, κάνει μια απλή εγκατάσταση χωρίς χρήση docker και το συνιστώ.
Η εγκατάσταση του pihole
είναι εξίσου εύκολη αρκεί να συνδεθείς με ssh
και να δώσεις μια εντολή (αλλά όχι ακόμα)
curl -sSL https://install.pi-hole.net | bash
και θα λειτουργήσει αρκεί να μην εγκαταστήσεις το web interface. Αλλά αν θέλεις να έχεις και αυτό; Ας δούμε μια λύση
Το πρόβλημα και η λύση
Το nextcloudpi
χρησιμοποιεί τον apache2
σαν webserver, ενώ το pihole
τον lighthttpd
και οι δύο μιλάνε στην πόρτα 80. Το nextcloudpi
θέλει και τήν 443 για το https
, άλλη μια για το admin panel καθώς και πόρτες για NFS, SNB κλπ. Αλλά το πρόβλημα είναι η πόρτα 80. Ποια είναι η ποιο απλή λύση; Να έχει το raspberry 2 διευθύνσεις για την eth0
. Έχω την συσκευή συνδεμένη με καλώδιο, αλλά τα ίδια πράγματα θα κάνεις και για ασύρματο δίκτυο. Έτσι θα έχουμε
IP | server | appliance | port |
---|---|---|---|
192.168.2.20 | apache2 | nextcloud | 80, 443 |
192.168.2.21 | lighthttpd | pihole | 80 |
Το πρώτο πράγμα που θα κάνουμε είναι να συνδεθούμε με ssh
και προαιρετικά να απενεργοποιήσουμε το dhcp
sudo systemctl status dhcpcd.service
Στην συνέχεια θα βάλουμε τις δυο στατικές διευθύνσεις φτιάχνοντας ένα αρχείο /etc/network/interfaces.d/eth0-ncphole
με τα παρακάτω (με τις απαραίτητες αλλαγές για το δίκτυο μας!)
auto eth0
iface eth0 inet static
address 192.168.2.20
netmask 255.255.255.0
gateway 192.168.2.1
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 192.168.2.21
netmask 255.255.255.0
gateway 192.168.2.1
κάνουμε επανεκκίνηση του raspberry
και ελέγχουμε αν μπορούμε να συνδεθούμε και στις δυο διευθύνσεις, κάνουμε ένα έλεγχο στο Nextcloud να επιβεβαιώσουμε πως τα πάντα λειτουργούν σωστά. Αλλά για μια στιγμή το apache εξακολουθεί να ακούει και στις δύο διευθύνσεις! Ας το περιορίσουμε
Θα αλλάξουμε το αρχείο /etc/apache2/ports.conf
και θα το κάνουμε να μοιάζει σαν το παρακάτω
Listen 192.168.2.20:80
<IfModule ssl_module>
Listen 192.168.2.20:443
</IfModule>
<IfModule mod_gnutls.c>
Listen 192.168.2.20:443
</IfModule>
Μετά την αλλαγή θα πρέπει να ενακινήσουμε την υπηρεσία
sudo systemctl restart apache2.service
sudo systemctl status apache2.service
και να ελέξουμε ξανά οτι όλλα πήγα καλά. Βήμα πρώτο DONE
Εγκατάσταση και ρύθμιση του pihole
Ήρθε η ώρα να δώσουμε την μαγική εντολή
curl -sSL https://install.pi-hole.net | bash
και θα προχωρήσουμε, βασικά πατάμε συνέχεια εκτώς απο εκεί που μας λέει την IP, όπου θα βάλουμε την 192.168.2.21/24
. Και αυτό ήταν, όχι μίσο πρέπει να κάνουμε τα ίδια και για τον lighthttpd
. Μέσα στο αρχείο /etc/lighttpd/external.conf
θα βάλουμε μια γραμούλα που θα λέει:
server.bind = "192.168.2.21"
και θα κάνουμε επανεκίνηση τής υπηρεσίας
sudo systemctl restart lighttpd.service
sudo systemctl status lighttpd.service
Και μια τελική πινελία
sudo mv /var/www/html/index.html /var/www/html/index.html-old
Βήμα δεύτερο DONE
Βελτιώνοντας την λύση
Θα ρωτήσει κανείς γιατί δυο διαφορετικούς webservers; Υπάρχει κάποιος λόγος; Και η απάντηση είναι όχι και θα μπορούσαμε να βάλουμε τον apache
να σερβίρει όλες τις υπηρεσίες. Αλλά δεν κερδίζεις κάτι σημαντικό. Αν κάποιος φτιάξει ένα τέτοιο setup ας το βάλει στα σχόλια. Είναι μια απλή λύση που την προτειμώ για την απλότητα της απο τις λύσεις τύπου docker composer
που υπάρχουν εκεί έξω.
Bonus: Παρακολούθηση του συστήματος με το ezServer Monitor
Πόσο βαρύ είναι το σύστημα; Θα προσθέσουμε μια ελαφριά λύση με το ezServer Monitor. Η εγκατάσταση είναι απλή. Θα το κατεβάσουμε απο εδώ και θα αποσυμπιέσουμε τα αρχεία στο /var/www/html/
και θα αλλάξουμε το όνομα του φακέλου σε κάτι ποιο απλό όπως πχ monitor
. Αν πάμε στην διέυθυνση http://192.168.2.21/monitor
θα δο,ε κάτι σαν το παρακάτω:
Δεν θέλει κάποια ρύθμιση, αλλά μπορούμε να πειράξουμε το αρχείο config/esm.config.json
και να αλλάξουμε το χρωματικό θέμα και να το ρυθμίσουμε στις ανάγκες μας. Για οδηγίες εδώ. Πείραξα λίγο τις υπηρεσίες και το θέμα
είναι ένα απλό αρχείο json και εύκολα τις προσθέτεις.