Configurando NextCloud + ONLYOFFICE no mesmo servidor con Docker

Ola Habr! Presento á súa atención a tradución do artigo "Configurando NextCloud e ONLYOFFICE nun único servidor con Docker".

É difícil subestimar o valor das suites ofimáticas en liña como Google Docs e o almacenamento na nube na vida das persoas orientadas á tecnoloxía. A tecnoloxía estendeuse tanto que incluso Microsoft, que domina durante moito tempo o mercado das aplicacións ofimáticas, centrouse recentemente en desenvolver a aplicación web Office 365 e persuadir aos usuarios para que cambien a un modelo de subscrición para utilizar os seus propios servizos. Convidamos a aqueles que estean interesados ​​no proceso de instalación e configuración do seu propio almacenamento baixo cat.

Hai algún tempo analizamos solucións de almacenamento na nube e paquetes ofimáticos web de código aberto que se podían despregar facilmente para usar nunha microempresa. A principal motivación para manter toda a documentación en liña é reducir ao mínimo os trámites e implementar boas prácticas comerciais a pesar do baixo volume de transaccións. A outra cara da moeda é que alugar un servidor na nube para prestar este servizo é menos seguro que gardalo directamente nas instalacións da empresa, xa que non tes ningún medio para auditar o acceso físico ao teu servidor ou o tráfico. Polo tanto, tamén se require o cifrado de extremo a extremo e o software de código aberto.

Tendo en conta toda a información dispoñible sobre solucións de código aberto, atopamos dous proxectos activos (con commits no repositorio de git durante os últimos 12 meses) desenvolvidos para o almacenamento na nube: NextCloud e OwnCloud, e a única suite ofimática activa de ONLYOFFICE. Ambas as ferramentas de almacenamento na nube teñen aproximadamente a mesma funcionalidade, e a decisión de escoller NextCloud baseouse na existencia de probas de que se pode integrar con ONLYOFFICE para unha cómoda interacción do usuario co software. Non obstante, cando comezamos a implantar os servizos, fíxose patente a falta de información sobre a integración dos servizos anteriores. Atopamos 3 vídeos titoriales sobre como integrar:

Ningún dos tres vídeos respondeu á pregunta de instalar o servizo de documentos ONLYOFFICE no mesmo servidor físico que NextCloud cun nginx compartido. Pola contra, utilizaron técnicas de separación como o uso de portos separados para a API do servizo de documentos. Outra suxestión foi implantar un servidor separado para Document Service, configurando manualmente a instancia nginx integrada en Document Service para instalar unha clave de acceso (unha clave de acceso precoñecida que confirma o dereito de acceso á nube de datos) e certificados TLS. Os enfoques anteriores consideráronse non seguros e non o suficientemente eficaces, polo que integramos NextCloud, ONLYOFFICE e un nginx común que separa as solicitudes por nomes de dominio mediante docker-compose. Aquí tes información paso a paso sobre como facelo.

Paso 1: contedor nginx

Esta é unha configuración moi sinxela, pero este paso require máis traballo para configurar o servidor proxy inverso. Primeiro creamos a configuración docker-compose para a imaxe 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

Isto crea un contenedor cos portos 80 e 443 abertos ao público, mapea a configuración a nginx/nginx-vhost.conf e define unha tenda para os certificados xerados como certificados autoasinados ou usando o certbot de Let's encrypt en /nginx/certificates. Esta localización debe conter cartafoles para office.yourdomain.com e cloud.yourdomain.com, con ficheiros fullchain1.pem e privkey1.pem en cada un para a cadea de certificados e a chave privada do servidor, respectivamente. Podes ler máis sobre como xerar un certificado autoasinado aquí. www.akadia.com/services/ssh_test_certificate.html (Renomear .key e .crt a .pem funciona sen converter a estrutura de ficheiros para nginx).

Despois diso, definimos o ficheiro vhost. Primeiro definimos o comportamento do porto 80 como unha simple redirección a https, porque non queremos permitir ningún tráfico http

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

Despois creamos dous servidores virtuais no porto 443 para os nosos servizos:

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

Paso 2: servizo de documentos

Agora necesitamos engadir o contedor do servizo de documentos ao noso docker-compose.yml. Non hai nada especial que configurar aquí.

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

Pero non esquezas vincular o contedor nginx ao servizo de documentos:

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

Paso 3: NextCloud

En primeiro lugar, engade novos servizos:

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

e engade unha ligazón a nginx:

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

Agora toca cargar os contedores.

docker-compose up -d  

Despois dun tempo, nginx comezará a redirixilo á interface de NextCloud, que é a páxina de configuración predeterminada. Deberá introducir o nome de usuario e o contrasinal do seu primeiro usuario administrador e as credenciais da base de datos que proporcionou en docker-compose.yml Unha vez que se complete a configuración, poderá iniciar sesión. No noso caso, a espera levou case un minuto e requiriu unha actualización adicional da páxina de inicio de sesión antes de poder iniciar sesión no servizo na nube.

Ventá de configuración do servizo NextCloudConfigurando NextCloud + ONLYOFFICE no mesmo servidor con Docker

Paso 4: Conectando NextCloud e ONLYOFFICE

Neste paso, terás que instalar a aplicación para NextCloud, que conecta a funcionalidade ONLYOFFICE. Imos comezar co panel de control da aplicación na esquina superior dereita do menú. Busca a aplicación ONLYOFFICE (en Office e texto ou usando a busca), instálaa e actívaa.

Despois diso, vai a Configuración a través do menú da esquina superior dereita e deberías atopar o elemento ONLYOFFICE no menú esquerdo. Entra nel. Deberá rexistrar os enderezos como se indica a continuación.

Configuración da aplicación de integraciónConfigurando NextCloud + ONLYOFFICE no mesmo servidor con Docker

O primeiro enderezo utilízase para enlazar algúns ficheiros js e css directamente desde a aplicación que se executa no navegador (isto é o que necesitamos para abrir o acceso ao servizo ONLYOFFICE a través de nginx). Non se utiliza a clave secreta porque confiamos máis na capa de illamento de Docker que na clave de autenticación persistente. O contedor NextCloud usa o terceiro enderezo para conectarse directamente á API de ONLYOFFICE e usa o nome de host interno predeterminado de Docker. Ben, o último campo úsase para que ONLYOFFICE poida facer solicitudes de volta á API de NextCloud mediante un enderezo IP externo ou un enderezo interno de Docker se está a usar redes Docker, pero isto non se usa no noso caso. Asegúrate de que a configuración do teu firewall permite este tipo de interaccións.

Despois de gardar, NextCloud probará a conexión e, se todo é correcto, mostrarache a configuración relacionada coa integración, por exemplo, que tipos de ficheiros se poden editar con esta integración. Personaliza como creas oportuno.

O paso final: onde atopar o editor

Se volves aos teus cartafoles de almacenamento na nube e fai clic no "+" para crear un novo ficheiro, terás unha nova opción para crear un documento, folla de cálculo ou presentación. Coa súa axuda, creará e inmediatamente poderá editar este tipo de ficheiros usando ONLYOFFICE.

Menú de creación de ficheirosConfigurando NextCloud + ONLYOFFICE no mesmo servidor con Docker

Suplemento 1

O contido completo de docker-compose.yml pódese atopar aquí: https://pastebin.com/z1Ti1fTZ

Fonte: www.habr.com

Engadir un comentario