Configurarea NextCloud + ONLYOFFICE pe un singur server folosind Docker

Bună, Habr! Vă prezint traducerea acestui articol «Configurarea NextCloud și ONLYOFFICE pe un singur server cu Docker».

Este greu de subestimat beneficiul pachetelor de aplicații de birou online, cum ar fi Google Docs, și a stocării în cloud în viața persoanelor orientate spre tehnologie (tech-oriented people). Tehnologiile s-au răspândit atât de mult încât chiar și compania Microsoft, care a dominat mult timp piața aplicațiilor de birou, s-a concentrat recent pe dezvoltarea aplicației web Office 365 și pe convingerea utilizatorilor să treacă la un model de subscripție pentru serviciile proprii. Cei care sunt interesați de procesul de instalare și configurare a propriului sistem de stocare sunt invitați să citească mai departe.

Cu ceva timp în urmă, ne-am familiarizat cu soluțiile de stocare în cloud și cu pachetele de aplicații web de birou cu cod sursă deschis, care ar putea fi implementate destul de ușor pentru utilizarea în microîntreprinderi. Principalul motiv pentru stocarea întreagă a documentației online este reducerea la minimum a volumului de documentație pe hârtie și implementarea unor bune practici de afaceri, chiar și în condițiile unui mic volum de operațiuni. Partea negativă a monedei este că închirierea unui server cloud pentru furnizarea acestui serviciu este mai puțin sigură decât stocarea pe terenul întreprinderii, deoarece nu aveți niciun mijloc de audit al accesului fizic la serverul dvs. sau al traficului. Prin urmare, este necesar de asemenea să se implementeze criptarea end-to-end și software cu cod sursă deschis.

Având în vedere toate informațiile disponibile despre soluțiile cu cod sursă deschis, am găsit două proiecte active (cu comenzi în repositiile git în ultimele 12 luni), dezvoltate pentru stocarea în cloud: NextCloud și OwnCloud, și unicul pachet activ de aplicații de birou ONLYOFFICE. Ambele soluții pentru stocarea în cloud au funcționalități aproximativ identice, iar decizia de a alege NextCloud a fost bazată pe existența dovezilor că poate fi integrat cu ONLYOFFICE pentru un interacțiune confortabilă a utilizatorului cu software-ul. Cu toate acestea, când am început desfășurarea serviciilor, deficitul de informație privind integrarea serviciilor menționate a devenit evident. Am găsit 3 videoclipuri instructive despre cum să realizăm integrarea:

Niciunul dintre cele trei videoclipuri nu a răspuns la întrebarea despre instalarea serviciului de documente ONLYOFFICE pe același server fizic cu NextCloud, utilizând nginx comun. În schimb, au folosit tehnologii de separare, cum ar fi utilizarea porturilor separate pentru API-ul serviciului de documente. O altă variantă propusă a fost desfășurarea unui server dedicat pentru serviciul de documente, cu configurarea manuală a instanței nginx integrată în serviciul de documente pentru instalarea cheii de acces (o cheie de acces preexistentă, care confirmă dreptul de acces la cloudul de date) și certificatelor TLS. Abordările descrise mai sus au fost considerate nesigure și nu suficient de eficiente, astfel că am realizat integrarea între NextCloud, ONLYOFFICE și nginx-ul comun, care separă cererile pe baza numelui de domeniu, folosind docker-compose. Aici este informația pas cu pas despre cum să procedați.

Pasul 1: container nginx

Aceasta este o instalare foarte simplă, dar acest pas necesită cea mai mare muncă pentru configurarea serverului proxy invers. În primul rând, am creat o configurație 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

Acesta creează un container cu porturile 80 și 443 deschise pentru acces public, face maparea configurației în nginx/nginx-vhost.conf și definește un loc de stocare pentru certificatele generate ca certificate auto-semnate sau folosind Certbot de la Let’s Encrypt în /nginx/certificates. Aici ar trebui să fie foldere pentru office.yourdomain.com și cloud.yourdomain.com, fiecare având fișierele fullchain1.pem și privkey1.pem pentru lanțul de certificate și cheia privată a serverului, respectiv. Puteți citi mai multe despre cum să generați un certificat auto-semnate aici. www.akadia.com/services/ssh_test_certificate.html (renumirea .key și .crt în .pem funcționează fără conversia structurii de fișiere pentru nginx).

După aceea, am definit fișierul vhost. Mai întâi, definim comportamentul portului 80 ca o redirecționare simplă către https, deoarece nu dorim 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 serviciului documentelor în docker-compose.yml-ul nostru. Aici nu sunt multe de configurat.

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

Dar nu uitați să legați containerul nginx de serviciul documentelor:

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

Pasul 3: NextCloud

Mai întâi adăugăm noi servicii:

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=#introduceți o parolă aici
      - MYSQL_PASSWORD=#introduceți o altă parolă aici
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

și adăugăm un link pentru 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 interfața externă NextCloud, care, în mod implicit, este pagina de configurare. Va trebui să introduceți numele de utilizator și parola pentru primul dumneavoastră utilizator administrator și acreditivele pentru baza de date pe care le-ați specificat în docker-compose.yml. După ce setarea este finalizată, veți putea să vă conectați. În cazul nostru, așteptarea a durat aproape un minut și a necesitat o actualizare suplimentară a paginii de conectare, înainte de a putea accesa serviciul de cloud.

Fereastra de setări a serviciului NextCloudConfigurarea NextCloud + ONLYOFFICE pe un singur server folosind Docker

Pasul 4: conectarea NextCloud și ONLYOFFICE

În acest pas, va trebui să instalați aplicația pentru NextCloud, care leagă funcționalitatea ONLYOFFICE. Să începem cu panoul de control al aplicațiilor din colțul din dreapta sus al meniului. Căutați aplicația ONLYOFFICE (în secțiunea “Office & text” sau folosind căutarea), instalați-o și activați-o.

După aceasta, navigați la Setări (Settings) prin meniul din colțul din dreapta sus, iar acum ar trebui să găsiți elementul ONLYOFFICE în meniul din stânga. Accesați-l. Va trebui să scrieți adresele, așa cum este indicat mai jos.

Setările aplicației de integrareConfigurarea NextCloud + ONLYOFFICE pe un singur server folosind Docker

Prima adresă este folosită pentru a face legătura cu unele fișiere js și css direct din aplicația rulată în browser (acesta este motivul pentru care trebuie să deschidem accesul la serviciul ONLYOFFICE prin nginx). Cheia secretă nu este folosită, deoarece avem mai multă încredere în stratul de izolare Docker decât într-o cheie de autentificare permanentă. A treia adresă este folosită de containerul NextCloud pentru a se conecta direct la API-ul ONLYOFFICE și utilizează numele gazdei interne implicit din Docker. Ultimul câmp este folosit pentru ca ONLYOFFICE să poată face cereri înapoi la API-ul NextCloud, folosind adresa IP externă sau adresa internă Docker, dacă folosiți rețele Docker, dar în cazul nostru nu este utilizat. Asigurați-vă că setările firewall-ului dumneavoastră permit aceste tipuri 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. Configurați-le așa cum credeți de cuviință.

Pasul final: unde să căutați editorul

Dacă reveniți la folderele stocării dvs. în cloud și faceți clic pe “+” pentru a crea un fișier nou, veți avea acces la o nouă opțiune de creare a unui document, tabel sau prezentare. Cu acestea, veți crea și veți putea edita imediat aceste tipuri de fișiere, folosind ONLYOFFICE.

Meniul de creare a fișierelorConfigurarea NextCloud + ONLYOFFICE pe un singur server folosind Docker

Anexa 1

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

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster