Sette opp NextCloud + ONLYOFFICE på samme server med Docker

Hei Habr! Jeg presenterer for din oppmerksomhet oversettelsen av artikkelen "Setter opp NextCloud og ONLYOFFICE på en enkelt server med Docker".

Det er vanskelig å undervurdere verdien av nettbaserte kontorpakker som Google Docs og skylagring i livene til teknologiorienterte mennesker. Teknologien har blitt så utbredt at selv Microsoft, som lenge har dominert kontorapplikasjonsmarkedet, nylig har fokusert på å utvikle Office 365-webapplikasjonen og overtale brukere til å bytte til en abonnementsmodell for å bruke sine egne tjenester. Vi inviterer de som er interessert i prosessen med å installere og konfigurere sin egen lagring under cat.

For en tid siden så vi på skylagringsløsninger og open source webkontorpakker som enkelt kunne distribueres for bruk i en mikrobedrift. Hovedmotivasjonen for å holde all dokumentasjon online er å holde papirarbeidet på et minimum og implementere god forretningspraksis til tross for det lave volumet av transaksjoner. Den andre siden av mynten er at det er mindre sikkert å leie en skyserver for å tilby denne tjenesten enn å lagre den direkte i bedriftens lokaler, siden du ikke har noen mulighet til å revidere fysisk tilgang til serveren eller trafikken din. Derfor kreves det også ende-til-ende-kryptering og åpen kildekode.

Tatt i betraktning all tilgjengelig informasjon om åpen kildekode-løsninger, fant vi to aktive prosjekter (med forpliktelser i git-depotet de siste 12 månedene) utviklet for skylagring: NextCloud og OwnCloud, og den eneste aktive ONLYOFFICE-kontorpakken. Begge skylagringsverktøyene har omtrent samme funksjonalitet, og beslutningen om å velge NextCloud var basert på eksistensen av bevis på at det kan integreres med ONLYOFFICE for en komfortabel brukerinteraksjon med programvaren. Men da vi begynte å distribuere tjenestene, ble mangelen på informasjon om integrering av tjenestene ovenfor tydelig. Vi fant 3 opplæringsvideoer om hvordan du integrerer:

Ingen av de tre videoene svarte på spørsmålet om å installere ONLYOFFICE-dokumenttjenesten på samme fysiske server som NextCloud med en delt nginx. I stedet brukte de separasjonsteknikker som å bruke separate porter for dokumenttjeneste-api. Et annet foreslått alternativ var å distribuere en egen server for Document Service, manuelt konfigurere nginx-forekomsten innebygd i Document Service for å installere en tilgangsnøkkel (en forhåndskjent tilgangsnøkkel som bekrefter retten til å få tilgang til dataskyen) og TLS-sertifikater. Tilnærmingene ovenfor ble ansett som usikre og ikke effektive nok, så vi integrerte NextCloud, ONLYOFFICE og en felles nginx, som skiller forespørsler etter domenenavn, ved hjelp av docker-compose. Her er trinnvis informasjon om hvordan du gjør det.

Trinn 1: nginx-beholder

Dette er et veldig enkelt oppsett, men dette trinnet krever mest arbeid for å konfigurere den omvendte proxy-serveren. Vi opprettet først docker-compose-konfigurasjonen for nginx:stable-bildet.

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

Dette oppretter en beholder med portene 80 og 443 åpne for publikum, kartlegger konfigurasjonen til nginx/nginx-vhost.conf , og definerer et lager for sertifikater generert som selvsignerte sertifikater eller ved å bruke Let's encrypt sin certbot i /nginx/certificates. Denne plasseringen skal inneholde mapper for office.yourdomain.com og cloud.yourdomain.com, med fullchain1.pem- og privkey1.pem-filer i hver for henholdsvis sertifikatkjeden og serverens private nøkkel. Du kan lese mer om hvordan du genererer et selvsignert sertifikat her. www.akadia.com/services/ssh_test_certificate.html (å gi nytt navn til .key og .crt til .pem fungerer uten å konvertere filstrukturen for nginx).

