Olá Habr! Apresento a você a tradução do artigo
"Configurando o NextCloud e o ONLYOFFICE em um único servidor com o Docker" .
É difícil subestimar os benefícios dos pacotes de pacotes de escritório on-line, como o Google Docs e o armazenamento em nuvem na vida de pessoas orientadas para a tecnologia. As tecnologias se tornaram tão difundidas que até a Microsoft, que há muito domina o mercado de aplicativos para escritório, recentemente se concentrou no desenvolvimento do aplicativo Web Office 365 e em convencer os usuários a mudar para um modelo de assinatura usando seus próprios serviços. Aqueles que estão interessados no processo de instalação e configuração de seu próprio armazenamento são convidados a participar.
Há algum tempo, analisamos as soluções de armazenamento em nuvem e o pacote de aplicativos da Web de escritório de código aberto que poderiam ser facilmente implementados para uso em microempresas. A principal motivação para armazenar toda a documentação on-line é minimizar o volume do fluxo de trabalho em papel e implementar práticas comerciais positivas, apesar do pequeno volume de operações. O outro lado da moeda é que alugar um servidor em nuvem para fornecer esse serviço é menos seguro do que armazená-lo diretamente no local, já que você não tem meios de auditar o acesso físico ao servidor ou ao tráfego. Conseqüentemente, a criptografia de ponta a ponta e o software de código aberto também são necessários.
Levando em conta todas as informações disponíveis sobre soluções de código aberto, encontramos dois projetos existentes (com confirmações nos repositórios git nos últimos 12 meses) projetados para armazenamento em nuvem: NextCloud e OwnCloud e o único pacote de escritório ativo ONLYOFFICE. Ambas as ferramentas para armazenamento em nuvem têm 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 iniciamos a implantação dos serviços, a falta de informações sobre a integração dos serviços acima se tornou aparente. Encontramos 3 vídeos tutoriais sobre como integrar:
Nenhum dos três vídeos respondeu à pergunta de instalar o serviço de documentos ONLYOFFICE no mesmo servidor físico que o NextCloud com o nginx compartilhado. Em vez disso, eles usaram tecnologias de separação, como o uso de portas separadas para o serviço de documento da API. Outra opção proposta foi implantar um servidor separado para o serviço de documentos com configuração manual da instância nginx incorporada ao serviço de documentos para instalar a chave de acesso (uma chave de acesso conhecida anteriormente que confirma o acesso à nuvem de dados) e certificados TLS. As abordagens acima foram consideradas não seguras e pouco eficazes, por isso integramos o NextCloud, o ONLYOFFICE e o nginx comum, que compartilha solicitações por nomes de domínio usando o docker-compose. Aqui estão as informações passo a passo sobre como fazer isso.
Etapa 1: contêiner nginx
Esta é uma instalaçã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 as portas 80 e 443 abertas para acesso público, mapeia a configuração para nginx / nginx-vhost.conf e define o armazenamento de certificados gerados como certificados autoassinados ou usando o certificado Let's Go Encrypt de / nginx / certificates. Esse local deve conter pastas para office.yourdomain.com e cloud.yourdomain.com com os arquivos fullchain1.pem e privkey1.pem em cada um 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 o nginx).
Depois disso, definimos o arquivo vhost. Primeiro, definimos o comportamento da porta 80 como um redirecionamento simples para https, como 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 documento
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 esqueça de associar o contêiner nginx ao serviço de documento:
services: ... nginx: ... depends_on: - onlyoffice
Etapa 3: NextCloud
Primeiro, adicionamos 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 o link ao 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 frontend do NextCloud, que é a página de configuração padrão. Você precisará digitar o nome de usuário e a senha do seu primeiro usuário administrador e as credenciais do banco de dados que você especificou em docker-compose.yml.Depois que a configuração estiver concluída, você poderá efetuar login. No nosso caso, a espera levou quase um minuto e exigiu uma atualização adicional da página de login antes de podermos entrar no serviço em nuvem.
Janela Configurações do Serviço NextCloud Etapa 4: conectando o NextCloud e o ONLYOFFICE
Nesta etapa, você precisará instalar o aplicativo para 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 (na seção "Escritório e texto" ou use a pesquisa), instale e ative-o.
Depois disso, acesse Configurações através do menu no canto superior direito e você precisará encontrar o elemento ONLYOFFICE no menu esquerdo. Entre nisso. Você precisará registrar os endereços conforme indicado abaixo.
Configurações do aplicativo de integração O primeiro endereço é usado para vincular a alguns arquivos js e css diretamente do aplicativo em execução no navegador (é por isso que precisamos abrir o acesso ao serviço ONLYOFFICE via nginx). A chave privada não é usada porque confiamos mais na camada de isolamento do Docker do que na chave de autenticação permanente. O terceiro endereço é usado pelo contêiner NextCloud para conectar-se diretamente à API ONLYOFFICE e usa o nome do host interno padrão do Docker. Bem, o último campo é usado para que o ONLYOFFICE possa fazer solicitações de volta à API do NextCloud usando um endereço IP externo ou um endereço interno do Docker se você usar redes Docker, mas, no nosso caso, isso não é usado. Verifique se as configurações do firewall permitem esses tipos de interações.
Após salvar, o NextCloud testará a conexão e, se tudo estiver correto, mostrará as configurações relacionadas à integração - por exemplo, que tipos de arquivos podem ser editados por essa integração. Personalize como achar melhor.
A etapa final: onde procurar o editor
Se você retornar às pastas do seu armazenamento na nuvem e clicar em "+" para criar um novo arquivo, uma nova opção estará disponível para você criar um documento, tabela ou apresentação. Com a ajuda deles, você criará e poderá editar imediatamente esses tipos de arquivo usando o ONLYOFFICE.
Adição 1
O conteúdo completo do docker-compose.yml pode ser encontrado aqui:
https://pastebin.com/z1Ti1fTZ