Pagse-set up ng NextCloud + ONLYOFFICE sa parehong server sa Docker

Hoy Habr! Ipinakita ko sa iyong pansin ang pagsasalin ng artikulo "Pagse-set up ng NextCloud at ONLYOFFICE sa isang server na may Docker".

Mahirap maliitin ang halaga ng mga online office suite tulad ng Google Docs at cloud storage sa buhay ng mga taong nakatuon sa teknolohiya. Ang teknolohiya ay naging napakalawak na kahit na ang Microsoft, na matagal nang nangingibabaw sa merkado ng mga aplikasyon ng opisina, ay kamakailang nakatutok sa pagbuo ng Office 365 web application at paghikayat sa mga user na lumipat sa isang modelo ng subscription para sa paggamit ng kanilang sariling mga serbisyo. Inaanyayahan namin ang mga interesado sa proseso ng pag-install at pag-configure ng kanilang sariling imbakan sa ilalim ng pusa.

Noong nakaraan, tumingin kami sa mga solusyon sa cloud storage at mga open source na web office suite na madaling ma-deploy para magamit sa isang micro-enterprise. Ang pangunahing motibasyon sa pagpapanatiling online ng lahat ng dokumentasyon ay ang panatilihing kaunti ang mga papeles at ipatupad ang magagandang kasanayan sa negosyo sa kabila ng mababang dami ng mga transaksyon. Ang kabilang panig ng barya ay ang pagrenta ng cloud server upang maibigay ang serbisyong ito ay hindi gaanong secure kaysa sa pag-imbak nito nang direkta sa lugar ng enterprise, dahil wala kang anumang paraan ng pag-audit ng pisikal na pag-access sa iyong server o trapiko. Samakatuwid, kinakailangan din ang end-to-end na pag-encrypt at open source na software.

Isinasaalang-alang ang lahat ng magagamit na impormasyon tungkol sa mga open source na solusyon, nakakita kami ng dalawang aktibong proyekto (na may mga commit sa git repository sa nakalipas na 12 buwan) na binuo para sa cloud storage: NextCloud at OwnCloud, at ang tanging aktibong ONLYOFFICE office suite. Ang parehong mga tool sa cloud storage ay may halos parehong functionality, at ang desisyon na piliin ang NextCloud ay batay sa pagkakaroon ng ebidensya na maaari itong isama sa ONLYOFFICE para sa isang komportableng pakikipag-ugnayan ng user sa software. Gayunpaman, noong nagsimula kaming mag-deploy ng mga serbisyo, naging maliwanag ang kakulangan ng impormasyon sa pagsasama ng mga serbisyo sa itaas. Nakakita kami ng 3 tutorial na video kung paano isama:

Wala sa tatlong video ang sumagot sa tanong ng pag-install ng ONLYOFFICE na serbisyo ng dokumento sa parehong pisikal na server bilang NextCloud na may nakabahaging nginx. Sa halip, gumamit sila ng mga diskarte sa paghihiwalay tulad ng paggamit ng magkahiwalay na port para sa document service api. Ang isa pang mungkahi ay ang pag-deploy ng isang hiwalay na server para sa Serbisyo ng Dokumento, na manu-manong i-configure ang instance ng nginx na binuo sa Serbisyo ng Dokumento upang mag-install ng access key (isang pre-known access key na nagkukumpirma sa karapatang ma-access ang data cloud) at mga TLS certificate. Ang mga diskarte sa itaas ay itinuturing na hindi ligtas at hindi sapat na epektibo, kaya isinama namin ang NextCloud, ONLYOFFICE at isang karaniwang nginx na naghihiwalay sa mga kahilingan sa pamamagitan ng mga domain name gamit ang docker-compose. Narito ang hakbang-hakbang na impormasyon kung paano ito gagawin.

Hakbang 1: nginx container

Ito ay isang napakasimpleng setup, ngunit ang hakbang na ito ay nangangailangan ng pinakamaraming trabaho upang i-configure ang reverse proxy server. Una naming ginawa ang docker-compose configuration para sa nginx:stable na imahe.

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

Gumagawa ito ng container na may mga port 80 at 443 na bukas sa publiko, mina-map ang configuration sa nginx/nginx-vhost.conf , at tumutukoy sa isang tindahan para sa mga certificate na nabuo bilang mga self-signed na certificate o gamit ang Let's encrypt's certbot sa /nginx/certificates. Ang lokasyong ito ay dapat maglaman ng mga folder para sa office.yourdomain.com at cloud.yourdomain.com, na may mga fullchain1.pem at privkey1.pem file sa bawat isa para sa chain ng certificate at pribadong key ng server, ayon sa pagkakabanggit. Maaari kang magbasa nang higit pa tungkol sa kung paano bumuo ng isang self-signed certificate dito. www.akadia.com/services/ssh_test_certificate.html (Ang pagpapangalan ng .key at .crt sa .pem ay gumagana nang hindi kino-convert ang istraktura ng file para sa nginx).

Pagkatapos nito, tinukoy namin ang vhost file. Una naming tinukoy ang pag-uugali ng port 80 bilang isang simpleng pag-redirect sa https, dahil hindi namin gustong payagan ang anumang http na trapiko

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

Pagkatapos ay lumikha kami ng dalawang virtual na server sa port 443 para sa aming mga serbisyo:

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

Hakbang 2: serbisyo ng dokumento

Ngayon ay kailangan naming idagdag ang lalagyan ng serbisyo ng dokumento sa aming docker-compose.yml. Walang espesyal na i-configure dito.

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

Ngunit huwag kalimutang i-link ang lalagyan ng nginx sa serbisyo ng dokumento:

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

Hakbang 3: Susunod na Cloud

Una, magdagdag ng mga bagong serbisyo:

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

at magdagdag ng link sa nginx:

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

Ngayon ay oras na upang i-load ang mga lalagyan.

docker-compose up -d  

Pagkaraan ng ilang sandali, magsisimulang i-redirect ka ng nginx sa front end ng NextCloud, na siyang default na pahina ng pagsasaayos. Kakailanganin mong ilagay ang username at password para sa iyong unang admin user at ang mga kredensyal ng database na ibinigay mo sa docker-compose.yml Kapag kumpleto na ang setup, makakapag-login ka na. Sa aming kaso, ang paghihintay ay tumagal ng halos isang minuto at nangangailangan ng karagdagang pag-refresh ng pahina sa pag-login bago kami makapag-log in sa serbisyo ng cloud.

window ng mga setting ng serbisyo ng NextCloudPagse-set up ng NextCloud + ONLYOFFICE sa parehong server sa Docker

Hakbang 4: Pagkonekta sa NextCloud at ONLYOFFICE

Sa hakbang na ito, kakailanganin mong i-install ang application para sa NextCloud, na nagkokonekta sa ONLYOFFICE functionality. Magsimula tayo sa control panel ng application sa kanang sulok sa itaas ng menu. Hanapin ang ONLYOFFICE app (sa ilalim ng Office & text o gamit ang paghahanap), i-install at i-activate ito.

Pagkatapos ay pumunta sa Mga Setting sa pamamagitan ng menu sa kanang sulok sa itaas at dapat mong mahanap ang item na ONLYOFFICE sa kaliwang menu. Puntahan mo ito. Kakailanganin mong irehistro ang mga address tulad ng ipinahiwatig sa ibaba.

Mga setting ng application ng pagsasamaPagse-set up ng NextCloud + ONLYOFFICE sa parehong server sa Docker

Ang unang address ay ginagamit upang mag-link sa ilang js at css file nang direkta mula sa application na tumatakbo sa browser (ito ang kailangan namin upang buksan ang access sa ONLYOFFICE na serbisyo sa pamamagitan ng nginx). Hindi ginagamit ang sikretong key dahil mas pinagkakatiwalaan namin ang Docker isolation layer kaysa sa persistent authentication key. Ang pangatlong address ay ginagamit ng NextCloud container upang direktang kumonekta sa ONLYOFFICE API, at ginagamit nito ang default na internal hostname mula sa Docker. Well, ang huling field ay ginagamit upang ang ONLYOFFICE ay maaaring gumawa ng mga kahilingan pabalik sa NextCloud API gamit ang isang panlabas na IP address o isang panloob na Docker address kung gumagamit ka ng mga network ng Docker, ngunit hindi ito ginagamit sa aming kaso. Tiyaking pinapayagan ng iyong mga setting ng firewall ang mga ganitong uri ng pakikipag-ugnayan.

Pagkatapos i-save, susuriin ng NextCloud ang koneksyon at, kung tama ang lahat, ipapakita sa iyo ang mga setting na nauugnay sa pagsasama - halimbawa, kung anong mga uri ng mga file ang maaaring i-edit ng pagsasama na ito. I-customize ayon sa nakikita mong akma.

Ang huling hakbang: kung saan mahahanap ang editor

Kung babalik ka sa iyong mga folder ng cloud storage at mag-click sa β€œ+” para gumawa ng bagong file, magkakaroon ka ng bagong opsyon para gumawa ng dokumento, spreadsheet o presentation. Sa tulong nila, gagawa ka at agad mong mai-edit ang mga ganitong uri ng file gamit ang ONLYOFFICE.

Menu ng paglikha ng filePagse-set up ng NextCloud + ONLYOFFICE sa parehong server sa Docker

Supplement 1

Ang buong nilalaman ng docker-compose.yml ay matatagpuan dito: https://pastebin.com/z1Ti1fTZ

Pinagmulan: www.habr.com

Magdagdag ng komento