A NextCloud + ONLYOFFICE beállítása ugyanazon a szerveren a Dockerrel

Szia Habr! Figyelmébe ajánlom a cikk fordítását "A NextCloud és az ONLYOFFICE beállítása egyetlen szerveren a Dockerrel".

Nehéz alábecsülni az olyan online irodai csomagok értékét, mint a Google Dokumentumok és a felhőalapú tárolás a technológia-orientált emberek életében. A technológia annyira elterjedt, hogy még az irodai alkalmazások piacát sokáig uraló Microsoft is az Office 365 webalkalmazás fejlesztésére és a felhasználók rábeszélésére helyezte a hangsúlyt, hogy saját szolgáltatásaik használatához váltsanak előfizetéses modellre. Várjuk azokat, akik érdeklődnek a saját tároló telepítésének, konfigurálásának folyamata iránt a kat.

Nemrég megvizsgáltuk a felhőalapú tárolási megoldásokat és a nyílt forráskódú webes irodai csomagokat, amelyek könnyen telepíthetők mikrovállalati használatra. Az összes dokumentáció online tartásának fő motivációja a papírmunka minimálisra csökkentése és a jó üzleti gyakorlatok alkalmazása a tranzakciók alacsony mennyisége ellenére. Az érem másik oldala, hogy egy felhőszerver bérlése ennek a szolgáltatásnak a biztosításához kevésbé biztonságos, mintha azt közvetlenül a vállalat telephelyén tárolná, mivel semmilyen eszköze nincs a szerverhez vagy a forgalomhoz való fizikai hozzáférés ellenőrzésére. Ezért végpontok közötti titkosításra és nyílt forráskódú szoftverekre is szükség van.

Figyelembe véve a nyílt forráskódú megoldásokról rendelkezésre álló összes információt, két aktív projektet találtunk (az elmúlt 12 hónapban a git repository-ban lévő véglegesítésekkel), amelyeket felhőalapú tárolásra fejlesztettek ki: a NextCloudot és az OwnCloudot, valamint az egyetlen aktív ONLYOFFICE irodai csomagot. A két felhőalapú tárolási eszköz funkcionalitása megközelítőleg azonos, és a NextCloud melletti döntés azon alapult, hogy bizonyítékok léteztek arra vonatkozóan, hogy az integrálható az ONLYOFFICE-szal a kényelmes felhasználói interakció érdekében a szoftverrel. A szolgáltatások kiépítésének megkezdésekor azonban nyilvánvalóvá vált a fenti szolgáltatások integrálásával kapcsolatos információhiány. Találtunk 3 oktatóvideót az integrációról:

A három videó egyike sem válaszolt arra a kérdésre, hogy az ONLYOFFICE dokumentumszolgáltatást ugyanarra a fizikai szerverre kell telepíteni, mint a NextCloud megosztott nginx-szel. Ehelyett elválasztási technikákat alkalmaztak, például külön portokat használtak a dokumentumszolgáltatási API-hoz. Egy másik javaslat az volt, hogy telepítsenek egy külön szervert a Document Service számára, manuálisan konfigurálva a Document Service-be beépített nginx példányt egy hozzáférési kulcs (egy előre ismert hozzáférési kulcs, amely megerősíti az adatfelhő elérésének jogát) és a TLS-tanúsítványok telepítéséhez. A fenti megközelítéseket nem tartották biztonságosnak és nem elég hatékonynak, ezért integráltuk a NextCloudot, az ONLYOFFICE-ot és egy közös nginxet, amely a docker-compose segítségével domainnevek szerint választja el a kéréseket. Íme lépésről lépésre, hogyan kell ezt megtenni.

1. lépés: nginx tartály

Ez egy nagyon egyszerű beállítás, de ez a lépés igényli a legtöbb munkát a fordított proxyszerver konfigurálásához. Először létrehoztuk a docker-compose konfigurációt az nginx:stable képhez.

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

Ez létrehoz egy tárolót a 80-as és 443-as portokkal, amelyek nyilvánosak nyitva állnak, a konfigurációt leképezi az nginx/nginx-vhost.conf fájlra, és meghatároz egy tárolót az önaláírt tanúsítványokként vagy a Let's encrypt certbotjával az /nginx/certificates mappában. Ennek a helynek tartalmaznia kell az office.yourdomain.com és a cloud.yourdomain.com mappákat, amelyek mindegyikében a tanúsítványlánchoz és a szerver privát kulcsához tartozó fullchain1.pem és privkey1.pem fájlokat kell tartalmaznia. Az önaláírt tanúsítvány létrehozásáról itt olvashat bővebben. www.akadia.com/services/ssh_test_certificate.html (A .key és .crt átnevezése .pem-re működik az nginx fájlszerkezetének konvertálása nélkül).

