pihole και nextcloud μαζι σε ενα Raspberry Pi. Ένας οδηγός

Στο οικιακό μου δίκτυο έχω στημένο ένα NextCloud καθώς και ένα pihole. Αλλά θέλεις 2 raspberry pi για να το έχεις αυτό; Σίγουρα όχι και σε αυτόν τον οδηγό θα δείξω πως μπορείς να το κάνεις αυτό.

image

Η υπάρχουσα εγκατάσταση

Ο ρούτερ μου ακούει στην διεύθυνση 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 :relaxed:

Εγκατάσταση και ρύθμιση του 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 :relaxed:

Βελτιώνοντας την λύση

Θα ρωτήσει κανείς γιατί δυο διαφορετικούς 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 και εύκολα τις προσθέτεις.

10 «Μου αρέσει»

Αυτο γιατι; και γιατι στο τελος; Καπου το εχασα αυτο…

Είναι η σελίδα που βλέπεις αν δώσεις το url. Αν δεν υπάρχει θα δείξει μια ωραία σελίδα με το σήμα του pihole. Καθαρά διακοσμητικό (θα είχε κάποιο νόημα να δείξει αυτό αντί για μια διαφήμιση, αλλά δυστυχώς δεν θα δουλέψει με https).

Εναλλακτικά μπορείς να βάλεις κάποιο κώδικα html να κάνει redirect στο monitor.

<meta http-equiv="refresh" content="0; URL=monitor" />
1 «Μου αρέσει»

Πολυ καλλιτερα.
Εγω οταν ειδα το old νομιζα οτι θελουμε να εχουμε backup αρχειο… (κατι τετοιο δεν κανουμε σε άλλες περιπτωσεις; )