Configurarea NextCloud + ONLYOFFICE pe același server cu Docker

Hei Habr! Vă prezint atenției traducerea articolului „Configurarea NextCloud și ONLYOFFICE pe un singur server cu Docker”.

Este greu de subestimat valoarea suitelor de birou online precum Google Docs și stocarea în cloud în viața oamenilor orientați spre tehnologie. Tehnologia a devenit atât de răspândită încât chiar și Microsoft, care a dominat de multă vreme piața aplicațiilor de birou, s-a concentrat recent pe dezvoltarea aplicației web Office 365 și să convingă utilizatorii să treacă la un model de abonament pentru utilizarea propriilor servicii. Îi invităm pe cei interesați de procesul de instalare și configurare a propriului spațiu de stocare sub cat.

Cu ceva timp în urmă, am analizat soluțiile de stocare în cloud și suitele de birou web open source care ar putea fi implementate cu ușurință pentru a fi utilizate într-o micro-întreprindere. Principala motivație pentru păstrarea online a întregii documentații este menținerea documentelor la minimum și implementarea bunelor practici de afaceri în ciuda volumului redus de tranzacții. Reversul medaliei este că închirierea unui server cloud pentru a oferi acest serviciu este mai puțin sigură decât stocarea lui direct la sediul întreprinderii, deoarece nu aveți niciun mijloc de a audita accesul fizic la serverul dvs. sau traficul. Prin urmare, sunt necesare și criptarea end-to-end și software-ul open source.

Luând în considerare toate informațiile disponibile despre soluțiile open source, am găsit două proiecte active (cu commit-uri în depozitul git în ultimele 12 luni) dezvoltate pentru stocarea în cloud: NextCloud și OwnCloud și singura suită de birou ONLYOFFICE activă. Ambele instrumente de stocare în cloud au aproximativ aceeași funcționalitate, iar decizia de a alege NextCloud sa bazat pe existența dovezilor că acesta poate fi integrat cu ONLYOFFICE pentru o interacțiune confortabilă a utilizatorului cu software-ul. Cu toate acestea, când am început implementarea serviciilor, a devenit evidentă lipsa de informații privind integrarea serviciilor de mai sus. Am găsit 3 videoclipuri tutorial despre cum să integrăm:

Niciunul dintre cele trei videoclipuri nu a răspuns la întrebarea instalării serviciului de documente ONLYOFFICE pe același server fizic ca NextCloud cu un nginx partajat. În schimb, au folosit tehnici de separare, cum ar fi folosirea de porturi separate pentru API-ul serviciului de documente. O altă opțiune sugerată a fost implementarea unui server separat pentru Document Service, configurând manual instanța nginx încorporată în Document Service pentru a instala o cheie de acces (o cheie de acces precunoscută care confirmă dreptul de a accesa cloud-ul de date) și certificate TLS. Abordările de mai sus au fost considerate nesigure și insuficient de eficiente, așa că am integrat NextCloud, ONLYOFFICE și un nginx comun, care separă cererile după nume de domenii, folosind docker-compose. Iată informații pas cu pas despre cum să o faci.

Pasul 1: containerul nginx

Aceasta este o configurare foarte simplă, dar acest pas necesită cea mai mare muncă pentru a configura serverul proxy invers. Am creat mai întâi configurația docker-compose pentru imaginea 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

Acest lucru creează un container cu porturile 80 și 443 deschise publicului, mapează configurația la nginx/nginx-vhost.conf și definește un magazin pentru certificate generate ca certificate autosemnate sau folosind certificatul Let's encrypt în /nginx/certificates. Această locație ar trebui să conțină foldere pentru office.yourdomain.com și cloud.yourdomain.com, cu fișiere fullchain1.pem și privkey1.pem în fiecare pentru lanțul de certificate și, respectiv, cheia privată a serverului. Puteți citi mai multe despre cum să generați un certificat autosemnat aici. www.akadia.com/services/ssh_test_certificate.html (redenumirea .key și .crt în .pem funcționează fără a converti structura fișierului pentru nginx).

După aceea, am definit fișierul vhost. Mai întâi definim comportamentul portului 80 ca o simplă redirecționare către https, deoarece nu vrem să permitem niciun trafic http

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

Apoi am creat două servere virtuale pe portul 443 pentru serviciile noastre:

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;
    }
}

Pasul 2: serviciul documentelor

Acum trebuie să adăugăm containerul de servicii de documente la docker-compose.yml. Nu este nimic special de configurat aici.

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

Dar nu uitați să conectați containerul nginx la serviciul de documente:

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

Pasul 3: NextCloud

Mai întâi, adăugați servicii noi:

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

și adăugați un link către nginx:

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

Acum este timpul să încărcăm containerele.

docker-compose up -d  

După un timp, nginx va începe să vă redirecționeze către front-end-ul NextCloud, care este pagina de configurare implicită. Va trebui să introduceți numele de utilizator și parola pentru primul dvs. utilizator administrativ și datele de conectare ale bazei de date pe care le-ați furnizat în docker-compose.yml Odată ce configurarea este finalizată, vă veți putea autentifica. În cazul nostru, așteptarea a durat aproape un minut și a necesitat o reîmprospătare suplimentară a paginii de conectare înainte de a ne putea conecta la serviciul cloud.

Fereastra de setări a serviciului NextCloudConfigurarea NextCloud + ONLYOFFICE pe același server cu Docker

Pasul 4: Conectarea NextCloud și ONLYOFFICE

La acest pas, va trebui să instalați aplicația pentru NextCloud, care conectează funcționalitatea ONLYOFFICE. Să începem cu panoul de control al aplicației din colțul din dreapta sus al meniului. Găsiți aplicația ONLYOFFICE (sub Office și text sau folosind căutare), instalați-o și activați-o.

După aceea, mergeți la Setări prin meniul din colțul din dreapta sus și ar trebui să găsiți elementul ONLYOFFICE în meniul din stânga. Intră în ea. Va trebui să înregistrați adresele așa cum este indicat mai jos.

Setările aplicației de integrareConfigurarea NextCloud + ONLYOFFICE pe același server cu Docker

Prima adresă este folosită pentru a conecta la unele fișiere js și css direct din aplicația care rulează în browser (de asta avem nevoie pentru a deschide accesul la serviciul ONLYOFFICE prin nginx). Cheia secretă nu este folosită deoarece avem mai multă încredere în stratul de izolare Docker decât în ​​cheia de autentificare persistentă. A treia adresă este utilizată de containerul NextCloud pentru a se conecta direct la API-ul ONLYOFFICE și folosește numele de gazdă intern implicit de la Docker. Ei bine, ultimul câmp este folosit pentru ca ONLYOFFICE să poată face solicitări înapoi către API-ul NextCloud folosind o adresă IP externă sau o adresă Docker internă dacă utilizați rețele Docker, dar acest lucru nu este folosit în cazul nostru. Asigurați-vă că setările firewall-ului permit astfel de interacțiuni.

După salvare, NextCloud va testa conexiunea și, dacă totul este corect, vă va arăta setările legate de integrare - de exemplu, ce tipuri de fișiere pot fi editate prin această integrare. Personalizați după cum credeți de cuviință.

Pasul final: unde găsiți editorul

Dacă reveniți la folderele de stocare în cloud și faceți clic pe „+” pentru a crea un fișier nou, atunci veți avea o nouă opțiune pentru a crea un document, o foaie de calcul sau o prezentare. Cu ajutorul lor, veți crea și veți putea imediat edita aceste tipuri de fișiere folosind ONLYOFFICE.

Meniul de creare a fișierelorConfigurarea NextCloud + ONLYOFFICE pe același server cu Docker

Supliment 1

Conținutul complet al docker-compose.yml poate fi găsit aici: https://pastebin.com/z1Ti1fTZ

Sursa: www.habr.com

Adauga un comentariu