Στον οδηγό αυτόν θα σας δείξουμε αναλυτικά τα βήματα προκειμένου να εγκαταστήσετε το Nextcloud σε λειτουργικό Debian 8, κάνοντας χρήση του NGINX και της νέας PHP 7.0.

Το Nextcloud είναι η συνέχεια του γνωστού Owncloud που αποτελεί μία λύση self-hosted αποθήκευσης αρχείων.

Ενημέρωση Λειτουργικού

Πρώτο βήμα, όπως πάντα είναι η ενημέρωση του λειτουργικού μας, με την παρακάτω εντολή:

apt-get update && apt-get upgrade
Εγκατάσταση Ngnix

Επόμενο βήμα η εγκατάσταση του web server μας, όπου για λόγους ταχύτητας επιλέγουμε να είναι ο Nginx.

Αρχικά δίνουμε την παρακάτω εντολή:

apt-get install nginx-full nginx-extras

Μόλις ολοκληρωθεί η εγκατάσταση, πληκτρολογούμε την παρακάτω εντολή για να δούμε τη διεύθυνση ip του διακομιστή μας

ifconfig

Στο συγκεκριμένο παράδειγμα υποθέτουμε ότι η ip του διακομιστή μας είναι η 192.168.1.200

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

http://192.168.1.200

Αν όλα έχουν πάει καλά θα δούμε παρόμοια σελίδα με την παρακάτω

Εγκατάσταση MariaDB

Για την βάση δεδομένων επιλέγουμε τη MariaDB, η οποία υπάρχει πλέον στα αποθετήρια του Debian. Κάνουμε την εγκατάσταση με την παρακάτω εντολή:

apt-get install mariadb-server

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

Δημιουργία βάσης δεδομένων

Επόμενο βήμα η δημιουργία μίας νέας βάσης δεδομένων και χρήστη, τα οποία θα χρησιμοποιεί το Wordpress μας.

Αρχικά δίνουμε την παρακάτω εντολή προκειμένου να μπούμε στην γραμμή εντολής της MariaDB:

mysql -u root -p

Θα πρέπει να δώσουμε τον κωδικό του είχαμε επιλέξει κατά την εγκατάσταση της MariaDB στο προηγούμενο βήμα.

Μόλις εμφανιστεί το MariaDB [(none)]> γράφουμε τις παρακάτω εντολές, στις οποίες αλλάζουμε τον κωδικό password, το όνομα της βάσης newdb και τον χρήστη dbuser, σύμφωνα με τις προτιμήσεις μας:

create database nextdb;
grant usage on *.* to nextuser@localhost identified by 'my-super-secure-password';
grant all privileges on nextdb.* to nextuser@localhost;

Τέλος πληκτρολογούμε quit για να βγούμε.

Εγκατάσταση PHP 7.0

Συνεχίζουμε με την εγκατάσταση της php 7.0 και των απαιτούμενων βιβλιοθηκών.

Η php 7.0 δεν υπάρχει στα αποθετήρια του debian και έτσι θα χρησιμοποιήσουμε του dotweb.

Ανοίγουμε το αρχείο /etc/apt/sources.list και στο τέλος προσθέτουμε:

# dotweb repo for php 7.0
deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

Στη συνέχεια περνάμε το κλειδί του νέου αποθετηρίου

wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg

Ενημερώνουμε τα αποθετήρια μας και προχωράμε με την εγκατάσταση της php 7.0 και των απαραίτητων βιβλιοθηκών.

apt-get update
apt-get -y install php7.0-fpm php7.0-cli php7.0-json php7.0-curl php7.0-imap php7.0-gd php7.0-mysql php7.0-xml php7.0-zip php7.0-intl php7.0-mcrypt php7.0-imagick php7.0-mbstring

Κάνουμε τις απαραίτητες αλλαγές σε ρυθμίσεις php, εκτελώντας

sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=1/" /etc/php/7.0/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 200M/" /etc/php/7.0/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 200M/" /etc/php/7.0/fpm/php.ini

Επίσης αλλάζουμε τις ρυθμίσεις του αρχέιου /etc/php/7.0/fpm/pool.d/www.conf προσθέτοντας

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Κάνουμε μία επανεκκίνηση τον nginx αλλά και την php-fpm ώστε να πάρουν τις αλλαγές με την εντολή:

systemctl restart php7.0-fpm
Ρύθμιση NGINX

Για να λειτουργήσει σωστά το nexcloud θα πρέπει να ρυθμίσουμε τον nginx μας.

Αρχικά ανοίγουμε το αρχείο /etc/nginx/sites-enabled/default και το αλλάζουμε σύμφωνα με το παρακάτω παράδειγμα

server {
    listen 80;
    server_name my.nextcloud.gr;

    root /srv/nextcloud;

    access_log  /var/log/nginx/nextcloud.access.log;
    error_log   /var/log/nginx/nextcloud.error.log;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location = /.well-known/carddav { 
        return 301 $scheme://$host/remote.php/dav; 
    }
    location = /.well-known/caldav { 
        return 301 $scheme://$host/remote.php/dav; 
    }

    client_max_body_size 512M;
    fastcgi_buffers 64 4K;
    gzip off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        # Optional: Don't log access to assets
        access_log off;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

    location ~ /\.ht {
        deny all;
    }

}

Στη συνέχεια προχωράμε σε επανεκκίνηση του Nginx προκειμένου να ισχύσουν οι αλλαγές που κάναμε με το παραπάνω αρχείο

systemctl restart nginx
Εγκατάσταση NextCloud

Εγκαθιστούμε το unzip καθώς μας είναι απαραίτητο

apt-get install unzip

Κατεβάζουμε το nextcloud και το περνάμε στον φάκελο /srv

wget https://download.nextcloud.com/server/releases/nextcloud-9.0.52.zip
unzip nextcloud-9.0.52.zip
mv nextcloud /srv/
rm -f nextcloud-9.0.52.zip
chown -R www-data: /srv/nextcloud

Ανοίγουμε τη σελίδα και δίνουμε τις πληροφορίες νέου χρήστη καθώς και της βάσης δεδομένων προκειμένου να ολοκληρώσουμε την εγκατάσταση του nextcloud.