Stel NextCloud + ONLYOFFICE op dieselfde bediener met Docker op

Haai Habr! Ek bied die vertaling van die artikel aan u aandag "Opstel van NextCloud en ONLYOFFICE op 'n enkele bediener met Docker".

Dit is moeilik om die waarde van aanlyn kantoorsuites soos Google Docs en wolkberging in die lewens van tegnologie-georiënteerde mense te onderskat. Tegnologie het so wydverspreid geraak dat selfs Microsoft, wat lank die kantoortoepassingsmark oorheers het, onlangs daarop gefokus het om die Office 365-webtoepassing te ontwikkel en gebruikers te oorreed om na 'n intekeningmodel oor te skakel vir die gebruik van hul eie dienste. Ons nooi diegene wat belangstel in die proses om hul eie berging onder kat te installeer en op te stel.

Ons het 'n tyd gelede gekyk na wolkbergingsoplossings en oopbron-webkantoorsuites wat maklik vir gebruik in 'n mikro-onderneming ontplooi kan word. Die hoofmotivering om alle dokumentasie aanlyn te hou, is om papierwerk tot die minimum te beperk en goeie sakepraktyke te implementeer ten spyte van die lae volume transaksies. Die ander kant van die munt is dat die huur van 'n wolkbediener om hierdie diens te verskaf minder veilig is as om dit direk op die perseel van die onderneming te stoor, aangesien jy geen manier het om fisiese toegang tot jou bediener of verkeer te oudit nie. Daarom word end-tot-end-enkripsie en oopbronsagteware ook vereis.

Met inagneming van alle beskikbare inligting oor oopbron-oplossings, het ons twee aktiewe projekte gevind (met commits in die git-bewaarplek vir die afgelope 12 maande) wat ontwikkel is vir wolkberging: NextCloud en OwnCloud, en die enigste aktiewe ONLYOFFICE-kantoorpakket. Albei wolkbergingsnutsgoed het min of meer dieselfde funksionaliteit, en die besluit om NextCloud te kies was gebaseer op die bestaan ​​van bewyse dat dit met ONLYOFFICE geïntegreer kan word vir 'n gemaklike gebruikersinteraksie met die sagteware. Toe ons egter die dienste begin ontplooi het, het die gebrek aan inligting oor die integrasie van bogenoemde dienste duidelik geword. Ons het 3 tutoriaalvideo's gevind oor hoe om te integreer:

Nie een van die drie video's het die vraag beantwoord om die ONLYOFFICE-dokumentdiens op dieselfde fisiese bediener as NextCloud met 'n gedeelde nginx te installeer nie. In plaas daarvan het hulle skeidingstegnieke gebruik soos die gebruik van aparte poorte vir die dokumentdiens-api. Nog 'n voorstel was om 'n aparte bediener vir Document Service te ontplooi, deur die nginx-instansie wat in Document Service ingebou is, handmatig te konfigureer om 'n toegangsleutel ('n voorafbekende toegangsleutel wat die reg om toegang tot die datawolk te verkry) en TLS-sertifikate te installeer. Die bogenoemde benaderings is as onveilig en nie doeltreffend genoeg beskou nie, daarom het ons NextCloud, ONLYOFFICE en 'n algemene nginx geïntegreer wat versoeke deur domeinname skei met behulp van docker-compose. Hier is stap vir stap inligting oor hoe om dit te doen.

Stap 1: nginx-houer

Dit is 'n baie eenvoudige opstelling, maar hierdie stap verg die meeste werk om die omgekeerde instaanbediener op te stel. Ons het eers die docker-compose-konfigurasie vir die nginx:stable-beeld geskep.

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

Dit skep 'n houer met poorte 80 en 443 wat oop is vir die publiek, karteer die konfigurasie na nginx/nginx-vhost.conf , en definieer 'n winkel vir sertifikate wat as selfondertekende sertifikate gegenereer word of met behulp van Kom ons enkripteer se certbot in /nginx/certificates. Hierdie ligging moet vouers vir office.yourdomain.com en cloud.yourdomain.com bevat, met fullchain1.pem- en privkey1.pem-lêers in elk vir onderskeidelik die sertifikaatketting en bediener-privaatsleutel. Jy kan meer lees oor hoe om 'n self-ondertekende sertifikaat hier te genereer. www.akadia.com/services/ssh_test_certificate.html (om .key en .crt na .pem te hernoem werk sonder om die lêerstruktuur vir nginx om te skakel).

Daarna het ons die vhost-lêer gedefinieer. Ons definieer eers die gedrag van poort 80 as 'n eenvoudige herleiding na https, want ons wil geen http-verkeer toelaat nie

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

Ons het toe twee virtuele bedieners op poort 443 vir ons dienste geskep:

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

Stap 2: dokumentdiens

Nou moet ons die dokumentdienshouer by ons docker-compose.yml voeg. Daar is niks spesiaals om hier in te stel nie.

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

Maar moenie vergeet om die nginx-houer aan die dokumentdiens te koppel nie:

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

Stap 3: NextCloud

Voeg eers nuwe dienste by:

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

en voeg 'n skakel by nginx:

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

Nou is dit tyd om die houers te laai.

docker-compose up -d  

Na 'n rukkie sal nginx jou na die NextCloud-voorkant begin herlei, wat die verstekkonfigurasiebladsy is. Jy sal die gebruikersnaam en wagwoord vir jou eerste admin gebruiker moet invoer en die databasis geloofsbriewe wat jy verskaf het in docker-compose.yml Sodra die opstelling voltooi is, sal jy in staat wees om aan te meld. In ons geval het die wag amper 'n minuut geneem en 'n bykomende verversing van die aanmeldbladsy vereis voordat ons by die wolkdiens kon aanmeld.

NextCloud-diensinstellingsvensterStel NextCloud + ONLYOFFICE op dieselfde bediener met Docker op

Stap 4: Koppel NextCloud en ONLYOFFICE

By hierdie stap sal jy die toepassing vir NextCloud moet installeer, wat die ONLYOFFICE-funksie verbind. Kom ons begin met die toepassingsbeheerpaneel in die regter boonste hoek van die spyskaart. Vind die ONLYOFFICE-toepassing (onder Kantoor en teks of gebruik soek), installeer en aktiveer dit.

Gaan daarna na Instellings via die spyskaart in die regter boonste hoek en jy behoort die ONLYOFFICE-item in die linkerkieslys te vind. Gaan daarin. Jy sal die adresse moet registreer soos hieronder aangedui.

Integrasie toepassing instellingsStel NextCloud + ONLYOFFICE op dieselfde bediener met Docker op

Die eerste adres word gebruik om direk na sommige js- en css-lêers te skakel vanaf die toepassing wat in die blaaier loop (dit is wat ons nodig het om toegang tot die ONLYOFFICE-diens deur nginx oop te maak). Die geheime sleutel word nie gebruik nie, want ons vertrou die Docker-isolasielaag meer as die aanhoudende verifikasiesleutel. Die derde adres word deur die NextCloud-houer gebruik om direk aan die ONLYOFFICE API te koppel, en dit gebruik die standaard interne gasheernaam van Docker. Wel, die laaste veld word gebruik sodat ONLYOFFICE versoeke terug na die NextCloud API kan rig deur 'n eksterne IP-adres of 'n interne Docker-adres te gebruik as jy Docker-netwerke gebruik, maar dit word nie in ons geval gebruik nie. Maak seker dat jou firewall-instellings hierdie soort interaksies toelaat.

Nadat dit gestoor is, sal NextCloud die verbinding toets en, as alles korrek is, vir jou instellings wys wat met die integrasie verband hou - byvoorbeeld watter tipe lêers deur hierdie integrasie geredigeer kan word. Pasmaak soos jy goeddink.

Die laaste stap: waar om die redakteur te vind

As jy teruggaan na jou wolkberging-vouers en op die "+" klik om 'n nuwe lêer te skep, sal jy 'n nuwe opsie hê om 'n dokument, sigblad of aanbieding te skep. Met hul hulp sal jy hierdie tipe lêers met ONLYOFFICE skep en dadelik kan redigeer.

LêerskeppingskieslysStel NextCloud + ONLYOFFICE op dieselfde bediener met Docker op

Bylaag 1

Die volledige inhoud van docker-compose.yml kan hier gevind word: https://pastebin.com/z1Ti1fTZ

Bron: will.com

Voeg 'n opmerking