Поставување NextCloud + ONLYOFFICE на истиот сервер со Docker

Еј Хабр! Ви го презентирам преводот на статијата „Поставување NextCloud и ONLYOFFICE на еден сервер со Docker“.

Тешко е да се потцени вредноста на онлајн канцелариските пакети како Google Docs и складирањето облак во животот на луѓето ориентирани кон технологијата. Технологијата стана толку широко распространета што дури и Мајкрософт, кој долго време доминираше на пазарот на канцелариски апликации, неодамна се фокусираше на развивање на веб апликацијата Office 365 и убедување на корисниците да се префрлат на модел на претплата за користење на сопствените услуги. Ги покануваме оние кои се заинтересирани за процесот на инсталирање и конфигурирање на сопственото складирање под мачка.

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

Земајќи ги предвид сите достапни информации за решенијата со отворен код, најдовме два активни проекти (со заложби во складиштето на git во изминатите 12 месеци) развиени за складирање во облак: NextCloud и OwnCloud и единствениот активен канцелариски пакет ONLYOFFICE. Двете алатки за складирање облак имаат приближно иста функционалност, а одлуката да се избере NextCloud беше заснована на постоење на докази дека може да се интегрира со ONLYOFFICE за удобна корисничка интеракција со софтверот. Меѓутоа, кога почнавме да ги распоредуваме услугите, недостигот на информации за интегрирање на горенаведените услуги стана очигледен. Најдовме 3 туторијални видеа за тоа како да се интегрираме:

Ниту едно од трите видеа не одговори на прашањето за инсталирање на услугата за документи ONLYOFFICE на истиот физички сервер како NextCloud со споделен nginx. Наместо тоа, тие користеа техники за раздвојување како што е користење на посебни порти за api услугата за документи. Друг предлог беше да се распореди посебен сервер за Document Service, рачно конфигурирање на примерокот nginx вграден во Document Service за да се инсталира клуч за пристап (препознатлив клуч за пристап кој го потврдува правото за пристап до облакот за податоци) и TLS сертификати. Горенаведените пристапи се сметаа за небезбедни и недоволно ефикасни, па ги интегриравме NextCloud, ONLYOFFICE и заеднички nginx што ги одвојува барањата по имиња на домени користејќи docker-compose. Еве чекор по чекор информации за тоа како да го направите тоа.

Чекор 1: контејнер nginx

Ова е многу едноставно поставување, но овој чекор бара најмногу работа за да го конфигурирате обратниот прокси-сервер. Прво ја создадовме конфигурацијата docker-compose за сликата 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

Ова создава контејнер со портите 80 и 443 отворени за јавноста, ја мапира конфигурацијата на nginx/nginx-vhost.conf и дефинира складиште за сертификати генерирани како самопотпишани сертификати или со користење на Ајде да го шифрираме certbot во /nginx/сертификати. Оваа локација треба да содржи папки за 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

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: услуга за документи

Сега треба да го додадеме контејнерот за услуга на документи во нашиот docker-compose.yml. Нема ништо посебно за конфигурирање овде.

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

Но, не заборавајте да го поврзете контејнерот 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 Откако ќе заврши поставувањето, ќе можете да се најавите. Во нашиот случај, чекањето траеше речиси една минута и бараше дополнително освежување на страницата за најавување пред да можеме да се најавиме на услугата облак.

Следен прозорец за поставки за услугата CloudПоставување NextCloud + ONLYOFFICE на истиот сервер со Docker

Чекор 4: Поврзување NextCloud и ONLYOFFICE

На овој чекор, ќе треба да ја инсталирате апликацијата за NextCloud, која ја поврзува функционалноста ONLYOFFICE. Да почнеме со контролната табла на апликацијата во горниот десен агол на менито. Најдете ја апликацијата ONLYOFFICE (под Office и текст или користејќи пребарување), инсталирајте ја и активирајте ја.

После тоа, одете во Поставки преку менито во горниот десен агол и треба да ја пронајдете ставката ONLYOFFICE во левото мени. Влезете во него. Ќе треба да ги регистрирате адресите како што е наведено подолу.

Поставки за апликација за интеграцијаПоставување NextCloud + ONLYOFFICE на истиот сервер со Docker

Првата адреса се користи за поврзување со некои js и css датотеки директно од апликацијата што работи во прелистувачот (ова е она што ни треба за да отвориме пристап до услугата ONLYOFFICE преку nginx). Тајниот клуч не се користи затоа што повеќе му веруваме на слојот за изолација на Docker отколку на постојаниот клуч за автентикација. Третата адреса се користи од контејнерот NextCloud за директно поврзување со ONLYOFFICE API и го користи стандардното внатрешно име на домаќин од Docker. Па, последното поле се користи за ONLYOFFICE да може да испраќа барања назад до NextCloud API користејќи надворешна IP адреса или внатрешна Docker адреса ако користите Docker мрежи, но ова не се користи во нашиот случај. Проверете дали поставките на вашиот заштитен ѕид дозволуваат вакви интеракции.

По зачувувањето, NextCloud ќе ја тестира врската и, ако сè е точно, ќе ви ги покаже поставките поврзани со интеграцијата - на пример, какви типови датотеки може да се уредуваат со оваа интеграција. Прилагодете како што ви одговара.

Последниот чекор: каде да го најдете уредникот

Ако се вратите во папките за складирање облак и кликнете на „+“ за да креирате нова датотека, тогаш ќе имате нова опција за креирање документ, табела или презентација. Со нивна помош, ќе креирате и веднаш ќе можете да ги уредувате овие типови датотеки користејќи ONLYOFFICE.

Мени за создавање датотекиПоставување NextCloud + ONLYOFFICE на истиот сервер со Docker

Додаток 1 година

Целосната содржина на docker-compose.yml може да се најде овде: https://pastebin.com/z1Ti1fTZ

Извор: www.habr.com

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