„NextCloud + ONLYOFFICE“ nustatymas tame pačiame serveryje su „Docker“.

Sveiki, Habr! Jūsų dėmesiui pristatau straipsnio vertimą „NextCloud ir ONLYOFFICE nustatymas viename serveryje su Docker“.

Sunku nuvertinti internetinių biuro rinkinių, tokių kaip „Google“ dokumentai, ir saugykla debesyje, vertę į technologijas orientuotų žmonių gyvenime. Technologijos taip išplito, kad net „Microsoft“, ilgą laiką dominuojanti biuro programų rinkoje, pastaruoju metu daug dėmesio skyrė „Office 365“ žiniatinklio programos kūrimui ir vartotojų įtikinėjimui pereiti prie prenumeratos modelio, kad galėtų naudotis savo paslaugomis. Kviečiame tuos, kurie domisi savo saugyklos įrengimo ir konfigūravimo procesu po kat.

Prieš kurį laiką žiūrėjome į debesies saugyklos sprendimus ir atvirojo kodo žiniatinklio biuro rinkinius, kuriuos būtų galima lengvai pritaikyti naudoti labai mažoje įmonėje. Pagrindinė motyvacija laikyti visą dokumentaciją internete yra iki minimumo sumažinti popierizmą ir įgyvendinti gerą verslo praktiką, nepaisant mažos operacijų apimties. Kita medalio pusė yra ta, kad debesies serverio nuoma šiai paslaugai teikti yra mažiau saugu nei saugoti tiesiogiai įmonės patalpose, nes jūs neturite jokių fizinės prieigos prie serverio ar srauto audito priemonių. Todėl taip pat reikalingas galutinis šifravimas ir atvirojo kodo programinė įranga.

Atsižvelgdami į visą turimą informaciją apie atvirojo kodo sprendimus, radome du aktyvius projektus (su įsipareigojimais git saugykloje per pastaruosius 12 mėnesių), sukurtus debesies saugyklai: „NextCloud“ ir „OwnCloud“ bei vienintelį aktyvų ONLYOFFICE biuro paketą. Abu debesų saugyklos įrankiai turi maždaug tas pačias funkcijas, o sprendimas pasirinkti „NextCloud“ buvo pagrįstas turimais įrodymais, kad jį galima integruoti su ONLYOFFICE, kad naudotojas galėtų patogiai bendrauti su programine įranga. Tačiau pradėjus diegti paslaugas išryškėjo informacijos apie minėtų paslaugų integravimą trūkumas. Radome 3 mokomuosius vaizdo įrašus, kaip integruoti:

Nė vienas iš trijų vaizdo įrašų neatsakė į klausimą, kaip įdiegti ONLYOFFICE dokumentų paslaugą tame pačiame fiziniame serveryje, kaip ir NextCloud, naudojant bendrinamą nginx. Vietoj to jie naudojo atskyrimo metodus, pvz., naudojo atskirus prievadus dokumentų aptarnavimo API. Kitas pasiūlytas variantas buvo įdiegti atskirą serverį Document Service, rankiniu būdu sukonfigūruojant nginx egzempliorių, integruotą į dokumentų tarnybą, kad būtų įdiegtas prieigos raktas (iš anksto žinomas prieigos raktas, patvirtinantis teisę pasiekti duomenų debesį) ir TLS sertifikatai. Pirmiau minėti metodai buvo laikomi nesaugiais ir nepakankamai efektyviais, todėl integravome NextCloud, ONLYOFFICE ir bendrą nginx, kuris atskiria užklausas pagal domenų pavadinimus, naudodami docker-compose. Čia yra žingsnis po žingsnio informacija, kaip tai padaryti.

1 veiksmas: nginx konteineris

Tai labai paprasta sąranka, tačiau norint sukonfigūruoti atvirkštinį tarpinį serverį, šis veiksmas reikalauja daugiausiai darbo. Pirmiausia sukūrėme nginx: stabilaus vaizdo docker-compose konfigūraciją.

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

Taip sukuriamas konteineris su 80 ir 443 prievadais, atvirais viešai, konfigūracija susiejama su nginx/nginx-vhost.conf ir apibrėžiama sertifikatų saugykla, sugeneruota kaip savarankiškai pasirašyti sertifikatai arba naudojant Let's encrypt's certbot aplanke /nginx/certificates. Šioje vietoje turėtų būti aplankai, skirti office.yourdomain.com ir cloud.yourdomain.com, su atitinkamais sertifikatų grandinės ir serverio privačiojo rakto failais fullchain1.pem ir privkey1.pem. Daugiau apie tai, kaip sukurti savarankiškai pasirašytą sertifikatą, galite perskaityti čia. www.akadia.com/services/ssh_test_certificate.html (.key ir .crt pervadinimas į .pem veikia nekonvertuojant nginx failo struktūros).

Po to mes apibrėžėme vhost failą. Pirmiausia apibrėžiame 80 prievado veikimą kaip paprastą peradresavimą į https, nes nenorime leisti jokio http srauto

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

Tada savo paslaugoms sukūrėme du virtualius serverius 443 prievade:

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

2 veiksmas: dokumentų aptarnavimas

Dabar turime pridėti dokumentų tarnybos konteinerį į docker-compose.yml. Čia nereikia nieko ypatingo konfigūruoti.

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

Tačiau nepamirškite susieti nginx konteinerį su dokumentų tarnyba:

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

3 veiksmas: „NextCloud“.

Pirmiausia pridėkite naujų paslaugų:

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

ir pridėkite nuorodą į nginx:

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

Dabar laikas krauti konteinerius.

docker-compose up -d  

Po kurio laiko „nginx“ pradės jus nukreipti į „NextCloud“ sąsają, kuri yra numatytasis konfigūracijos puslapis. Turėsite įvesti pirmojo administratoriaus vartotojo vardą ir slaptažodį bei duomenų bazės kredencialus, kuriuos pateikėte docker-compose.yml Kai sąranka bus baigta, galėsite prisijungti. Mūsų atveju laukimas užtruko beveik minutę ir reikėjo papildomai atnaujinti prisijungimo puslapį, kad galėtume prisijungti prie debesies paslaugos.

„NextCloud“ paslaugos nustatymų langas„NextCloud + ONLYOFFICE“ nustatymas tame pačiame serveryje su „Docker“.

4 veiksmas: prijunkite „NextCloud“ ir „ONLYOFFICE“.

Šiame žingsnyje turėsite įdiegti „NextCloud“ programą, kuri sujungia ONLYOFFICE funkciją. Pradėkime nuo programos valdymo skydelio viršutiniame dešiniajame meniu kampe. Raskite programą ONLYOFFICE (skiltyje „Office & text“ arba naudodami paiešką), įdiekite ir suaktyvinkite ją.

Po to eikite į Nustatymai per meniu viršutiniame dešiniajame kampe ir kairiajame meniu turėtumėte rasti elementą ONLYOFFICE. Eikite į jį. Turėsite užregistruoti adresus, kaip nurodyta toliau.

Integravimo programos nustatymai„NextCloud + ONLYOFFICE“ nustatymas tame pačiame serveryje su „Docker“.

Pirmasis adresas naudojamas susieti su kai kuriais js ir css failais tiesiai iš naršyklėje veikiančios programos (to mums reikia norint atidaryti prieigą prie ONLYOFFICE paslaugos per nginx). Slaptasis raktas nenaudojamas, nes mes labiau pasitikime Docker izoliacijos sluoksniu nei nuolatiniu autentifikavimo raktu. Trečiąjį adresą naudoja „NextCloud“ konteineris, kad galėtų tiesiogiai prisijungti prie ONLYOFFICE API, ir jis naudoja numatytąjį vidinį pagrindinio kompiuterio pavadinimą iš „Docker“. Na, paskutinis laukas naudojamas tam, kad ONLYOFFICE galėtų pateikti užklausas atgal į NextCloud API naudodamas išorinį IP adresą arba vidinį Docker adresą, jei naudojate Docker tinklus, tačiau mūsų atveju tai nenaudojama. Įsitikinkite, kad ugniasienės nustatymai leidžia tokias sąveikas.

Po išsaugojimo „NextCloud“ patikrins ryšį ir, jei viskas bus teisinga, parodys su integravimu susijusius nustatymus – pavyzdžiui, kokių tipų failus galima redaguoti naudojant šią integraciją. Tinkinkite taip, kaip jums atrodo tinkama.

Paskutinis žingsnis: kur rasti redaktorių

Jei grįšite į debesies saugyklos aplankus ir spustelėsite „+“, kad sukurtumėte naują failą, turėsite naują parinktį sukurti dokumentą, skaičiuoklę ar pristatymą. Jų pagalba sukursite ir iš karto galėsite redaguoti tokio tipo failus naudodami ONLYOFFICE.

Failų kūrimo meniu„NextCloud + ONLYOFFICE“ nustatymas tame pačiame serveryje su „Docker“.

Papildymas 1 m

Visą docker-compose.yml turinį galite rasti čia: https://pastebin.com/z1Ti1fTZ

Šaltinis: www.habr.com

Добавить комментарий