Configuració de NextCloud + ONLYOFFICE al mateix servidor amb Docker

Hola, Habr! Presento a la vostra atenció la traducció de l'article "Configuració de NextCloud i ONLYOFFICE en un sol servidor amb Docker".

És difícil subestimar els avantatges de les suites d'oficina en línia com Google Docs i l'emmagatzematge al núvol a la vida de les persones orientades a la tecnologia. Les tecnologies s'han estès tant que fins i tot Microsoft, que ha dominat durant molt de temps el mercat d'aplicacions d'oficina, s'ha centrat recentment a desenvolupar l'aplicació web Office 365 i convèncer els usuaris perquè canviïn a un model de subscripció per utilitzar els seus propis serveis. Convidem a aquells que estiguin interessats en el procés d'instal·lació i configuració del seu propi emmagatzematge sota cat.

Fa un temps, ens vam familiaritzar amb les solucions d'emmagatzematge al núvol i els paquets d'aplicacions web d'oficina de codi obert que es podrien implementar amb força facilitat per utilitzar-los en una microempresa. La principal motivació per emmagatzemar tota la documentació en línia és reduir al mínim el volum de tràmits i implementar pràctiques comercials positives, malgrat el petit volum de transaccions. L'altra cara de la moneda és que llogar un servidor en núvol per oferir aquest servei és menys segur que emmagatzemar-lo directament a les instal·lacions de l'empresa, ja que no disposeu de cap mitjà per auditar l'accés físic al vostre servidor o el trànsit. Per tant, també calen xifratge d'extrem a extrem i programari de codi obert.

Tenint en compte tota la informació disponible sobre solucions de recursos oberts, hem trobat dos projectes actius (amb commits al repositori git durant els darrers 12 mesos) desenvolupats per a l'emmagatzematge al núvol: NextCloud i OwnCloud, i l'única suite ofimàtica activa ONLYOFFICE. Les dues eines d'emmagatzematge al núvol tenen aproximadament la mateixa funcionalitat, i la decisió d'escollir NextCloud es va basar en l'evidència que es pot integrar amb ONLYOFFICE per a una interacció còmoda de l'usuari amb el programari. Tanmateix, a mesura que vam començar a desplegar els serveis, es va fer evident la manca d'informació sobre la integració dels serveis anteriors. Hem trobat 3 vídeos de formació sobre com integrar:

Cap dels tres vídeos va respondre a la pregunta d'instal·lar el servei de documents ONLYOFFICE al mateix servidor físic que NextCloud amb un nginx compartit. En comptes d'això, van utilitzar tecnologies de separació com l'ús de ports separats per a l'API del servei de documents. Una altra opció proposada era desplegar un servidor separat per al servei de documents amb una configuració manual de la instància nginx integrada al servei de documents per instal·lar una clau d'accés (una clau d'accés coneguda que confirma el dret d'accés al núvol de dades) i certificats TLS. . Els enfocaments anteriors es van considerar insegurs i no prou efectius, de manera que vam integrar NextCloud, ONLYOFFICE i el nginx comú, que separa les sol·licituds per noms de domini, mitjançant docker-compose. Aquí teniu informació pas a pas sobre com fer-ho.

Pas 1: contenidor nginx

Aquesta és una configuració molt senzilla, però aquest pas requereix més feina per configurar el servidor intermediari invers. Primer, vam crear una configuració de docker-compose per a la imatge 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

Això crea un contenidor amb els ports 80 i 443 oberts a l'accés públic, mapeja la configuració a nginx/nginx-vhost.conf i defineix un magatzem per als certificats generats com a certificats autofirmats o utilitzant Let's Encrypt's Certbot a /nginx/certificates. Aquesta ubicació hauria de contenir carpetes per a office.yourdomain.com i cloud.yourdomain.com amb els fitxers fullchain1.pem i privkey1.pem a cadascun per a la cadena de certificats i la clau privada del servidor, respectivament. Podeu obtenir més informació sobre com generar un certificat autofirmat aquí www.akadia.com/services/ssh_test_certificate.html (canviar el nom de .key i .crt a .pem funciona sense convertir l'estructura de fitxers per a nginx).

