Ahoj, Habr! Představuji vám překlad článku .
Je těžké podceňovat přínos online balíků kancelářských aplikací, jako je Google Docs, a cloudových úložišť v životě technicky orientovaných lidí. Technologie se staly tak rozšířenými, že i společnost Microsoft, která dlouho dominovala na trhu kancelářských aplikací, se v poslední době soustředila na vývoj webové aplikace Office 365 a přesvědčování uživatelů, aby přešli na předplatitelský model pro své služby. Ty, kteří se zajímají o proces instalace a nastavení vlastního úložiště, zveme pod článek.
Nějakou dobu jsme se seznamovali se řešeními pro cloudové úložiště a s balíky kancelářských webových aplikací s otevřeným zdrojovým kódem, které by mohly být snadno implementovány pro použití v mikropodniku. Hlavní motivací pro uchovávání veškeré dokumentace online je minimalizace objemu papírové dokumentace a zavedení pozitivních obchodních praktik, ať už se jedná o malý objem operací. Opačná strana mince je, že pronájem cloudového serveru pro poskytnutí této služby je méně bezpečný, než uchovávání přímo na půdě podniku, protože nemáte žádné prostředky na audit fyzického přístupu k vašemu serveru nebo k provozu. To také vyžaduje end-to-end šifrování a software s otevřeným zdrojovým kódem.
S ohledem na veškeré dostupné informace o řešeních s otevřeným zdrojovým kódem jsme našli dva aktivní projekty (s commity v git repozitáři za posledních 12 měsíců), které byly vyvinuty pro cloudové úložiště: NextCloud a OwnCloud, a jediný aktivní balík kancelářských aplikací ONLYOFFICE. Obě cloudové úložné prostředky mají přibližně stejnou funkčnost, a rozhodnutí zvolit NextCloud bylo založeno na existenci důkazů, že může být integrován s ONLYOFFICE pro pohodlnou interakci uživatele se softwarem. Nicméně, když jsme začali nasazení služeb, stala se nedostatečnost informací ohledně integrace výše zmíněných služeb zřejmou. Našli jsme 3 výuková videa o tom, jak provést integraci:
Žádné z těchto tří videí neodpovědělo na otázku ohledně instalace služby dokumentů ONLYOFFICE na stejném fyzickém serveru jako NextCloud se sdíleným nginxem. Místo toho používali technologie oddělení, jako je použití různých portů pro API služby dokumentů. Další navrhovanou možností bylo nasazení samostatného serveru pro službu dokumentů s ručním nastavením konfigurace integrovaného nginx instanci služby dokumentů 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 byly považovány za nezabezpečené a nedostatečně efektivní, proto jsme provedli integraci NextCloud, ONLYOFFICE a sdíleného nginxu, který rozděluje požadavky dle doménových jmen, pomocí docker-compose. Zde jsou krok za krokem informace o tom, jak to udělat.
Krok 1: Kontejner nginx
To je velmi jednoduchá instalace, ale tento krok vyžaduje nejvíce práce pro konfiguraci reverzního proxy serveru. Nejprve jsme vytvořili konfiguraci docker-compose pro 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 vytvoří kontejner s porty 80 a 443 otevřenými pro veřejný přístup, mapuje konfiguraci na nginx/nginx-vhost.conf a určuje úložiště pro certifikáty, generované jako self-signed certifikáty nebo s použitím Certbot od Let’s Encrypt v /nginx/certificates. V tomto místě by měly být složky pro office.yourdomain.com a cloud.yourdomain.com s soubory fullchain1.pem a privkey1.pem v každé pro řetězec certifikátů a soukromý klíč serveru příslušně. O tom, jak generovat self-signed certifikát, si můžete přečíst zde. (přejmenování .key a .crt na .pem funguje bez konverze souborové struktury 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 docker-compose.yml. Tady není moc co konfigurovat.
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řidá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=#vložit nějaké heslo zde
- MYSQL_PASSWORD=#vložit nějaké jiné heslo zde
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
depends_on:
- db
- onlyoffice
restart: always
a přidáme odkaz na nginx:
services:
...
nginx:
...
depends_on:
- app
Nyní je čas načíst kontejnery.
docker-compose up -d
Po chvíli vás nginx začne přesměrovávat na externí rozhraní NextCloud, které je ve výchozím nastavení stránkou konfigurace. Budete muset zadat uživatelské jméno a heslo pro svého prvního administrátorského uživatele a údaje o databázi, které jste zadali v docker-compose.yml. Po dokončení nastavení se budete moci přihlásit. V našem případě čekání trvalo téměř minutu a vyžadovalo další obnovení přihlašovací stránky, než jsme se dostali do cloudové služby.
Okno nastavení služby NextCloud
Krok 4: spojení NextCloud a ONLYOFFICE
V tomto kroku bude potřeba nainstalovat aplikaci pro NextCloud, která propojí funkčnost ONLYOFFICE. Začněme v panelu správy aplikací v pravém horním rohu menu. Najděte aplikaci ONLYOFFICE (v části „Kancelář a text“ nebo pomocí hledání), nainstalujte ji a aktivujte.
Poté přejděte do Nastavení přes menu v pravém horním rohu a měli byste najít položku ONLYOFFICE v levém menu. Vstupte do ní. Bude třeba zadat adresy, jak je uvedeno níže.
Nastavení integrační aplikace
První adresa se používá pro odkaz na některé soubory js a css přímo z aplikace spuštěné v prohlížeči (to je důvod, proč je potřeba otevřít přístup k službě ONLYOFFICE přes nginx). Tajný klíč se nepoužívá, protože důvěřujeme izolační vrstvě Docker více než trvalému autentizačnímu klíči. Třetí adresa se používá kontejnerem NextCloud pro přímé připojení k ONLYOFFICE API a používá výchozí interní název hostitele z Dockeru. A poslední pole slouží k tomu, aby ONLYOFFICE mohl provádět dotazy zpět k NextCloud API, pomocí externí IP adresy nebo interní adresy Dockeru, pokud používáte sítě Docker, ale v našem případě se to nepoužívá. Ujistěte se, že nastavení vašeho firewallu povoluje tyto typy interakcí.
Po uložení NextCloud otestuje připojení a pokud je vše správně, zobrazí vám nastavení související s integrací - například, které typy souborů lze touto integrací upravovat. Nastavte to, jak považujete za potřebné.
Závěrečný krok: kde hledat editor
Pokud se vrátíte do složek vašeho cloudového úložiště a kliknete na „+“ pro vytvoření nového souboru, bude vám k dispozici nová možnost vytvoření dokumentu, tabulky nebo prezentace. S jejich pomocí vytvoříte a ihned můžete upravovat tyto typy souborů pomocí ONLYOFFICE.
Menu pro vytváření souborů
Dodatek 1
Úplný obsah docker-compose.yml naleznete zde:
Zdroj: habr.com
