Nastavenie NextCloud + ONLYOFFICE na rovnakom serveri s Dockerom

Čau Habr! Do pozornosti dávam preklad článku „Nastavenie NextCloud a ONLYOFFICE na jednom serveri pomocou Docker“.

Je ťažké podceniť hodnotu online kancelárskych balíkov, ako sú Dokumenty Google a cloudové úložisko, v živote technicky orientovaných ľudí. Technológia sa tak rozšírila, že aj Microsoft, ktorý dlhodobo dominuje na trhu s kancelárskymi aplikáciami, sa v poslednom čase zameral na vývoj webovej aplikácie Office 365 a presviedčanie používateľov, aby prešli na model predplatného pre využívanie vlastných služieb. Pozývame tých, ktorí majú záujem o proces inštalácie a konfigurácie vlastného úložiska pod kat.

Pred časom sme sa zamerali na riešenia cloudového úložiska a open source webové kancelárske balíky, ktoré by sa dali ľahko nasadiť na použitie v mikropodnikoch. Hlavnou motiváciou pre uchovávanie všetkej dokumentácie online je obmedziť papierovanie na minimum a implementovať dobré obchodné praktiky napriek nízkemu objemu transakcií. Druhou stranou mince je, že prenájom cloudového servera na poskytovanie tejto služby je menej bezpečný ako jeho uloženie priamo v priestoroch podniku, pretože nemáte žiadne prostriedky na audit fyzického prístupu k vášmu serveru alebo prevádzky. Preto je potrebné aj end-to-end šifrovanie a softvér s otvoreným zdrojovým kódom.

Berúc do úvahy všetky dostupné informácie o open source riešeniach, našli sme dva aktívne projekty (s potvrdeniami v git repozitári za posledných 12 mesiacov) vyvinuté pre cloudové úložisko: NextCloud a OwnCloud a jediný aktívny kancelársky balík ONLYOFFICE. Oba nástroje cloudového úložiska majú zhruba rovnakú funkčnosť a rozhodnutie vybrať NextCloud bolo založené na existencii dôkazov, že ho možno integrovať s ONLYOFFICE pre pohodlnú interakciu používateľa so softvérom. Keď sme však začali nasadzovať služby, prejavil sa nedostatok informácií o integrácii vyššie uvedených služieb. Našli sme 3 inštruktážne videá o integrácii:

Žiadne z troch videí neodpovedalo na otázku inštalácie dokumentovej služby ONLYOFFICE na rovnaký fyzický server ako NextCloud so zdieľaným nginx. Namiesto toho použili separačné techniky, ako napríklad použitie samostatných portov pre rozhranie API služby dokumentov. Ďalšou navrhovanou možnosťou bolo nasadenie samostatného servera pre dokumentovú službu, manuálne konfigurovanie inštancie nginx zabudovanej do dokumentovej služby na inštaláciu prístupového kľúča (vopred známy prístupový kľúč, ktorý potvrdzuje právo na prístup k dátovému cloudu) a certifikátov TLS. Vyššie uvedené prístupy sa nepovažovali za bezpečné a dostatočne účinné, preto sme integrovali NextCloud, ONLYOFFICE a spoločný nginx, ktorý oddeľuje požiadavky podľa názvov domén pomocou docker-compose. Tu sú informácie krok za krokom, ako na to.

Krok 1: kontajner nginx

Toto je veľmi jednoduché nastavenie, ale tento krok vyžaduje najviac práce pri konfigurácii reverzného proxy servera. Najprv sme vytvorili konfiguráciu docker-compose pre obrázok 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

Tým sa vytvorí kontajner s portami 80 a 443 otvorenými pre verejnosť, namapuje sa konfigurácia na nginx/nginx-vhost.conf a zadefinuje sa úložisko pre certifikáty vygenerované ako certifikáty s vlastným podpisom alebo pomocou certbota Let's encrypt v /nginx/certificates. Toto umiestnenie by malo obsahovať priečinky office.yourdomain.com a cloud.yourdomain.com so súbormi fullchain1.pem a privkey1.pem pre reťazec certifikátov a súkromný kľúč servera. Viac o tom, ako vygenerovať certifikát s vlastným podpisom, si môžete prečítať tu. www.akadia.com/services/ssh_test_certificate.html (premenovanie .key a .crt na .pem funguje bez konverzie štruktúry súboru pre nginx).

