Με τo OnlyOffice και το Nextcloud Talk μπορείτε να κάνετε τηλεργασία και τηλεδιάσκεψη όπου και να βρίσκεστε. Μπορείτε να γράψετε, να επεξεργαστείτε και να συνεργαστείτε με άλλους ακολουθώντας τον παρακάτω οδηγό εγκατάστασης.

Το Nextcloud για όποιον δεν γνωρίζει, δημιουργήθηκε όταν οι Core Developers και οι Top 10 contributors έκαναν fork το ownCloud. Η εξέλιξή του από τότε ήταν ραγδαία και σε κάθε έκδοση προστίθενται νέα χαρακτηριστικά και δυνατότητες.

Η νέα έκδοση, Nextcloud 18 φέρνει δυνατότητες που τις συναντά κανείς στα Google Docs/Spreadsheets κλπ, μαζί φυσικά με όλα τα χαρακτηριστικά που έχει για chat, φωνητικές/βίντεο κλήσεις και άλλα τα οποία είναι ιδανικά για μικρές-μεσαίες επιχειρήσεις ή ακόμα και για το σπίτι.

Σε αυτόν τον οδηγό, σκοπός είναι να έχουμε :

  • Ένα domain (δωρεάν ή φθηνό) π.χ. example.com
  • Έναν server Ubuntu που θα συνδέσουμε με το subdomain του σε αυτό π.χ. cloud.example.com
  • Θα εγκαταστήσουμε LEMP και όλα τα απαραίτητα συνοδευτικά
  • Θα κάνουμε εγκατάσταση το Nextcloud Talk και το OnlyOffice
  • Θα ενεργοποιήσουμε SSL στον server για το domain μας

Σε περίπτωση που δεν σας ενδιαφέρουν όλα αυτά και θέλετε απλά το Nextcloud αλλά σε δικό σας υπολογιστή/raspberry pi τότε δείτε τον οδηγό :

Home Server: Εγκατάσταση Nextcloud – σύνδεση NAS για αρχεία – SSL – PHP 7 – MariaDB (Μέρος 5)

Βήμα 1: Δωρεάν domain Name (προαιρετικό)

Όπως λέω και στον τίτλο, είναι εντελώς προαιρετικό το να πάρετε ένα domain, αφού μπορείτε να χρησιμοποιήσετε κάποιο subdomain από το domain που έχετε ήδη αγορασμένο για τo site σας.

Σε παλιότερο οδηγό είχαμε χρησιμοποιήσει την υπηρεσία Freenom που είναι ένας πάροχος domain name και προσφέρει δωρεάν domain name με καταλήξεις (tk, ml, cf) για ένα χρόνο με δυνατότητα δωρεάν ανανέωσης πάλι για ένα χρόνο. Επίσης το ίδιο προσφέρουν οι Dot.tk και Biz.nf. Το πρόβλημα είναι ότι αυτές οι υπηρεσίες επειδή είναι τσάμπα, μπορεί να πουλήσουν το domain που έχετε τσιμπήσει τζαμπέ και να το πουλήσουν σε κάποιον που το αγόρασε.

Εναλλακτικά αν θέλετε να πάρετε ένα domain για σοβαρή δουλειά και να το κρατήσετε, τότε προτείνουμε την παρακάτω υπηρεσία η οποία έχει domain names με κόστος κάτω του 1€ το χρόνο:

Advertisements

Βήμα 2: Server

Στο παρόν βήμα, χρησιμοποιήσαμε ένα VPServer των 5€ από την Digitalocean. Μπορείτε να δημιουργήστε έναν νέο λογαριασμό από το παρακάτω link και θα λάβετε 100$ credits για να τα χρησιμοποιήσετε μέσα σε 60 ημέρες:

Για τις δοκιμές μας ξεκινήσαμε έναν Server με τα παρακάτω χαρακτηριστικά:

  • 1core CPU
  • 1GB RAM
  • 25GB δίσκος

