NextCloud + ONLYOFFICE beállítása egy szerveren Docker segítségével

Üdv, Habr! Örömmel mutatom be nektek a cikk fordítását „NextCloud és ONLYOFFICE telepítése egyetlen szerveren Dockerrel”.

Nem lehet alábecsülni azoknak az online irodai csomagoknak, mint a Google Docs és a felhőtárhelyek hasznát a technikai orientáltságú emberek életében. A technológiák olyan széles körben elterjedtek, hogy még a Microsoft, amely régóta dominál az irodai alkalmazások piacán, az utóbbi időben a webalkalmazás, az Office 365 fejlesztésére és a felhasználók előfizetéses modellre való áttérésének ösztönzésére összpontosított. Akiket érdekel a saját tárolásuk telepítésének és beállításának folyamata, azokat a folytatásra hívjuk.

Néhány hónappal ezelőtt megismertük a felhőtárolási megoldásokat és az Open Source irodai webalkalmazás csomagokat, amelyek viszonylag könnyen alkalmazhatók mikrovállalkozásokban. A dokumentáció online tárolásának fő motivációja a papíralapú iratok mennyiségének minimalizálása és a pozitív üzleti gyakorlatok bevezetése, függetlenül az üzleti tranzakciók alacsony számától. A dolog hátulütője, hogy a felhőszerver bérlése a szolgáltatás biztosítására kevésbé biztonságos, mint a vállalaton belüli tárolás, mivel nincs mód a fizikai hozzáférés vagy a forgalom auditálására. Következésképpen szükség van az end-to-end titkosításra és az open source szoftverre is.

Figyelembe véve az összes rendelkezésre álló információt az open source megoldásokról, két aktív projektet találtunk (az elmúlt 12 hónapban git tárolókban történt commitokkal), amelyeket a felhőtárolás érdekében fejlesztettek ki: a NextCloudot és az OwnCloudot, valamint egyetlen aktív irodai csomagot, az ONLYOFFICE-t. Mindkét felhőtárolási megoldás funkciói körülbelül azonosak, és a NextCloud választásának alapja az a bizonyíték volt, hogy integrálható az ONLYOFFICE-szal a felhasználó kényelmes interakciója érdekében a szoftverrel. Azonban, amikor elkezdtük a szolgáltatások telepítését, nyilvánvalóvá vált, hogy a fenti szolgáltatások integrációjáról nagyon kevés információ áll rendelkezésre. Három oktatóvideót találtunk a szükséges integrációról:

Egyetlen videó sem válaszolt arra a kérdésre, hogyan lehet telepíteni az ONLYOFFICE dokumentumszolgáltatást ugyanazon a fizikai szerveren, mint a NextCloud, közös nginx-sel. Ehelyett olyan szeparációs technológiákat használtak, mint az API-dokumentumszolgáltatás külön portjainak alkalmazása. Egy másik javasolt megoldás az volt, hogy külön szervert állítanak fel a dokumentumszolgáltatáshoz, amely manuálisan konfigurálta az nginx példányát a hozzáférési kulcs telepítéséhez (előre ismert, a felhőhöz való hozzáférést megerősítő kulcs) és a TLS tanúsítványokat. A fent említett megközelítéseket nem tartották biztonságosnak és nem elég hatékonynak, ezért integráltuk a NextCloud, ONLYOFFICE és a közös nginx összekapcsolását, amely a domain nevek alapján osztja meg a kéréseket, docker-compose segítségével. Itt lépésről lépésre útmutatót talál arról, hogyan lehet ezt megtenni.

1. lépés: nginx konténer

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

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 egy konténert hoz létre, 80-as és 443-as portokkal, nyilvános hozzáféréssel, térképezi a konfigurációt az nginx/nginx-vhost.conf-ra, és meghatározza a tárolót a tanúsítványok számára, amelyeket önállóan aláírt tanúsítványokként vagy a Let’s encrypt Certbot segítségével generálunk a /nginx/certificates mappába. Itt kell lennie könyvtáraknak az office.yourdomain.com és cloud.yourdomain.com számára az 'fullchain1.pem' és 'privkey1.pem' fájlokkal mindkettőben, a tanúsítványlánc és a szerver privát kulcsa számára. További információért arról, hogyan lehet önaláírt tanúsítványt generálni, itt olvashat. www.akadia.com/services/ssh_test_certificate.html (A .key és a .crt .pem-re való átnevezése működik fájlstruktúra konvertálása nélkül az nginx számára).

