Configurando NextCloud + ONLYOFFICE no mesmo servidor com Docker

Olá Habr! Apresento a sua atenção a tradução do artigo "Configurando NextCloud e ONLYOFFICE em um único servidor com Docker".

É difícil subestimar o valor dos pacotes de escritório on-line, como o Google Docs e o armazenamento em nuvem, na vida das pessoas voltadas para a tecnologia. A tecnologia tornou-se tão difundida que até a Microsoft, que há muito domina o mercado de aplicações de escritório, concentrou-se recentemente no desenvolvimento da aplicação web Office 365 e em persuadir os utilizadores a mudarem para um modelo de subscrição para utilizarem os seus próprios serviços. Convidamos aqueles que estão interessados ​​no processo de instalação e configuração do seu próprio armazenamento em cat.

Há algum tempo, analisamos soluções de armazenamento em nuvem e suítes de escritório web de código aberto que poderiam ser facilmente implantadas para uso em uma microempresa. A principal motivação para manter toda a documentação online é reduzir ao mínimo a papelada e implementar boas práticas comerciais, apesar do baixo volume de transações. O outro lado da moeda é que alugar um servidor em nuvem para prestar esse serviço é menos seguro do que armazená-lo diretamente nas dependências da empresa, já que você não tem nenhum meio de auditar o acesso físico ao seu servidor ou ao tráfego. Portanto, criptografia ponta a ponta e software de código aberto também são necessários.

Levando em consideração todas as informações disponíveis sobre soluções open source, encontramos dois projetos ativos (com commits no repositório git dos últimos 12 meses) desenvolvidos para armazenamento em nuvem: NextCloud e OwnCloud, e a única suíte de escritório ONLYOFFICE ativa. Ambas as ferramentas de armazenamento em nuvem possuem aproximadamente a mesma funcionalidade, e a decisão de escolher o NextCloud foi baseada na existência de evidências de que ele pode ser integrado ao ONLYOFFICE para uma interação confortável do usuário com o software. No entanto, quando começámos a implementar os serviços, tornou-se evidente a falta de informação sobre a integração dos serviços acima mencionados. Encontramos 3 vídeos tutoriais sobre como integrar:

Nenhum dos três vídeos respondeu à questão de instalar o serviço de documentos ONLYOFFICE no mesmo servidor físico do NextCloud com um nginx compartilhado. Em vez disso, eles usaram técnicas de separação, como o uso de portas separadas para a API do serviço de documentos. Outra sugestão foi implantar um servidor separado para o Document Service, configurando manualmente a instância nginx integrada ao Document Service para instalar uma chave de acesso (uma chave de acesso pré-conhecida que confirma o direito de acesso à nuvem de dados) e certificados TLS. As abordagens acima não foram consideradas seguras e eficazes o suficiente, por isso integramos NextCloud, ONLYOFFICE e um nginx comum que separa solicitações por nomes de domínio usando docker-compose. Aqui estão informações passo a passo sobre como fazer isso.

Etapa 1: contêiner nginx

Esta é uma configuração muito simples, mas esta etapa requer mais trabalho para configurar o servidor proxy reverso. Primeiro criamos a configuração docker-compose para a imagem 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

Isso cria um contêiner com portas 80 e 443 abertas ao público, mapeia a configuração para nginx/nginx-vhost.conf e define um armazenamento para certificados gerados como certificados autoassinados ou usando o certbot do Let's encrypt em /nginx/certificates. Este local deve conter pastas para office.yourdomain.com e cloud.yourdomain.com, com arquivos fullchain1.pem e privkey1.pem em cada uma para a cadeia de certificados e a chave privada do servidor, respectivamente. Você pode ler mais sobre como gerar um certificado autoassinado aqui. www.akadia.com/services/ssh_test_certificate.html (renomear .key e .crt para .pem funciona sem converter a estrutura do arquivo para nginx).

Depois disso, definimos o arquivo vhost. Primeiro definimos o comportamento da porta 80 como um simples redirecionamento para https, porque não queremos permitir nenhum tráfego http

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

Em seguida, criamos dois servidores virtuais na porta 443 para nossos serviços:

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

Etapa 2: serviço de documentos

Agora precisamos adicionar o contêiner de serviço de documento ao nosso docker-compose.yml. Não há nada de especial para configurar aqui.

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

Mas não se esqueça de vincular o contêiner nginx ao serviço de documentos:

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

Etapa 3: NextCloud

Primeiro, adicione novos serviços:

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 adicione um link para nginx:

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

Agora é hora de carregar os contêineres.

docker-compose up -d  

Depois de um tempo, o nginx começará a redirecioná-lo para o front end NextCloud, que é a página de configuração padrão. Você precisará inserir o nome de usuário e a senha do seu primeiro usuário administrador e as credenciais do banco de dados fornecidas em docker-compose.yml. Assim que a configuração for concluída, você poderá fazer o login. No nosso caso, a espera demorou quase um minuto e exigiu uma atualização adicional da página de login antes que pudéssemos fazer login no serviço de nuvem.

Janela de configurações do serviço NextCloudConfigurando NextCloud + ONLYOFFICE no mesmo servidor com Docker

Etapa 4: Conectando NextCloud e ONLYOFFICE

Nesta etapa, você precisará instalar o aplicativo NextCloud, que conecta a funcionalidade ONLYOFFICE. Vamos começar com o painel de controle do aplicativo no canto superior direito do menu. Encontre o aplicativo ONLYOFFICE (em Office e texto ou usando a pesquisa), instale e ative-o.

Depois disso, vá para Configurações através do menu no canto superior direito e você deverá encontrar o item ONLYOFFICE no menu esquerdo. Entre nisso. Você precisará registrar os endereços conforme indicado abaixo.

Configurações do aplicativo de integraçãoConfigurando NextCloud + ONLYOFFICE no mesmo servidor com Docker

O primeiro endereço é usado para vincular alguns arquivos js e css diretamente do aplicativo em execução no navegador (é disso que precisamos para abrir o acesso ao serviço ONLYOFFICE através do nginx). A chave secreta não é usada porque confiamos mais na camada de isolamento do Docker do que na chave de autenticação persistente. O terceiro endereço é usado pelo contêiner NextCloud para se conectar diretamente à API ONLYOFFICE e usa o nome de host interno padrão do Docker. Bem, o último campo é usado para que o ONLYOFFICE possa fazer solicitações de volta à API NextCloud usando um endereço IP externo ou um endereço Docker interno se você estiver usando redes Docker, mas isso não é usado no nosso caso. Certifique-se de que as configurações do seu firewall permitem esse tipo de interação.

Após salvar, o NextCloud testará a conexão e, se tudo estiver correto, mostrará configurações relacionadas à integração – por exemplo, quais tipos de arquivos podem ser editados por esta integração. Personalize como achar melhor.

A etapa final: onde encontrar o editor

Se você voltar para suas pastas de armazenamento em nuvem e clicar em “+” para criar um novo arquivo, você terá uma nova opção para criar um documento, planilha ou apresentação. Com a ajuda deles, você criará e poderá editar imediatamente esses tipos de arquivos usando o ONLYOFFICE.

Menu de criação de arquivoConfigurando NextCloud + ONLYOFFICE no mesmo servidor com Docker

Complemento 1

O conteúdo completo de docker-compose.yml pode ser encontrado aqui: https://pastebin.com/z1Ti1fTZ

Fonte: habr.com

Adicionar um comentário