Etter det definerte vi vhost-filen. Vi definerer først oppførselen til port 80 som en enkel omdirigering til https, fordi vi ønsker ikke å tillate noen http-trafikk

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

Vi opprettet deretter to virtuelle servere på port 443 for våre tjenester:

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

Trinn 2: dokumentservice

Nå må vi legge til dokumenttjenestebeholderen til vår docker-compose.yml. Det er ikke noe spesielt å konfigurere her.

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

Men ikke glem å koble nginx-beholderen til dokumenttjenesten:

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

Trinn 3: NextCloud

Først legger du til nye tjenester:

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

og legg til en lenke til nginx:

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

Nå er det på tide å laste containerne.

docker-compose up -d  

Etter en stund vil nginx begynne å omdirigere deg til NextCloud-grensesnittet, som er standard konfigurasjonsside. Du må skrive inn brukernavnet og passordet for din første admin-bruker og databaselegitimasjonen du oppga i docker-compose.yml Når oppsettet er fullført, vil du kunne logge på. I vårt tilfelle tok ventetiden nesten ett minutt og krevde en ekstra oppdatering av påloggingssiden før vi kunne logge inn på skytjenesten.

NextCloud-tjenesteinnstillinger-vinduetSette opp NextCloud + ONLYOFFICE på samme server med Docker

Trinn 4: Koble til NextCloud og ONLYOFFICE

På dette trinnet må du installere applikasjonen for NextCloud, som kobler sammen ONLYOFFICE-funksjonaliteten. La oss starte med applikasjonens kontrollpanel i øvre høyre hjørne av menyen. Finn ONLYOFFICE-appen (under Office og tekst eller bruk søk), installer og aktiver den.

Gå deretter til Innstillinger via menyen øverst til høyre, og du bør finne ONLYOFFICE-elementet i venstremenyen. Gå inn i det. Du må registrere adressene som angitt nedenfor.

Innstillinger for integreringsapplikasjonerSette opp NextCloud + ONLYOFFICE på samme server med Docker

Den første adressen brukes til å koble til noen js- og css-filer direkte fra applikasjonen som kjører i nettleseren (dette er det vi trenger for å åpne tilgang til ONLYOFFICE-tjenesten gjennom nginx). Den hemmelige nøkkelen brukes ikke fordi vi stoler mer på Docker-isolasjonslaget enn den vedvarende autentiseringsnøkkelen. Den tredje adressen brukes av NextCloud-beholderen for å koble direkte til ONLYOFFICE API, og den bruker standard intern vertsnavn fra Docker. Vel, det siste feltet brukes slik at ONLYOFFICE kan sende forespørsler tilbake til NextCloud API ved å bruke en ekstern IP-adresse eller en intern Docker-adresse hvis du bruker Docker-nettverk, men dette brukes ikke i vårt tilfelle. Sørg for at brannmurinnstillingene tillater denne typen interaksjoner.

Etter lagring vil NextCloud teste tilkoblingen og, hvis alt er riktig, vise deg innstillinger knyttet til integrasjonen - for eksempel hvilke typer filer som kan redigeres av denne integrasjonen. Tilpass som du synes passer.

Det siste trinnet: hvor finner du redaktøren

Hvis du går tilbake til skylagringsmappene dine og klikker på "+" for å opprette en ny fil, vil du ha et nytt alternativ for å lage et dokument, regneark eller presentasjon. Med deres hjelp vil du opprette og umiddelbart kunne redigere denne typen filer ved å bruke ONLYOFFICE.

Meny for filopprettingSette opp NextCloud + ONLYOFFICE på samme server med Docker

Tillegg 1

Hele innholdet til docker-compose.yml finner du her: https://pastebin.com/z1Ti1fTZ

Kilde: www.habr.com

Legg til en kommentar