Ο συγκεκριμένος είναι αρκετός για 1-2 άτομα που θέλουν να χρησιμοποιούν το OnlyOffice μέσω του Nextcloud μαζί με το Nextcloud Talk. Για περισσότερα άτομα ίσως να θέλετε λίγο δυνατότερο server μιας και η επίσημη τεκμηρίωση μιλάει για minimum 2GB RAM. Επίσης, στο Nextcloud Talk υπάρχει όριο 4-5 ταυτόχρονων ατόμων ενώ στο OnlyOffice 20 ατόμων που επεξεργάζονται ταυτόχρονα ένα αρχείο.

Ξεκινήσαμε ένα Droplet (όπως τα ονομάζει η Digitalocean) με Ubuntu 18.04 και αφού ολοκληρώθηκε η προετοιμασία του πήγαμε και διαβάσαμε ένα ωραίο οδηγό για : τα 10 πρώτα λεπτά στον server μας και τα εφαρμόσαμε για να έχουμε το κεφάλι μας ήσυχο.

Βήμα 3: Διασύνδεση του Domain μας με τον Server

Αν τελικά πήρατε ένα domain και θέλετε να το συνδέσετε με τον server που πήρατε από την digitalocean, τότε θα πρέπει να :

  • βάλετε τα DNS της digitalocean στον πάροχο του Domain σας
    – ns1.digitalocean.com
    – ns2.digitalocean.com
    – ns3.digitalocean.com
    Αν πήρατε domain name από την Namecheap τότε δείτε τον επίσημο οδηγό πως να προσθέσετε τα DNS.
  • Στην συνέχεια πάτε στο droplet σας και βάζετε το domain σας από το μενού Create -> Domains/DNS
Κλικ επάνω-δεξιά στο Create και μετά Domain/DNS

Στην νέα καρτέλα διαχείρισης των DNS records μπορείτε να προσθέσετε και subdomains και άλλα πολλά. Για το παρόν οδηγό όμως απλά προσθέστε τα παρακάτω στην καρτέλα «A records«:

  • Στο πεδίο Hostname γράφετε @ και στο πεδίο WILL DIRECT TO επιλέγετε την IP του server και πατήστε create record
  • Στο πεδίο Hostname γράφετε www και στο πεδίο WILL DIRECT TO επιλέγετε την IP του server και πατήστε create record
  • Στο πεδίο Hostname γράφετε cloud και στο πεδίο WILL DIRECT TO επιλέγετε την IP του server και πατήστε create record

Αφού τα κάνατε σωστά, λογικά από κάτω στα DNS records θα έχετε 3 A records και τρία NS records. Τα δύο πρώτα A records αφορούν τα domain σας π.χ. example.com ενώ το τρίτο A record είναι το subdomain cloud.example.com που θα χρησιμοποιήσουμε για το Nextcloud.

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

Τα αρχικά LEMP βγαίνουν από το Linux/Nginx/Mariadb/PHP και είναι η τετράδα που θα χρησιμοποιήσουμε για τον server μας. Το πρώτο κομμάτι (Linux) από την τετράδα το έχουμε ήδη προφανώς, οπότε πάμε να βάλουμε τα υπόλοιπα.

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

Για την εγκατάσταση τρέχουμε :

sudo apt install nginx

Για να ξεκινάει αυτόματα μετά από τυχών επανεκκίνηση του server, ενεργοποιούμε την υπηρεσία:

sudo systemctl enable nginx

Ελέγχουμε ότι έχει ξεκινήσει ο nginx:

sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) --- 2min 56s ago
     Docs: man:nginx(8)
 Main PID: 19851 (nginx)
    Tasks: 2 (limit: 2059)
   CGroup: /system.slice/nginx.service
           ├─19851 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─19853 nginx: worker process

Στο παραπάνω, βλέπουμε το επιθυμητό αποτέλεσμα όπου το «enabled» υποδεικνύει ότι η αυτόματη εκκίνηση του nginx είναι ενεργοποιημένη και μπορούμε να δούμε ότι το Nginx εκτελείται στο Active: active. Για να βγούμε πατάμε από την προβολή πληροφοριών πατάμε q.

