Ahoj, Habr! predstavujem vám preklad článku .
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. (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 NextCloud
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ácie
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úborov
Dodatok 1
Úplný obsah docker-compose.yml nájdete tu:
Zdroj: habr.com
