Ρύθμιση του NextCloud + ONLYOFFICE στον ίδιο διακομιστή με το Docker

Γεια σου Χαμπρ! Σας παρουσιάζω τη μετάφραση του άρθρου "Ρύθμιση του NextCloud και του ONLYOFFICE σε έναν μόνο διακομιστή με το Docker".

Είναι δύσκολο να υποτιμηθεί η αξία των διαδικτυακών σουιτών γραφείου όπως τα Έγγραφα Google και ο χώρος αποθήκευσης cloud στη ζωή των ανθρώπων που προσανατολίζονται στην τεχνολογία. Η τεχνολογία έχει γίνει τόσο διαδεδομένη που ακόμη και η Microsoft, η οποία κυριαρχεί εδώ και καιρό στην αγορά εφαρμογών γραφείου, έχει πρόσφατα επικεντρωθεί στην ανάπτυξη της εφαρμογής web του Office 365 και στην πείθηση των χρηστών να στραφούν σε ένα μοντέλο συνδρομής για τη χρήση των δικών τους υπηρεσιών. Προσκαλούμε όσους ενδιαφέρονται για τη διαδικασία εγκατάστασης και διαμόρφωσης του δικού τους χώρου αποθήκευσης κάτω από τη γάτα.

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

Λαμβάνοντας υπόψη όλες τις διαθέσιμες πληροφορίες σχετικά με λύσεις ανοιχτού κώδικα, βρήκαμε δύο ενεργά έργα (με δεσμεύσεις στο αποθετήριο git τους τελευταίους 12 μήνες) που αναπτύχθηκαν για αποθήκευση στο cloud: το NextCloud και το OwnCloud και τη μοναδική ενεργή σουίτα γραφείου ONLYOFFICE. Και τα δύο εργαλεία αποθήκευσης cloud έχουν περίπου την ίδια λειτουργικότητα και η απόφαση να επιλέξετε το NextCloud βασίστηκε στην ύπαρξη αποδεικτικών στοιχείων ότι μπορεί να ενσωματωθεί με το ONLYOFFICE για μια άνετη αλληλεπίδραση χρήστη με το λογισμικό. Ωστόσο, όταν ξεκινήσαμε την ανάπτυξη των υπηρεσιών, έγινε εμφανής η έλλειψη πληροφοριών για την ενσωμάτωση των παραπάνω υπηρεσιών. Βρήκαμε 3 εκπαιδευτικά βίντεο σχετικά με τον τρόπο ενσωμάτωσης:

Κανένα από τα τρία βίντεο δεν απάντησε στην ερώτηση εγκατάστασης της υπηρεσίας εγγράφων ONLYOFFICE στον ίδιο φυσικό διακομιστή με το NextCloud με κοινόχρηστο nginx. Αντίθετα, χρησιμοποίησαν τεχνικές διαχωρισμού, όπως η χρήση ξεχωριστών θυρών για το api της υπηρεσίας εγγράφων. Μια άλλη πρόταση ήταν να αναπτυχθεί ένας ξεχωριστός διακομιστής για την Υπηρεσία Εγγράφων, διαμορφώνοντας με μη αυτόματο τρόπο την παρουσία nginx που είναι ενσωματωμένη στην Υπηρεσία Εγγράφων για να εγκαταστήσει ένα κλειδί πρόσβασης (ένα προγνωστικό κλειδί πρόσβασης που επιβεβαιώνει το δικαίωμα πρόσβασης στο σύννεφο δεδομένων) και πιστοποιητικά TLS. Οι παραπάνω προσεγγίσεις θεωρήθηκαν μη ασφαλείς και όχι αρκετά αποτελεσματικές, επομένως ενσωματώσαμε το NextCloud, το ONLYOFFICE και ένα κοινό nginx που διαχωρίζει τα αιτήματα ανά ονόματα τομέα χρησιμοποιώντας το docker-compose. Εδώ είναι βήμα προς βήμα πληροφορίες για το πώς να το κάνετε.

Βήμα 1: δοχείο nginx

Αυτή είναι μια πολύ απλή ρύθμιση, αλλά αυτό το βήμα απαιτεί τη μεγαλύτερη δυνατή εργασία για τη διαμόρφωση του διακομιστή μεσολάβησης αντίστροφου. Αρχικά δημιουργήσαμε τη διαμόρφωση docker-compose για την εικόνα nginx:stable.

version: '2'
services:
  nginx:
    image : nginx:stable
    restart: always
    volumes:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    ports:
      - 443:443
      - 80:80

Αυτό δημιουργεί ένα κοντέινερ με τις θύρες 80 και 443 ανοιχτές στο κοινό, αντιστοιχίζει τη διαμόρφωση στο nginx/nginx-vhost.conf και ορίζει ένα χώρο αποθήκευσης για πιστοποιητικά που δημιουργούνται ως αυτουπογεγραμμένα πιστοποιητικά ή χρησιμοποιώντας το certbot Let's encrypt's στο /nginx/certificates. Αυτή η τοποθεσία θα πρέπει να περιέχει φακέλους για το office.yourdomain.com και το cloud.yourdomain.com, με αρχεία fullchain1.pem και privkey1.pem σε καθένα για την αλυσίδα πιστοποιητικών και το ιδιωτικό κλειδί του διακομιστή, αντίστοιχα. Μπορείτε να διαβάσετε περισσότερα σχετικά με τον τρόπο δημιουργίας ενός αυτουπογεγραμμένου πιστοποιητικού εδώ. www.akadia.com/services/ssh_test_certificate.html (Η μετονομασία .key και .crt σε .pem λειτουργεί χωρίς μετατροπή της δομής του αρχείου για nginx).

Μετά από αυτό, ορίσαμε το αρχείο vhost. Αρχικά ορίζουμε τη συμπεριφορά της θύρας 80 ως απλή ανακατεύθυνση στο https, επειδή δεν θέλουμε να επιτρέψουμε καμία επισκεψιμότητα http

server {
    listen 80;
    location / {
        return 301
            https://$host$request_uri;
    }
}

Στη συνέχεια δημιουργήσαμε δύο εικονικούς διακομιστές στη θύρα 443 για τις υπηρεσίες μας:

server {
    listen 443 ssl;
    server_name cloud.yourdomain.com ;
    root /var/www/html;

    ssl_certificate     /mycerts/cloud.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app:80;
    }
}
server {
    listen 443 ssl;
    server_name office.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/office.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://onlyoffice:80;
    }
}

Βήμα 2: υπηρεσία εγγράφων

Τώρα πρέπει να προσθέσουμε το κοντέινερ υπηρεσίας εγγράφων στο docker-compose.yml. Δεν υπάρχει τίποτα ιδιαίτερο για ρύθμιση εδώ.

services:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

Αλλά μην ξεχάσετε να συνδέσετε το κοντέινερ nginx με την υπηρεσία εγγράφων:

services:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

Βήμα 3: Επόμενο Cloud

Αρχικά, προσθέστε νέες υπηρεσίες:

services:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

και προσθέστε έναν σύνδεσμο στο nginx:

services:
...
  nginx:
    ...
    depends_on:
      - app 

Τώρα ήρθε η ώρα να φορτώσετε τα δοχεία.

docker-compose up -d  

Μετά από λίγο, το nginx θα αρχίσει να σας ανακατευθύνει στη διεπαφή του NextCloud, που είναι η προεπιλεγμένη σελίδα διαμόρφωσης. Θα χρειαστεί να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης για τον πρώτο χρήστη διαχειριστή και τα διαπιστευτήρια της βάσης δεδομένων που καταχωρίσατε στο docker-compose.yml Μόλις ολοκληρωθεί η ρύθμιση, θα μπορείτε να συνδεθείτε. Στην περίπτωσή μας, η αναμονή κράτησε σχεδόν ένα λεπτό και χρειάστηκε μια επιπλέον ανανέωση της σελίδας σύνδεσης προτού μπορέσουμε να συνδεθούμε στην υπηρεσία cloud.

Παράθυρο ρυθμίσεων υπηρεσίας NextCloudΡύθμιση του NextCloud + ONLYOFFICE στον ίδιο διακομιστή με το Docker