Αν για κάποιον λόγο μας λέει ότι δεν είναι active τον ξεκινάμε:

sudo systemctl start nginx

Τέλος, ο φάκελος που συνήθως φιλοξενεί ιστοσελίδες μέσω του Nginx είναι ο /usr/share/nginx/html (αν και δεν θα τον χρησιμοποιήσουμε) οπότε δίνουμε τα δικαιώματα χρήσης του στον Nginx:

sudo chown -R www-data:www-data /usr/share/nginx/html

Ανοίξτε τώρα τον browser σας και πληκτρολογήστε την IP του server σας και λογικά θα δείτε την παρακάτω εικόνα:

Μπορείτε φυσικά να δοκιμάσετε και το domain name που συνδέσατε στον server σας (αν έχουν προλάβει να οι DNS).

Δημιουργήστε ένα μπλοκ διακομιστή Nginx

Το «VirtualHost» είναι ένας όρος του Apache Server. Στο NGINX δεν υπάρχουν virtual hosts αλλά, «μπλοκ διακομιστή» που χρησιμοποιούν το server_name για να λαμβάνουν κατευθύνσεις και να δεσμεύσουν τις υποδοχές tcp.

Με την εγκατάσταση του nginx έχει δημιουργηθεί ένα τέτοιο αρχείο ρυθμίσεων το οποίο όμως θα το καταργήσουμε και θα ετοιμάσουμε ένα νέο για να χρησιμοποιεί κατάλληλα την PHP μαζί και τις επεκτάσεις τους (php-fpm). :

sudo rm /etc/nginx/sites-enabled/default

Δημιουργήστε ένα καινούργιο αρχείο ρυθμίσεων (μπλοκ διακομιστή) στον φάκελο /etc/nginx/conf.d/ :

sudo nano /etc/nginx/conf.d/default.conf

Επικολλήστε τα ακόλουθα στο αρχείο το οποίο θα κάνει τον Nginx να ακούει τη θύρα 80 και τη θύρα IPv6 80 με το όνομα του διακομιστή.

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;
  location / {
    try_files $uri $uri/ /index.php;
  }
  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }
 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }
  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Αποθηκεύστε και κλείστε το αρχείο. Στη πείτε στον Nginx να ελέγξει αν είναι σωστά διαμορφωμένο.

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Εάν η δοκιμή είναι επιτυχής (ok / successful), επαναφορτώστε τον Nginx

sudo systemctl reload nginx

Αν προσέξατε το block αυτό, «σερβίρει» ότι είναι στον φάκελο /usr/share/nginx/html/ μόλις κάποιος βάλει το domain του server μας. Εμείς παρακάτω θα χρησιμοποιήσουμε ένα επιπλέον ξεχωριστό block για τον Nextcloud μας το οποίο θα παρακολουθεί το cloud.example.com και θα σερβίρει τον φάκελο /usr/share/nginx/nextcloud/.

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

Ο server που θα παρέχει τις σελίδες μας είναι σχεδόν έτοιμος αλλά χρειαζόμαστε και μια βάση δεδομένων. Πάμε να το εγκαταστήσουμε:

sudo apt install mariadb-server mariadb-client

Αφού εγκατασταθεί, ελέγχουμε ότι τρέχει:

sudo systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) --- 49s ago
 Main PID: 21595 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 2059)
   CGroup: /system.slice/mariadb.service
           └─21595 /usr/sbin/mysqld

Αν για κάποιον λόγο μας λέει ότι δεν είναι active τον ξεκινάμε:

sudo systemctl start mariadb

Για να ξεκινάει αυτόματα μετά από τυχών επανεκκίνηση του server, ενεργοποιούμε την υπηρεσία:

sudo systemctl enable mariadb

Στην συνέχεια εκτελούμε ένα ενσωματωμένο script:

sudo mysql_secure_installation

