Насб кардани NextCloud + ONLYOFFICE дар як сервер бо Docker

Эй Ҳабр! Ман ба таваҷҷуҳи шумо тарҷумаи мақоларо пешкаш мекунам "Танзим кардани NextCloud ва ONLYOFFICE дар сервери ягона бо Docker".

Арзиши офисҳои онлайн ба монанди Google Docs ва нигоҳдории абр дар ҳаёти одамони ба технологӣ нигаронидашударо нодида гирифтан душвор аст. Технология чунон паҳн шудааст, ки ҳатто Microsoft, ки муддати тӯлонӣ дар бозори барномаҳои офисӣ бартарӣ дорад, ба наздикӣ ба таҳияи веб-барномаи Office 365 ва мутақоид кардани корбарон барои гузаштан ба модели обуна барои истифодаи хидматҳои худ тамаркуз кардааст. Мо онҳоеро даъват мекунем, ки ба раванди насб ва танзими нигаҳдории худ дар зери гурба таваҷҷӯҳ доранд.

Чанде пеш мо ба қарорҳои нигоҳдории абр ва сюитаҳои офиси кушодаи веб, ки ба осонӣ барои истифода дар як корхонаи хурд ҷойгир карда мешаванд, дида баромадем. Ҳавасмандии асосии онлайн нигоҳ доштани ҳама ҳуҷҷатҳо ин аст, ки ба ҳадди ақал нигоҳ доштани ҳуҷҷатгузорӣ ва татбиқи таҷрибаҳои хуби тиҷоратӣ сарфи назар аз ҳаҷми ками муомилот. Ҷониби дигари танга дар он аст, ки иҷораи сервери абрӣ барои пешниҳоди ин хидмат нисбат ба нигоҳдории он мустақиман дар бинои корхона камтар бехатар аст, зеро шумо ягон воситаи санҷиши дастрасии ҷисмонӣ ба сервер ё трафики худро надоред. Аз ин рӯ, рамзгузории охири ба охир ва нармафзори кушодаасос низ талаб карда мешавад.

Бо дарназардошти тамоми маълумоти мавҷуда дар бораи ҳалли сарчашмаҳои кушода, мо ду лоиҳаи фаъолро (бо ӯҳдадориҳо дар анбори 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 офаридаем.

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 & матн ё бо истифода аз ҷустуҷӯ), насб кунед ва фаъол созед.

Пас аз он ба Танзимотҳо тавассути меню дар кунҷи рости боло равед ва шумо бояд ҷузъи 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

Манбаъ: will.com

Илова Эзоҳ