Εγκατάσταση Nextcloud σε Debian 8

Στον οδηγό αυτόν θα σας δείξουμε αναλυτικά τα βήματα προκειμένου να εγκαταστήσετε το 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.