Postavljanje NextCloud + ONLYOFFICE na istom serveru sa Dockerom

Hej Habr! Predstavljam Vašoj pažnji prevod članka "Postavljanje NextCloud-a i ONLYOFFICE-a na jednom serveru sa Docker-om".

Teško je podcijeniti vrijednost online uredskih paketa kao što su Google dokumenti i pohrana u oblaku u životima ljudi orijentiranih na tehnologiju. Tehnologija je postala toliko raširena da se čak i Microsoft, koji je dugo dominirao tržištem uredskih aplikacija, nedavno fokusirao na razvoj Office 365 web aplikacije i uvjeravanje korisnika da pređu na pretplatnički model za korištenje vlastitih usluga. Pozivamo one koji su zainteresirani za proces instaliranja i konfiguracije vlastitog skladišta pod kat.

Prije nekog vremena pogledali smo rješenja za pohranu u oblaku i open source web uredske pakete koji bi se lako mogli primijeniti za korištenje u mikro poduzećima. Glavna motivacija za držanje cjelokupne dokumentacije na mreži je da se papirologija svede na minimum i implementira dobru poslovnu praksu uprkos malom obimu transakcija. Druga strana medalje je da je iznajmljivanje servera u oblaku za pružanje ove usluge manje bezbedno od skladištenja direktno u prostorijama preduzeća, budući da nemate nikakav način revizije fizičkog pristupa vašem serveru ili saobraćaju. Stoga su također potrebni end-to-end enkripcija i softver otvorenog koda.

Uzimajući u obzir sve dostupne informacije o rješenjima otvorenog koda, pronašli smo dva aktivna projekta (sa urezivanja u git repozitoriju u posljednjih 12 mjeseci) razvijena za pohranu u oblaku: NextCloud i OwnCloud, i jedini aktivni ONLYOFFICE uredski paket. Oba alata za skladištenje u oblaku imaju otprilike istu funkcionalnost, a odluka da se izabere NextCloud zasnovana je na postojanju dokaza da se može integrirati sa ONLYOFFICE za ugodnu interakciju korisnika sa softverom. Međutim, kada smo počeli sa implementacijom servisa, postao je očigledan nedostatak informacija o integraciji navedenih servisa. Pronašli smo 3 tutorijala o tome kako se integrirati:

Nijedan od tri videa nije odgovorio na pitanje o instalaciji usluge dokumenata ONLYOFFICE na istom fizičkom serveru kao NextCloud sa zajedničkim nginxom. Umjesto toga, koristili su tehnike razdvajanja kao što je korištenje odvojenih portova za API servisa dokumenata. Drugi prijedlog je bio da se postavi poseban server za Document Service, ručno konfigurirajući nginx instancu ugrađenu u Document Service da instalira pristupni ključ (unaprijed poznati pristupni ključ koji potvrđuje pravo pristupa oblaku podataka) i TLS certifikate. Gornji pristupi su smatrani nebezbednim i nedovoljno efikasnim, pa smo integrisali NextCloud, ONLYOFFICE i uobičajeni nginx koji razdvaja zahteve po imenima domena koristeći docker-compose. Evo informacija korak po korak o tome kako to učiniti.

Korak 1: nginx kontejner

Ovo je vrlo jednostavno podešavanje, ali ovaj korak zahtijeva najviše posla na konfiguraciji obrnutog proxy servera. Prvo smo kreirali konfiguraciju docker-compose za sliku nginx:stable.

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

Ovo kreira kontejner sa portovima 80 i 443 otvorenim za javnost, mapira konfiguraciju u nginx/nginx-vhost.conf i definiše skladište za sertifikate generisane kao samopotpisani sertifikati ili koristeći Let's encrypt's certbot u /nginx/certificates. Ova lokacija treba da sadrži fascikle za office.yourdomain.com i cloud.yourdomain.com, sa fullchain1.pem i privkey1.pem datotekama u svakoj za lanac sertifikata i privatni ključ servera, respektivno. Više o tome kako generirati samopotpisani certifikat možete pročitati ovdje. www.akadia.com/services/ssh_test_certificate.html (preimenovanje .key i .crt u .pem radi bez konverzije strukture datoteke za nginx).

Nakon toga, definirali smo datoteku vhost. Prvo definiramo ponašanje porta 80 kao jednostavno preusmjeravanje na https, jer ne želimo dozvoliti nikakav http saobraćaj

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

Zatim smo kreirali dva virtuelna servera na portu 443 za naše usluge:

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

Korak 2: servis dokumenata

Sada moramo dodati kontejner usluge dokumenata u naš docker-compose.yml. Ovdje nema ništa posebno za konfiguraciju.

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

Ali ne zaboravite da povežete nginx kontejner sa uslugom dokumenata:

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

Korak 3: NextCloud

Prvo dodajte nove usluge:

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

i dodajte link na nginx:

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

Sada je vrijeme za punjenje kontejnera.

docker-compose up -d  

Nakon nekog vremena, nginx će vas početi preusmjeravati na NextCloud front end, koji je zadana stranica za konfiguraciju. Moraćete da unesete korisničko ime i lozinku za svog prvog administratora i akreditive baze podataka koje ste dali u docker-compose.yml Kada se podešavanje završi, moći ćete da se prijavite. U našem slučaju, čekanje je trajalo skoro minut i zahtijevalo je dodatno osvježavanje stranice za prijavu prije nego što smo se mogli prijaviti na uslugu u oblaku.

Prozor postavki usluge NextCloudPostavljanje NextCloud + ONLYOFFICE na istom serveru sa Dockerom

Korak 4: Povezivanje NextCloud i ONLYOFFICE

U ovom koraku morat ćete instalirati aplikaciju za NextCloud, koja povezuje ONLYOFFICE funkcionalnost. Počnimo sa kontrolnom pločom aplikacije u gornjem desnom uglu menija. Pronađite aplikaciju ONLYOFFICE (pod Office & text ili koristeći pretragu), instalirajte je i aktivirajte.

Nakon toga idite na Postavke preko menija u gornjem desnom uglu i trebali biste pronaći ONLYOFFICE stavku u lijevom meniju. Idi u to. Morat ćete registrirati adrese kao što je navedeno u nastavku.

Postavke aplikacije integracijePostavljanje NextCloud + ONLYOFFICE na istom serveru sa Dockerom

Prva adresa se koristi za povezivanje sa nekim js i css datotekama direktno iz aplikacije koja radi u pretraživaču (ovo je ono što nam je potrebno da otvorimo pristup servisu ONLYOFFICE preko nginxa). Tajni ključ se ne koristi jer više vjerujemo Docker izolacijskom sloju nego trajnom ključu za autentifikaciju. Treću adresu koristi NextCloud kontejner za direktno povezivanje sa ONLYOFFICE API-jem i koristi podrazumevano interno ime hosta iz Dockera. Pa, zadnje polje se koristi tako da ONLYOFFICE može uputiti zahtjeve natrag na NextCloud API koristeći eksternu IP adresu ili internu Docker adresu ako koristite Docker mreže, ali to se ne koristi u našem slučaju. Uvjerite se da postavke zaštitnog zida dozvoljavaju ove vrste interakcija.

Nakon spremanja, NextCloud će testirati vezu i, ako je sve ispravno, pokazaće vam postavke vezane za integraciju - na primjer, koje vrste datoteka se mogu uređivati ​​ovom integracijom. Prilagodite kako vam odgovara.

Poslednji korak: gde pronaći urednika

Ako se vratite u svoje mape za pohranu u oblaku i kliknete na “+” da kreirate novu datoteku, tada ćete imati novu opciju za kreiranje dokumenta, proračunske tablice ili prezentacije. Uz njihovu pomoć, kreirat ćete i odmah moći uređivati ​​ove vrste datoteka koristeći ONLYOFFICE.

Meni za kreiranje fajlaPostavljanje NextCloud + ONLYOFFICE na istom serveru sa Dockerom

Dodatak 1

Kompletan sadržaj docker-compose.yml možete pronaći ovdje: https://pastebin.com/z1Ti1fTZ

izvor: www.habr.com

Dodajte komentar