Όταν σας ζητήσει να εισάγετε τον κωδικό πρόσβασης root της MariaDB, πατήστε το πλήκτρο Enter, καθώς ο κωδικός πρόσβασης του root δεν έχει οριστεί ακόμα. Στη συνέχεια, πληκτρολογήστε y για να ορίσετε τον κωδικό πρόσβασης για τον διακομιστή MariaDB.

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

Προετοιμασία MariaDB για Nextcloud

Από προεπιλογή, το πακέτο MaraiDB στο Ubuntu χρησιμοποιεί το unix_socket για τον έλεγχο ταυτότητας χρήστη, πράγμα που ουσιαστικά σημαίνει ότι μπορείτε να χρησιμοποιήσετε το όνομα χρήστη και τον κωδικό πρόσβασης σας για να συνδεθείτε στην κονσόλα της MariaDB. Επομένως, μπορείτε να εκτελέσετε την ακόλουθη εντολή για να συνδεθείτε χωρίς να παρέχετε τον κωδικό πρόσβασης του root της MariaDB

sudo mariadb -u root

Ας προετοιμάζουμε και την βάση δεδομένων για το nextcloud, αφού ήμαστε στην κονσόλα της MariaDB. Στο παρόν οδηγό θα ονομάσουμε τη βάση δεδομένων nextcloud. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα θέλετε.

create database nextcloud;

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

create user nextclouduser@localhost identified by 'κωδικός-πρόσβασης';

Εκχωρήστε σε αυτόν τον χρήστη όλα τα δικαιώματα στη βάση δεδομένων του nextcloud.

grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'κωδικός-πρόσβασης';

Τέλος δώστε:

flush privileges;

και βγείτε απο την κονσόλα :

exit;

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

Η PHP7.2 περιλαμβάνεται στο αποθετήριο του Ubuntu 18.04 και έχει μια μικρή βελτίωση στην απόδοσης της έναντι της PHP7.1. Πάμε να την εγκαταστήσουμε με ορισμένες κοινές επεκτάσεις της:

sudo apt install php7.2 php7.2-fpm php7.2-mysql php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl php-imagick php7.2-zip php7.2-bz2 php7.2-intl

Τώρα ξεκινήστε την php7.2-fpm

sudo systemctl start php7.2-fpm

Αφού εγκατασταθεί, ελέγχουμε ότι τρέχει:

sudo systemctl enable php7.2-fpm
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor prese
   Active: active (running) -- 2min 43s ago
     Docs: man:php-fpm7.2(8)
 Main PID: 31922 (php-fpm7.2)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se
    Tasks: 3 (limit: 2059)
   CGroup: /system.slice/php7.2-fpm.service
           ├─31922 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
           ├─31939 php-fpm: pool www
           └─31940 php-fpm: pool www

Για να ξεκινάει αυτόματα μετά από τυχών επανεκκίνηση του server, ενεργοποιούμε την υπηρεσία:

sudo systemctl enable php7.2-fpm
Advertisements

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

Έχοντας τελειώσεις με τα βασικά μένει:

  • Να κατεβάσουμε το Nextcloud
  • Να ρυθμίσουμε το block του Nginx που θα σερβίρει το Nextcloud
  • Να του ενεργοποιήσουμε SSL
  • Να του εγκαταστήσουμε το OnlyOffice
  • Να του εγκαταστήσουμε το Nextcloud Talk

Λήψη του Nextcloud

Η τελευταία σταθερή έκδοση είναι 18.0.2 κατά τη στιγμή της γραφής του παρόντος άρθρου. Αν το διαβάζετε στο μέλλον, μπορεί να χρειαστεί να αλλάξετε τον αριθμό της έκδοσης στην παρακάτω εντολή λήψης. Μεταβείτε στη διεύθυνση https://nextcloud.com/install, πατήστε στο download server και για να δείτε την τελευταία έκδοση.

Για να κάνετε λήψη το Nextcloud τρέξτε:

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.2.zip

Αν όσο διαβάζετε το άρθρο έχει βγει η νέα έκδοση, απλά αλλάξτε τον αριθμό 18.0.2 σε αυτό που είναι το πιο πρόσφατο.

