Opsætning af NextCloud + ONLYOFFICE på den samme server med Docker

Hej Habr! Jeg præsenterer for din opmærksomhed oversættelsen af ​​artiklen "Opsætning af NextCloud og ONLYOFFICE på en enkelt server med Docker".

Det er svært at undervurdere værdien af ​​online kontorpakker som Google Docs og cloud storage i teknologiorienterede menneskers liv. Teknologien er blevet så udbredt, at selv Microsoft, som længe har domineret kontorapplikationsmarkedet, på det seneste har fokuseret på at udvikle Office 365-webapplikationen og overtale brugerne til at skifte til en abonnementsmodel for at bruge deres egne tjenester. Vi inviterer dem, der er interesseret i processen med at installere og konfigurere deres eget lager under kat.

For nogen tid siden så vi på cloud storage-løsninger og open source webkontorpakker, der nemt kunne implementeres til brug i en mikrovirksomhed. Hovedmotivationen for at holde al dokumentation online er at holde papirarbejdet på et minimum og implementere god forretningspraksis på trods af den lave mængde transaktioner. Den anden side af medaljen er, at det er mindre sikkert at leje en cloud-server til at levere denne service end at gemme den direkte i virksomhedens lokaler, da du ikke har nogen mulighed for at kontrollere fysisk adgang til din server eller trafik. Derfor er ende-til-ende-kryptering og open source-software også påkrævet.

Under hensyntagen til al tilgængelig information om open source-løsninger fandt vi to aktive projekter (med commits i git-lageret i de sidste 12 måneder) udviklet til cloud-lagring: NextCloud og OwnCloud, og den eneste aktive ONLYOFFICE-kontorpakke. Begge cloud storage-værktøjer har nogenlunde samme funktionalitet, og beslutningen om at vælge NextCloud var baseret på eksistensen af ​​beviser for, at det kan integreres med ONLYOFFICE for en behagelig brugerinteraktion med softwaren. Men da vi begyndte at implementere tjenesterne, blev manglen på information om integration af ovenstående tjenester tydelig. Vi fandt 3 vejledningsvideoer om, hvordan man integrerer:

Ingen af ​​de tre videoer besvarede spørgsmålet om at installere ONLYOFFICE-dokumenttjenesten på den samme fysiske server som NextCloud med en delt nginx. I stedet brugte de adskillelsesteknikker som f.eks. at bruge separate porte til dokumentservice-api'et. Et andet forslag var at installere en separat server til Document Service, manuelt konfigurere nginx-instansen indbygget i Document Service til at installere en adgangsnøgle (en forudkendt adgangsnøgle, der bekræfter retten til at få adgang til dataskyen) og TLS-certifikater. Ovenstående tilgange blev betragtet som ikke sikre og ikke effektive nok, så vi integrerede NextCloud, ONLYOFFICE og en fælles nginx, som adskiller anmodninger efter domænenavne ved hjælp af docker-compose. Her er trin for trin information om, hvordan du gør det.

Trin 1: nginx-beholder

Dette er en meget enkel opsætning, men dette trin kræver mest arbejde at konfigurere den omvendte proxyserver. Vi oprettede først docker-compose-konfigurationen til nginx:stable-billedet.

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 skaber en container med porte 80 og 443 åbne for offentligheden, kortlægger konfigurationen til nginx/nginx-vhost.conf og definerer et lager for certifikater genereret som selvsignerede certifikater eller ved at bruge Let's encrypt's certbot i /nginx/certificates. Mapperne for office.yourdomain.com og cloud.yourdomain.com skal være på denne placering med filerne fullchain1.pem og privkey1.pem i hver for henholdsvis certifikatkæden og serverens private nøgle. Du kan læse mere om, hvordan du genererer et selvsigneret certifikat her. www.akadia.com/services/ssh_test_certificate.html (omdøbning af .key og .crt til .pem fungerer uden at konvertere filstrukturen til nginx).

Derefter definerede vi vhost-filen. Vi definerer først adfærden af ​​port 80 som en simpel omdirigering til https, fordi vi ønsker ikke at tillade nogen http-trafik

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

Vi oprettede derefter to virtuelle servere på port 443 til vores 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;
    }
}

Trin 2: dokumentservice

Nu skal vi tilføje dokumentservicebeholderen til vores docker-compose.yml. Der er ikke noget særligt at konfigurere her.

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

Men glem ikke at linke nginx-beholderen til dokumenttjenesten:

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

Trin 3: NextCloud

Tilføj først 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 tilføj et link til nginx:

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

Nu er det tid til at læsse containerne.

docker-compose up -d  

Efter et stykke tid vil nginx begynde at omdirigere dig til NextCloud-frontenden, som er standardkonfigurationssiden. Du skal indtaste brugernavnet og adgangskoden til din første administratorbruger og de databaselegitimationsoplysninger, du har angivet i docker-compose.yml. Når opsætningen er fuldført, vil du være i stand til at logge ind. I vores tilfælde tog ventetiden næsten et minut og krævede en yderligere opdatering af login-siden, før vi kunne logge ind på cloud-tjenesten.

Vinduet NextCloud-tjenesteindstillingerOpsætning af NextCloud + ONLYOFFICE på den samme server med Docker

Trin 4: Tilslutning af NextCloud og ONLYOFFICE

På dette trin skal du installere applikationen til NextCloud, som forbinder ONLYOFFICE-funktionaliteten. Lad os starte med applikationens kontrolpanel i øverste højre hjørne af menuen. Find ONLYOFFICE-appen (under Office & tekst eller brug søgning), installer og aktiver den.

Gå derefter til Indstillinger via menuen i øverste højre hjørne, og du skal finde ONLYOFFICE-punktet i venstre menu. Gå ind i det. Du skal registrere adresserne som angivet nedenfor.

Indstillinger for integrationsapplikationerOpsætning af NextCloud + ONLYOFFICE på den samme server med Docker

Den første adresse bruges til at linke til nogle js- og css-filer direkte fra den applikation, der kører i browseren (det er det, vi skal bruge for at åbne adgang til ONLYOFFICE-tjenesten gennem nginx). Den hemmelige nøgle bruges ikke, fordi vi stoler mere på Docker-isolationslaget end den vedvarende godkendelsesnøgle. Den tredje adresse bruges af NextCloud-beholderen til at oprette forbindelse direkte til ONLYOFFICE API, og den bruger det interne standardværtsnavn fra Docker. Nå, det sidste felt bruges, så ONLYOFFICE kan lave forespørgsler tilbage til NextCloud API ved hjælp af en ekstern IP-adresse eller en intern Docker-adresse, hvis du bruger Docker-netværk, men dette bruges ikke i vores tilfælde. Sørg for, at dine firewallindstillinger tillader denne slags interaktioner.

Efter at have gemt vil NextCloud teste forbindelsen og, hvis alt er korrekt, vise dig indstillinger relateret til integrationen - for eksempel hvilke typer filer der kan redigeres af denne integration. Tilpas som du synes passer.

Det sidste trin: hvor finder du editoren

Hvis du går tilbage til dine skylagermapper og klikker på "+" for at oprette en ny fil, så har du en ny mulighed for at oprette et dokument, regneark eller præsentation. Med deres hjælp vil du oprette og straks være i stand til at redigere disse typer filer ved hjælp af ONLYOFFICE.

Menuen til oprettelse af filerOpsætning af NextCloud + ONLYOFFICE på den samme server med Docker

Tillæg 1

Det fulde indhold af docker-compose.yml kan findes her: https://pastebin.com/z1Ti1fTZ

Kilde: www.habr.com

Tilføj en kommentar