Складана недаацэньваць карысць анлайнавых пакетаў офісных прыкладанняў накшталт Google Docs і хмарных сховішчаў у жыцці тэхнічна арыентаваных людзей (tech-oriented people). Тэхналогіі атрымалі настолькі шырокі распаўсюд, што нават кампанія Microsoft, ужо працяглы час дамінантная на рынку офісных прыкладанняў, у апошні час засяродзілася на распрацоўцы вэб-прыкладанні Office 365 і перакананні карыстачоў перайсці на падпісную мадэль выкарыстання ўласных сэрвісаў. Тых, каго цікавіць працэс усталёўкі і налады ўласнага сховішча запрашаем пад кат.
Некаторы час таму мы азнаёміліся з рашэннямі для хмарнага захоўвання і пакетамі офісных вэб-прыкладанняў з адкрытым рэсурсным кодам, якія дастаткова лёгка маглі б быць укаранёны для выкарыстання ў мікрапрадпрыемстве. Асноўная матывацыя захоўвання ўсёй дакументацыі анлайн - гэта звядзенне аб'ёму папяровага дакументазвароту да мінімуму, і ўкараненне станоўчых бізнес-практык, не гледзячы на малы аб'ём аперацый. Адваротны бок манеты ў тым, што арэнда хмарнага сервера для падавання дадзенага сэрвісу меней бяспечная, чым захоўванне непасрэдна на тэрыторыі прадпрыемства, бо ў вас няма ніякіх сродкаў аўдыту фізічнага доступу да вашага сервера ці трафіку. Такім чынам, таксама патрабуецца шыфраванне end-to-end і праграмнае забеспячэнне з адчыненым рэсурсным кодам.
Прыняўшы да ўвагі ўсю даступную інфармацыю аб рашэннях з адчыненым рэсурсным кодам, мы знайшлі два дзейсных праекту (з комитами ў git рэпазітары за мінулыя 12 месяцаў), распрацаваных для хмарнага захоўвання: NextCloud і OwnCloud, і адзіны актыўны пакет офісных прыкладанняў ONLYOFFICE. У абодвух сродкаў для хмарнага захоўвання функцыянал прыкладна аднолькавы, і рашэнне абраць NextCloud было заснавана на існаванні доказаў, таго, што яно можа быць інтэгравана з ONLYOFFICE для камфортнага ўзаемадзеяння карыстача з ПЗ. Аднак, калі мы пачалі разгортванне сэрвісаў, дэфіцыт інфармацыі па інтэграцыі вышэйзгаданых сэрвісаў стаў відавочным. Мы знайшлі 3 навучальных відэа аб тым, як зрабіць інтэграцыю:
Ніводнае з трох відэа не адказала на пытанне ўсталёўкі сэрвісу дакументаў ONLYOFFICE на тым жа фізічным серверы, што і NextCloud з агульным nginx. Замест гэтага, яны выкарыстоўвалі такія тэхналогіі падзелу, як выкарыстанне паасобных партоў для api сэрвісу дакументаў. Іншым прапанаваным варыянтам было разгортванне асобнага сервера для сэрвісу дакументаў з ручной наладай канфігурацыі ўбудаванага ў сэрвіс дакументаў інстанса nginx для ўсталёўкі ключа доступу (папярэдне вядомы ключ доступу, які пацвярджае права доступу да воблака дадзеных) і сертыфікатаў TLS. Вышэйапісаныя падыходы былі прызнаныя не бяспечнымі і не дастаткова эфектыўнымі, таму мы зрабілі інтэграцыю NextCloud, ONLYOFFICE і агульнага nginx, які падзяляе запыты па даменных імёнах, з дапамогай docker-compose. Тут прыведзена пакрокавая інфармацыя аб тым, як гэта зрабіць.
Крок 1: кантэйнер nginx
Гэта вельмі простая ўстаноўка, але гэты крок патрабуе самай вялікай колькасці працы, для канфігурацыі зваротнага проксі сервера. Спачатку мы стварылі канфігурацыю docker-compose для выявы nginx:stable.
Гэта стварае кантэйнер з партамі 80 і 443, адкрытымі для публічнага доступу, робіць мэпінг канфігурацыі на nginx/nginx-vhost.conf і вызначае сховішча для сертыфікатаў, згенераваных як самападпісаныя сертыфікаты або з выкарыстаннем Сertbot ад Let's encrypt у /nginx/certifica. У гэтым месцы павінны знаходзіцца тэчкі для office.yourdomain.com і cloud.yourdomain.com з файламі fullchain1.pem і privkey1.pem у кожнай для ланцужка сертыфікатаў і дзелі ключы сервера адпаведна. Вы можаце прачытаць больш пра тое, як згенераваць самападпісаны сертыфікат тут www.akadia.com/services/ssh_test_certificate.html (перайменаванне .key і .crt у .pem працуе без канвертавання файлавай структуры для nginx).
Пасля гэтага мы вызначылі файл vhost. Спачатку мы вызначаем паводзіны порта 80 як простае перанакіраванне на https, т.я. мы не жадаем дазваляць ніякі http трафік
Але не забудзьцеся звязаць кантэйнер nginx з сэрвісам дакументаў:
services:
...
nginx:
...
depends_on:
- onlyoffice
Крок 3: NextCloud
Спачатку дадаем новыя сэрвісы:
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
і дадаем спасылку на nginx:
services:
...
nginx:
...
depends_on:
- app
Цяпер час загрузіць кантэйнеры.
docker-compose up -d
Праз некаторы час, nginx пачне пераадрасоўваць вас на вонкавы інтэрфейс NextCloud, які па змаўчанні з'яўляецца станіцай канфігурацыі. Вам неабходна будзе ўвесці імя карыстальніка і пароль для вашага першага адміністравальнага карыстальніка і ўліковыя дадзеныя базы дадзеных, якія вы пазначылі ў docker-compose.yml Пасля таго, як налада скончана, вы зможаце залагініцца. У нашым выпадку чаканне заняло амаль хвіліну і запатрабавала дадатковага абнаўлення старонкі ўваходу, перад тым, як мы змаглі зайсці ў хмарны сэрвіс.
Акно настроек сэрвісу NextCloud
Крок 4: злучэнне NextCloud і ONLYOFFICE
На гэтым кроку вам будзе неабходна ўсталяваць прыкладанне для NextCloud, які падключае функцыянал ONLYOFFICE. Пачнём з панэлі кіравання праграмамі ў верхнім правым куце меню. Знайдзіце прыкладанне ONLYOFFICE (у раздзеле "Офіс і тэкст" (Office & text) або з выкарыстаннем пошуку), усталюйце і актывуйце яго.
Пасля гэтага накіроўвайцеся ва Ўстаноўкі (Settings) праз меню ў правым верхнім куце, і вы павінны будзеце знайсці элемент ONLYOFFICE у левым меню. Зайдзіце ў яго. Вам будзе неабходна прапісаць адрасы, як паказана ніжэй.
Наладкі інтэграцыйнага прыкладання
Першы адрас выкарыстоўваецца для спасылкі на некаторыя файлы js і css напроста з запушчанага ў браўзэры прыкладання (гэта тое, для чаго нам неабходна адкрыць доступ да сэрвісу ONLYOFFICE праз nginx). Сакрэтны ключ не выкарыстоўваецца, таму што мы давяраем пласту ізаляцыі Docker больш, чым сталаму ключу аўтэнтыфікацыі. Трэці адрас выкарыстоўваецца кантэйнерам NextCloud для прамога падлучэння да ONLYOFFICE API, і ён выкарыстоўвае ўнутранае імя хаста па змаўчанні з Docker. Ну і апошняе поле выкарыстоўваецца для таго, каб ONLYOFFICE змог рабіць запыты назад да NextCloud API, выкарыстоўваючы вонкавы IP-адрас або ўнутраны адрас Docker, калі вы выкарыстоўваеце сеткі Docker, але ў нашым выпадку гэта не выкарыстоўваецца. Пераканайцеся, што наладкі вашага фаервала дазваляюць дадзеныя віды ўзаемадзеянняў.
Пасля захавання, NextCloud пратэстуе злучэнне і, калі ўсё дакладна, пакажа вам налады, звязаныя з інтэграцыяй – напрыклад, якія тыпы файлаў могуць рэдагавацца дадзенай інтэграцыяй. Наладзьце так, як лічыце патрэбным.
Завяршальны крок: дзе шукаць рэдактар
Калі вы вернецеся ў тэчкі вашага хмарнага сховішча і націснеце на "+" для стварэння новага файла, то вам будзе даступная новая опцыя стварэння дакумента, табліцы ці прэзентацыі. З іх дапамогай вы створыце і адразу зможаце рэдагаваць дадзеныя тыпы файлаў, выкарыстоўваючы ONLYOFFICE.