Ezután meghatároztuk a vhost fájlt. Először az 80-as port viselkedését egyszerű átirányításként definiáljuk a https-re, mivel nem szeretnénk engedélyezni semmilyen http forgalmat.

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

Ezután létrehoztunk két virtuális szervert az 443-as porton a 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ás konténert a docker-compose.yml fájlunkhoz. Itt különösebb konfigurálni való nincs.

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

De ne felejtsd el összekapcsolni az nginx konténert a dokumentumszolgáltatással:

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

3. lépés: NextCloud

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

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=#itt adj meg egy jelszót
      - MYSQL_PASSWORD=#itt adj meg egy másik jelszót
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

és hozzáadjuk az nginx hivatkozást:

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

Most itt az ideje, hogy betöltsük a konténereket.

docker-compose up -d  

Egy idő után az nginx átirányít majd a NextCloud külső felületére, amely alapértelmezés szerint a konfigurációs oldal. Meg kell adnod a felhasználónevet és a jelszót az első adminisztrátor felhasználódhoz, valamint az adatbázis hitelesítő adatokat, amelyeket a docker-compose.yml fájlban adtál meg. A beállítás befejezése után be tudsz jelentkezni. Esetünkben a várakozás majdnem egy percig tartott, és egy további oldalfrissítést igényelt, mielőtt sikerült belépnünk a felhőszolgáltatásba.

NextCloud szolgáltatás beállításainak ablakaNextCloud + ONLYOFFICE beállítása egy szerveren Docker segítségével

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

Ezen a lépésen szüksége lesz a NextCloud-hoz szükséges alkalmazás telepítésére, amely összeköti az ONLYOFFICE funkcióját. Kezdjük a jobb felső sarokban található alkalmazáskezelő panelen. Keresse meg az ONLYOFFICE alkalmazást (az „Iroda és szöveg” (Office & text) részben, vagy a keresés segítségével), telepítse és aktiválja azt.

Ezután navigáljon a Beállítások (Settings) menübe a jobb felső sarokban, és meg kell találja az ONLYOFFICE elemet a bal oldali menüben. Kattintson rá. Be kell írnia az alábbi címeket.

Integrációs alkalmazás beállításaiNextCloud + ONLYOFFICE beállítása egy szerveren Docker segítségével

Az első cím arra szolgál, hogy közvetlenül néhány js és css fájlt hivatkozzon a böngészőben futó alkalmazásból (ezért kell megnyitnunk az ONLYOFFICE szolgáltatáshoz való hozzáférést az nginx-en keresztül). A titkos kulcs nem szükséges, mert többre tartjuk a Docker szigetelési rétegét, mint egy állandó hitelesítési kulcsot. A harmadik cím a NextCloud számára szolgál a közvetlen kapcsolat létrehozására az ONLYOFFICE API-val, és az alapértelmezett belső hosztnevet használja a Dockerben. Az utolsó mezőt pedig arra használják, hogy az ONLYOFFICE visszakérje a NextCloud API-t, külső IP-címet vagy belső Docker-címet használva, ha Docker hálózatokat használ, de a mi esetünkben ez nem szükséges. Győződjön meg róla, hogy a tűzfala beállításai lehetővé teszik ezeket a típusú interakciókat.

Mentés után a NextCloud tesztelni fogja a kapcsolatot, és ha minden rendben van, megmutatja az integrációval kapcsolatos beállításokat - például, hogy milyen fájltípusokat lehet szerkeszteni ezzel az integrációval. Állítsa be az igényei szerint.

Záró lépés: hol keresse az szerkesztőt

Ha visszatér a felhőtárhely mappáiba, és rákattint a „+” gombra új fájl létrehozásához, akkor új lehetőségként elérhető lesz egy dokumentum, táblázat vagy prezentáció létrehozása. Ezekkel létrehozja és azonnal szerkeszteni tudja ezeket a fájltípusokat, az ONLYOFFICE segítségével.

Fájlkészítési menüNextCloud + ONLYOFFICE beállítása egy szerveren Docker segítségével

Kiegészítő 1

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

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster