Konfigurimi i NextCloud + ONLYOFFICE në një server përmes Docker

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

ËshtĂ« e vĂ«shtirĂ« tĂ« nĂ«nvlerĂ«sosh pĂ«rfitimin e paketave online tĂ« aplikacioneve zyrtare si Google Docs dhe ruajtjeve nĂ« cloud nĂ« jetĂ«n e njerĂ«zve teknikisht tĂ« orientuar (tech-oriented people). TeknologjitĂ« janĂ« pĂ«rhapur aq shumĂ« sa qĂ« madje edhe kompania Microsoft, e cila pĂ«r njĂ« kohĂ« tĂ« gjatĂ« ka dominuar tregun e aplikacioneve zyrtare, kohĂ«t e fundit ka fokusuar vĂ«mendjen nĂ« zhvillimin e aplikacionit web Office 365 dhe bindjen e pĂ«rdoruesve tĂ« kalojnĂ« nĂ« njĂ« model abonimi pĂ«r pĂ«rdorimin e shĂ«rbimeve tĂ« veta. TĂ« gjithĂ« ata qĂ« janĂ« tĂ« interesuar nĂ« procesin e instalimit dhe konfigurimit tĂ« ruajtjes sĂ« tyre personale janĂ« tĂ« ftuar tĂ« vazhdojnĂ«.

Dikur kemi njohur me zgjidhjet për ruajtje në cloud dhe paketat e aplikacioneve zyrtare me kod të hapur, të cilat mund të implementohen lehtësisht për përdorim në mikro-përpjesëtime. Motivimi kryesor për ruajtjen e të gjithë dokumentacionit online është minimizimi i volumit të punimeve me letra, dhe mbështetja e praktikave pozitive të biznesit, pavarësisht nga volumi i vogël i operacioneve. Ana tjetër e monedhës është se qiraja e një serveri në cloud për ofrimin e këtij shërbimi është më pak e sigurt se ruajtja direkt në vendin e kompanisë, pasi nuk keni asnjë mjet për të audituar aksesin fizik në serverin tuaj ose trafikun. Ndërkohë, kërkohet gjithashtu enkriptimi end-to-end dhe softueri me kod të hapur.

Duke marrë parasysh të gjithë informacionin e disponueshëm mbi zgjidhjet me kod të hapur, ne gjetëm dy projekte aktiv (me komite në depot git gjatë 12 muajve të fundit), të zhvilluara për ruajtje në cloud: NextCloud dhe OwnCloud, dhe paketën e vetme aktive të aplikacioneve zyrtare ONLYOFFICE. Funksionaliteti i të dyja mjeteve për ruajtje në cloud është rreth e rrotull i njëjtë, dhe vendimi për të zgjedhur NextCloud u bazua në ekzistencën e provave se mund të integrohet me ONLYOFFICE për një ndërveprim më të rehatshëm me softuerin. Megjithatë, kur filluam me konfigurimin e shërbimeve, mungesa e informacionit mbi integrimin e shërbimeve të përmendura më lart u bë evidente. Gjetëm 3 video trajnimi mbi se si të realizohet integrimi:

Asnjë nga tre videot nuk iu përgjigj pyetjeve 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 API të dokumenteve. Një variant 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 brenda shërbimit të dokumenteve për instalimin e çelësit të aksesit (një çelës aksesimi i njohur paraprakisht, i cili konfirmon të drejtat për akses në cloudin e dhënave) dhe certifikatave TLS. Qasjet e përmendura më sipër u njohën si jo të sigurta dhe jo të mjaftueshme efikase, prandaj ne bëmë integrimin e NextCloud, ONLYOFFICE dhe nginx të përbashkët, i cili ndan kërkesat sipas emrave të domain-it, duke përdorur docker-compose. Këtu është informacion hap pas hapi se si ta bëni këtë.

Hapi 1: konteneri nginx

Ky është një instalim shumë i thjeshtë, por ky hap kërkon më shumë punë për konfigurimin e serverit të anasjelljes. Fillimisht krijuam konfigurimin docker-compose për imazhin nginx:stable.

version: '2'
shërbimet:
  nginx:
    imazhi : nginx:stable
    rifillim: gjithmonë
    volume:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    porte:
      - 443:443
      - 80:80

Kjo krijon njĂ« kontener me portet 80 dhe 443 tĂ« hapura pĂ«r qasje publike, bĂ«n hartimin e konfigurimit nĂ« nginx/nginx-vhost.conf dhe pĂ«rcakton ruajtjen pĂ«r certifikat e 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Ă« secilĂ«n pĂ«r zinxhirin e certifikatave dhe çelĂ«sin privat tĂ« serverit pĂ«rkatĂ«sisht. 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 (ndryshimi i emrave tĂ« skedarĂ«ve .key dhe .crt nĂ« .pem funksionon pa konvertimin e strukturĂ«s sĂ« skedarit pĂ«r nginx).

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

server {
    dëgjo 80;
    lokacion / {
        kthe 301
            https://$host$request_uri;
    }
}

Më pas krijuam dy servera 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 na nevojitet të shtojmë kontejnerin e shërbimit të dokumenteve në docker-compose.yml tonë. Nuk ka shumë për të konfiguruar këtu.

shërbimet:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

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

shërbimet:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

Hapi 3: NextCloud

Së pari, shtojmë shërbime të reja:

shërbimet:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#vendosni ndonjë fjalëkalim këtu
      - MYSQL_PASSWORD=#vendosni ndonjë fjalëkalim tjetër këtu
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

dhe shtojmë një lidhje me nginx:

shërbimet:
...
  nginx:
    ...
    depends_on:
      - app 

Tani është koha të ngarkoni kontejnerët.

docker-compose up -d  

Pas pak çastesh, nginx do të fillojë t'ju drejtojë në ndërfaqen e jashtme të NextCloud, e cila si parazgjedhje është faqja e konfigurimit. Ju do t'ju nevojitet të shkruani emrin e përdoruesit dhe fjalëkalimin për përdoruesin tuaj të parë administrues dhe kredencialet e bazës së të dhënave që keni specifikuar në docker-compose.yml. Pas përfundimit të konfigurimit, do të mund të kyçeni. Në rastin tonë, pritja zgjati pothuajse një minutë dhe kërkoi një rifreskim të mëtejshëm të faqeve të hyrjes para se të arrijmë të hyjmë në shërbimin e cloud.

Dritarja e konfigurimit të shërbimit NextCloudKonfigurimi i NextCloud + ONLYOFFICE në një server përmes Docker

Hapi 4: lidhja mes NextCloud dhe ONLYOFFICE

NĂ« kĂ«tĂ« hap do t'ju nevojitet tĂ« instaloni aplikacionin pĂ«r NextCloud, i cili lidh funksionalitetin ONLYOFFICE. TĂ« fillojmĂ« me panelin e kontrollit tĂ« aplikacioneve nĂ« kĂ«ndin e sipĂ«rm tĂ« djathtĂ« tĂ« menusĂ«. Gjeni aplikacionin ONLYOFFICE (nĂ« seksionin “Zyra dhe tekst” ose duke pĂ«rdorur kĂ«rkimin), instaloni dhe aktivizoni atĂ«.

Pas kësaj, drejtohuni te Cilësimet 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 duhet të shkruani adresat siç është përshkruar më poshtë.

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

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

Pasi të ruani, NextCloud do të testojë lidhjen dhe, nëse gjithçka është e saktë, do t'ju tregojë cilësimet në lidhje me integrimin - për shembull, se cilat lloje skedarësh mund të redaktohen me këtë integrim. Konfiguroni si të nevojshme.

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

NĂ«se ktheheni nĂ« dosjet e ruajtjes suaj nĂ« cloud dhe klikoni mbi “+” pĂ«r tĂ« krijuar njĂ« skedar tĂ« ri, do t'ju jetĂ« e disponueshme njĂ« mundĂ«si e re pĂ«r tĂ« krijuar njĂ« dokument, njĂ« tabelĂ« apo njĂ« prezantim. Me ndihmĂ«n e tyre do tĂ« krijoni dhe do tĂ« mund tĂ« redaktoni menjĂ«herĂ« kĂ«to lloje skedarĂ«sh duke pĂ«rdorur ONLYOFFICE.

Menuja e krijimit të skedarëveKonfigurimi i NextCloud + ONLYOFFICE në një server përmes Docker

Shtesa 1

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

Burimi: habr.com

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