Potom sme definovali súbor vhost. Najprv definujeme správanie portu 80 ako jednoduché presmerovanie na https, pretože nechceme povoliť žiadny prenos http

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

Potom sme vytvorili dva virtuálne servery na porte 443 pre naše služby:

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

Krok 2: Služba dokumentov

Teraz musíme pridať kontajner služby dokumentov do nášho súboru docker-compose.yml. Tu nie je potrebné nič špeciálne konfigurovať.

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

Nezabudnite však prepojiť kontajner nginx so službou dokumentov:

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

Krok 3: NextCloud

Najprv pridajte nové služby:

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

a pridajte odkaz na nginx:

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

Teraz je čas naložiť kontajnery.

docker-compose up -d  

Po chvíli vás nginx začne presmerovať na frontend NextCloud, čo je predvolená konfiguračná stránka. Budete musieť zadať používateľské meno a heslo pre vášho prvého administrátora a poverenia databázy, ktoré ste poskytli v docker-compose.yml Po dokončení nastavenia sa budete môcť prihlásiť. V našom prípade čakanie trvalo takmer minútu a vyžadovalo si dodatočné obnovenie prihlasovacej stránky, kým sme sa mohli prihlásiť do cloudovej služby.

Okno nastavení služby NextCloudNastavenie NextCloud + ONLYOFFICE na rovnakom serveri s Dockerom

Krok 4: Pripojenie NextCloud a ONLYOFFICE

V tomto kroku si budete musieť nainštalovať aplikáciu pre NextCloud, ktorá spája funkcionalitu ONLYOFFICE. Začnime ovládacím panelom aplikácie v pravom hornom rohu ponuky. Nájdite aplikáciu ONLYOFFICE (v časti Office & text alebo pomocou vyhľadávania), nainštalujte ju a aktivujte.

Potom prejdite do Nastavenia cez ponuku v pravom hornom rohu a v ľavom menu by ste mali nájsť položku ONLYOFFICE. Choďte do toho. Budete musieť zaregistrovať adresy, ako je uvedené nižšie.

Nastavenia integračnej aplikácieNastavenie NextCloud + ONLYOFFICE na rovnakom serveri s Dockerom

Prvá adresa sa používa na prepojenie na niektoré súbory js a css priamo z aplikácie spustenej v prehliadači (to je to, čo potrebujeme na otvorenie prístupu k službe ONLYOFFICE cez nginx). Tajný kľúč sa nepoužíva, pretože viac dôverujeme izolačnej vrstve Docker ako trvalému autentifikačnému kľúču. Tretiu adresu používa kontajner NextCloud na priame pripojenie k API ONLYOFFICE a používa predvolený interný názov hostiteľa z Docker. Posledné pole sa používa na to, aby ONLYOFFICE mohol odosielať požiadavky späť do NextCloud API pomocou externej IP adresy alebo internej adresy Docker, ak používate siete Docker, ale v našom prípade sa to nepoužíva. Uistite sa, že nastavenia brány firewall umožňujú tieto druhy interakcií.

Po uložení NextCloud otestuje pripojenie a ak je všetko v poriadku, ukáže vám nastavenia súvisiace s integráciou – napríklad aké typy súborov je možné touto integráciou upravovať. Prispôsobte si, ako uznáte za vhodné.

Posledný krok: kde nájsť editor

Ak sa vrátite späť do priečinkov cloudového úložiska a kliknutím na „+“ vytvoríte nový súbor, budete mať novú možnosť vytvoriť dokument, tabuľku alebo prezentáciu. S ich pomocou vytvoríte a ihneď budete môcť upravovať tieto typy súborov pomocou ONLYOFFICE.

Ponuka vytvorenia súboruNastavenie NextCloud + ONLYOFFICE na rovnakom serveri s Dockerom

Dodatok 1

Celý obsah docker-compose.yml nájdete tu: https://pastebin.com/z1Ti1fTZ

Zdroj: hab.com

Pridať komentár