Ezt követően definiáltuk a vhost fájlt. Először a 80-as port viselkedését a https-re való egyszerű átirányításként határozzuk meg, mert nem akarunk engedélyezni semmilyen http forgalmat

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

Ezután két virtuális szervert hoztunk létre a 443-as porton szolgáltatásainkhoz:

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

2. lépés: dokumentumszolgáltatás

Most hozzá kell adnunk a dokumentumszolgáltatási tárolót a docker-compose.yml fájlunkhoz. Itt nincs semmi különleges konfigurálás.

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

De ne felejtse el összekapcsolni az nginx tárolót a dokumentumszolgáltatással:

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

3. lépés: NextCloud

Először adjon hozzá új szolgáltatásokat:

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

és adj hozzá egy linket az nginx-hez:

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

Itt az ideje a konténerek betöltésének.

docker-compose up -d  

Egy idő után az nginx elkezdi átirányítani Önt a NextCloud kezelőfelületére, amely az alapértelmezett konfigurációs oldal. Meg kell adnia az első adminisztrátor felhasználónevét és jelszavát, valamint a docker-compose.yml fájlban megadott adatbázis hitelesítő adatait. A beállítás befejezése után be tud majd jelentkezni. Esetünkben a várakozás csaknem egy percig tartott, és a bejelentkezési oldal további frissítését igényelte, mielőtt bejelentkezhettünk volna a felhőszolgáltatásba.

NextCloud szolgáltatás beállításai ablakA NextCloud + ONLYOFFICE beállítása ugyanazon a szerveren a Dockerrel

4. lépés: A NextCloud és az ONLYOFFICE összekapcsolása

Ebben a lépésben telepítenie kell a NextCloud alkalmazást, amely összeköti az ONLYOFFICE funkciót. Kezdjük a menü jobb felső sarkában található alkalmazásvezérlőpulttal. Keresse meg az ONLYOFFICE alkalmazást (az Office és szöveg alatt vagy a keresés segítségével), telepítse és aktiválja.

Ezután lépjen a Beállítások menübe a jobb felső sarokban található menüből, és a bal oldali menüben találja meg az ONLYOFFICE elemet. Menj bele. Regisztrálnia kell a címeket az alábbiak szerint.

Integrációs alkalmazás beállításaiA NextCloud + ONLYOFFICE beállítása ugyanazon a szerveren a Dockerrel

Az első címet arra használjuk, hogy néhány js és css fájlt közvetlenül a böngészőben futó alkalmazásból hozzunk létre (erre van szükségünk az ONLYOFFICE szolgáltatás eléréséhez az nginx-en keresztül). A titkos kulcsot nem használjuk, mert jobban megbízunk a Docker elkülönítési rétegben, mint az állandó hitelesítési kulcsban. A harmadik címet a NextCloud tároló használja az ONLYOFFICE API-hoz való közvetlen csatlakozáshoz, és a Docker alapértelmezett belső gazdagépnevét használja. Nos, az utolsó mezőt arra használjuk, hogy az ONLYOFFICE visszakéréseket küldhessen a NextCloud API-nak külső IP-cím vagy belső Docker-cím használatával, ha Docker-hálózatokat használ, de ez a mi esetünkben nem használatos. Győződjön meg arról, hogy a tűzfal beállításai lehetővé teszik az ilyen jellegű interakciókat.

Mentés után a NextCloud teszteli a kapcsolatot, és ha minden rendben van, megmutatja az integrációval kapcsolatos beállításokat – például, hogy milyen típusú fájlokat szerkeszthet ez az integráció. Testreszabhatja, ahogy jónak látja.

Az utolsó lépés: hol található a szerkesztő

Ha visszatér a felhőalapú tárolási mappákhoz, és a „+” gombra kattint új fájl létrehozásához, akkor új lehetőség nyílik dokumentum, táblázat vagy prezentáció létrehozására. Segítségükkel létrehozhatja és azonnal szerkesztheti az ilyen típusú fájlokat az ONLYOFFICE segítségével.

Fájlkészítés menüA NextCloud + ONLYOFFICE beállítása ugyanazon a szerveren a Dockerrel

Kiegészítés 1

A docker-compose.yml teljes tartalma itt található: https://pastebin.com/z1Ti1fTZ

Forrás: will.com

Hozzászólás