Μετά τη λήψη, εξαγάγετε το αρχείο με το unzip

sudo unzip nextcloud-18.0.2.zip -d /usr/share/nginx/

Η παράμετρος -d καθορίζει τον φάκελο στον οποίο θα εξαχθεί. Τα αρχεία του NextCloud μετά την εξαγωγή θα βρίσκονται στο /usr/share/nginx/nextcloud/. Στη συνέχεια, πρέπει να αλλάξουμε τον κάτοχο αυτού του καταλόγου ώστε ο διακομιστής (Nginx) να μπορεί να τον διαχειρίζεται:

sudo chown -R www-data:www-data /usr/share/nginx/nextcloud/

Δημιουργία αρχείου ρυθμίσεων Nginx για το Nextcloud

Δημιουργήστε ένα αρχείο nextcloud.conf στον κατάλογο /etc/nginx/conf.d/:

sudo nano /etc/nginx/conf.d/nextcloud.conf

Βάλτε τα παρακάτω στο αρχείο. Αλλάξτε όμως το cloud.example.com με το subdomain που έχετε φτιάξει:

upstream php-handler {
    server unix:/var/run/php/php7.2-fpm.sock;
}
server {
    listen 80;
    server_name cloud.example.com;
    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    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;
    add_header Referrer-Policy no-referrer;
    add_header X-Frame-Options "SAMEORIGIN";
    # Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;
    # Path to the root of your installation
    root /usr/share/nginx/nextcloud/;
    access_log /var/log/nginx/nextcloud.access;
    error_log /var/log/nginx/nextcloud.error;
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # last;
    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
       return 301 $scheme://$host/remote.php/dav;
    }
    location ~ /.well-known/acme-challenge {
      allow all;
    }
    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;
    # Enable gzip but do not remove ETag headers
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;
    location / {
       rewrite ^ /index.php;
    }
    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\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
       try_files $fastcgi_script_name =404;
       include fastcgi_params;
       fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $path_info;
       fastcgi_param HTTPS on;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       # Enable pretty urls
       fastcgi_param front_controller_active true;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
       fastcgi_pass php-handler;
    }
    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
       try_files $uri/ =404;
       index index.php;
    }
    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        # Before enabling Strict-Transport-Security headers please read into
        # this topic first.
        #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
        #
        # WARNING: Only add the preload option once you read about
        # the consequences in https://hstspreload.org/. This option
        # will add the domain to a hardcoded list that is shipped
        # in all major browsers and getting removed from this list
        # could take several months.
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;
        # Optional: Don't log access to assets
        access_log off;
   }
   location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

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

sudo nginx-t
sudo systemctl reload nginx

Περισσότερα για τον Nginx και το nextcloud δείτε την επίσημη τεκμηρίωση

Ενεργοποίηση SSL (HTTPS)

Αφού έχουμε το subdomain μας, γιατί όχι να μην πάρουμε και ένα SSL certificate;. Πρώτα όμως δοκιμάστε να μπείτε με το subdomain σας και δείτε αν εμφανίζεται η σελίδα πρώτης διαρρύθμισης του Nextcloud

σελίδα πρώτης διαρρύθμισης του Nextcloud

Αν για κάποιον λόγο δεν βλέπετε τότε μπορεί:

Αν όμως με το subdomain σας βλέπετε κανονικά την σελίδα, παμε πάλι στον server να κάνουμε εγκατάσταση το certbot της Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx

Το python-certbot-nginx είναι το plugin για Nginx. Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να αποκτήσετε δωρεάν πιστοποιητικό TLS χρησιμοποιώντας αυτό το Nginx plugin:

sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email your-email-address -d cloud.example.com

Επεξήγηση της παραπάνω εντολής:

  • –nginx: Χρησιμοποιήστε τον έλεγχο ταυτότητας Nginx και το πρόγραμμα εγκατάστασης
  • –agree-tos: Συμφωνείτε με τους όρους παροχής υπηρεσιών
  • redirect: Προσθέστε την 301 ανακατεύθυνση.
  • –staple-ocsp: Ενεργοποιεί το OCSP. (Online Certificate Status Protocol stapling)
  • –email: Το email σας.
  • -d: εδώ βάζετε το subdomain σας.

