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

Hej, Habr! Jeg præsenterer hermed oversættelsen af artiklen «Opsætning af NextCloud og ONLYOFFICE på en enkelt server med Docker».

Det er svært at undervurdere fordelene ved online kontorpakker som Google Docs og cloud-lagring i livet for teknisk orienterede mennesker. Teknologierne har fået så bred udbredelse, at selv Microsoft, som længe har domineret markedet for kontorprogrammer, for nylig har fokuseret på at udvikle webapplikationen Office 365 og overbevise brugerne om at skifte til en abonnementsmodel for deres tjenester. Dem, der er interesseret i processen med at installere og konfigurere deres egen lagring, inviteres til at læse videre.

For nogle tid siden blev vi bekendt med løsninger til cloud-lagring og åbne kontor webapplikationer, som kunne implementeres forholdsvis nemt i små virksomheder. Den primære motivation for at opbevare al dokumentation online er at minimere mængden af papirarbejde og implementere positive forretningspraksis, på trods af det lille antal operationer. Den anden side af sagen er, at leje af en cloud-server til at tilbyde denne service er mindre sikkert end lagring direkte på virksomhedens område, da du ikke har nogen midler til at revidere fysisk adgang til din server eller trafikken. Derfor kræves der også end-to-end kryptering og software med åbent kildekode.

Når vi tager hensyn til al tilgængelig information om løsninger med åbent kildekode, fandt vi to aktive projekter (med commits i git-repositories de seneste 12 måneder), der er udviklet til cloud-lagring: NextCloud og OwnCloud, samt den eneste aktive pakke af kontorprogrammer, ONLYOFFICE. Begge cloud-lagringsløsninger har omtrent den samme funktionalitet, og beslutningen om at vælge NextCloud var baseret på, at der findes beviser for, at det kan integreres med ONLYOFFICE for en behagelig interaktion med softwaren. However, da vi begyndte at implementere tjenesterne, blev det tydeligt, at der var mangel på information om integrationen af de nævnte tjenester. Vi fandt 3 undervisningsvideoer om, hvordan man udfører integration:

Ingen af de tre videoer besvarede spørgsmålet om installation af ONLYOFFICE-dokumenttjenesten på den samme fysiske server som NextCloud med en fælles nginx. I stedet benyttede de teknologier til adskillelse, såsom brug af separate porte til dokumenttjeneste-API'en. En anden foreslået mulighed var at implementere en separat server til dokumenttjenesten med manuel konfiguration af nginx-forekomsten, der er indbygget i dokumenttjenesten, til installation af adgangsnøglen (en forudkendt adgangsnøgle, der bekræfter adgangen til dataskyen) og TLS-certifikater. De ovenfor beskrevne tilgange blev anset for usikre og utilstrækkeligt effektive, og derfor gennemførte vi integrationen af NextCloud, ONLYOFFICE og den fælles nginx, som deler forespørgsler efter domænenavne ved hjælp af docker-compose. Her følger trin-for-trin information om, hvordan man gør dette.

Trin 1: nginx-container

Dette er en meget enkel installation, men dette trin kræver mest arbejde til konfiguration af omvendt proxyserver. Først oprettede vi 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 opretter en container med porte 80 og 443 åbne for offentlig adgang, giver kortlægningen af konfigurationen til nginx/nginx-vhost.conf og definerer opbevaringen til certifikater, der genereres som selvsignerede certifikater eller ved hjælp af Certbot fra Let’s Encrypt i /nginx/certificates. Her skal der være mapper til office.ditdomæne.com og cloud.ditdomæne.com med filerne fullchain1.pem og privkey1.pem i hver til kæden af certifikater og serverens private nøgle henholdsvis. Du kan læse mere om, hvordan man genererer et selvsigneret certifikat her. www.akadia.com/services/ssh_test_certificate.html (omdøbning af .key og .crt til .pem fungerer uden konvertering af filstrukturen til nginx).

Herefter definerede vi vhost-filen. Først definerer vi opførslen af port 80 som en simpel omdirigering til https, da vi ikke ønsker at tillade nogen http-trafik.

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

Derefter oprettede vi 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: dokumenttjeneste

Nu skal vi tilføje containeren til dokumenttjenesten i vores docker-compose.yml. Der er ikke meget at konfigurere her.

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

Men glem ikke at forbinde nginx-containeren med dokumenttjenesten:

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

Trin 3: NextCloud

Først tilføjer vi 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=#indsæt en adgangskode her
      - MYSQL_PASSWORD=#indsæt en anden adgangskode her
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

og tilføjer et link til nginx:

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

Nu er det tid til at starte containerne.

docker-compose up -d  

Efter et stykke tid vil nginx begynde at omdirigere dig til NextCloud's offentlige grænseflade, som som standard er konfigurationssiden. Du skal indtaste brugernavnet og adgangskoden for din første administratorbruger og databaseoplysningerne, som du angav i docker-compose.yml. Når opsætningen er færdig, kan du logge ind. I vores tilfælde tog ventetiden næsten et minut og krævede en ekstra opdatering af login-siden, før vi kunne få adgang til cloud-tjenesten.

Indstillinger for NextCloud-tjenestenOpsætning af NextCloud + ONLYOFFICE på en server med Docker

Trin 4: forbindelse mellem NextCloud og ONLYOFFICE

På dette trin skal du installere appen til NextCloud, som forbinder ONLYOFFICE-funktionaliteten. Lad os starte fra applikationspanelet i øverste højre hjørne af menuen. Find ONLYOFFICE-appen (i sektionen "Office & text" eller ved at bruge søgefunktionen), installer og aktiver den.

Derefter skal du gå til Indstillinger gennem menuen i øverste højre hjørne, og du skal finde ONLYOFFICE-elementet i venstre menu. Klik ind på det. Du skal indtaste adresserne som angivet nedenfor.

Indstillinger for integrationsapplikationenOpsætning af NextCloud + ONLYOFFICE på en server med Docker

Den første adresse bruges til at linke til nogle js- og css-filer direkte fra den kørende applikation i browseren (det er derfor, vi skal åbne adgangen til ONLYOFFICE-tjenesten via nginx). Den hemmelige nøgle bruges ikke, da vi stoler mere på Docker-isoleringslaget end på den permanente autentificeringsnøgle. Den tredje adresse bruges af NextCloud-containeren til direkte at forbinde til ONLYOFFICE API'en, og den benytter det interne værtsnavn som standard fra Docker. Det sidste felt bruges til, at ONLYOFFICE kan lave forespørgsler tilbage til NextCloud API'en, ved at bruge den eksterne IP-adresse eller den interne Docker-adresse, hvis du bruger Docker-netværk, men i vores tilfælde anvendes dette ikke. Sørg for, at din firewall-konfiguration tillader denne type interaktion.

Når du har gemt, vil NextCloud teste forbindelsen, og hvis alt er korrekt, vil du se indstillingerne relateret til integrationen - for eksempel, hvilke filtyper der kan redigeres med denne integration. Tilpas dem som du finder passende.

Afsluttende trin: hvor finder man editoren

Hvis du går tilbage til mapperne i din cloud-lagring og klikker på “+” for at oprette en ny fil, vil du få adgang til en ny mulighed for at oprette et dokument, et regneark eller en præsentation. Med disse kan du oprette og straks redigere de nævnte filtyper ved hjælp af ONLYOFFICE.

Menu til filoprettelseOpsætning af NextCloud + ONLYOFFICE på en server med Docker

Bilag 1

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

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster