Подешавање НектЦлоуд + ОНЛИОФФИЦЕ на истом серверу са Доцкер-ом

Хеј Хабр! Представљам вашој пажњи превод чланка „Подешавање НектЦлоуд-а и ОНЛИОФФИЦЕ-а на једном серверу са Доцкер-ом“.

Тешко је потценити вредност онлајн канцеларијских пакета као што су Гоогле документи и складиште у облаку у животима људи оријентисаних на технологију. Технологија је постала толико раширена да се чак и Мицрософт, који је дуго доминирао тржиштем канцеларијских апликација, недавно фокусирао на развој Оффице 365 веб апликације и убеђивање корисника да пређу на претплатнички модел за коришћење сопствених услуга. Позивамо оне који су заинтересовани за процес инсталирања и конфигурисања сопственог складишта под кат.

Пре извесног времена погледали смо решења за складиштење у облаку и пакете веб канцеларија отвореног кода који би се лако могли применити за употребу у микро предузећима. Главна мотивација за држање све документације на мрежи је да се папирологија сведе на минимум и примени добре пословне праксе упркос малом обиму трансакција. Друга страна медаље је да је изнајмљивање сервера у облаку за пружање ове услуге мање безбедно од складиштења директно у просторијама предузећа, пошто немате никаква средства за ревизију физичког приступа вашем серверу или саобраћају. Због тога су такође потребни енд-то-енд енкрипција и софтвер отвореног кода.

Узимајући у обзир све доступне информације о решењима отвореног кода, пронашли смо два активна пројекта (са урезивања у гит репозиторијуму у последњих 12 месеци) развијена за складиштење у облаку: НектЦлоуд и ОвнЦлоуд, и једини активни ОНЛИОФФИЦЕ канцеларијски пакет. Оба алата за складиштење у облаку имају приближно исту функционалност, а одлука да се изабере НектЦлоуд заснована је на постојању доказа да се може интегрисати са ОНЛИОФФИЦЕ-ом за удобну интеракцију корисника са софтвером. Међутим, када смо почели да примењујемо сервисе, постао је очигледан недостатак информација о интеграцији наведених услуга. Пронашли смо 3 видео туторијала о томе како да се интегришете:

Ниједан од три видео снимка није одговорио на питање о инсталирању услуге докумената ОНЛИОФФИЦЕ на истом физичком серверу као НектЦлоуд са заједничким нгинк-ом. Уместо тога, користили су технике раздвајања као што је коришћење одвојених портова за АПИ сервиса докумената. Други предлог је био да се примени посебан сервер за Доцумент Сервице, ручно конфигуришући нгинк инстанцу уграђену у Доцумент Сервице да инсталира приступни кључ (унапред познати приступни кључ који потврђује право на приступ облаку података) и ТЛС сертификате. Горњи приступи су сматрани небезбедним и недовољно ефикасним, па смо интегрисали НектЦлоуд, ОНЛИОФФИЦЕ и уобичајени нгинк који раздваја захтеве по именима домена користећи доцкер-цомпосе. Ево корак по корак информација о томе како то учинити.

Корак 1: нгинк контејнер

Ово је веома једноставно подешавање, али овај корак захтева највише посла на конфигурисању обрнутог прокси сервера. Прво смо креирали конфигурацију доцкер-цомпосе за слику нгинк:стабле.

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

Ово креира контејнер са портовима 80 и 443 отвореним за јавност, мапира конфигурацију у нгинк/нгинк-вхост.цонф и дефинише складиште за сертификате генерисане као самопотписани сертификати или користећи Лет'с енцрипт'с цертбот у /нгинк/цертифицатес. Ова локација треба да садржи фасцикле за оффице.иоурдомаин.цом и цлоуд.иоурдомаин.цом, са фуллцхаин1.пем и привкеи1.пем датотекама у свакој за ланац сертификата и приватни кључ сервера, респективно. Више о томе како да генеришете самопотписани сертификат можете прочитати овде. ввв.акадиа.цом/сервицес/ссх_тест_цертифицате.хтмл (преименовање .кеи и .црт у .пем ради без конверзије структуре датотеке за нгинк).

Након тога смо дефинисали датотеку вхост. Прво дефинишемо понашање порта 80 као једноставно преусмеравање на хттпс, јер не желимо да дозволимо никакав хттп саобраћај

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

Затим смо креирали два виртуелна сервера на порту 443 за наше услуге:

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;
    }
}

Корак 2: сервис докумената

Сада морамо да додамо контејнер услуге докумената у наш доцкер-цомпосе.имл. Овде нема ништа посебно да се конфигурише.

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

Али не заборавите да повежете нгинк контејнер са услугом докумената:

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

Корак 3: НектЦлоуд

Прво додајте нове услуге:

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

и додајте везу до нгинк-а:

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

Сада је време за пуњење контејнера.

docker-compose up -d  

После неког времена, нгинк ће почети да вас преусмерава на НектЦлоуд фронт енд, који је подразумевана страница за конфигурацију. Мораћете да унесете корисничко име и лозинку за свог првог корисника администратора и акредитиве базе података које сте дали у доцкер-цомпосе.имл Када се подешавање заврши, моћи ћете да се пријавите. У нашем случају, чекање је трајало скоро минут и захтевало је додатно освежавање странице за пријаву пре него што смо могли да се пријавимо на услугу у облаку.

Прозор подешавања услуге НектЦлоудПодешавање НектЦлоуд + ОНЛИОФФИЦЕ на истом серверу са Доцкер-ом

Корак 4: Повезивање НектЦлоуд-а и ОНЛИОФФИЦЕ-а

У овом кораку, мораћете да инсталирате апликацију за НектЦлоуд, која повезује ОНЛИОФФИЦЕ функционалност. Почнимо са контролном таблом апликације у горњем десном углу менија. Пронађите апликацију ОНЛИОФФИЦЕ (у оквиру Оффице & тект или користећи претрагу), инсталирајте је и активирајте.

Након тога идите на Подешавања преко менија у горњем десном углу и требало би да пронађете ставку ОНЛИОФФИЦЕ у левом менију. Иди у то. Мораћете да региструјете адресе као што је наведено у наставку.

Подешавања апликације за интеграцијуПодешавање НектЦлоуд + ОНЛИОФФИЦЕ на истом серверу са Доцкер-ом

Прва адреса се користи за повезивање са неким јс и цсс датотекама директно из апликације која ради у претраживачу (ово је оно што нам треба да отворимо приступ сервису ОНЛИОФФИЦЕ преко нгинк-а). Тајни кључ се не користи јер више верујемо слоју Доцкер изолације него трајном кључу за потврду идентитета. Трећу адресу користи НектЦлоуд контејнер за директно повезивање са ОНЛИОФФИЦЕ АПИ-јем и користи подразумевано интерно име хоста из Доцкер-а. Па, последње поље се користи тако да ОНЛИОФФИЦЕ може да шаље захтеве назад у НектЦлоуд АПИ користећи спољну ИП адресу или интерну Доцкер адресу ако користите Доцкер мреже, али ово се не користи у нашем случају. Уверите се да подешавања заштитног зида дозвољавају ове врсте интеракција.

Након чувања, НектЦлоуд ће тестирати везу и, ако је све исправно, показаће вам подешавања која се односе на интеграцију – на пример, које врсте датотека се могу уређивати овом интеграцијом. Прилагодите како вам одговара.

Последњи корак: где пронаћи уредника

Ако се вратите у своје фасцикле за складиштење у облаку и кликнете на „+“ да бисте креирали нову датотеку, тада ћете имати нову опцију за креирање документа, табеле или презентације. Уз њихову помоћ, креираћете и одмах моћи да уређујете ове врсте датотека користећи ОНЛИОФФИЦЕ.

Мени за креирање датотекеПодешавање НектЦлоуд + ОНЛИОФФИЦЕ на истом серверу са Доцкер-ом

Додатак 1

Комплетан садржај доцкер-цомпосе.имл можете пронаћи овде: https://pastebin.com/z1Ti1fTZ

Извор: ввв.хабр.цом

Додај коментар