Tag: office

  • Integração de suíte office a Nextcloud

    Nextcloud tem um ecossistema com muitas possibilidades de aplicativos e funcionalidades adicionais que podem ser integradas. Uma das integrações mais comuns de serem feitas é com uma suíte office, permitindo edição e colaboração em documentos, planilhas e apresentações, como também é feito através do Google Workspace.

    Essa integração é feita conectando o Nextcloud a uma plataforma de colaboração e edição de documentos acessível via web. Existem duas principais plataformas como opções: ONLYOFFICE Docs Community e Collabora Online Developer Edition (CODE).

    Ambos têm uma UI familiar para usuários do Microsoft Office, ambos são compatíveis com o padrão Open Document Format (ODF), que engloba os formatos de arquivos .ods e .odt, e também com o Office Open XML (OOXML) da Microsoft, que engloba os formatos .xlsx e .docx.

    Enquanto o ONLYOFFICE é um projeto independente, o Collabora é um projeto baseado no LibreOffice, mas construído com uma UI diferente. Ambos também são distribuídos em formato Docker, o que permite uma facilidade de instalação e instruções independem do sistema operacional anfitrião.

    Eu já usei tanto o LibreOffice quanto o ONLYOFFICE Desktop Editors, versões offline das suítes e, enquanto um grande ponto forte do ONLYOFFICE é a compatibilidade com o padrão OOXML criado pela Microsoft, acabei aderindo ao LibreOffice por questão de desempenho.

    Como já me deparei com pequenas inconsistências de formatação ao criar um documento em uma suíte e abrir em outra, seguir com o Collabora foi mais adequado para manter uma boa compatibilidade com meus documentos existentes.

    A instalação foi feita com Docker através da minha instalação do Portainer. Ao criar um contêiner, defina o nome, a imagem a ser usada para a implantação e o mapeamento de portas.

    Nas configurações avançadas, defina as variáveis de ambiente:

    • domain – endereço do Nextcloud que irá utilizar a plataforma CODE, expresso como regex.
    • server_name – nome do servidor que hospeda o CODE e a porta exposta. A porta pode ser diferente da 9980 mapeada pelo docker, dependendo da regra de encaminhamento de porta no firewall OU do proxy reverso utilizado.
    • username e password – usuário e senha para o painel de administrador.

    Observações:

    O servidor precisa ter o mesmo domínio que o Nextcloud – nesse caso exemplo.com, caso contrário o Collabora retorna erros 403.

    Além disso, o Nextcloud precisa estar exposto na porta padrão HTTPS. Quando exposto em portas alternativas, essa porta é passada para o servidor CODE como parte da URL na requisição HTTP e o Collabora não identifica, recusando a conexão com código 403.

    Defina a política de reinicialização.

    E então, basta implantar o contêiner. Alternativamente, utilizando o Docker por linha de comando em vez do Portainer:

    docker run -t -d \
      -p 9980:9980 \
      -e "domain=nextcloud\\.exemplo\\.com" \
      -e "server_name=code.exemplo.com:2345" \
      --restart on-failure \
      --name CODE \
      collabora/code:latest

    A configuração do proxy reverso, além de necessária para minha infraestrutura, é recomendada e a configuração para o nginx é fornecida no próprio site do projeto. Adaptando para esse caso:

    server {
    
      listen 2345 ssl;
      listen [::]:2345 ssl;
      ssl_certificate /etc/letsencrypt/live/code.exemplo.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/code.exemplo.com/privkey.pem;
      server_name code.exemplo.com;
      
      location ^~ /browser {
        proxy_pass https://10.8.0.6:9980;
        proxy_set_header Host $host;
      }
     
      location ^~ /hosting/discovery {
        proxy_pass https://10.8.0.6:9980;
        proxy_set_header Host $host;
      }
      
      location ^~ /hosting/capabilities {
        proxy_pass https://10.8.0.6:9980;
        proxy_set_header Host $host;
      }
      
      location ~ ^/cool/(.*)/ws$ {
        proxy_pass https://10.8.0.6:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 36000s;
      }
      
      location ~ ^/cool {
        proxy_pass https://10.8.0.6:9980;
        proxy_set_header Host $host;
      }
      
      location ^~ /cool/adminws {
        proxy_pass https://10.8.0.6:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 36000s;
      }
    }

    No Nextcloud, basta habilitar o aplicativo Nextcloud Office e, nas configurações de administrador, adicionar a URL e porta do servidor CODE.

    Também é recomendado restringir a origem das requisições WOPI aceitas pelo Nextcloud ao IP do servidor CODE.

    Finalmente, o Nextcloud já deve estar pronto para abrir e editar documentos via web utilizando o Collabora.

    Você pode acompanhar informações de uso do servidor no painel de administrador com seu usuário e senha definidos anteriormente em:

    https://code.exemplo.com:2345/browser/dist/admin/admin.html