Βήμα 4: Σύνδεση NextCloud και ONLYOFFICE

Σε αυτό το βήμα, θα χρειαστεί να εγκαταστήσετε την εφαρμογή για το NextCloud, η οποία συνδέει τη λειτουργία ONLYOFFICE. Ας ξεκινήσουμε με τον πίνακα ελέγχου της εφαρμογής στην επάνω δεξιά γωνία του μενού. Βρείτε την εφαρμογή ONLYOFFICE (υπό το Office & κείμενο ή χρησιμοποιώντας την αναζήτηση), εγκαταστήστε την και ενεργοποιήστε την.

Στη συνέχεια, μεταβείτε στις Ρυθμίσεις μέσω του μενού στην επάνω δεξιά γωνία και θα πρέπει να βρείτε το στοιχείο ONLYOFFICE στο αριστερό μενού. Πηγαίνετε σε αυτό. Θα χρειαστεί να καταχωρίσετε τις διευθύνσεις όπως υποδεικνύονται παρακάτω.

Ρυθμίσεις εφαρμογής ενσωμάτωσηςΡύθμιση του NextCloud + ONLYOFFICE στον ίδιο διακομιστή με το Docker

Η πρώτη διεύθυνση χρησιμοποιείται για σύνδεση σε ορισμένα αρχεία js και css απευθείας από την εφαρμογή που εκτελείται στο πρόγραμμα περιήγησης (αυτό είναι που χρειαζόμαστε για να ανοίξουμε την πρόσβαση στην υπηρεσία ONLYOFFICE μέσω του nginx). Το μυστικό κλειδί δεν χρησιμοποιείται επειδή εμπιστευόμαστε το επίπεδο απομόνωσης Docker περισσότερο από το μόνιμο κλειδί ελέγχου ταυτότητας. Η τρίτη διεύθυνση χρησιμοποιείται από το κοντέινερ NextCloud για απευθείας σύνδεση στο ONLYOFFICE API και χρησιμοποιεί το προεπιλεγμένο εσωτερικό όνομα κεντρικού υπολογιστή από το Docker. Λοιπόν, το τελευταίο πεδίο χρησιμοποιείται έτσι ώστε το ONLYOFFICE να μπορεί να κάνει αιτήματα πίσω στο NextCloud API χρησιμοποιώντας μια εξωτερική διεύθυνση IP ή μια εσωτερική διεύθυνση Docker εάν χρησιμοποιείτε δίκτυα Docker, αλλά αυτό δεν χρησιμοποιείται στην περίπτωσή μας. Βεβαιωθείτε ότι οι ρυθμίσεις του τείχους προστασίας επιτρέπουν τέτοιου είδους αλληλεπιδράσεις.

Μετά την αποθήκευση, το NextCloud θα δοκιμάσει τη σύνδεση και, εάν όλα είναι σωστά, θα σας δείξει ρυθμίσεις που σχετίζονται με την ενοποίηση - για παράδειγμα, ποιοι τύποι αρχείων μπορούν να επεξεργαστούν από αυτήν την ενοποίηση. Προσαρμόστε όπως σας ταιριάζει.

Το τελευταίο βήμα: πού να βρείτε τον επεξεργαστή

Εάν επιστρέψετε στους φακέλους αποθήκευσης cloud και κάνετε κλικ στο "+" για να δημιουργήσετε ένα νέο αρχείο, τότε θα έχετε μια νέα επιλογή για να δημιουργήσετε ένα έγγραφο, υπολογιστικό φύλλο ή παρουσίαση. Με τη βοήθειά τους, θα δημιουργήσετε και θα μπορείτε αμέσως να επεξεργαστείτε αυτούς τους τύπους αρχείων χρησιμοποιώντας το ONLYOFFICE.

Μενού δημιουργίας αρχείουΡύθμιση του NextCloud + ONLYOFFICE στον ίδιο διακομιστή με το Docker

Συμπλήρωμα 1

Το πλήρες περιεχόμενο του docker-compose.yml βρίσκεται εδώ: https://pastebin.com/z1Ti1fTZ

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο