Nastavitev NextCloud + ONLYOFFICE na istem strežniku z Dockerjem

Hej Habr! Predstavljam vam prevod članka "Nastavitev NextCloud in ONLYOFFICE na enem strežniku z Dockerjem".

Težko je podcenjevati vrednost spletnih pisarniških paketov, kot sta Google Dokumenti in shramba v oblaku, v življenju tehnološko usmerjenih ljudi. Tehnologija je postala tako razširjena, da se je celo Microsoft, ki že dolgo obvladuje trg pisarniških aplikacij, v zadnjem času osredotočil na razvoj spletne aplikacije Office 365 in prepričeval uporabnike, da preidejo na naročniški model uporabe lastnih storitev. Vabimo tiste, ki jih zanima postopek namestitve in konfiguracije lastnega pomnilnika pod kat.

Pred časom smo si ogledali rešitve za shranjevanje v oblaku in odprtokodne spletne pisarniške pakete, ki bi jih bilo mogoče preprosto namestiti za uporabo v mikropodjetjih. Glavna motivacija za ohranjanje celotne dokumentacije na spletu je zmanjšanje papirologije na minimum in izvajanje dobrih poslovnih praks kljub majhnemu obsegu transakcij. Druga stran kovanca je, da je najem strežnika v oblaku za zagotavljanje te storitve manj varen kot njegovo shranjevanje neposredno v prostorih podjetja, saj nimate nobenih sredstev za nadzor fizičnega dostopa do vašega strežnika ali prometa. Zato sta potrebna tudi šifriranje od konca do konca in odprtokodna programska oprema.

Ob upoštevanju vseh razpoložljivih informacij o odprtokodnih rešitvah smo našli dva aktivna projekta (s komiti v repozitoriju git zadnjih 12 mesecev), razvita za shranjevanje v oblaku: NextCloud in OwnCloud ter edini aktiven pisarniški paket ONLYOFFICE. Obe orodji za shranjevanje v oblaku imata približno enako funkcionalnost in odločitev za izbiro NextCloud je temeljila na obstoju dokazov, da ga je mogoče integrirati z ONLYOFFICE za udobno interakcijo uporabnika s programsko opremo. Ko pa smo začeli uvajati storitve, je postalo očitno pomanjkanje informacij o integraciji zgornjih storitev. Našli smo 3 videoposnetke z navodili za integracijo:

Noben od treh videoposnetkov ni odgovoril na vprašanje o namestitvi dokumentne storitve ONLYOFFICE na isti fizični strežnik kot NextCloud z deljenim nginxom. Namesto tega so uporabili tehnike ločevanja, kot je uporaba ločenih vrat za API storitve dokumentov. Drugi predlog je bil uvesti ločen strežnik za Document Service, ročno konfigurirati instanco nginx, vgrajeno v Document Service, za namestitev ključa za dostop (vnaprej znan ključ za dostop, ki potrjuje pravico do dostopa do podatkovnega oblaka) in potrdil TLS. Zgornji pristopi so bili ocenjeni kot nevarni in premalo učinkoviti, zato smo integrirali NextCloud, ONLYOFFICE in skupni nginx, ki ločuje zahteve po imenih domen s pomočjo docker-compose. Tukaj so informacije po korakih, kako to storiti.

1. korak: vsebnik nginx

To je zelo preprosta nastavitev, vendar ta korak zahteva največ dela za konfiguracijo obratnega proxy strežnika. Najprej smo ustvarili konfiguracijo docker-compose za sliko 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

To ustvari vsebnik z vrati 80 in 443, odprtimi za javnost, preslika konfiguracijo v nginx/nginx-vhost.conf in definira shrambo za potrdila, ustvarjena kot samopodpisana potrdila ali z uporabo certbota podjetja Let's encrypt v /nginx/certificates. Ta lokacija mora vsebovati mapi za office.yourdomain.com in cloud.yourdomain.com, z datotekama fullchain1.pem in privkey1.pem v vsaki za verigo potrdil oziroma zasebni ključ strežnika. Več o tem, kako ustvariti samopodpisano potrdilo, si lahko preberete tukaj. www.akadia.com/services/ssh_test_certificate.html (preimenovanje .key in .crt v .pem deluje brez pretvorbe datotečne strukture za nginx).

Po tem smo definirali datoteko vhost. Najprej definiramo vedenje vrat 80 kot preprosto preusmeritev na https, ker ne želimo dovoliti prometa http

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

Nato smo ustvarili dva virtualna strežnika na vratih 443 za naše storitve:

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. korak: storitev dokumentov

Zdaj moramo dodati vsebnik storitve dokumenta v naš docker-compose.yml. Tukaj ni ničesar posebnega za konfiguracijo.

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

Vendar ne pozabite povezati vsebnika nginx s storitvijo dokumentov:

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

3. korak: NextCloud

Najprej dodajte nove storitve:

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

in dodajte povezavo do nginx:

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

Zdaj je čas za nalaganje zabojnikov.

docker-compose up -d  

Čez nekaj časa vas bo nginx začel preusmerjati na sprednji del NextCloud, ki je privzeta konfiguracijska stran. Vnesti boste morali uporabniško ime in geslo za svojega prvega skrbniškega uporabnika ter poverilnice baze podatkov, ki ste jih navedli v docker-compose.yml Ko bo nastavitev končana, se boste lahko prijavili. V našem primeru je čakanje trajalo skoraj minuto in zahtevalo dodatno osvežitev prijavne strani, preden smo se lahko prijavili v storitev v oblaku.

NextCloud okno z nastavitvami storitveNastavitev NextCloud + ONLYOFFICE na istem strežniku z Dockerjem

4. korak: Povezovanje NextCloud in ONLYOFFICE

Na tem koraku boste morali namestiti aplikacijo za NextCloud, ki povezuje funkcionalnost ONLYOFFICE. Začnimo z nadzorno ploščo aplikacije v zgornjem desnem kotu menija. Poiščite aplikacijo ONLYOFFICE (pod Office & text ali z iskalnikom), jo namestite in aktivirajte.

Nato pojdite v Nastavitve prek menija v zgornjem desnem kotu in v levem meniju bi morali najti element ONLYOFFICE. Pojdi vanj. Registrirati boste morali naslove, kot je navedeno spodaj.

Nastavitve integracijske aplikacijeNastavitev NextCloud + ONLYOFFICE na istem strežniku z Dockerjem

Prvi naslov se uporablja za povezavo do nekaterih datotek js in css neposredno iz aplikacije, ki se izvaja v brskalniku (to je tisto, kar potrebujemo, da odpremo dostop do storitve ONLYOFFICE prek nginx). Skrivni ključ se ne uporablja, ker bolj zaupamo izolacijskemu sloju Docker kot obstojnemu ključu za preverjanje pristnosti. Tretji naslov uporablja vsebnik NextCloud za neposredno povezavo z API-jem ONLYOFFICE in uporablja privzeto notranje ime gostitelja iz Dockerja. No, zadnje polje se uporablja, da lahko ONLYOFFICE pošlje zahteve nazaj v API NextCloud z uporabo zunanjega naslova IP ali notranjega naslova Docker, če uporabljate omrežja Docker, vendar se to v našem primeru ne uporablja. Prepričajte se, da nastavitve požarnega zidu dovoljujejo tovrstne interakcije.

Po shranjevanju bo NextCloud preizkusil povezavo in, če je vse pravilno, vam bo pokazal nastavitve, povezane z integracijo – na primer, katere vrste datotek je mogoče urejati s to integracijo. Prilagodite, kot se vam zdi primerno.

Zadnji korak: kje najti urejevalnik

Če se vrnete v svoje mape za shranjevanje v oblaku in kliknete »+«, da ustvarite novo datoteko, boste imeli novo možnost za ustvarjanje dokumenta, preglednice ali predstavitve. Z njihovo pomočjo boste ustvarili in takoj lahko urejali tovrstne datoteke z uporabo ONLYOFFICE.

Meni za ustvarjanje datotekeNastavitev NextCloud + ONLYOFFICE na istem strežniku z Dockerjem

Dodatek 1

Celotno vsebino docker-compose.yml lahko najdete tukaj: https://pastebin.com/z1Ti1fTZ

Vir: www.habr.com

Dodaj komentar