NextCloud + ALLEEN OFFICE instellen op dezelfde server met Docker

Hé Habr! Ik presenteer onder uw aandacht de vertaling van het artikel "NextCloud en ALLEEN OFFICE instellen op één server met Docker".

Het is moeilijk om de waarde van online kantoorsuites zoals Google Docs en cloudopslag in het leven van technisch georiënteerde mensen te onderschatten. Technologie is zo wijdverspreid geworden dat zelfs Microsoft, dat lange tijd de markt voor kantoorapplicaties heeft gedomineerd, zich onlangs heeft geconcentreerd op de ontwikkeling van de Office 365-webapplicatie en het overtuigen van gebruikers om over te stappen op een abonnementsmodel voor het gebruik van hun eigen diensten. Wij nodigen degenen uit die geïnteresseerd zijn in het proces van het installeren en configureren van hun eigen opslag onder cat.

Enige tijd geleden hebben we gekeken naar cloudopslagoplossingen en open source webofficesuites die gemakkelijk kunnen worden ingezet voor gebruik in een micro-onderneming. De belangrijkste motivatie om alle documentatie online te houden is om het papierwerk tot een minimum te beperken en goede bedrijfspraktijken te implementeren, ondanks het lage transactievolume. De andere kant van de medaille is dat het huren van een cloudserver om deze dienst te verlenen minder veilig is dan het rechtstreeks op de locatie van de onderneming opslaan ervan, omdat u geen enkele mogelijkheid heeft om de fysieke toegang tot uw server of het verkeer te controleren. Daarom zijn ook end-to-end-encryptie en open source-software vereist.

Rekening houdend met alle beschikbare informatie over open source-oplossingen, hebben we twee actieve projecten gevonden (met commits in de git-repository van de afgelopen 12 maanden) ontwikkeld voor cloudopslag: NextCloud en OwnCloud, en de enige actieve ALLEENOFFICE-kantoorsuite. Beide cloudopslagtools hebben ongeveer dezelfde functionaliteit en de beslissing om voor NextCloud te kiezen was gebaseerd op het bestaan ​​van bewijs dat het kan worden geïntegreerd met ALLEEN OFFICE voor een comfortabele gebruikersinteractie met de software. Toen we echter begonnen met het inzetten van de services, werd het gebrek aan informatie over de integratie van bovengenoemde services duidelijk. We hebben 3 instructievideo's gevonden over hoe je kunt integreren:

Geen van de drie video's beantwoordde de vraag om de ALLEENOFFICE-documentservice op dezelfde fysieke server als NextCloud te installeren met een gedeelde nginx. In plaats daarvan gebruikten ze scheidingstechnieken, zoals het gebruik van afzonderlijke poorten voor de documentservice-API. Een andere voorgestelde optie was om een ​​aparte server voor Document Service in te zetten, waarbij de in Document Service ingebouwde nginx-instantie handmatig werd geconfigureerd om een ​​toegangssleutel (een vooraf bekende toegangssleutel die het recht op toegang tot de datawolk bevestigt) en TLS-certificaten te installeren. De bovenstaande benaderingen werden als niet veilig en niet effectief genoeg beschouwd, dus hebben we NextCloud, ALLEEN OFFICE en een gemeenschappelijke nginx geïntegreerd, die verzoeken op domeinnamen scheidt, met behulp van docker-compose. Hier vindt u stapsgewijze informatie over hoe u dit moet doen.

Stap 1: nginx-container

Dit is een zeer eenvoudige installatie, maar deze stap vereist het meeste werk om de reverse proxy-server te configureren. We hebben eerst de docker-compose-configuratie gemaakt voor de nginx:stable-image.

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

Hiermee wordt een container gemaakt met poorten 80 en 443 die open zijn voor het publiek, wordt de configuratie toegewezen aan nginx/nginx-vhost.conf en wordt een opslagplaats gedefinieerd voor certificaten die zijn gegenereerd als zelfondertekende certificaten of met behulp van de certbot van Let's encrypt in /nginx/certificates. Deze locatie moet mappen bevatten voor office.uwdomein.com en cloud.uwdomein.com, met de bestanden fullchain1.pem en privkey1.pem in elk voor respectievelijk de certificaatketen en de persoonlijke sleutel van de server. U kunt hier meer lezen over het genereren van een zelfondertekend certificaat. www.akadia.com/services/ssh_test_certificate.html (het hernoemen van .key en .crt naar .pem werkt zonder de bestandsstructuur voor nginx te converteren).

Daarna hebben we het vhost-bestand gedefinieerd. We definiëren eerst het gedrag van poort 80 als een eenvoudige omleiding naar https, omdat we willen geen http-verkeer toestaan

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

Vervolgens hebben we voor onze diensten twee virtuele servers op poort 443 aangemaakt:

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: documentservice

Nu moeten we de documentservicecontainer toevoegen aan onze docker-compose.yml. Er valt hier niets bijzonders te configureren.

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

Maar vergeet niet de nginx-container aan de documentservice te koppelen:

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

Stap 3: NextCloud

Voeg eerst nieuwe services toe:

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 een link toe naar nginx:

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

Nu is het tijd om de containers te laden.

docker-compose up -d  

Na een tijdje zal nginx u doorverwijzen naar de NextCloud-frontend, de standaardconfiguratiepagina. U moet de gebruikersnaam en het wachtwoord invoeren voor uw eerste administratieve gebruiker en de databasereferenties die u heeft opgegeven in docker-compose.yml. Zodra de installatie is voltooid, kunt u inloggen. In ons geval duurde het wachten bijna een minuut en moest de inlogpagina extra worden vernieuwd voordat we konden inloggen op de cloudservice.

Venster VolgendeCloud-service-instellingenNextCloud + ALLEEN OFFICE instellen op dezelfde server met Docker

Stap 4: NextCloud en OnlyOFFICE verbinden

Bij deze stap moet u de applicatie voor NextCloud installeren, die de ALLEENOFFICE-functionaliteit verbindt. Laten we beginnen met het applicatiecontrolepaneel in de rechterbovenhoek van het menu. Zoek de ALLEENOFFICE-app (onder Office & tekst of via de zoekfunctie), installeer en activeer deze.

Ga daarna naar Instellingen via het menu in de rechterbovenhoek en je zou het ALLEEN OFFICE-item in het linkermenu moeten vinden. Ga erop in. U dient de adressen te registreren zoals hieronder aangegeven.

Instellingen voor integratieapplicatiesNextCloud + ALLEEN OFFICE instellen op dezelfde server met Docker

Het eerste adres wordt gebruikt om rechtstreeks vanuit de applicatie die in de browser draait naar enkele js- en css-bestanden te linken (dit is wat we nodig hebben om via nginx toegang te krijgen tot de OnlyOFFICE-service). De geheime sleutel wordt niet gebruikt omdat we de Docker-isolatielaag meer vertrouwen dan de persistente authenticatiesleutel. Het derde adres wordt door de NextCloud-container gebruikt om rechtstreeks verbinding te maken met de OnlyOFFICE API, en gebruikt de standaard interne hostnaam van Docker. Welnu, het laatste veld wordt gebruikt zodat ALLEEN OFFICE verzoeken kan indienen bij de NextCloud API met behulp van een extern IP-adres of een intern Docker-adres als u Docker-netwerken gebruikt, maar dit wordt in ons geval niet gebruikt. Zorg ervoor dat uw firewall-instellingen dit soort interacties toestaan.

Na het opslaan zal NextCloud de verbinding testen en, als alles correct is, instellingen tonen die verband houden met de integratie, bijvoorbeeld welke soorten bestanden door deze integratie kunnen worden bewerkt. Pas aan zoals u wilt.

De laatste stap: waar u de editor kunt vinden

Als u teruggaat naar uw cloudopslagmappen en op de “+” klikt om een ​​nieuw bestand te maken, krijgt u een nieuwe optie om een ​​document, spreadsheet of presentatie te maken. Met hun hulp kunt u dit soort bestanden maken en onmiddellijk bewerken met ALLEENOFFICE.

Menu voor het maken van bestandenNextCloud + ALLEEN OFFICE instellen op dezelfde server met Docker

Aanvulling 1

De volledige inhoud van docker-compose.yml vindt u hier: https://pastebin.com/z1Ti1fTZ

Bron: www.habr.com

Voeg een reactie