Postavljanje NextCloud + ONLYOFFICE na istom poslužitelju s Dockerom

Hej Habr! Vašoj pozornosti predstavljam prijevod članka "Postavljanje NextClouda i ONLYOFFICE na jednom poslužitelju s Dockerom".

Teško je podcijeniti vrijednost online uredskih paketa poput Google dokumenata i pohrane 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 web aplikacije Office 365 i nagovaranje korisnika da prijeđu na model pretplate za korištenje vlastitih usluga. Pozivamo one koji su zainteresirani za proces instaliranja i konfiguriranja vlastite pohrane pod kat.

Prije nekog vremena promatrali smo rješenja za pohranu u oblaku i web uredske pakete otvorenog koda koji bi se lako mogli implementirati za korištenje u mikro poduzećima. Glavna motivacija za čuvanje cjelokupne dokumentacije online je svesti papirologiju na minimum i implementirati dobre poslovne prakse unatoč malom obujmu transakcija. Druga strana novčića je da je iznajmljivanje poslužitelja u oblaku za pružanje ove usluge manje sigurno od pohranjivanja izravno u prostorijama poduzeća, budući da nemate nikakav način revizije fizičkog pristupa vašem poslužitelju ili prometa. Stoga su također potrebni enkripcija s kraja na kraj i softver otvorenog koda.

Uzimajući u obzir sve dostupne informacije o open source rješenjima, pronašli smo dva aktivna projekta (s commitima u git repozitoriju u proteklih 12 mjeseci) razvijena za pohranu u oblaku: NextCloud i OwnCloud, te jedini aktivni uredski paket ONLYOFFICE. Oba alata za pohranu u oblaku imaju otprilike istu funkcionalnost, a odluka o odabiru NextClouda temeljila se na postojanju dokaza da se može integrirati s ONLYOFFICE za udobnu interakciju korisnika sa softverom. Međutim, kada smo počeli implementirati usluge, nedostatak informacija o integraciji gore navedenih usluga postao je očit. Pronašli smo 3 video vodiča o tome kako integrirati:

Nijedan od tri videa nije odgovorio na pitanje o instaliranju usluge dokumenata ONLYOFFICE na istom fizičkom poslužitelju kao NextCloud s dijeljenim nginxom. Umjesto toga, koristili su tehnike odvajanja kao što je upotreba zasebnih priključaka za API usluge dokumenata. Još jedna predložena opcija bila je implementacija zasebnog poslužitelja za Document Service, ručno konfiguriranje nginx instance ugrađene u Document Service za instaliranje pristupnog ključa (unaprijed poznati pristupni ključ koji potvrđuje pravo pristupa oblaku podataka) i TLS certifikata. Gornji pristupi smatrani su nesigurnima i nedovoljno učinkovitima, pa smo integrirali NextCloud, ONLYOFFICE i uobičajeni nginx koji odvaja zahtjeve prema nazivima domena pomoću docker-compose. Evo korak po korak informacija o tome kako to učiniti.

Korak 1: nginx kontejner

Ovo je vrlo jednostavno postavljanje, ali ovaj korak zahtijeva najviše posla za konfiguriranje obrnutog proxy poslužitelja. Prvo smo stvorili konfiguraciju docker-compose za nginx:stable sliku.

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 stvara spremnik s priključcima 80 i 443 otvorenim za javnost, mapira konfiguraciju na nginx/nginx-vhost.conf i definira pohranu za certifikate generirane kao samopotpisani certifikati ili pomoću Let's Encrypt's certbota u /nginx/certificates. Ovo bi mjesto trebalo sadržavati mape za office.yourdomain.com i cloud.yourdomain.com, s datotekama fullchain1.pem i privkey1.pem u svakoj za lanac certifikata i privatni ključ poslužitelja. Ovdje možete pročitati više o tome kako generirati samopotpisani certifikat. www.akadia.com/services/ssh_test_certificate.html (preimenovanje .key i .crt u .pem radi bez pretvaranja strukture datoteke za nginx).

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

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

Zatim smo stvorili dva virtualna poslužitelja 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: usluga dokumenata

Sada moramo dodati spremnik usluge dokumenta u naš docker-compose.yml. Ovdje se ne može ništa posebno konfigurirati.

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

Ali ne zaboravite povezati nginx spremnik s 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 vezu na nginx:

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

Sada je vrijeme za utovar kontejnera.

docker-compose up -d  

Nakon nekog vremena, nginx će vas početi preusmjeravati na sučelje NextCloud, što je zadana konfiguracijska stranica. Morat ćete unijeti korisničko ime i zaporku za svog prvog administrativnog korisnika i vjerodajnice baze podataka koje ste dali u docker-compose.yml Nakon što je postavljanje dovršeno, moći ćete se prijaviti. U našem slučaju, čekanje je trajalo gotovo minutu i zahtijevalo je dodatno osvježavanje stranice za prijavu prije nego što smo se mogli prijaviti na uslugu u oblaku.

NextCloud prozor postavki uslugePostavljanje NextCloud + ONLYOFFICE na istom poslužitelju s Dockerom

Korak 4: Povezivanje NextClouda i ONLYOFFICE

U ovom koraku je potrebno instalirati aplikaciju za NextCloud koja povezuje ONLYOFFICE funkcionalnost. Počnimo s upravljačkom pločom aplikacije u gornjem desnom kutu izbornika. Pronađite aplikaciju ONLYOFFICE (pod Office & text ili pretraživanjem), instalirajte je i aktivirajte.

Nakon toga idite na Postavke putem izbornika u gornjem desnom kutu i trebali biste pronaći stavku ONLYOFFICE u lijevom izborniku. Uđi u to. Morat ćete registrirati adrese kako je navedeno u nastavku.

Postavke integracijske aplikacijePostavljanje NextCloud + ONLYOFFICE na istom poslužitelju s Dockerom

Prva adresa se koristi za povezivanje s nekim js i css datotekama izravno iz aplikacije koja se izvodi u pregledniku (to je ono što nam je potrebno za otvaranje pristupa usluzi ONLYOFFICE preko nginxa). Tajni ključ se ne koristi jer više vjerujemo Docker izolacijskom sloju nego trajnom autentifikacijskom ključu. Treću adresu koristi spremnik NextCloud za izravno povezivanje s ONLYOFFICE API-jem, a koristi zadani interni naziv hosta iz Dockera. Pa, zadnje polje se koristi kako bi ONLYOFFICE mogao slati zahtjeve natrag NextCloud API-ju koristeći vanjsku IP adresu ili internu Docker adresu ako koristite Docker mreže, ali to se ne koristi u našem slučaju. Provjerite dopuštaju li postavke vatrozida takve vrste interakcija.

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

Posljednji korak: gdje pronaći urednika

Ako se vratite u svoje mape za pohranu u oblaku i kliknete na "+" za stvaranje nove datoteke, tada ćete imati novu opciju za izradu dokumenta, proračunske tablice ili prezentacije. Uz njihovu pomoć izradit ćete i odmah moći uređivati ​​ove vrste datoteka koristeći ONLYOFFICE.

Izbornik za stvaranje datotekePostavljanje NextCloud + ONLYOFFICE na istom poslužitelju s Dockerom

Dodatak 1

Cijeli sadržaj docker-compose.yml može se pronaći ovdje: https://pastebin.com/z1Ti1fTZ

Izvor: www.habr.com

Dodajte komentar