Nastavení NextCloud + ONLYOFFICE na stejném serveru s Dockerem

Čau Habr! Předkládám vaší pozornosti překlad článku "Nastavení NextCloud a ONLYOFFICE na jednom serveru pomocí Docker".

Je těžké podceňovat hodnotu online kancelářských balíků, jako jsou Dokumenty Google a cloudové úložiště, v životě technicky orientovaných lidí. Technologie se natolik rozšířila, že i Microsoft, který dlouhodobě dominuje trhu kancelářských aplikací, se v poslední době zaměřuje na vývoj webové aplikace Office 365 a přesvědčování uživatelů, aby přešli na model předplatného pro využívání vlastních služeb. Zveme ty, kteří mají zájem o proces instalace a konfigurace vlastního úložiště pod kat.

Před časem jsme se podívali na řešení cloudového úložiště a open source webové kancelářské sady, které lze snadno nasadit pro použití v mikropodniku. Hlavní motivací pro udržování veškeré dokumentace online je omezit papírování na minimum a zavést dobré obchodní praktiky i přes nízký objem transakcí. Druhou stranou mince je, že pronájem cloudového serveru k poskytování této služby je méně bezpečný než jeho uložení přímo v prostorách podniku, protože nemáte žádné prostředky pro audit fyzického přístupu k vašemu serveru nebo provozu. Proto je také vyžadováno end-to-end šifrování a open source software.

S přihlédnutím ke všem dostupným informacím o open source řešeních jsme našli dva aktivní projekty (s commity v git úložišti za posledních 12 měsíců) vyvinuté pro cloudové úložiště: NextCloud a OwnCloud a jediný aktivní kancelářský balík ONLYOFFICE. Oba nástroje cloudového úložiště mají zhruba stejnou funkcionalitu a rozhodnutí zvolit NextCloud bylo založeno na existenci důkazů, že jej lze integrovat s ONLYOFFICE pro pohodlnou uživatelskou interakci se softwarem. Když jsme však začali služby nasazovat, ukázal se nedostatek informací o integraci výše uvedených služeb. Našli jsme 3 výuková videa o tom, jak integrovat:

Žádné ze tří videí neodpovědělo na otázku instalace dokumentové služby ONLYOFFICE na stejný fyzický server jako NextCloud se sdíleným nginx. Místo toho použili separační techniky, jako je použití samostatných portů pro rozhraní API služby dokumentů. Další navrhovanou možností bylo nasazení samostatného serveru pro Document Service, ruční konfiguraci instance nginx zabudované do Document Service pro instalaci přístupového klíče (předem známý přístupový klíč, který potvrzuje právo přístupu k datovému cloudu) a certifikátů TLS. Výše uvedené přístupy nebyly považovány za bezpečné a dostatečně účinné, proto jsme integrovali NextCloud, ONLYOFFICE a běžný nginx, který odděluje požadavky podle doménových jmen, pomocí docker-compose. Zde jsou krok za krokem informace, jak na to.

Krok 1: kontejner nginx

Toto je velmi jednoduché nastavení, ale tento krok vyžaduje nejvíce práce při konfiguraci reverzního proxy serveru. Nejprve jsme vytvořili konfiguraci docker-compose pro obrázek 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 se vytvoří kontejner s porty 80 a 443 otevřenými pro veřejnost, namapuje se konfigurace na nginx/nginx-vhost.conf a definuje úložiště pro certifikáty generované jako certifikáty s vlastním podpisem nebo pomocí certbota Let's encrypt v /nginx/certificates. Toto umístění by mělo obsahovat složky office.yourdomain.com a cloud.yourdomain.com se soubory fullchain1.pem a privkey1.pem pro řetězec certifikátů a soukromý klíč serveru. Více o tom, jak vygenerovat certifikát s vlastním podpisem, si můžete přečíst zde. www.akadia.com/services/ssh_test_certificate.html (přejmenování .key a .crt na .pem funguje bez převodu struktury souboru pro nginx).

Poté jsme definovali soubor vhost. Nejprve definujeme chování portu 80 jako jednoduché přesměrování na https, protože nechceme povolit žádný http provoz

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

Poté jsme vytvořili dva virtuální servery na portu 443 pro 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 dokumentů

Nyní musíme přidat kontejner služby dokumentů do našeho souboru docker-compose.yml. Není zde nic zvláštního ke konfiguraci.

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

Ale nezapomeňte propojit kontejner nginx se službou dokumentů:

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

Krok 3: NextCloud

Nejprve přidejte 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 přidejte odkaz na nginx:

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

Nyní je čas naložit kontejnery.

docker-compose up -d  

Po chvíli vás nginx začne přesměrovávat na frontend NextCloud, což je výchozí konfigurační stránka. Budete muset zadat uživatelské jméno a heslo pro prvního administrátora a přihlašovací údaje k databázi, které jste poskytli v docker-compose.yml Po dokončení nastavení se budete moci přihlásit. V našem případě trvalo čekání téměř minutu a vyžadovalo dodatečné obnovení přihlašovací stránky, než jsme se mohli přihlásit do cloudové služby.

Okno nastavení služby NextCloudNastavení NextCloud + ONLYOFFICE na stejném serveru s Dockerem

Krok 4: Připojení NextCloud a ONLYOFFICE

V tomto kroku budete muset nainstalovat aplikaci pro NextCloud, která propojuje funkcionalitu ONLYOFFICE. Začněme ovládacím panelem aplikace v pravém horním rohu nabídky. Najděte aplikaci ONLYOFFICE (v části Office & text nebo pomocí vyhledávání), nainstalujte ji a aktivujte.

Poté přejděte do Nastavení přes nabídku v pravém horním rohu a v levém menu byste měli najít položku ONLYOFFICE. Jděte do toho. Budete muset zaregistrovat adresy, jak je uvedeno níže.

Nastavení integrační aplikaceNastavení NextCloud + ONLYOFFICE na stejném serveru s Dockerem

První adresa slouží k propojení na některé soubory js a css přímo z aplikace běžící v prohlížeči (to je to, co potřebujeme k otevření přístupu ke službě ONLYOFFICE přes nginx). Tajný klíč se nepoužívá, protože více důvěřujeme izolační vrstvě Docker než trvalému ověřovacímu klíči. Třetí adresu používá kontejner NextCloud k přímému připojení k API ONLYOFFICE a používá výchozí interní název hostitele z Dockeru. Poslední pole se používá k tomu, aby ONLYOFFICE mohl odesílat požadavky zpět na NextCloud API pomocí externí IP adresy nebo interní adresy Docker, pokud používáte sítě Docker, ale to se v našem případě nepoužívá. Ujistěte se, že nastavení brány firewall umožňuje tyto druhy interakcí.

Po uložení NextCloud otestuje připojení a pokud je vše v pořádku, ukáže vám nastavení související s integrací – například jaké typy souborů lze touto integrací upravovat. Přizpůsobte si, jak uznáte za vhodné.

Poslední krok: kde najít editor

Pokud se vrátíte do složek cloudového úložiště a kliknutím na „+“ vytvoříte nový soubor, budete mít novou možnost vytvořit dokument, tabulku nebo prezentaci. S jejich pomocí vytvoříte a ihned budete moci upravovat tyto typy souborů pomocí ONLYOFFICE.

Nabídka vytvoření souboruNastavení NextCloud + ONLYOFFICE na stejném serveru s Dockerem

Dodatek 1

Celý obsah docker-compose.yml naleznete zde: https://pastebin.com/z1Ti1fTZ

Zdroj: www.habr.com

Přidat komentář