Το προφίλ μας στο Google Plus
29

Nextcloud στο Raspberry Pi, από την καλή

Με λίγη προετοιμασία το Raspberry Pi μεταμορφώνεται σε άξιο αντικαταστάτη του Dropbox. Στο παρόν άρθρο δείχνουμε πώς εγκαθιστούμε και ρυθμίζουμε το Nextcloud, τον διάδοχο του ownCloud, στο ταπεινό αλλά ικανότατο Raspberry. Θα δούμε επίσης πώς ενισχύουμε την ασφάλεια αλλά και πώς βελτιώνουμε τις επιδόσεις της πλατφόρμας.

Το Nextcloud είναι σχετικά απαιτητικό σε πόρους συστήματος και μεταξύ των συσκευών Raspberry προτείνεται να το φιλοξενήσουμε στο νεότερο μοντέλο, δηλαδή στο Raspberry Pi 3 model B. Υποθέτουμε ότι η συσκευή θα τρέχει το Raspbian. Για την εγκατάσταση και τη ρύθμιση του συγκεκριμένου λειτουργικού μπορείτε να διαβάσετε αυτό το άρθρο. Στο Raspbian εξάλλου θα είναι εγκατεστημένος ο Apache, τον οποίο χρειαζόμαστε για την πρόσβαση στο web panel του Nextcloud. Το site που σερβίρει ο Apache καλύπτεται από δωρεάν κι έγκυρο πιστοποιητικό, το οποίο έχει εκδοθεί από το εγχείρημα Let’s Encrypt. Προκειμένου ν’ αποκτήσετε κι εσείς πιστοποιητικό για το domain ή το subdomain σας, δείτε το σχετικό αναλυτικό άρθρο. Στο πλαίσιο της παρουσίασής μας χρησιμοποιούμε το subdomain ονόματι nue.colder.xyz.

Σημείωση: Στο Raspberry Pi προτείνεται να έχουμε συνδεδεμένο κάποιο εξωτερικό μέσο αποθήκευσης. Η κάρτα SD, στην οποία κατοικοεδρεύει το Raspbian, υπό καμία έννοια δεν είναι κατάλληλη για χρήση από file server. Σε κάθε περίπτωση, με ένα USB thumb drive ή ακόμα καλύτερα με έναν δίσκο USB (όχι κατ’ ανάγκη SSD), έχουμε πολύ περισσότερο αποθηκευτικό χώρο και σαφώς ανεβασμένες επιδόσεις.

Για τις ανάγκες της παρουσίασής μας, στο Raspberry Pi έχουμε συνδέσει ένα USB thumb drive χωρητικότητας 32GB. Η αντίστοιχη κατάτμηση είναι προσαρτημένη κάτω από το /mnt/storage κι εκεί, λίγο αργότερα, θα μεταφέρουμε το data directory του Nextcloud. Στο δε /etc/fstab έχουμε προσθέσει μία κατάλληλη γραμμή ώστε η κατάτμηση του thumb drive, την οποία υποδεικνύουμε με βάση το UUID της, να προσαρτάται αυτόματα κατά την εκκίνηση του λειτουργικού.

Για τις ανάγκες της παρουσίασής μας, στο Raspberry Pi έχουμε συνδέσει ένα USB thumb drive χωρητικότητας 32GB. Η αντίστοιχη κατάτμηση είναι προσαρτημένη κάτω από το /mnt/storage κι εκεί, λίγο αργότερα, θα μεταφέρουμε το data directory του Nextcloud. Στο δε /etc/fstab έχουμε προσθέσει μία κατάλληλη γραμμή ώστε η κατάτμηση του thumb drive, την οποία υποδεικνύουμε με βάση το UUID της, να προσαρτάται αυτόματα κατά την εκκίνηση του λειτουργικού.

Εγκατάσταση PHP5 και MariaDB
Το Nextcloud χρειάζεται τη σκριπτογλώσσα PHP καθώς και μία βάση δεδομένων. Σε διάφορες εγκαταστάσεις θα δείτε ότι το ρόλο συστήματος διαχείρισης βάσεων τον έχει η SQLite. Δεν αποτελεί την καλύτερη επιλογή όσον αφορά στις επιδόσεις, οπότε εμείς θα στραφούμε στη MariaDB. Προχωράμε αμέσως στην εγκατάσταση όλων των σχετικών πακέτων:

pi@nordostbahnhof:~ $ sudo apt-get update
pi@nordostbahnhof:~ $ sudo apt-get -y install mariadb-common \
mariadb-client mariadb-server php5 php5-common php5-cli \
php5-json php5-readline php5-gd php5-curl php5-mysql

Η MariaDB αναπτύσσεται από την κοινότητα Ανοικτού/Ελεύθερου Λογισμικού και είναι fork της γνωστής MySQL, η οποία από το 2010 ανήκει στην Oracle. Θα παρατηρήσετε ότι παρά την επιλογή μας, ορισμένα πακέτα περιλαμβάνουν το όνομα της MySQL (π.χ., php5-mysql). Το ίδιο ισχύει και με κάποια εργαλεία κι εντολές που θα χρησιμοποιήσουμε σε πολύ λίγο (π.χ., mysql, mysql_secure_installation κ.ά.). Το γεγονός αυτό δεν πρέπει να μας προκαλεί εντύπωση, αφού η MariaDB έχει σχεδιαστεί ως drop-in replacement της MySQL.

Κατά την εγκατάσταση της MariaDB μάς ζητείται να ορίσουμε ένα συνθηματικό για τον χρήστη root. Προσοχή: Μιλάμε για τον root της MariaDB -- η συνωνυμία με τον root του λειτουργικού συστήματος είναι εντελώς συμπτωματική.