Després d'això hem definit el fitxer vhost. Primer definim el comportament del port 80 com una simple redirecció a https, perquè no volem permetre cap trànsit http

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

Després vam crear dos servidors virtuals al port 443 per als nostres serveis:

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

Pas 2: servei de documents

Ara hem d'afegir el contenidor del servei de documents al nostre docker-compose.yml. No hi ha molt a configurar aquí.

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

Però no us oblideu d'associar el contenidor nginx amb el servei de documents:

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

Pas 3: NextCloud

Primer afegim nous serveis:

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 afegiu un enllaç a nginx:

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

Ara toca carregar els contenidors.

docker-compose up -d  

Després d'un temps, nginx començarà a redirigir-vos a la interfície NextCloud, que és la pàgina de configuració per defecte. Haureu d'introduir el nom d'usuari i la contrasenya del vostre primer usuari administrador i les credencials de la base de dades que heu proporcionat a docker-compose.yml Un cop finalitzada la configuració, podreu iniciar sessió. En el nostre cas, l'espera va trigar gairebé un minut i va requerir una actualització addicional de la pàgina d'inici de sessió abans de poder iniciar sessió al servei al núvol.

Finestra de configuració del servei NextCloudConfiguració de NextCloud + ONLYOFFICE al mateix servidor amb Docker

Pas 4: connecteu NextCloud i ONLYOFFICE

En aquest pas, haureu d'instal·lar una aplicació per a NextCloud, que connecta la funcionalitat ONLYOFFICE. Comencem amb el tauler de control de l'aplicació a l'extrem superior dret del menú. Cerqueu l'aplicació ONLYOFFICE (a la secció "Oficina i text" o utilitzant la cerca), instal·leu-la i activeu-la.

Després d'això, aneu a Configuració a través del menú de l'extrem superior dret i hauríeu de trobar l'element ONLYOFFICE al menú esquerre. Introduïu-lo. Haureu d'introduir les adreces tal com s'indica a continuació.

Configuració de l'aplicació d'integracióConfiguració de NextCloud + ONLYOFFICE al mateix servidor amb Docker

La primera adreça s'utilitza per enllaçar alguns fitxers js i css directament des de l'aplicació que s'executa al navegador (això és el que necessitem per obrir l'accés al servei ONLYOFFICE mitjançant nginx). La clau secreta no s'utilitza perquè confiem més en la capa d'aïllament de Docker que en la clau d'autenticació persistent. El contenidor NextCloud utilitza la tercera adreça per connectar-se directament a l'API ONLYOFFICE i utilitza el nom d'amfitrió intern predeterminat de Docker. Bé, l'últim camp s'utilitza perquè ONLYOFFICE pugui tornar a fer sol·licituds a l'API NextCloud mitjançant una adreça IP externa o una adreça Docker interna si utilitzeu xarxes Docker, però en el nostre cas això no s'utilitza. Assegureu-vos que la configuració del vostre tallafoc permet aquest tipus d'interaccions.

Un cop desat, NextCloud provarà la connexió i, si tot és correcte, us mostrarà la configuració relacionada amb la integració, per exemple, quins tipus de fitxers es poden editar amb aquesta integració. Configura com creguis convenient.

El pas final: on buscar l'editor

Si torneu a les carpetes d'emmagatzematge al núvol i feu clic al "+" per crear un fitxer nou, se us oferirà una nova opció per crear un document, full de càlcul o presentació. Amb la seva ajuda, crearàs i podràs editar immediatament aquest tipus de fitxers amb ONLYOFFICE.

Menú de creació de fitxersConfiguració de NextCloud + ONLYOFFICE al mateix servidor amb Docker

Suplement 1

El contingut complet de docker-compose.yml es pot trobar aquí: https://pastebin.com/z1Ti1fTZ

Font: www.habr.com

Afegeix comentari