Bună, Habr! Vă prezint traducerea acestui articol .
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. (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 NextCloud
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 integrare
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șierelor
Anexa 1
Conținutul complet al docker-compose.yml poate fi găsit aici:
Sursa: habr.com