Κατά την εγκατάσταση της MariaDB μάς ζητείται να ορίσουμε ένα συνθηματικό για τον χρήστη root. Προσοχή: Μιλάμε για τον root της MariaDB — η συνωνυμία με τον root του λειτουργικού συστήματος είναι εντελώς συμπτωματική.

Αμέσως μετά την εγκατάσταση της MariaDB είναι καλό να φροντίσουμε για ορισμένες ρυθμίσεις που αφορούν στην ασφάλεια. Καταφεύγουμε στο εργαλείο mysql_secure_installation, το οποίο τρέχουμε με δικαιώματα διαχειριστή συστήματος:

pi@nordostbahnhof:~ $ sudo mysql_secure_installation

Θα μας απευθυνθούν μια σειρά από ερωτήσεις. Εκτός ίσως από την πρώτη, η οποία αφορά στον καθορισμό password για τον root της MariaDB, σε όλες τις υπόλοιπες ερωτήσεις προτείνεται ν’ αφήνουμε την προεπιλεγμένη απάντηση.

Κατά την εγκατάσταση της MariaDB είχαμε ορίσει password για τον root, οπότε δεν χρειάζεται να το κάνουμε τώρα. Συμφωνούμε, όμως, με τη διαγραφή του λογαριασμού του ανώνυμου χρήστη.

Κατά την εγκατάσταση της MariaDB είχαμε ορίσει password για τον root, οπότε δεν χρειάζεται να το κάνουμε τώρα. Συμφωνούμε, όμως, με τη διαγραφή του λογαριασμού του ανώνυμου χρήστη.

Για λόγους ασφαλείας απαγορεύουμε τις απομακρυσμένες συνδέσεις στο λογαριασμό root της MariaDB, ενώ διαγράφουμε και τη δοκιμαστική βάση δεδομένων με όνομα 'test'.

Για λόγους ασφαλείας απαγορεύουμε τις απομακρυσμένες συνδέσεις στο λογαριασμό root της MariaDB, ενώ διαγράφουμε και τη δοκιμαστική βάση δεδομένων με όνομα ‘test’.

Δημιουργία βάσης και χρήστη στη MariaDB
Θα φτιάξουμε τώρα μία νέα βάση δεδομένων για τη MariaDB, την οποία θα χρησιμοποιεί το Nextcloud. Η βάση από μόνη της δεν αρκεί, χρειάζεται κι ένας λογαριασμός χρήστη –της MariaDB– με πλήρη δικαιώματα επί της βάσεως. Αυτόν το λογαριασμό, ουσιαστικά, θα χρησιμοποιεί το Nextcloud, ώστε να έχει πρόσβαση στη βάση. Παραθέτουμε τις εντολές για τη δημιουργία της νέας βάσης, του νέου λογαριασμού, καθώς και της απόδοσης των σχετικών δικαιωμάτων πρόσβασης:

pi@nordostbahnhof:~ $ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nxtcloud_db;
MariaDB [(none)]> CREATE USER 'nxtcloud_db_user'@'localhost' IDENTIFIED BY 'nxtcloud_db_user_passwd';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nxtcloud_db.* TO 'nxtcloud_db_user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT

Το όνομα της νέας βάσης είναι nxtcloud_db, το όνομα του νέου χρήστη είναι nxtcloud_db_user, το δε password του είναι το nxtcloud_db_user_passwd. Καταλαβαίνετε τώρα ότι στο σημείο αυτό είμαστε υποχρεωμένοι να υπογραμμίσουμε ότι για τον δικό σας χρήστη, όπως κι αν τον ονομάσετε, θα πρέπει να ορίσετε διαφορετικό password. Προσέξτε: Ούτε για μια στιγμή δεν πέρασε από το μυαλό μας η ιδέα πως δεν θα ορίζατε διαφορετικό password για τον χρήστη σας. Απλά, αισθανόμαστε υποχρεωμένοι να κάνουμε τη σχετική παρατήρηση. Και τώρα που την κάναμε, η ιδέα που προηγουμένως δεν επρόκειτο να περάσει καν από το μυαλό μας, ε, πέρασε ήδη.

Δημιουργία νέας βάσης δεδομένων και χρήστη της MariaDB, για τις ανάγκες του Nextcloud.

Δημιουργία νέας βάσης δεδομένων και χρήστη της MariaDB, για τις ανάγκες του Nextcloud.

Λήψη κι εγκατάσταση του Nextcloud
Πηγαίνουμε στο

https://download.nextcloud.com/server/releases

και ψάχνουμε για την πλέον πρόσφατη έκδοση του Nextcloud. Τη στιγμή που γράφονται αυτές οι γραμμές, η νεότερη έκδοση είναι η 11.0.0. Την κατεβάζουμε στο RasPi με τη βοήθεια του εργαλείου wget:

pi@nordostbahnhof:~ $ mkdir incoming && cd incoming
pi@nordostbahnhof:~/incoming $ wget https://download.nextcloud.com/server/releases/nextcloud-11.0.0.zip

Αποσυμπιέζουμε το αρχείο ZIP με το εργαλείο unzip:

pi@nordostbahnhof:~/incoming $ unzip nextcloud-11.0.0.zip

Θα δημιουργηθεί ο κατάλογος nextcloud…

pi@nordostbahnhof:~/incoming $ ls -lh
total 48M
drwxr-xr-x 14 pi pi 4.0K Dec 13 13:25 nextcloud
-rw-r--r--  1 pi pi  48M Dec 13 14:34 nextcloud-11.0.0.zip

…τον οποίο πρέπει να μεταφέρουμε στο /var/www/html, δηλαδή στο προκαθορισμένο DocumentRoot του Apache στο Raspbian:

pi@nordostbahnhof:~/incoming $ sudo mv nextcloud /var/www/html

Κατ’ αυτόν τον τρόπο, στο web panel του Nextcloud θα φτάνουμε πληκτρολογώντας τη διεύθυνση

https://nue.colder.xyz/nextcloud

(στη θέση του nue.colder.xyz θα βάζετε το δικό σας (sub)domain). Αν τώρα θέλετε να μην πληκτρολογείτε το ‘/nextcloud’ στο URL, τότε αντί να μεταφέρετε τον κατάλογο nextcloud κάτω από το /var/www/html θα μεταφέρετε το περιεχόμενο του nextcloud κάτω από το /var/www/html.

Φτιάχνουμε τώρα το data directory του Nextcloud, δηλαδή τον κατάλογο εντός του οποίου αποθηκεύονται όλα τα αρχεία που ανεβάζουμε στο RasPi και διαχειρίζεται η πλατφόρμα. Η προκαθορισμένη θέση για το data directory είναι η /var/www/html/nextcloud, γεγονός που για την περίπτωσή μας σημαίνει ότι το data θα βρίσκεται πάνω στην κάρτα SD. Δεν πρόκειται για την καλύτερη δυνατή θέση, τόσο για λόγους επιδόσεων όσο και ασφαλείας. Προς το παρόν όμως ας δημιουργήσουμε το data στην προκαθορισμένη θέση και λίγο αργότερα το μεταφέρουμε αλλού:

pi@nordostbahnhof:~/incoming $ sudo mkdir /var/www/html/nextcloud/data

Ο κατάλογος πρέπει να ανήκει στο χρήστη και στην ομάδα www-data:

pi@nordostbahnhof:~/incoming $ sudo chown www-data:www-data /var/www/html/nextcloud/data

Φροντίζουμε και για τα δικαιώματα πρόσβασης:

pi@nordostbahnhof:~/incoming $ sudo chmod 750 /var/www/html/nextcloud/data

Πριν προχωρήσουμε στη ρύθμιση του Nextcloud, αλλάζουμε το ιδιοκτησιακό καθεστώς των καταλόγων config και apps, κάτω από τον κατάλογο /var/www/html/nextcloud:

pi@nordostbahnhof:~/incoming $ cd /var/www/html/nextcloud
pi@nordostbahnhof:/var/www/html/nextcloud $ sudo chown www-data:www-data config apps

Πρώτη ρύθμιση Nextcloud
Στη μπάρα διευθύνσεων του web browser της προτίμησής μας, πληκτρολογούμε τη διεύθυνση

https://nue.colder.xyz/nextcloud

Στη σελίδα που εμφανίζεται συμπληρώνουμε τα ακόλουθα στοιχεία:

  • username και password για το νέο χρήστη του Nextcloud (πρόκειται για λογαριασμό με δικαιώματα διαχειριστή και η δημιουργία του είναι υποχρεωτική)
  • την πλήρη διαδρομή του καταλόγου data (π.χ., /var/www/html/nextcloud/data)
  • το username του χρήστη της MariaDB, ο οποίος έχει πλήρη δικαιώματα στη βάση που φτιάξαμε για το Nextcloud
  • το password του προαναφερθέντος χρήστη
  • το όνομα της βάσης της MariaDB, που δημιουργήσαμε για το Nextcloud

Επικυρώνουμε με ένα κλικ στο κουμπί Finish setup, στο κάτω μέρος της σελίδας. Αν όλα έχουν πάει καλά, αντικρίζουμε τώρα τη σελίδα καλωσορίσματος του Nextcloud. Υπάρχουν κάποιες προτάσεις για clients διαφόρων λειτουργικών συστημάτων, ώστε να συγχρονίζουμε εύκολα αρχεία και καταλόγους με το Nextcloud. Προς το παρόν κλείνουμε το pop-up με τις προτάσεις. Ούτως ή άλλως, ανά πάσα στιγμή μπορούμε να το εμφανίσουμε και πάλι.

Η αρχική ρύθμιση του Nextcloud περιλαμβάνει τη δημιουργία ενός λογαριασμού χρήστη για την πλατφόρμα με δικαιώματα διαχειριστή, την υπόδειξη της θέσης του data directory, τον καθορισμό της βάσης δεδομένων που φτιάξαμε για το Nextcloud -- βεβαίως και τον καθορισμό του χρήστη με δικαιώματα διαχειριστή επί της βάσης.

Η αρχική ρύθμιση του Nextcloud περιλαμβάνει τη δημιουργία ενός λογαριασμού χρήστη για την πλατφόρμα με δικαιώματα διαχειριστή, την υπόδειξη της θέσης του data directory, τον καθορισμό της βάσης δεδομένων που φτιάξαμε για το Nextcloud — βεβαίως και τον καθορισμό του χρήστη με δικαιώματα διαχειριστή επί της βάσης.

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

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

Ενίσχυση της ασφάλειας
Έχοντας συνδεθεί στο λογαριασμό του χρήστη μας στο Nextcloud από το web panel της πλατφόρμας, κάνουμε κλικ στο username πάνω δεξιά κι από το μενού που εμφανίζεται επιλέγουμε το Admin. Στο πάνω μέρος της νέας σελίδας που φορτώνει υπάρχουν τρεις προειδοποιήσεις — ή τουλάχιστον τόσες ήταν στη δική μας περίπτωση. Οι δύο πρώτες αφορούν στην ασφάλεια και η τρίτη στις επιδόσεις του Nextcloud. Στη συνέχεια θα φροντίσουμε ώστε όλες τους να εξαφανιστούν.

Προειδοποιήσεις περί ασφάλειας κι επιδόσεων της εγκατάστασης του Nextcloud που μόλις πραγματοποιήσαμε. Δεν πρέπει να τις αγνοήσουμε -- ειδικά εκείνες που αφορούν στην ασφάλεια.

Προειδοποιήσεις περί ασφάλειας κι επιδόσεων της εγκατάστασης του Nextcloud που μόλις πραγματοποιήσαμε. Δεν πρέπει να τις αγνοήσουμε — ειδικά εκείνες που αφορούν στην ασφάλεια.

Νομίζουμε ότι η πρώτη προειδοποίηση είναι σαφής: το data directory του Nextcloud δεν πρέπει να βρίσκεται κάτω από το DocumentRoot του Apache. Προς το παρόν είναι μέσα στο /var/www/html/nextcloud, άρα εκεί που δεν πρέπει να βρίσκεται :) Από τη μεριά μας φτιάξαμε τον κατάλογο nextcloud κάτω από το /mnt/storage και μεταφέραμε το data εκεί. Στο /mnt/storage είναι προσαρτημένο ένα USB thumb drive, οπότε μεταφέροντας τον κατάλογο data κερδίσαμε τόσο σε ασφάλεια όσο και σε επιδόσεις:

pi@nordostbahnhof:~ $ sudo mkdir /mnt/storage/nextcloud
pi@nordostbahnhof:~ $ sudo mv /var/www/html/nextcloud/data /mnt/storage/nextcloud/

Μετά τη μεταφορά του καταλόγου data πρέπει, φυσικά, να ενημερώσουμε σχετικά και το Nextcloud. Αρκεί να τροποποιήσουμε την τιμή της παραμέτρου datadirectory, στο αρχείο ρυθμίσεων config.php κάτω από το /var/www/html/nextcloud/config. Πριν κάνουμε την αλλαγή μας, είναι καλή ιδέα να κρατήσουμε ένα αντίγραφο του config.php. Δείτε:

pi@nordostbahnhof:~ $ cd /var/www/html/nextcloud/config
pi@nordostbahnhof:/var/www/html/nextcloud/config $ sudo cp -p config.php config.php.ORIG
pi@nordostbahnhof:/var/www/html/nextcloud/config $ sudo vi config.php 

Στο παράδειγμά μας ανοίγουμε το config.php με το vi, εννοείται όμως ότι μπορείτε να το ανοίξετε με έναν οποιονδήποτε άλλο text editor (π.χ., με το nano). Όπως και να ‘χει, εντοπίζουμε τη γραμμή

'datadirectory' => '/var/www/html/nextcloud/data',

και την αλλάζουμε σε

'datadirectory' => '/mnt/storage/nextcloud/data',

Προσοχή χρειάζεται με το κόμμα, το οποίο δεν πρέπει να διαγράψουμε! Αποθηκεύουμε τις αλλαγές στο config.php κι εγκαταλείπουμε τον editor. Κάνοντας reload στη σελίδα του Nextcloud με τις προειδοποιήσεις, διαπιστώνουμε ότι εκείνη περί της θέσης του καταλόγου data δεν υπάρχει πια. Καλό αυτό.

Στρέφουμε τώρα την προσοχή μας στην άλλη προειδοποίηση ασφαλείας, σχετικά με το HSTS. Θέτοντας την κατάλληλη τιμή στο HTTP Strict Transport Security header, διασφαλίζουμε ότι στους clients του Nextcloud δεν θα επιτρέπονται απλές συνδέσεις HTTP. Προσέξτε: Ο Apache μας είναι έτσι ρυθμισμένος ώστε να ανακατευθύνει τις συνδέσεις HTTP σε συνδέσεις HTTPS. Χωρίς όμως το Strict Transport Security header, η υλοποίηση επιθέσεων Man-in-The-Middle είναι εφικτή. Για το HSTS, με δικαιώματα διαχειριστή ανοίγουμε το αρχείο /etc/apache2/sites-available/000-default-le-ssl.conf…

pi@nordostbahnhof:~ $ sudo vi /etc/apache2/sites-available/000-default-le-ssl.conf

και στο τέλος της ενότητας προσθέτουμε τις ακόλουθες τρεις γραμμές:

<IfModule mod_headers.c>
	Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>

Αποθηκεύουμε τις αλλαγές στο 000-default-le-ssl.conf, εγκαταλείπουμε τον editor, φορτώνουμε το module του Apache ονόματι headers…

pi@nordostbahnhof:~ $ sudo a2enmod headers

…κι επανεκκινούμε τον Apache:

pi@nordostbahnhof:~ $ sudo systemctl restart apache2.service

Με refresh στη σελίδα Admin του Nextcloud διαπιστώνουμε ότι η προειδοποίηση για το HSTS έχει εξαφανιστεί. Ως έξτρα μπόνους, κάνοντας στο SSL labs το SSL test για το site του Nextcloud (για εμάς είναι το https://nue.colder.xyz), η τελική βαθμολογία που παίρνουμε δεν είναι απλά ‘A’ αλλά ‘A+’!

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

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

Χάρη στο HTTP Strict Transport Security header που θέσαμε για το site του Nextcloud, τους ελέγχους του SSL Labs τους περνάμε με βαθμολογία 'A+'. Θυμόσαστε τη βαθμολογία που είχαμε πάρει μετά την εφαρμογή των οδηγιών του άρθρου 'Ο Apache στο Raspberry Pi, με έγκυρο πιστοποιητικό'; Ήταν 'A' σκέτο :/

Χάρη στο HTTP Strict Transport Security header που θέσαμε για το site του Nextcloud, τους ελέγχους του SSL Labs τους περνάμε με βαθμολογία ‘A+’. Θυμόσαστε τη βαθμολογία που είχαμε πάρει μετά την εφαρμογή των οδηγιών του άρθρου ‘Ο Apache στο Raspberry Pi, με έγκυρο πιστοποιητικό’; Ήταν ‘A’ σκέτο :/

Βελτίωση επιδόσεων και συμπεριφορά της PHP
Προς το παρόν δεν υπάρχει κάποιος μηχανισμός memory caching ενεργοποιημένος για το Nextcloud — κι αυτό έχει αρνητική επίδραση στις επιδόσεις της πλατφόρμας. Σε λίγο θα ενεργοποιήσουμε το σύστημα memory caching ονόματι APCu (κατάλληλο για την PHP5 που χρησιμοποιούμε), έτσι τα αντικείμενα που ζητούνται συχνά από τους clients θα διατηρούνται στη μνήμη του RasPi και συνεπώς η πρόσβαση σ’ αυτά θα γίνεται πολύ γρηγορότερα. Ξεκινάμε εγκαθιστώντας το πακέτο php5-apcu…

pi@nordostbahnhof:~ $ sudo apt-get install php5-apcu

κι αμέσως μετά επανεκκινούμε τον Apache:

pi@nordostbahnhof:~ $ sudo systemctl restart apache2.service

Με τον text editor της επιλογής μας και δικαιώματα διαχειριστή (sudo), ανοίγουμε το αρχείο /var/www/html/nextcloud/config/config.php. Σε μια νέα γραμμή πάνω από την τελευταία παρένθεση, εισάγουμε την ακόλουθη οδηγία:

'memcache.local' => '\OC\Memcache\APCu',

(προσοχή, το κόμμα χρειάζεται). Αποθηκεύουμε την αλλαγή στο config.php κι εγκαταλείπουμε τον editor. Επιστρέφοντας στον web browser, φρεσκάρουμε τη σελίδα Admin του Nextcloud. Αν όλα έχουν πάει καλά τότε η προειδοποίηση περί memory caching θα έχει εξαφανιστεί. Λογικά, δεν θα υπάρχει καμία προειδοποίηση.

Μετά τις παρεμβάσεις μας, στη σελίδα Admin του Nextcloud δεν υπάρχει καμία προειδοποίηση. Όχι μόνο αυτό, αλλά παίρνουμε κι αυτό το ευχάριστο μήνυμα για όλους εκείνους τους ελέγχους που έγιναν επιτυχώς κι αυτή τη στιγμή η ζωή δύσκολα θα μπορούσε να 'ναι πιο ωραία.

Μετά τις παρεμβάσεις μας, στη σελίδα Admin του Nextcloud δεν υπάρχει καμία προειδοποίηση. Όχι μόνο αυτό, αλλά παίρνουμε κι αυτό το ευχάριστο μήνυμα για όλους εκείνους τους ελέγχους που έγιναν επιτυχώς κι αυτή τη στιγμή η ζωή δύσκολα θα μπορούσε να ‘ναι πιο ωραία.

Προτάσεις για τη συνέχεια
Ο καλύτερος τρόπος για να στέλνουμε αρχεία στο Nextcloud καθώς και για να τα συγχρονίζουμε (επιλεκτικά) μεταξύ των συσκευών μας, είναι με τη βοήθεια του κατάλληλου client για το εκάστοτε λειτουργικό σύστημα. Αν κάνουμε κλικ στο όνομα του χρήστη μας (πάνω δεξιά), από το μενού που εμφανίζεται διαλέξουμε το Personal, στην οριζόντια μπάρα αριστερά πατήσουμε στο Sync clients και κάνουμε κι ένα τελευταίο κλικ στο κουμπί Show First Run Wizard again (δεξιά), εμφανίζεται τότε ένα pop-up για επιλογή client: είναι αυτό που είχαμε δει αμέσως μετά την επιτυχή ρύθμιση του Nextcloud.

Στις δικές σας συσκευές προτείνουμε να κατεβάσετε και να εγκαταστήσετε τον κατάλληλο Nextcloud client. Όσοι χρησιμοποιείτε Dropbox θα διαπιστώσετε ότι σε γενικές γραμμές ακολουθείται η ίδια λογική: υποδεικνύουμε έναν τοπικό κατάλογο, τα περιεχόμενα του οποίου συγχρονίζονται αυτόματα με τον ίδιο κατάλογο στον server. Φυσικά, σε κάθε συσκευή μπορούμε να υποδεικνύουμε υποκαταλόγους οι οποίοι ναι μεν βρίσκονται στον server, αλλά δεν συγχρονίζονται με τον συγκεκριμένο client.

Θα υπάρξουν βέβαια και οι περιπτώσεις όπου θα χρειάζεται ν’ ανεβάσουμε στο Nextcloud ένα ή περισσότερα αρχεία, όμως στον υπολογιστή από τον οποίο εργαζόμαστε αφενός δεν θα υπάρχει client, αφετέρου δεν θα θέλουμε ή/και δεν θα μπορούμε να εγκαταστήσουμε έναν. Κανένα πρόβλημα: Ανά πάσα στιγμή μπορούμε ν’ ανεβάζουμε αρχεία μέσω του web browser (αφού φυσικά συνδεθούμε στο λογαριασμό μας στο Nextcloud). Ουσιαστικά, το uploading το αναλαμβάνει η PHP. Έτσι όπως είναι το σχετικό αρχείο ρυθμίσεων, υπάρχει ένα όριο στο μέγεθος των αρχείων που ανεβάζουμε κι αυτό το όριο είναι τα 2MB. Πιθανώς να το βρείτε κάπως περιοριστικό, οπότε θα θελήσετε να το αλλάξετε. Προς τούτο, με δικαιώματα διαχειριστή ανοίγουμε το αρχείο /etc/php5/apache2/php.ini, εντοπίζουμε τις ακόλουθες δύο γραμμές

post_max_size = 8M
upload_max_filesize = 2M

(δεν είναι μαζί) κι αλλάζουμε τις τιμές για τις δύο παραμέτρους. Για παράδειγμα, στο δικό μας php.ini ισχύει:

post_max_size = 16M
upload_max_filesize = 16M

Αυτή τη στιγμή η εγκατάσταση του Nextcloud στο Raspberry Pi είναι πανέτοιμη! Υπάρχουν αρκετά που θέλουμε να δείξουμε αναφορικά με τη συγκεκριμένη πλατφόρμα, ενώ υπάρχουν και κάποιες γενικές στρατηγικές backup που έχουμε κατά νου και θα θέλαμε να συζητήσουμε. Το επόμενο διάστημα θα επανερχόμαστε με tips, tricks, καθώς και πλήρη άρθρα. Έως τότε, εξερευνήστε τις δυνατότητες του Nextcloud και χαρείτε το σε καθημερινή βάση.

29 Responses to “Nextcloud στο Raspberry Pi, από την καλή”

  1. lmike | 06/01/2017 at 15:18

    Το περιοδικο δεν βγαινει ποια??

    • subZraw | 06/01/2017 at 15:24

      Φυσικά και βγαίνει. Μέσα στο ΣΚ θα έχουμε νέο τεύχος, BTW :)

      • lmike | 06/01/2017 at 15:28

        Επειδη εχουν περασει 3 μηνες :P

        • subZraw | 06/01/2017 at 15:31

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

  2. geozar | 06/01/2017 at 22:17

    Χρήστο καλη χρονια το nextcloud δεν ειναι < του owncloud??

    Επισης έχεις δοκιμάσει να βάλεις HDD και να τους βγαλεις σε raid 1

    • subZraw | 06/01/2017 at 22:24

      Καλησπέρα Γιώργο — επίσης χρόνια πολλά!
      Σε σύγκριση με το ownCloud, το Nextcloud είναι το μέλλον. Για HDD στο Raspberry Pi περιμένω από Δευτέρα να λάβω powered USB hub, ώστε να συνδέσω έναν 500άρη USB δίσκο που έχω να κάθεται. Με το RAID δεν σκοπεύω να πειραματιστώ τώρα κοντά. Στα σχέδιά μου είναι το στήσιμο δεύτερου Nextcloud που θα χρησιμοποιεί Storage Box της Hetzner και θα είναι federated με το RasPi στο σπίτι. Θα ακολουθήσουν σχετικά άρθρα, περιττό να σημειώσω :)

      • geozar | 06/01/2017 at 23:30

        Αναμενουμε!!!! :)

      • ToPnt | 07/01/2017 at 03:17

        Καταρχήν μπράβο σας για το άρθρο. Ωραία η αναφορά για το NextCloud και το Raspberry Pi ( έχουν κάνει και το Nextcloud Box ).

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

        Το ότι αναφέρετε ότι :
        “Σε σύγκριση με το ownCloud, το Nextcloud είναι το μέλλον”

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

        Το ότι χρησιμοποιείτε ως βάση δεδομένων την MariaDB για
        “καλύτερες επιδόσεις”, αν και αναφέρετε μερικά περαιτέρω πράγματα για την MariaDB, δεν αιτιολογείται όμως περισσότερο το θέμα επιδόσεων όπου θίγεται.

        Στην τελευταία έκδοση του NextCloud αληθεύει πως έχουν βάλει και βίντεο κλήσεις ή λάθος διάβασα;
        ( Δεν πρόλαβα να την δοκιμάσω )

        Μπράβο σας και ευχαριστώ.
        Με σεβασμό.

        • subZraw | 07/01/2017 at 09:27

          Καλημέρα φίλε μας,

          Η αλήθεια είναι πως 100% βέβαιοι για το αν το Nextcloud αποτελεί το μέλλον, δεν μπορούμε να είμαστε. Κανείς δεν μπορεί να είναι, εδώ που τα λέμε. Αν όμως διαβάσεις τι έχει γίνει με το ownCloud και το fork που προέκυψε απ’ αυτό (λέγε με Nextcloud), θα καταλάβεις γιατί *εικάζουμε* ότι το Nextcloud είναι πράγματι το μέλλον (https://en.wikipedia.org/wiki/Nextcloud#History_of_the_fork).

          Η SQLite, εξάλλου, είναι καταλληλότερη για μικρές εγκαταστάσεις του Nextcloud, όπου στον server υπάρχουν λίγοι χρήστες και φιλοξενούνται λίγα σχετικά αρχεία. Σε κάθε άλλη περίπτωση, μια σχεσιακή βάση δεδομένων σαν τη MariaDB αποδίδει πολύ καλύτερα. Δες τι προτείνεται και στο manual του Nextcloud: https://docs.nextcloud.com/server/11/admin_manual/configuration_server/server_tuning.html?highlight=performance

          • ToPnt | 07/01/2017 at 17:22

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

            Όσο για την βάση δεδομένων, κάποιους που έχει εγκατεστημένη στο σύστημα του την MySQL, γίνεται να εγκαταστήσει και την MariaDB χωρίς κανένα πρόβλημα;

            • subZraw | 09/01/2017 at 00:13

              Χμ, η MariaDB αποτελεί drop-in replacement της MySQL, οπότε δε νομίζω ότι γίνεται (ή έστω ότι έχει νόημα) να είναι και οι δύο *ταυτόχρονα* εγκατεστημένες στο ίδιο σύστημα.

              • ToPnt | 13/01/2017 at 00:29

                Για να είμαι ειλικρινής, διάβασα μερικά πράγματα παραπάνω για την MariaDB, διότι δε την γνώριζα στην πράξη.

                Σε ευχαριστώ για αυτό.

                Από ότι είδα είναι πιο ελεύθερη από την MySQL και δημιουργήθηκε και αυτή από τον δημιουργώ της, αφότου η MySQL πουλήθηκε στην Oracle, τα λέω καλά;

                Μοιάζει η ιστορία της με του Owncloud.

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

                Σκοπός της είναι να αντικαταστήσει την MySQL όπως λες; Εγώ που έχω μάθει περισσότερο στην MySQL , οι διαφορές θα είναι αισθητές;

                Όσο για θέμα επιδόσεων εννοείται πως δε θα σύγκρινα ποτέ την MySQL ή MariaDB με κάποια “lite” έκδοση. Από ότι βλέπω όμως.. η MariaDB είναι πολύ ανταγωνιστική της MySQL ; Έχει και καλύτερες επιδόσεις;
                Εντάξει το θέμα αυτό είναι πάντα ίσος σχετικό και σε λεπτομέρειες.. αλλά θα μου άρεσε αν είχες χρόνο μια σύντομη άποψη σου πάνω στο θέμα.

                Και πάλι ευχαριστώ!

      • sgeorge | 02/05/2017 at 10:55

        Καλημερα

        Σκεφτομαι να χρησιμοποιησω το R Pi για εσωτερικο cloud και το αρθρο ηρθε την καταλληλη στιγμη. Θελω να παρω ενα νεο δισκο αποκλειστικα γι αυτο τον λογο. Ξερουμε κατι για τα ορια δισκων που “σηκωνει” το Raspberry PI? Δοκιμαζα 2.5″ δισκο 1ΤΒ και εκανε διάφορα. Εδειχνε οτι εκανε προσπαθεια να τον διαβασει χωρις επιτυχία και καποιες φορες εκανε reboot. Εαν εχει εξωτερικη τροφοδοσια ειναι καλυτερα? Νομιζω επισης οτι οταν ο δισκος δεν ηταν στα ορια του (900GB γεματος) τον διαβαζε κανονικα. Τελικα φταιει το μεγεθος ή η τροφοδοσια?

  3. bshark | 07/01/2017 at 16:09

    Ωραία πράγματα!! Οικιακή αυτο-οργάνωση είναι το όνειρο και μας βοηθάς να το καταφέρουμε.
    Ερώτηση τώρα, λίγο αδαής.
    Προφανώς θα παίξει το owncloud σε κάποιον απομακρυσμένο server που συντηρώ έτσι;
    Για μας που δεν έχουμε static ip όχι τίποτα άλλο

    • ToPnt | 07/01/2017 at 17:26

      Αν θες να έχεις πρόσβαση έξω από το σπίτι σου χρειάζεται να γνωρίζεις την wan ip του δικτύου σου. Για αυτό τον λόγο επειδή η οικιακή αλλάζει, μπορείς να χρησιμοποιήσεις υπηρεσίες όπως το noip.com ( αναφέρετε και άλλες που τυχών γνωρίζεται, με ενδιαφέρει ). Από το noip.com μπορείς να έχεις *δωρεάν* κάποια domain όπου σε αυτά να αντιστοιχίζεις την ip από το σπίτι σου.

    • subZraw | 07/01/2017 at 17:32

      Ναι, φυσικά και θα παίξει :)

      • bshark | 07/01/2017 at 17:41

        Φυσικά!
        Ευχαριστώ

        [Ωραίο σνειλ μαιλ!

      • bshark | 08/01/2017 at 03:16

        Κλαίω από τη χαρά μου. Παίζει φωτιά. πισιά, ανδροιδή, κονσολες, λινουξ…
        Η χαρά της δημιουργίας που λένε!!
        Μany Thanx!!!!!

        • subZraw | 09/01/2017 at 00:14

          Κανένας λόγος για ευχαριστίες! Την ίδια χαρά έχω πάρει κι εγώ άλλωστε :)

  4. bshark | 07/01/2017 at 17:30

    Έχω ήδη domain (κατά προέκταση και subdomain) που μπορώ να διαθέσω για κάποια owncloud εγκατάσταση στο debian server μου. Επίσης γενικά δε με διευκολύνουν αυτές οι οικιακές εγκαταστάσεις για πολλούς και διάφορους λόγους.
    Σε ευχαριστώ πολύ πάντως.

    • ToPnt | 07/01/2017 at 17:44

      Μην ξεχνιόμαστε μιλάμε πλέον για … Nextcloud , όχι για *own* ! ;)

      • bshark | 07/01/2017 at 18:03

        Χμμ ένα point το χεις. Βέβαια εξαρτάται πόσο αφαιρετικά και από ποια γωνία το βλέπεις. Δε βαριέσαι..
        Για να γίνω πιο συγκεκριμένος διατηρώ ένα vm στον okeano(grnet) και μαρέσει να πειραματίζομαι.

  5. GenocideX | 08/01/2017 at 01:29

    Χρήστο καλησπέρα. Πολύ καλό το άρθρο σου.

    Να συμπληρώσω εδώ οτι μπορείς να χρησιμοποιήσεις το mysql-tuner, το οποίο είναι ενα perl script που κάνει audit την MariaDB (και κατ’ επέκταση και την MySQL) και στην συνέχεια σου κάνει προτάσεις για την βελτιστοποίηση των επιδόσεων της DB.
    http://mysqltuner.com/

    Επίσης, σητν πράξη αυτο που έχω δοκιμάσει είναι το cloudflare, το οποίο εκτός απο την άριστη διαχείριση των DNS records για το domain name, προσφέρει πολύ καλο caching και browser protection. Το σημαντικότερο όμως όλων είναι οτι η cloudflare, με την χρήση του κατάλληλου script, προσφέρει την δυνατότητα να χρησιμοποιούμε registered domain name (οχι no-ip ή dyndns subdomain) καρφωμένο πάνω σε δυναμική-οικιακή IP, το οποίο θα ανανεώνεται αυτόματα οταν αυτη αλλάζει.

    Το πρόβλημα με το παραπάνω ωστόσο είναι οτι οταν χρησιμοποείς client, υποχρεωτικά ορίζεις μονο μια διευθυνση (URL του raspberry pi με το domain name) και έτσι πρακτικά οταν είσαι στο ίδιο LAN ο client δεν μπορεί (λόγω DNS) να μεταφράσει το εν λόγω URL και ο συγχρονισμός είναι αδύνατος. Απο την έρευνα που έχω κάνει, οι περισσότεροι λύνουν το πρόβλημα με hairpin NAT αν το επιτρέπει το router τους ή με script που πειράζουν το hosts file της συσκευής που τρέχει το client ανάλογα με την τοοθεσία. Εχεις καμία ιδέα για το πως θα μπορούσε να αντιμετωπιστεί διαφορετικά αυτό;

    Τέλος να συμπληρώσω οτι μια άριστη εναλλακτική για τον apache και την PHP 5.x είναι ο συνδυασμός Nginx/PHP 7.x. Ο nginx συμπεριφέρεται πολύ καλά οταν πρόκειται να φορτώσει φωτογραφίες και γενικά static files ενω η PHP 7, αν και απαιτικότερη σε σχέση με την 5, αποδίδει πολύ καλα στο RPI ενω ταυτόχρονα προσφέρει ισχυρότερα security features.

    • subZraw | 09/01/2017 at 00:38

      Γεια χαρά, Ευάγγελε :)

      Για το Cloudflare έχω ακούσει πολλά καλά και θέλω να το δοκιμάσω κι εγώ. Προς το παρόν όμως θα μείνω με τον δικό μου name server, δηλαδή με εκείνον που έρχεται με το MiAB. Το API του συγκεκριμένου name server επιτρέπει, μεταξύ άλλων, να έχεις A record με (sub)domain που αντιστοιχεί σε δυναμικό IP. Είναι νομίζω μια πραγματικά χρήσιμη δυνατότητα που την αναφέρω σε κάθε ευκαιρία :)

      Όσο για το θέμα που αναφέρεις με το resolving, με κάποιους routers υφίσταται, με κάποιους άλλους όχι. Όταν πράγματι υφίσταται, σκέφτομαι τώρα ότι μια λύση είναι η τροποποίηση του hosts file του router, ώστε στο domain που σε ενδιαφέρει να αντιστοιχίζεται το εσωτερικό IP του Raspberry. Το pfSense, π.χ., υποστηρίζει κάτι τέτοιο, καθώς και τα firmware άλλων (τυπικών) routers.

  6. ToPnt | 15/01/2017 at 13:31

    Ωραίο θα ήταν κάποια στιγμή να μας παρουσιάζατε και περί της κρυπτογραφίας που μπορεί να προσφέρει το Nextcloud. Σε ποιο επίπεδο, πόσο ασφαλές είναι , πως επιτυγχάνεται και αν μπορούμε να την εφαρμόσουμε…

    Έτσι μια ιδέα δίνω… για ένα ίσος και από τα βασικότερα χαρακτηριστικά που θα μας ενδιέφερε ενδεχομένως για τέτοιου είδους υπηρεσίες ακόμη και αν τις κατέχουμε εμείς.

    Καλή συνέχεια. :)

  7. ioanniskar | 16/02/2017 at 14:58

    Με αφορμή το παρών έχω κάποιες απορίες.

    Ο συνδυασμός χρωμάτων στο terminal παραπάνω είναι κάποιο profile στo app ή στο raspberry; Μπορείτε να το μοιραστείτε;

    Θα μπορούσε να γίνει χρήση κάποιου NAS αντί για USB δίσκου για χρήση με το nextcloud;

    Κάνω προσάρτηση ενός NAS στο raspberry μέσω του /etc/fstab στην τοποθεσία /mnt/NAS για χρήση σε κάποια άλλη εφαρμογή άσχετη με το nextcloud. Δουλεύει κανονικά αλλά παρατήρησα πως ο δίσκος μου δεν μπαίνει ποτέ σε sleep mode. Επίσης κάποιες φορές, όταν απενεργοποιώ το raspberry μου εμφανίζει μήνυμα: “A stop job is running for /mnt/NAS” και απενεργοποιείται μετά από 1μισο λεπτό. Φαντάζομαι πως δεν γίνεται unmount πριν το shutdown, αλλά δεν βάζω και το χέρι μου στη φωτιά. Υπάρχει κάποιος τρόπος να γίνεται mount ο δίσκος στην εκκίνηση, να μην απασχολείται διαρκώς από το raspberry, και να γίνεται unmount πριν το shutdown;

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων