Konfigurera NextCloud + ONLYOFFICE på samma server med Docker

Hej Habr! Jag presenterar översättningen av artikeln för din uppmärksamhet "Konfigurera NextCloud och ONLYOFFICE på en enda server med Docker".

Det är svårt att underskatta värdet av onlinekontorssviter som Google Docs och molnlagring i livet för teknikinriktade människor. Tekniken har blivit så utbredd att även Microsoft, som länge dominerat kontorsapplikationsmarknaden, nyligen har fokuserat på att utveckla webbapplikationen Office 365 och övertala användare att byta till en prenumerationsmodell för att använda sina egna tjänster. Vi bjuder in dem som är intresserade av processen att installera och konfigurera sin egen förvaring under cat.

För en tid sedan tittade vi på molnlagringslösningar och webbkontorssviter med öppen källkod som enkelt kan distribueras för användning i ett mikroföretag. Den främsta motivationen för att hålla all dokumentation online är att hålla pappersarbetet till ett minimum och implementera god affärspraxis trots den låga mängden transaktioner. Den andra sidan av myntet är att det är mindre säkert att hyra en molnserver för att tillhandahålla den här tjänsten än att lagra den direkt i företagets lokaler, eftersom du inte har någon möjlighet att granska fysisk åtkomst till din server eller trafik. Därför krävs också end-to-end-kryptering och programvara med öppen källkod.

Med hänsyn till all tillgänglig information om lösningar med öppen källkod hittade vi två aktiva projekt (med commits i git-förvaret under de senaste 12 månaderna) utvecklade för molnlagring: NextCloud och OwnCloud, och den enda aktiva ONLYOFFICE-kontorssviten. Båda molnlagringsverktygen har ungefär samma funktionalitet, och beslutet att välja NextCloud baserades på att det fanns bevis för att det kan integreras med ONLYOFFICE för en bekväm användarinteraktion med programvaran. Men när vi började distribuera tjänsterna blev bristen på information om att integrera ovanstående tjänster uppenbar. Vi hittade 3 instruktionsvideor om hur man integrerar:

Ingen av de tre videorna besvarade frågan om att installera dokumenttjänsten ONLYOFFICE på samma fysiska server som NextCloud med en delad nginx. Istället använde de separationstekniker som att använda separata portar för dokumenttjänstens api. Ett annat förslag var att distribuera en separat server för Document Service, manuellt konfigurera nginx-instansen inbyggd i Document Service för att installera en åtkomstnyckel (en förkänd åtkomstnyckel som bekräftar rätten att få åtkomst till datamolnet) och TLS-certifikat. Ovanstående tillvägagångssätt ansågs inte säkra och inte tillräckligt effektiva, så vi integrerade NextCloud, ONLYOFFICE och en gemensam nginx som separerar förfrågningar efter domännamn med docker-compose. Här är steg för steg information om hur man gör.

Steg 1: nginx-behållare

Detta är en mycket enkel installation, men det här steget kräver mest arbete för att konfigurera den omvända proxyservern. Vi skapade först docker-compose-konfigurationen för nginx:stable-bilden.

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

Detta skapar en container med portarna 80 och 443 öppna för allmänheten, mappar konfigurationen till nginx/nginx-vhost.conf och definierar en butik för certifikat genererade som självsignerade certifikat eller med hjälp av Let's encrypts certbot i /nginx/certificates. Den här platsen bör innehålla mappar för office.yourdomain.com och cloud.yourdomain.com, med fullchain1.pem- och privkey1.pem-filer i var och en för certifikatkedjan respektive serverns privata nyckel. Du kan läsa mer om hur du genererar ett självsignerat certifikat här. www.akadia.com/services/ssh_test_certificate.html (att döpa om .key och .crt till .pem fungerar utan att konvertera filstrukturen för nginx).

Efter det definierade vi vhost-filen. Vi definierar först beteendet för port 80 som en enkel omdirigering till https, eftersom vi vill inte tillåta någon http-trafik

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

Vi skapade sedan två virtuella servrar på port 443 för våra tjänster:

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

Steg 2: dokumentservice

Nu måste vi lägga till dokumenttjänstbehållaren till vår docker-compose.yml. Det finns inget speciellt att konfigurera här.

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

Men glöm inte att länka nginx-behållaren till dokumenttjänsten:

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

Steg 3: NextCloud

Lägg först till nya tjänster:

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

och lägg till en länk till nginx:

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

Nu är det dags att lasta containrarna.

docker-compose up -d  

Efter ett tag kommer nginx att börja omdirigera dig till NextCloud-gränssnittet, som är standardkonfigurationssidan. Du måste ange användarnamnet och lösenordet för din första administratörsanvändare och databasuppgifterna du angav i docker-compose.yml När installationen är klar kommer du att kunna logga in. I vårt fall tog väntan nästan en minut och krävde ytterligare en uppdatering av inloggningssidan innan vi kunde logga in på molntjänsten.

Fönstret för NextCloud-tjänstinställningarKonfigurera NextCloud + ONLYOFFICE på samma server med Docker

Steg 4: Anslut NextCloud och ONLYOFFICE

I det här steget måste du installera applikationen för NextCloud, som ansluter ONLYOFFICE-funktionen. Låt oss börja med applikationens kontrollpanel i det övre högra hörnet av menyn. Hitta ONLYOFFICE-appen (under Office & text eller använd sök), installera och aktivera den.

Gå sedan till Inställningar via menyn i det övre högra hörnet och du bör hitta objektet ONLYOFFICE i den vänstra menyn. Gå in i det. Du måste registrera adresserna enligt nedan.

Inställningar för integrationsprogramKonfigurera NextCloud + ONLYOFFICE på samma server med Docker

Den första adressen används för att länka till vissa js- och css-filer direkt från applikationen som körs i webbläsaren (detta är vad vi behöver för att öppna åtkomst till ONLYOFFICE-tjänsten genom nginx). Den hemliga nyckeln används inte eftersom vi litar mer på Docker-isoleringsskiktet än den beständiga autentiseringsnyckeln. Den tredje adressen används av NextCloud-behållaren för att ansluta direkt till ONLYOFFICE API, och den använder det interna standardvärdnamnet från Docker. Tja, det sista fältet används så att ONLYOFFICE kan göra förfrågningar tillbaka till NextCloud API med hjälp av en extern IP-adress eller en intern Docker-adress om du använder Docker-nätverk, men detta används inte i vårt fall. Se till att dina brandväggsinställningar tillåter den här typen av interaktioner.

Efter att du har sparat kommer NextCloud att testa anslutningen och, om allt är korrekt, visar du inställningar relaterade till integrationen - till exempel vilka typer av filer som kan redigeras av denna integration. Anpassa som du tycker passar.

Det sista steget: var hittar du redaktören

Om du går tillbaka till dina molnlagringsmappar och klickar på "+" för att skapa en ny fil, får du ett nytt alternativ för att skapa ett dokument, kalkylblad eller presentation. Med deras hjälp kommer du att skapa och omedelbart kunna redigera dessa typer av filer med ONLYOFFICE.

Menyn för att skapa filerKonfigurera NextCloud + ONLYOFFICE på samma server med Docker

Uppdatering 1/XNUMX/XNUMX

Hela innehållet i docker-compose.yml finns här: https://pastebin.com/z1Ti1fTZ

Källa: will.com

Lägg en kommentar