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











