Настройване на NextCloud + ONLYOFFICE на същия сървър с Docker

Хей Хабр! Представям на вашето внимание превода на статията „Настройване на NextCloud и ONLYOFFICE на един сървър с Docker“.

Трудно е да се подценява стойността на онлайн офис пакетите като Google Docs и облачното хранилище в живота на технологично ориентираните хора. Технологията стана толкова широко разпространена, че дори Microsoft, която отдавна доминира пазара на офис приложения, наскоро се фокусира върху разработването на уеб приложението 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 на Let's encrypt в /nginx/certificates. Това местоположение трябва да съдържа папки за 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 След като настройката приключи, ще можете да влезете. В нашия случай чакането отне почти минута и изискваше допълнително опресняване на страницата за вход, преди да можем да влезем в облачната услуга.

Прозорец за настройки на услугата NextCloudНастройване на NextCloud + ONLYOFFICE на същия сървър с Docker

Стъпка 4: Свързване на NextCloud и ONLYOFFICE

На тази стъпка ще трябва да инсталирате приложението за NextCloud, което свързва функционалността на ONLYOFFICE. Нека започнем с контролния панел на приложението в горния десен ъгъл на менюто. Намерете приложението ONLYOFFICE (под Office & text или чрез търсене), инсталирайте го и го активирайте.

След това се насочете към Настройки чрез менюто в горния десен ъгъл и трябва да намерите елемента ONLYOFFICE в лявото меню. Влез в него. Ще трябва да регистрирате адресите, както е посочено по-долу.

Настройки на приложението за интеграцияНастройване на NextCloud + ONLYOFFICE на същия сървър с Docker

Първият адрес се използва за свързване към някои js и css файлове директно от приложението, работещо в браузъра (това е, което ни трябва, за да отворим достъп до услугата ONLYOFFICE чрез nginx). Тайният ключ не се използва, защото вярваме повече на изолационния слой на Docker, отколкото на постоянния ключ за удостоверяване. Третият адрес се използва от контейнера NextCloud за директно свързване към API на ONLYOFFICE и използва вътрешното име на хост по подразбиране от Docker. Е, последното поле се използва, за да може ONLYOFFICE да прави заявки обратно към API на NextCloud, използвайки външен IP адрес или вътрешен адрес на Docker, ако използвате Docker мрежи, но това не се използва в нашия случай. Уверете се, че настройките на вашата защитна стена позволяват тези видове взаимодействия.

След като запази, NextCloud ще тества връзката и ако всичко е правилно, ще ви покаже настройки, свързани с интеграцията - например какви типове файлове могат да се редактират от тази интеграция. Персонализирайте както сметнете за добре.

Последната стъпка: къде да намерите редактора

Ако се върнете към папките за съхранение в облак и щракнете върху „+“, за да създадете нов файл, тогава ще имате нова опция за създаване на документ, електронна таблица или презентация. С тяхна помощ ще създавате и веднага ще можете да редактирате тези типове файлове с помощта на ONLYOFFICE.

Меню за създаване на файлНастройване на NextCloud + ONLYOFFICE на същия сървър с Docker

Допълнение 1г

Пълното съдържание на docker-compose.yml може да бъде намерено тук: https://pastebin.com/z1Ti1fTZ

Източник: www.habr.com

Добавяне на нов коментар