Θα ερωτηθείτε εάν θέλετε να λαμβάνετε email από το EFF (Electronic Frontier Foundation). Αφού επιλέξετε Y ή N, το πιστοποιητικό TLS θα αποκτηθεί αυτόματα και θα διαμορφωθεί για το subdomain που ορίσατε.

Μια ρύθμιση που καλό είναι να κάνουμε, είναι να ενεργοποιήσουμε το HSTS (HTTP Strict Transport Security) στο Nginx config του Nextcloud:

sudo nano /etc/nginx/conf.d/nextcloud.conf

Θα πάτε κάτω με τα βελάκια μέχρι να βρείτε το τμήμα που διαχειρίζεται το certbot:

Advertisements
ενεργοποιήσουμε το HSTS (HTTP Strict Transport Security) στο Nginx config του Nextcloud

Εκεί ανάμεσα, προσθέστε την παρακάτω γραμμή:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Επίσης εκεί που λέει listen 443 ssl; κάντε το listen 443 ssl http2;. Οι περισσότεροι browsers υποστηρίζουν ήδη το HTTP2 μέσω SSL (HTTPS) το οποίο είναι αρκετά ταχύτερο πρωτόκολλο.

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

sudo nginx-t
sudo systemctl reload nginx

Ρυθμίσεις PHP

Στην συνέχεια, επειδή χρησιμοποιούμε php-fpm θα πρέπει να κάνουμε μια ρύθμιση για να το εκμεταλλεύεται το Nextcloud:

sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/7.2/fpm/pool.d/www.conf

το παραπάνω θα βρει το ;clear_env θα βγάλει το «;» και θα το κάνει clear_env = no

Έπειτα θα χρειαστεί να αυξήσουμε λίγο την επιτρεπόμενη κατανάλωση μνήμης για τις διεργασίες της php με την παρακάτω εντολή:

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.2/fpm/php.ini

Η PHP ορίζει επίσης ένα όριο φόρτωσης αρχείου. Το προεπιλεγμένο μέγιστο μέγεθος αρχείου για φόρτωση είναι 2MB. Για να αυξήσετε το όριο μεγέθους μεταφόρτωσης, π.χ σε 1GB :

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.2/fpm/php.ini

Έπειτα κάνουμε reload για να δει τις νέες ρυθμίσεις

sudo systemctl restart php7.2-fpm

Για περισσότερα σχετικά με τις ρυθμίσεις που μπορείτε να κάνετε στην PHP-FPM σχετικά με το Nextcloud, αν σας ενδιαφέρουν οι επιδώσεις και έχετε τούμπανο server, διαβάστε την επίσημη τεκμηρίωση.

(Προαιρετικό): Επίσης, θα χρησιμοποιήσουμε την opcache για βελτίωση στην διαχείρηση της μνήμης:

sudo nano /etc/php/7.2/fpm/php.ini

και αλλάζουμε τις τιμές των παρακάτω:

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Ολοκλήρωση εγκατάστασης Nextcloud

Τώρα που τελειώσατε με την εγκατάσταση του Nextcloud, πηγαίνετε στο subdomain που έχετε για να κάνετε τις τελευταίες ρυθμίσεις.

κάνετε τις τελευταίες ρυθμίσεις

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

Στην παραπάνω οθόνη, θα πρέπει να συμπληρώσετε τα ένα όνομα χρήστη και εναν ισχυρό κωδικό μιας και θα είναι ο Admin. Έπειτα συμπληρώνετε τα στοιχεία χρήστη/κωδικό/όνομα βάσης δεδομένων που φτιάξατε στην mariadb. Το localhost που λέει δεν χρειάζεται να το πειράξετε.

Advertisements

Ρύθμιση αποστολής ειδοποιήσεων του Nextcloud

