NextCloud + ONLYOFFICE asettaminen samalle palvelimelle Dockerin kanssa

Hei Habr! Esitän huomionne artikkelin käännöksen "NextCloudin ja ONLYOFFICE:n määrittäminen yhdelle palvelimelle Dockerin kanssa".

On vaikea aliarvioida online-toimistopakettien, kuten Google-dokumenttien ja pilvitallennuspalvelujen, arvoa tekniikkaan suuntautuneiden ihmisten elämässä. Teknologia on levinnyt niin laajalle, että jopa toimistosovellusmarkkinoita pitkään hallinnut Microsoft on viime aikoina keskittynyt kehittämään Office 365 -verkkosovellusta ja houkuttelemaan käyttäjiä vaihtamaan tilausmalliin omien palveluidensa käyttöä varten. Kutsumme kaikki, jotka ovat kiinnostuneita oman varaston asennus- ja konfigurointiprosessista cat.

Jokin aika sitten katselimme pilvitallennusratkaisuja ja avoimen lähdekoodin web-toimistopaketteja, jotka voisivat helposti ottaa käyttöön mikroyrityksessä. Pääasiallinen motiivi kaiken dokumentaation pitämiseen verkossa on pitää paperityöt mahdollisimman vähäisinä ja toteuttaa hyviä liiketoimintatapoja liiketoimien vähäisyydestä huolimatta. Kolikon kääntöpuoli on, että pilvipalvelimen vuokraaminen tämän palvelun tarjoamiseksi on vähemmän turvallista kuin sen säilyttäminen suoraan yrityksen tiloissa, koska sinulla ei ole mitään keinoa tarkastaa fyysistä pääsyä palvelimellesi tai liikenteeseen. Siksi tarvitaan myös päästä päähän -salausta ja avoimen lähdekoodin ohjelmistoja.

Ottaen huomioon kaikki avoimen lähdekoodin ratkaisuista saatavilla olevat tiedot, löysimme kaksi aktiivista projektia (sitoumuksia git-varastossa viimeisen 12 kuukauden ajalta), jotka on kehitetty pilvitallennusta varten: NextCloud ja OwnCloud sekä ainoa aktiivinen ONLYOFFICE-toimistopaketti. Molemmilla pilvitallennustyökaluilla on suunnilleen samat toiminnot, ja päätös valita NextCloud perustui näyttöön siitä, että se voidaan integroida ONLYOFFICE:n kanssa mukavan käyttäjän vuorovaikutuksen varmistamiseksi ohjelmiston kanssa. Kun aloitimme palveluiden käyttöönoton, kuitenkin ilmeni tiedon puute yllä olevien palvelujen integroinnista. Löysimme 3 opetusvideota integroinnista:

Yksikään kolmesta videosta ei vastannut kysymykseen ONLYOFFICE-asiakirjapalvelun asentamisesta samalle fyysiselle palvelimelle kuin NextCloud jaetulla nginxillä. Sen sijaan he käyttivät erotustekniikoita, kuten erillisten porttien käyttämistä asiakirjapalvelun sovellusliittymälle. Toinen ehdotettu vaihtoehto oli ottaa käyttöön erillinen palvelin Document Servicelle, joka määrittää manuaalisesti Document Serviceen sisäänrakennetun nginx-ilmentymän asentamaan pääsyavaimen (ennalta tunnettu pääsyavain, joka vahvistaa oikeuden käyttää tietopilveä) ja TLS-varmenteet. Yllä olevia lähestymistapoja ei pidetty turvallisina ja tarpeeksi tehokkaina, joten integroimme NextCloudin, ONLYOFFICE:n ja yleisen nginxin, joka erottaa pyynnöt verkkotunnusten mukaan käyttämällä docker-composea. Tässä on vaiheittaiset tiedot kuinka se tehdään.

Vaihe 1: nginx-säiliö

Tämä on hyvin yksinkertainen asennus, mutta tämä vaihe vaatii eniten työtä käänteisen välityspalvelimen määrittämiseksi. Loimme ensin Docker-Compose -kokoonpanon nginx:stable-kuvalle.

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

Tämä luo säiliön, jonka portit 80 ja 443 ovat avoinna yleisölle, kartoittaa kokoonpanon tiedostoon nginx/nginx-vhost.conf ja määrittää varaston varmenteille, jotka on luotu itseallekirjoitettuina varmenteina tai käyttämällä Let's encryptin certbotia tiedostossa /nginx/certificates. Tämän sijainnin tulee sisältää kansiot office.yourdomain.com ja cloud.yourdomain.com, joissa molemmissa on fullchain1.pem- ja privkey1.pem-tiedostot varmenneketjua ja palvelimen yksityistä avainta varten. Voit lukea lisää itseallekirjoitetun varmenteen luomisesta täältä. www.akadia.com/services/ssh_test_certificate.html (.keyn ja .crt:n uudelleennimeäminen .pem-muotoon toimii ilman nginx-tiedostorakenteen muuntamista).

Sen jälkeen määritimme vhost-tiedoston. Määrittelemme ensin portin 80 toiminnan yksinkertaiseksi uudelleenohjaukseksi https:ään, koska emme halua sallia http-liikennettä

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

Tämän jälkeen loimme palveluitamme varten kaksi virtuaalipalvelinta porttiin 443:

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

Vaihe 2: asiakirjapalvelu

Nyt meidän on lisättävä asiakirjapalvelusäilö docker-compose.yml-tiedostoomme. Tässä ei ole mitään erityistä konfiguroitavaa.

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

Mutta älä unohda linkittää nginx-säilöä asiakirjapalveluun:

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

Vaihe 3: NextCloud

Lisää ensin uusia palveluita:

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

ja lisää linkki nginxiin:

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

Nyt on aika ladata kontit.

docker-compose up -d  

Hetken kuluttua nginx alkaa ohjata sinut NextCloud-käyttöliittymään, joka on oletusasetussivu. Sinun on syötettävä ensimmäisen järjestelmänvalvojan käyttäjänimi ja salasana sekä docker-compose.yml-tiedostossa antamasi tietokannan tunnistetiedot Kun asennus on valmis, voit kirjautua sisään. Meidän tapauksessamme odotus kesti lähes minuutin ja vaati kirjautumissivun lisäpäivityksen ennen kuin pystyimme kirjautumaan pilvipalveluun.

NextCloud-palvelun asetusikkunaNextCloud + ONLYOFFICE asettaminen samalle palvelimelle Dockerin kanssa

Vaihe 4: Yhdistä NextCloud ja ONLYOFFICE

Tässä vaiheessa sinun on asennettava NextCloud-sovellus, joka yhdistää ONLYOFFICE-toiminnon. Aloitetaan sovelluksen ohjauspaneelista valikon oikeassa yläkulmassa. Etsi ONLYOFFICE-sovellus (Office & text -kohdasta tai haun avulla), asenna ja aktivoi se.

Tämän jälkeen siirry Asetukset-kohtaan oikean yläkulman valikon kautta ja sinun pitäisi löytää ONLYOFFICE-kohta vasemmasta valikosta. Mene siihen. Sinun on rekisteröitävä osoitteet alla kuvatulla tavalla.

IntegrointisovellusasetuksetNextCloud + ONLYOFFICE asettaminen samalle palvelimelle Dockerin kanssa

Ensimmäistä osoitetta käytetään linkittämään joihinkin js- ja css-tiedostoihin suoraan selaimessa käynnissä olevasta sovelluksesta (tämä on se, mitä tarvitsemme avataksemme pääsyn ONLYOFFICE-palveluun nginxin kautta). Salaista avainta ei käytetä, koska luotamme Dockerin eristyskerrokseen enemmän kuin pysyvään todennusavaimeen. NextCloud-säilö käyttää kolmatta osoitetta yhteyden muodostamiseen suoraan ONLYOFFICE API:hen, ja se käyttää Dockerin sisäistä oletusisäntänimeä. No, viimeistä kenttää käytetään, jotta ONLYOFFICE voi tehdä pyyntöjä takaisin NextCloud API:lle käyttämällä ulkoista IP-osoitetta tai sisäistä Docker-osoitetta, jos käytät Docker-verkkoja, mutta tätä ei käytetä meidän tapauksessamme. Varmista, että palomuuriasetuksesi sallivat tällaisen vuorovaikutuksen.

Tallennuksen jälkeen NextCloud testaa yhteyden ja, jos kaikki on oikein, näyttää sinulle integraatioon liittyvät asetukset - esimerkiksi minkä tyyppisiä tiedostoja tällä integraatiolla voidaan muokata. Mukauta haluamallasi tavalla.

Viimeinen vaihe: mistä editori löytyy

Jos palaat pilvitallennuskansioihisi ja napsautat "+" luodaksesi uuden tiedoston, sinulla on uusi vaihtoehto luoda asiakirja, laskentataulukko tai esitys. Heidän avullaan voit luoda ja heti muokata tämäntyyppisiä tiedostoja ONLYOFFICE:n avulla.

Tiedoston luontivalikkoNextCloud + ONLYOFFICE asettaminen samalle palvelimelle Dockerin kanssa

Täydennys 1

Docker-compose.yml:n koko sisältö löytyy täältä: https://pastebin.com/z1Ti1fTZ

Lähde: will.com

Lisää kommentti