Konfigurimi i NextCloud + ONLYOFFICE në një server me Docker

Përshëndetje, Habr! po ju paraqes përkthimin e një artikulli «Konfigurimi i NextCloud dhe ONLYOFFICE në një server të vetëm me Docker».

ËshtĂ« e vĂ«shtirĂ« tĂ« nĂ«nvlerĂ«sosh dobinĂ« e paketave tĂ« oficeve online si Google Docs dhe ruajtjeve nĂ« re nĂ« jetĂ«n e njerĂ«zve tĂ« orientuar nga teknologjia. TeknologjitĂ« u pĂ«rhapĂ«n nĂ« njĂ« masĂ« kaq tĂ« gjerĂ«, saqĂ« edhe kompania Microsoft, e cila ka dominuar pĂ«r njĂ« kohĂ« tĂ« gjatĂ« nĂ« tregun e aplikacioneve tĂ« oficeve, sĂ« fundmi Ă«shtĂ« pĂ«rqendruar nĂ« zhvillimin e aplikacionit web Office 365 dhe nĂ« bindjen e pĂ«rdoruesve pĂ«r tĂ« kaluar nĂ« njĂ« model abonimi pĂ«r shĂ«rbimet e saj. Ata qĂ« janĂ« tĂ« interesuar pĂ«r procesin e instalimit dhe konfigurimit tĂ« ruajtjes sĂ« tyre i ftojmĂ« tĂ« lexojnĂ« mĂ« poshtĂ«.

Disa kohë më parë, ne u njohëm me zgjidhjet për ruajtjen në re dhe paketat e aplikacioneve web me burim të hapur, të cilat mund të implementohen mjaft lehtë për t'u përdorur në mikro-ndërmarrje. Motivimi kryesor për të ruajtur të gjithë dokumentacionin në internet është minimizimi i sasisë së dokumenteve të printuara dhe implementimi i praktikave pozitive të biznesit, pavarësisht nga vëllimi i vogël i operacioneve. Ana tjetër e medaljes është se qiraja e një serveri në re për ofrimin e këtij shërbimi është më pak e sigurt se ruajtja e drejtpërdrejtë në territorin e ndërmarrjes, pasi nuk keni asnjë mjet për auditimin e aksesit fizik në serverin tuaj ose trafik. Si rezultat, gjithashtu kërkohet enkriptimi end-to-end dhe software me burim të hapur.

Duke parasysh të gjitha informacionet e disponueshme mbi zgjidhjet me burim të hapur, ne gjetëm dy projekte funksionale (me commit në depozitë git në 12 muajt e fundit), të zhvilluara për ruajtjen në cloud: NextCloud dhe OwnCloud, dhe paketa e vetme aktive të aplikacioneve zyrtare ONLYOFFICE. Të dy mjetet për ruajtjen në cloud kanë një funksionalitet të ngjashëm, dhe vendimi për të zgjedhur NextCloud ishte i bazuar në prova se mund të integrohet me ONLYOFFICE për një ndërveprim më të rehatshëm të përdoruesit me softuerin. Megjithatë, kur filluam implementimin e shërbimeve, mungesa e informacionit për integrimin e shërbimeve të përmendura bëhet e qartë. Ne gjetëm 3 video trajnuese mbi se si të realizohet integrimi:

Asnjëra nga tre videot nuk dha përgjigje për instalimin e shërbimit të dokumenteve ONLYOFFICE në të njëjtin server fizik si NextCloud me nginx të përbashkët. Në vend të kësaj, ata përdorën teknologji ndarjeje, si përdorimi i porteve të ndara për shërbimin e dokumenteve API. Një opsion tjetër i propozuar ishte vendosja e një serveri të veçantë për shërbimin e dokumenteve me konfigurimin manual të instancës nginx të integruar në shërbimin e dokumenteve për instalimin e çelësit të aksesit (një çelës aksesit i njohur paraprakisht, duke vërtetuar të drejtën për akses në cloud) dhe certifikatave TLS. Qasjet e përshkruara më sipër u dhanë si të pasigurta dhe jo mjaft efektive, prandaj ne realizuam integrimin e NextCloud, ONLYOFFICE dhe nginx të përbashkët, i cili ndan kërkesat sipas emrave të domain-it, përmes docker-compose. Këtu është informacioni hap pas hapi se si të bëhet kjo.

Hapi 1: kontenier nginx

Kjo është një instalim shumë e thjeshtë, por ky hap kërkon punën më të madhe për konfigurimin e serverit të anasjelljes. Fillimisht, ne krijuam konfigurimin docker-compose për imazh 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

Kjo krijon njĂ« kontejner me portet 80 dhe 443 tĂ« hapura pĂ«r akses publik, bĂ«n mapimin e konfiguracionit nĂ« nginx/nginx-vhost.conf dhe pĂ«rcakton njĂ« lokacion pĂ«r certifikatat, tĂ« gjeneruara si certifikata tĂ« vetĂ«-nĂ«nshkruara ose duke pĂ«rdorur Certbot nga Let’s Encrypt nĂ« /nginx/certificates. NĂ« kĂ«tĂ« vend duhet tĂ« jenĂ« dosjet pĂ«r office.yourdomain.com dhe cloud.yourdomain.com me skedarĂ«t fullchain1.pem dhe privkey1.pem nĂ« secilin pĂ«r zinxhirin e certifikatave dhe çelĂ«sin privat tĂ« serverit pĂ«rkatĂ«s. Mund tĂ« lexoni mĂ« shumĂ« se si tĂ« gjeneroni njĂ« certifikatĂ« tĂ« vetĂ«-nĂ«nshkruar kĂ«tu. www.akadia.com/services/ssh_test_certificate.html (riemĂ«rtimi i .key dhe .crt nĂ« .pem funksionon pa konvertimin e strukturĂ«s sĂ« skedarit pĂ«r nginx).

Pas kësaj ne e përcaktuam skedarin vhost. Fillimisht, ne përcaktojmë sjelljen e portit 80 si një riedhje të thjeshtë në https, sepse nuk duam të lejojmë ndonjë trafik http.

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

Pastaj ne krijuam dy serverë virtualë në portin 443 për shërbimet tona:

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

Hapi 2: shërbimi i dokumenteve

Tani duhet të shtojmë kontejnerin e shërbimit të dokumenteve në docker-compose.yml tonë. Nuk ka shumë për të konfiguruar këtu.

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

Por mos harroni të lidhni kontejnerin nginx me shërbimin e dokumenteve:

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

Hapi 3: NextCloud

Fillimisht shtojmë shërbime të reja:

shërbimet:
...
  db:
    imazhi: mariadb
    komanda: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    rinovimi: gjithmonë
    volumet:
      - /data/nextcloud_db:/var/lib/mysql
    mjedisi:
      - MYSQL_ROOT_PASSWORD=#vendosni një fjalëkalim këtu
      - MYSQL_PASSWORD=#vendosni një fjalëkalim tjetër këtu
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    imazhi: nextcloud
    varet nga:
      - db
      - onlyoffice
    rinovimi: gjithmonë

dhe shtojmë një lidhje në nginx:

shërbimet:
...
  nginx:
    ...
    varet nga:
      - app 

Tani është koha të ngarkohet konteinerët.

docker-compose up -d  

Pas pak kohësh, nginx do të fillojë t'ju redirektojë në ndërfaqen e jashtme të NextCloud, e cila në mënyrë të paracaktuar është faqja e konfigurimit. Ju do të duhet të futni emrin e përdoruesit dhe fjalëkalimin për përdoruesin tuaj të parë administrativ si dhe kredencialet e bazës së të dhënave që keni përcaktuar në docker-compose.yml. Pas përfundimit të konfigurimit, do të jeni në gjendje të hyni. Në rastin tonë, pritja zgjati gati një minutë dhe kërkoi një rifreskim të mëtejshëm të faqes së hyrjes, përpara se të mund të hynim në shërbimin e reve.

Dritarja e cilësimeve të shërbimit NextCloudKonfigurimi i NextCloud + ONLYOFFICE në një server me Docker

Hapi 4: lidhja e NextCloud me ONLYOFFICE

NĂ« kĂ«tĂ« hap do t'ju nevojitet tĂ« instaloni aplikacionin pĂ«r NextCloud, i cili lidh funksionalitetin e ONLYOFFICE. Le tĂ« fillojmĂ« me panelin e menaxhimit tĂ« aplikacioneve nĂ« kĂ«ndin e sipĂ«rm tĂ« djathtĂ« tĂ« menusĂ«. Gjeni aplikacionin ONLYOFFICE (nĂ« Seksionin “ZyrĂ« dhe tekst” (Office & text) ose duke pĂ«rdorur kĂ«rkimin), instalo dhe aktivizo atĂ«.

Pas kësaj, drejtohuni tek Cilësimet (Settings) përmes menusë në këndin e sipërm të djathtë, dhe duhet të gjeni elementin ONLYOFFICE në menunë e majtë. Hyni në të. Do t'ju nevojitet të shkruani adresat, siç është e treguar më poshtë.

Cilësimet e aplikacionit të integrimitKonfigurimi i NextCloud + ONLYOFFICE në një server me Docker

Adresa e parĂ« pĂ«rdoret pĂ«r tĂ« lidhur disa skedarĂ« js dhe css drejtpĂ«rdrejt nga aplikacioni i nisur nĂ« shfletues (kjo Ă«shtĂ« arsyeja pse na nevojitet tĂ« hapim qasje nĂ« shĂ«rbimin ONLYOFFICE pĂ«rmes nginx). ÇelĂ«si sekret nuk pĂ«rdoret, sepse besojmĂ« mĂ« shumĂ« nĂ« shtresĂ«n e izolimit Docker sesa nĂ« njĂ« çelĂ«s autentifikimi tĂ« pĂ«rhershĂ«m. Adresa e tretĂ« pĂ«rdoret nga konteneri NextCloud pĂ«r lidhje tĂ« drejtpĂ«rdrejta me API-nĂ« e ONLYOFFICE, dhe ajo pĂ«rdor emrin e hostit tĂ« brendshĂ«m siç Ă«shtĂ« parashikuar nga Docker. Dhe fusha e fundit pĂ«rdoret pĂ«r tĂ« lejuar qĂ« ONLYOFFICE tĂ« bĂ«jĂ« kĂ«rkesa prapa nĂ« API-nĂ« e NextCloud, duke pĂ«rdorur adresĂ«n IP tĂ« jashtme ose adresĂ«n e brendshme Docker, nĂ«se po pĂ«rdorni rrjete Docker, por nĂ« rastin tonĂ« nuk pĂ«rdoret. Sigurohuni qĂ« konfigurimet e firewall-it tuaj lejojnĂ« kĂ«to lloje interaksionesh.

Pas ruajtjes, NextCloud do tĂ« testojĂ« lidhjen dhe, nĂ«se gjithçka Ă«shtĂ« e saktĂ«, do t'ju tregojĂ« konfigurimet e lidhura me integrimin — pĂ«r shembull, cilat lloje skedarĂ«sh mund tĂ« modifikohen me kĂ«tĂ« integrim. Konfiguroni ashtu siç e konsideroni tĂ« nevojshĂ«m.

Hapi përfundimtar: ku të kërkoni redaktorin

NĂ«se ktheheni nĂ« dosjet e ruajtjes suaj nĂ« re dhe klikoni nĂ« “+” pĂ«r tĂ« krijuar njĂ« skedĂ« tĂ« re, do t'ju jetĂ« nĂ« dispozicion njĂ« opsion i ri pĂ«r tĂ« krijuar dokumente, tabela ose prezantime. Me ndihmĂ«n e tyre do tĂ« krijoni dhe menjĂ«herĂ« do tĂ« mund tĂ« redaktoni kĂ«to lloje skedash, duke pĂ«rdorur ONLYOFFICE.

Menyja e krijimit të skedarëveKonfigurimi i NextCloud + ONLYOFFICE në një server me Docker

Shtesë 1

Përmbajtja e plotë e docker-compose.yml mund të gjendet këtu: https://pastebin.com/z1Ti1fTZ

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster