Docker менен бир серверде NextCloud + ONLYOFFICE орнотуу

Эй Хабр! Сиздердин назарыңыздарга макаланын котормосун сунуштайм "NextCloud жана ONLYOFFICEти Docker менен бир серверде орнотуу".

Google Docs жана булуттагы сактагыч сыяктуу онлайн офис топтомдорунун технологияга багытталган адамдардын жашоосундагы баасын баалабай коюу кыйын. Технология ушунчалык кеңири жайылып кеткендиктен, офис тиркемелери рыногунда көптөн бери үстөмдүк кылып келген Microsoft жакында эле Office 365 веб тиркемесин иштеп чыгууга жана колдонуучуларды өз кызматтарын колдонуу үчүн жазылуу моделине өтүүгө көндүрүүгө басым жасады. Биз кошка астындагы өз сактагычын орнотуу жана конфигурациялоо процессине кызыккандарды чакырабыз.

Бир нече убакыт мурун биз микро-ишканада колдонуу үчүн оңой жайгаштырыла турган булуттагы сактоо чечимдерин жана ачык булактуу веб-офис топтомдорун карап чыктык. Бардык документацияларды онлайн режиминде кармоонун негизги мотивациясы – иш кагаздарын минималдуу деңгээлде кармоо жана транзакциялардын аз көлөмүнө карабастан бизнестин жакшы тажрыйбаларын ишке ашыруу. Монетанын экинчи жагы - бул кызматты көрсөтүү үчүн булут серверин ижарага алуу, аны түздөн-түз ишкананын аймагында сактоого караганда коопсузураак, анткени сиздин сервериңизге же трафикке физикалык кирүү мүмкүнчүлүгүн текшерүү үчүн эч кандай каражатыңыз жок. Ошондуктан, акырына чейин шифрлөө жана ачык булактуу программалык камсыздоо да талап кылынат.

Ачык булактуу чечимдер жөнүндө бардык жеткиликтүү маалыматты эске алып, биз булуттагы сактоо үчүн иштелип чыккан эки активдүү долбоорду таптык (акыркы 12 ай ичинде git репозиторийинде милдеттенмелери бар): NextCloud жана OwnCloud жана жалгыз активдүү ONLYOFFICE кеңсе пакети. Булутту сактоочу куралдардын экөө тең болжолдуу түрдө бирдей функцияга ээ жана NextCloud тандоо чечими программалык камсыздоо менен ыңгайлуу колдонуучу өз ара аракеттенүүсү үчүн ONLYOFFICE менен интеграцияланышы мүмкүн экендигинин далилдерине негизделген. Бирок, биз кызматтарды жайылта баштаганда, жогоруда аталган кызматтарды интеграциялоо боюнча маалыматтын жоктугу ачыкка чыкты. Кантип интеграциялоо керектиги боюнча 3 видеону таптык:

Үч видеонун бири дагы ONLYOFFICE документ кызматын бирдиктүү nginx менен NextCloud сыяктуу физикалык серверге орнотуу суроосуна жооп берген жок. Анын ордуна, алар документ кызматынын api үчүн өзүнчө портторду колдонуу сыяктуу бөлүү ыкмаларын колдонушкан. Дагы бир сунуш Документ Кызматы үчүн өзүнчө серверди жайгаштыруу, Документ Кызматына орнотулган nginx инстанциясын кол менен конфигурациялоо болгон, кирүү ачкычын (маалымат булутуна кирүү укугун тастыктаган алдын ала белгилүү кирүү ачкычы) жана TLS сертификаттарын орнотуу. Жогорудагы ыкмалар коопсуз жана жетиштүү эффективдүү эмес деп эсептелгендиктен, биз NextCloud, ONLYOFFICE жана докер-композит аркылуу суроо-талаптарды домендик аталыштар боюнча бөлүүчү жалпы nginxти бириктирдик. Бул жерде муну кантип кылуу керектиги боюнча кадам-кадам маалымат.

1-кадам: nginx контейнер

Бул абдан жөнөкөй орнотуу, бирок бул кадам тескери прокси серверди конфигурациялоо үчүн эң көп ишти талап кылат. Биз алгач nginx:stable сүрөтү үчүн docker-compose конфигурациясын түздүк.

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 менен картага түшүрөт жана өз алдынча кол коюлган сертификаттар катары түзүлгөн сертификаттар үчүн дүкөндү аныктайт же /nginx/certificates ичинде Let's encrypt'тин certbot'ун колдонот. Бул жайгашкан жер 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 кызматын орнотуулар терезесиDocker менен бир серверде NextCloud + ONLYOFFICE орнотуу

4-кадам: NextCloud жана ONLYOFFICE туташтыруу

Бул кадамда ONLYOFFICE функциясын туташтырган NextCloud үчүн тиркемени орнотуу керек болот. Келгиле, менюнун жогорку оң бурчундагы колдонмонун башкаруу панелинен баштайлы. ONLYOFFICE колдонмосун табыңыз (Оффис жана тексттин астында же издөө аркылуу), аны орнотуп, жандырыңыз.

Андан кийин жогорку оң бурчтагы меню аркылуу Орнотууларга өтүңүз жана сол менюдан ONLYOFFICE пунктун табышыңыз керек. Ага кириңиз. Сиз даректерди төмөндө көрсөтүлгөндөй катташыңыз керек.

Интеграциялоо колдонмо орнотууларыDocker менен бир серверде NextCloud + ONLYOFFICE орнотуу

Биринчи дарек кээ бир js жана css файлдарына түздөн-түз браузерде иштеген тиркемеден шилтеме берүү үчүн колдонулат (бул биз nginx аркылуу ONLYOFFICE кызматына кирүү мүмкүнчүлүгүн ачуубуз керек). Жашыруун ачкыч колдонулбайт, анткени биз туруктуу аутентификация ачкычына караганда Docker изоляция катмарына көбүрөөк ишенебиз. Үчүнчү дарек NextCloud контейнери тарабынан ONLYOFFICE API'ге түз туташуу үчүн колдонулат жана ал Dockerден демейки ички хост атын колдонот. Ооба, акыркы талаа ONLYOFFICE тышкы IP дареги же Docker тармактарын колдонуп жатсаңыз, ички Докер дареги аркылуу NextCloud API'ге кайра суроо-талаптарды жасай алышы үчүн колдонулат, бирок бул биздин учурда колдонулбайт. Брандмауэриңиздин жөндөөлөрү ушундай өз ара аракеттенүүгө жол бергенин текшериңиз.

Сактоодон кийин NextCloud туташууну сынайт жана баары туура болсо, интеграцияга байланыштуу орнотууларды көрсөтөт - мисалы, бул интеграция аркылуу файлдардын кандай түрлөрүн түзөтсө болот. Өзүңүз каалагандай ыңгайлаштырыңыз.

Акыркы кадам: редакторду кайдан тапса болот

Эгер сиз булуттагы сактагыч папкаларыңызга кайтып келип, жаңы файлды түзүү үчүн "+" баскычын чыкылдатсаңыз, анда сизде документ, электрондук жадыбал же презентация түзүү үчүн жаңы мүмкүнчүлүк пайда болот. Алардын жардамы менен сиз ONLYOFFICE аркылуу файлдардын бул түрлөрүн түзүп, дароо түзөтө аласыз.

Файл түзүү менюсуDocker менен бир серверде NextCloud + ONLYOFFICE орнотуу

Кошумча 1

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

Source: www.habr.com

Комментарий кошуу