To Nextcloud μπορεί να στέλνει e-mail ειδοποιήσεις όπως για επαναφορά συνθηματικού, αποστολή ειδοποιήσεων κατά την δημιουργία λογαριασμών κλπ. Για να το ρυθμίσετε πάτε στο Ρυθμίσεις –> Βασικές Ρυθμίσεις όπου στο πλαίσιο διακομιστής mail θα πρέπει να βάλετε κάποιο email που θα χρησιμοποιηθεί ως αποστολέας ειδοποιήσεων. (Περισσότερα στην επίσημη τεκμηρίωση)

Ρύθμιση αποστολής ειδοποιήσεων του Nextcloud

Αν βάλατε κάποιο gmail σας ίσως χρειαστεί να πάτε στις ρυθμίσεις των εφαρμογών της google ( https://myaccount.google.com/security ) και να επιτρέψετε την εφαρμογή να χρησιμοποιεί το account σας.

Gmail - επιτρέψετε την εφαρμογή να χρησιμοποιεί το account σας

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

Το OnlyOffice είναι μια σουίτα γραφείου συμβατή με αρχεία του Microsoft Office και LibrOffice. Σας δίνει την δυνατότητα να επεξεργαστείτε αρχεία κειμένου, λογιστικά φύλλα και παρουσιάσεις, να δημιουργείτε PDF των αρχείων σας ενώ παράλληλα καθώς επεξεργάζεστε τα κείμενά σας, δεν θα χρειαστεί να πατήσετε το κουμπί «Αποθήκευση» ποτέ ξανά.

Για να το εγκαταστήσουμε θα χρειαστούμε δύο πράγματα:

  • Document Community Server
  • OnlyOffice Connector

Πάμε να τα εγκαταστήσουμε από το τερματικό. Πρώτα μπαίνουμε στον φάκελο του Nextcloud:

cd /usr/share/nginx/nextcloud/

Εδώ στον φάκελο της εγκατάστασης του nextcloud έχουμε στην διάθεσή μας το εργαλείο occ που είναι το κατεξοχήν εργαλείο διαχείρισης του nextcloud ειδικά όταν το web περιβάλλον δεν είναι προσβάσιμο λόγο κάποιας λάθος ρύθμισης (Διαβάστε την επίσημη τεκμηρίωση για το occ). Ας δούμε ότι ήμαστε σωστά :

sudo -u www-data php occ status
- installed: true
- version: 18.0.2.2
- versionstring: 18.0.2
- edition:

Το παραπάνω αποτέλεσμα μας λέει οτι όντως έχουμε το occ. Πάμε να εγκαταστήσουμε τον document server

sudo -u www-data php occ app:install documentserver_community

Κάνουμε υπομονή διότι θα πάρει αρκετή ώρα να γίνει λήψη και εγκατάσταση.

Όταν τελειώσει, κάνουμε εγκατάσταση και το onlyoffice connector:

sudo -u www-data php occ app:install onlyoffice

Δεν χρειάζεται πλέον να κάνετε καμία ρύθμιση. Το Nextcloud σας έχει τις δυνατότητες να σας παρέχει επεξεργασία κειμένου απευθείας από τον browser χωρίς να χρειάζεται να κατεβάσετε το αρχείο και να το ανεβάσετε πάλι. Ανοίξτε ένα αρχείο κειμένου στο Nextcloud και θα φορτώσει αυτόματα το OnlyOffice στον browser σας

Ανοίξτε ένα αρχείο κειμένου στο Nextcloud και θα φορτώσει αυτόματα το OnlyOffice στον browser σας

Εγκατάσταση Nextcloud Talk

Έχουμε τους φακέλους και τα αρχεία μας με το Nextcloud, ενώ με το OnlyOffice την σουίτα office στο cloud μας. Τώρα μένει να στήσουμε και τις βιντεοκλήσεις μας και θα έχουμε ένα ολοκληρωμένο σύστημα τηλεργασίας και συνεργασίας.

Θα χρειαστεί να κάνουμε εγκατάσταση έναν TURN server που χρησιμοποιείται ως proxy για τους συμμετέχοντες που βρίσκονται πίσω απο firewall.:

sudo apt install coturn

αφού εγκατασταθεί, σταματάμε την υπηρεσία προσωρινά

sudo systemctl stop coturn

Ρυθμίζουμε τον server να είναι ενεργός

sed -i "s/#TURNSERVER_ENABLED=1/TURNSERVER_ENABLED=1/g" /etc/default/coturn

Έπειτα επεξεργαζόμαστε το αρχείο ρυθμίσεων :

sudonano /etc/turnserver.conf

στο οποίο βάζουμε τα εξής, αλλάζοντας και την τιμή realm=cloud.example.com στο δικό μας subdomain :

listening-port=3478
listening-ip=ip-tou-server
relay-ip=ip-tou-server
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=cipher
cipher-list="ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5"
realm=cloud.example.com
bps-capacity=0
total-quota=100
stale-nonce
no-loopback-peers
no-multicast-peers

Σημείωση: Η παραπάνω ρύθμιση είναι για TURN server σε VPS. Αν προσπαθήσετε να το στήσετε σε Raspberry Pi/υπολογιστή που βρίσκεται πίσω από ένα firewall/ΝΑΤ θα πρέπει να κάνετε το κατάλληλο port forwording, να αφαιρέσετε τις γραμμές listening-ip=ip-tou-server και
relay-ip=ip-tou-server. Σε κάθε περίπτωση σίγουρα θα πρέπει να ανοίξετε την Port:3478 είτε στον server είτε στο router. Διαβάστε την τεκμηρίωση του TURN server.

Αποθηκεύστε και κλείστε το αρχείο. Τώρα θα χρειαστεί να του προσθέσουμε ένα cipher:

sudo sed -i "s/cipher/$(openssl rand -hex 32)/" /etc/turnserver.conf

Τώρα μπορούμε να ξεκινήσουμε την υπηρεσία

sudo systemctl start coturn

αλλά και να το ρυθμίσουμε να ξεκινάει αυτόματα:

sudo systemctl enable coturn

Διασύνδεση του Nextcloud Talk με τον TURN server

Τώρα θα πρέπει να πάτε στο Nextcloud και να μεταφέρετε εκεί τις ρυθμίσεις. Τα τρία στοιχεία που θα χρειαστείτε είναι από το αρχείο /etc/turnserver.conf είναι:

  • listening-port=3478
  • static-auth-secret=ΤΟ-ΑΛΦΑΡΙΘΜΗΤΙΚΌ-ΠΟΥ-ΠΑΡΑΧΘΗΚΕ
  • realm:Το-subdomain-σας

Οπότε πάτε στις Ρυθμίσεις

 πάτε στις Ρυθμισεις --> Talk

και μετά αριστερά στο Talk συμπληρώστε τα εκεί που ζητάει STUN και TURN

μεταφέρετε  τις ρυθμίσεις TURN.

Επίλογος

Μετά από όλα αυτά που κάνατε, ρίξτε μια ματιά στο Nextcloud στις Ρυθμίσεις –> Επισκόπηση για κάποιες ίσως προτάσεις που μπορεί να έχει το Nextcloud για την εγκατάσταση σας. Επίσης μπορείτε να επισκεφτείτε και την σελίδα https://scan.nextcloud.com/ όπου βάζετε το domain του Nextcloud σας και ελέγχει αν το έχετε ασφαλισμένο σωστά.

Πέρα από αυτά που κάναμε εγκατάσταση ρίξτε και μια ματιά στις επιπλέον δυνατότητες με εφαρμογές που έχει διαθέσιμες προς εγκατάσταση. Μην παρασυρθεί τε όμως και κάνετε εγκατάσταση το σύμπαν !, Τέλος κατεβάστε και τις επίσημες εφαρμογές για Linux, Windows, macOS, Android, iOS και ρυθμίστε τα να συνδέονται στον server σας.

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