Nastavenie NextCloud + ONLYOFFICE na jednom serveri pomocou Docker

Ahoj, Habr! predstavujem vám preklad článku „Nastavenie NextCloud a ONLYOFFICE na jednom serveri pomocou Dockera“.

Je ťažké podceniť prínos online balíkov kancelárskych aplikácií, ako sú Google Docs a cloudové úložiská, v živote technicky orientovaných ľudí. Technológie sa rozšírili do takej miery, že aj spoločnosť Microsoft, ktorá dlhodobo dominovala na trhu kancelárskych aplikácií, v poslednej dobe sústredila svoje úsilie na vývoj webovej aplikácie Office 365 a presviedčanie používateľov, aby prešli na predplatiteľský model používania svojich služieb. Tých, ktorí sa zaujímajú o proces inštalácie a nastavenia vlastného úložiska, pozývame pod čiaru.

Pred nejakým časom sme sa oboznámili so riešeniami pre cloudové úložiská a balíkmi kancelárskych webových aplikácií s otvoreným zdrojovým kódom, ktoré by mohli byť ľahko implementované pre použitie v mikropodnikoch. Hlavnou motiváciou pre uchovávanie všetkej dokumentácie online je minimalizácia objemu papierovej dokumentácie a zavedenie pozitívnych obchodných praktík, aj keď ide o malé množstvo operácií. Opačná strana mince spočíva v tom, že prenájom cloudového servera na poskytovanie tejto služby je menej bezpečný ako uchovávanie priamo na území podniku, pretože nemáte žiadne prostriedky na audit fyzického prístupu k vášmu serveru alebo prevádzke. Preto je tiež potrebné zabezpečiť šifrovanie end-to-end a softvér s otvoreným zdrojovým kódom.

Zohľadniac všetky dostupné informácie o riešeniach s otvoreným zdrojom, našli sme dva funkčné projekty (s commitmi v git repozitároch za posledných 12 mesiacov), vyvinuté na cloudové ukladanie: NextCloud a OwnCloud, a jediný aktívny balík kancelárskych aplikácií ONLYOFFICE. Obidve cloudové úložiská majú približne rovnakú funkcionalitu, a rozhodnutie zvoliť NextCloud bolo založené na existencii dôkazov o tom, že môže byť integrované s ONLYOFFICE pre pohodlné interakciu používateľa so softvérom. Avšak, keď sme začali nasadzovať služby, deficit informácií o integrácii vyššie uvedených služieb sa stal zrejmým. Našli sme 3 výukové videá o tom, ako uskutočniť integráciu:

Žiadne z troch videí neposkytlo odpoveď na otázku, ako nainštalovať dokumentovú službu ONLYOFFICE na tom istom fyzickom serveri ako NextCloud s spoločným nginx. Namiesto toho použili také technológie rozdelenia, ako je použitie oddelených portov pre api dokumentovej služby. Ďalším navrhovaným variantom bolo nasadenie samostatného servera pre dokumentovú službu s manuálnym nastavením konfigurácie integrovaného nginx pre inštanciu dokumentovej služby na inštaláciu prístupového kľúča (predtým známy prístupový kľúč, ktorý potvrdzuje právo na prístup k cloudu) a certifikátov TLS. Vyššie popísané prístupy boli uznané za nebezpečné a nedostatočne efektívne, preto sme vykonali integráciu NextCloud, ONLYOFFICE a spoločného nginx, ktorý rozdeľuje požiadavky podľa doménových mien, pomocou docker-compose. Tu sú krokové informácie, ako to urobiť.

Krok 1: kontajner nginx

Toto je veľmi jednoduchá inštalácia, ale tento krok si vyžaduje najviac práce na konfiguráciu reverzného proxy servera. Najprv sme vytvorili konfiguráciu docker-compose pre obraz 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 vytvára kontajner s portami 80 a 443 otvorenými pre verejný prístup, robí mapovanie konfigurácie na nginx/nginx-vhost.conf a určuje úložisko pre certifikáty, ktoré boli generované ako samopodpisované certifikáty alebo pomocou Certbot od Let’s encrypt v /nginx/certificates. Na tomto mieste by mali byť priečinky pre office.yourdomain.com a cloud.yourdomain.com s súbormi fullchain1.pem a privkey1.pem v každom prípade pre reťazec certifikátov a súkromný kľúč servera. Môžete si prečítať viac o tom, ako vygenerovať samopodpisovaný certifikát tu. www.akadia.com/services/ssh_test_certificate.html (prezvanie .key a .crt na .pem funguje bez konverzie súborovej štruktúry pre nginx).

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

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 docker-compose.yml. Tu nie je veľa čo konfigurovať.

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

Ale nezabudnite prepojiť kontajner nginx so službou dokumentov:

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

Krok 3: NextCloud

Najprv pridáme 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=#zadajte tu nejaké heslo
      - MYSQL_PASSWORD=#zadajte tu iné heslo
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

a pridáme odkaz na nginx:

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

Teraz je čas na načítanie kontajnerov.

docker-compose up -d  

O chvíľu začne nginx presmerovávať na vonkajšie rozhranie NextCloud, ktoré je predvolene stránkou nastavenia. Musíte zadať meno používateľa a heslo pre vášho prvého administrátora a údaje databázy, ktoré ste uvedli 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 dodatočné obnovenie prihlasovacej stránky predtým, ako sme mohli ísť do cloudovej služby.

Okno nastavení služby NextCloudNastavenie NextCloud + ONLYOFFICE na jednom serveri pomocou Docker

Krok 4: prepojenie NextCloud a ONLYOFFICE

V tomto kroku budete musieť nainštalovať aplikáciu pre NextCloud, ktorá prepojila funkcionalitu ONLYOFFICE. Začneme s panelom ovládania aplikácií v pravom hornom rohu menu. Nájdite aplikáciu ONLYOFFICE (v sekcii „Kancelária a text“ alebo pomocou vyhľadávania), nainštalujte a aktivujte ju.

Potom sa presuňte do Nastavení cez menu v pravom hornom rohu a mali by ste nájsť položku ONLYOFFICE v ľavom menu. Kliknite na ňu. Budete musieť zadať adresy, ako je uvedené nižšie.

Nastavenia integračnej aplikácieNastavenie NextCloud + ONLYOFFICE na jednom serveri pomocou Docker

Prvá adresa sa používa na odkazovanie na niektoré súbory js a css priamo z aplikácie spustenej v prehliadači (to je dôvod, prečo potrebujeme otvoriť prístup k službe ONLYOFFICE cez nginx). Tajný kľúč nie je použitý, pretože dôverujeme izolácii Dockeru viac ako trvalému autentizačnému kľúču. Tretia adresa sa používa kontajnerom NextCloud pre priame pripojenie k ONLYOFFICE API a využíva predvolené vnútorné meno hostiteľa z Dockeru. A posledné pole sa používa na to, aby ONLYOFFICE mohol robiť požiadavky späť k NextCloud API, používať externú IP adresu alebo vnútornú adresu Dockeru, ak používate siete Docker, ale v našom prípade to nie je použité. Uistite sa, že nastavenia vášho firewalu umožňujú tieto druhy interakcií.

Po uložením NextCloud otestuje pripojenie a ak je všetko v poriadku, zobrazí vám nastavenia týkajúce sa integrácie – napríklad, aké typy súborov môžu byť upravované touto integráciou. Nastavte ich podľa svojich predstáv.

Záverečný krok: kde hľadať editor

Ak sa vrátite do priečinkov vášho cloudového úložiska a kliknete na “+” pre vytvorenie nového súboru, bude vám dostupná nová možnosť vytvorenia dokumentu, tabuľky alebo prezentácie. S ich pomocou vytvoríte a okamžite môžete upravovať tieto typy súborov pomocou ONLYOFFICE.

Menu vytvárania súborovNastavenie NextCloud + ONLYOFFICE na jednom serveri pomocou Docker

Dodatok 1

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

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster