Instalando o ONLYOFFICE Docs para Docker no KylinOS

Introdução

A versão Community Edition permite que você instale o ONLYOFFICE Docs em seu servidor local e integre os editores online diretamente com a plataforma de colaboração ONLYOFFICE Workspace ou com outros sistemas DMS de terceiros.

O ONLYOFFICE Docs é uma suíte de escritório online que compreende visualizadores e editores para documentos de texto, planilhas e apresentações, apresentando compatibilidade total nativa com os formatos Office Open XML (.docx, .xlsx, .pptx) e permitindo edição colaborativa e coautoria em tempo real.

Principais Recursos incluídos:

  • Document Editor (Editor de Textos)
  • Spreadsheet Editor (Editor de Planilhas)
  • Presentation Editor (Editor de Apresentações)
  • Visualizadores e editores otimizados para web móvel
  • Edição colaborativa simultânea (Coautoria)
  • Suporte avançado a hieróglifos e alfabetos internacionais
  • Suporte para todos os formatos populares: DOC, DOCX, TXT, ODT, RTF, ODP, EPUB, ODS, XLS, XLSX, CSV, PPTX e HTML

Para auditar a especificação detalhada de recursos, consulte a listagem da versão Community Edition no GitHub.

Ao utilizá-lo integrado ao ONLYOFFICE Workspace, você poderá:

  • Compartilhar arquivos em redes locais e nuvem;
  • Gerenciar permissões de segurança e direitos de acesso a documentos;
  • Incorporar documentos dinâmicos em portais corporativos e sites;
  • Visualizar e editar arquivos armazenados no Drive, Box, Dropbox, OneDrive e ownCloud conectados ao ONLYOFFICE.

A partir da versão 7.2, as imagens Docker do ONLYOFFICE Docs foram otimizadas e homologadas para execução no sistema operacional chinês Kylin Linux Advanced Server OS release V10. Este guia demonstrará o passo a passo para instalar a edição Community neste ambiente.


Requisitos de Sistema da Instância
  • CPU: Processador Dual-Core de 2 GHz ou superior.
  • Memória RAM: 4 GB ou mais.
  • Armazenamento (HDD/SSD): Pelo menos 40 GB de espaço livre em disco rígido.
  • Partição SWAP: Mínimo de 4 GB (a alocação real depende do SO host; quanto mais recursos disponíveis, melhor a estabilidade).
  • Sistema Operacional: Distribuição Linux arquitetura amd64 executando versão de kernel 3.10 ou posterior.
  • Docker: Qualquer versão estável suportada pelo KylinOS.

Instalando o ONLYOFFICE Docs no KylinOS

Configuração de DNS do Docker (Ambientes Offline): O daemon do Docker especifica os servidores DNS públicos do Google (8.8.8.8) por padrão. Caso o seu servidor de ONLYOFFICE Docs opere em uma infraestrutura isolada e sem acesso à Internet, recomendamos alterar o endereço DNS padrão do Docker para o IP do seu resolvedor DNS local.

Em sistemas baseados em Debian/Ubuntu, edite o arquivo /etc/default/docker e altere a seguinte linha:

docker_OPTS="--dns-local-ip"

Para sistemas operacionais corporativos baseados em RPM (como o KylinOS ou CentOS):

  1. Crie ou edite o arquivo de configuração de rede em /etc/docker/daemon.json e insira o seguinte conteúdo:
    { "dns" : [ "192.168.1.1" ] }
    (Substitua 192.168.1.1 pelo IP do servidor DNS da sua rede local).
  2. Reinicie o serviço do Docker para aplicar a nova tabela de rotas:
    sudo systemctl restart docker.service
1. Desabilite as restrições do SELinux

Por motivos de isolamento de contêineres e montagem de volumes, é necessário desabilitar as diretivas do SELinux no arquivo de configuração do sistema em /etc/selinux/config.

Abra o arquivo utilizando o editor de sua preferência (como nano ou vim), localize a linha de status e substitua o valor SELINUX=enforcing (ou permissive) por SELINUX=disabled. Salve as alterações.

Aplique um reboot no servidor para limpar o cache da memória. Ao reiniciar, valide se o SELinux está desativado executando:

sestatus

O retorno do console deve indicar: SELinux status: disabled.

2. Execute o contêiner do ONLYOFFICE Docs

Rode o comando de inicialização padrão para implantar a edição Community Edition no Docker:

sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=seu_jwt_secret_exclusivo onlyoffice/documentserver
Importante (Geração de Chaves JWT): A partir da v7.2, o sistema gera chaves criptográficas randômicas caso a variável não seja declarada de forma explícita. Isso significa que o Token JWT seria regenerado a cada reinicialização da máquina física ou VM, quebrando as conexões com a API de integração do seu app. Para mitigar esta vulnerabilidade de comunicação, declare sempre o seu segredo fixo utilizando a flag -e JWT_SECRET=seu_jwt_secret_exclusivo.

Caso precise desabilitar completamente a validação por tokens na sua rede de testes local, utilize a flag: -e JWT_ENABLED=false.

Nota de Segurança de Sandbox: O argumento --security-opt seccomp=unconfined é mandatório no KylinOS para desabilitar restrições de chamadas de sistema (syscalls) que bloqueiam componentes internos do contêiner. Para ambientes que exigem hardening avançado, você pode adotar o perfil customizado de seccomp oficial baixando o arquivo kylin-seccomp7.json diretamente dos repositórios do ONLYOFFICE.

Redirecionamento de Portas de Rede: Por padrão, o proxy interno do contêiner escuta na porta lógicas HTTP 80. Caso queira redirecionar o tráfego da máquina hospedeira para evitar conflitos de portas com outros servidores web ativos, basta mudar o mapeamento de portas (Host:Container) no comando de execução:
sudo docker run -i -t -d -p <NUMERO_DA_PORTA>:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=seu_jwt_secret_exclusivo onlyoffice/documentserver
Substitua o marcador <NUMERO_DA_PORTA> pela porta desejada (ex: 8080).

Isso instalará o ONLYOFFICE Docs e todas as dependências necessárias (a lista de tarefas executadas pode ser auditada no Dockerfile oficial do projeto).

3. Configure as exceções de Firewall (Firewalld)

Abra as regras do firewall local para liberar a escuta na porta mapeada (porta 80 padrão) e recarregue o motor de regras da máquina:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Pronto. Agora você pode abrir o navegador e digitar o endereço http://localhost (ou o IP da máquina) para acessar a interface inicial de boas-vindas do ONLYOFFICE Docs, que trará links de integração e documentação detalhada de chamadas de API.


Armazenando dados e logs fora dos contêineres (Volumes)

A arquitetura padrão do ONLYOFFICE Docs organiza e gera dados nos seguintes caminhos internos:

  • /var/log/onlyoffice — Logs de transações e erros de coautoria.
  • /var/www/onlyoffice/Data — Certificados SSL/TLS e chaves de licença.
  • /var/lib/onlyoffice — Caches de arquivos temporários manipulados pelos editores.
  • /var/lib/postgresql — Persistência de tabelas do banco de dados interno.
Boas Práticas de SysAdmin: Recomendamos fortemente que você realize a montagem de volumes externos vinculando estes diretórios diretamente a uma pasta persistente na máquina hospedeira. Isso garante que você possa atualizar ou reiniciar o contêiner do ONLYOFFICE Docs sem o risco de perder dados de arquivos ou logs.

Para expor e salvar as pastas em diretórios locais seguros do host, realize as montagens de volume utilizando as flags -v na execução do contêiner:

sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always \
    -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
    -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
    -e JWT_SECRET=seu_jwt_secret_exclusivo onlyoffice/documentserver

Aviso de Permissões: Caso a pasta de destino passada na máquina host ainda não exista, o Docker criará o diretório automaticamente, porém com privilégios restritos de root. Certifique-se de ajustar os donos e as permissões de gravação via comando chmod / chown para que os processos internos do contêiner gravem dados sem falhas de I/O.


Executando o ONLYOFFICE Docs utilizando SSL/HTTPS

Para tráfego seguro criptografado, você pode subir o contêiner mapeando a porta segura 443:

sudo docker run -i -t -d -p 443:443 --security-opt seccomp=unconfined --restart=always \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
    -e JWT_SECRET=seu_jwt_secret_exclusivo onlyoffice/documentserver

Para assegurar a comunicação contra interceptações de tráfego, você deve configurar uma chave privada (.key) e um certificado emitido (.crt). O NGINX interno do contêiner está programado de fábrica para buscar as assinaturas exatamente nestas localizações estruturais:

/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
Abordagem A: Geração de Certificados válidos automáticos com Certbot (Let's Encrypt)

Se o seu servidor estiver exposto publicamente na internet e possuir uma entrada de DNS apontando para ele, a forma mais prática de migrar para HTTPS é injetar as variáveis de automação do Let's Encrypt diretamente na inicialização do contêiner:

sudo docker run -i -t -d -p 80:80 -p 443:443 --security-opt seccomp=unconfined --restart=always \
    -e LETS_ENCRYPT_DOMAIN=seu-dominio-corporativo.com \
    -e LETS_ENCRYPT_MAIL=admin@seu-dominio.com \
    -e JWT_SECRET=seu_jwt_secret_exclusivo onlyoffice/documentserver

O ecossistema se encarregará de fazer a validação HTTP do domínio, baixar as chaves assinadas pela CA e reiniciar o proxy reverso automaticamente. Sua suíte estará acessível de forma segura em https://seu-dominio-corporativo.com.

Abordagem B: Geração Manual de Certificados Autoassinados

Caso a sua infraestrutura opere em uma Intranet fechada, você precisará forjar seus próprios certificados locais via OpenSSL seguindo três etapas no terminal:

Passo 1 (Chave Privada): Criar a chave RSA de 2048 bits:

openssl genrsa -out onlyoffice.key 2048

Passo 2 (CSR): Gerar a solicitação de assinatura declarando os metadados da organização:

openssl req -new -key onlyoffice.key -out onlyoffice.csr

Passo 3 (Assinatura): Assinar digitalmente o certificado estendendo a validade para 365 dias:

openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt

Você gerou agora um certificado SSL válido por 365 dias.

Fortalecendo a segurança do servidor

Passo 4 (Hardening Diffie-Hellman): Gere parâmetros DHStrong mais robustos para mitigar vulnerabilidades de criptografia fraca no TLS:

openssl dhparam -out dhparam.pem 2048
Instalação física dos arquivos gerados

Dos quatro arquivos gerados acima, você precisa instalar os arquivos onlyoffice.key, onlyoffice.crt e dhparam.pem no servidor onlyoffice. O arquivo CSR não é necessário, mas certifique-se de fazer backup seguro do arquivo (caso você precise dele novamente).

O caminho padrão que o aplicativo onlyoffice está configurado para procurar os certificados SSL é em /var/www/onlyoffice/Data/certs, isso pode, no entanto, ser alterado usando as opções de configuração SSL_KEY_PATH, SSL_CERTIFICATE_PATH e SSL_DHPARAM_PATH.

O caminho /var/www/onlyoffice/Data/ é o caminho do armazenamento de dados, o que significa que você precisa criar uma pasta chamada certs dentro de /app/onlyoffice/DocumentServer/data/ e copiar os arquivos para ela e, como medida de segurança, você atualizará a permissão no arquivo onlyoffice.key para ser legível apenas pelo proprietário.

mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

E reinicie o contêiner Docker:

sudo docker restart {{DOCUMENT_SERVER_ID}}

Você está agora a apenas um passo de ter nosso aplicativo protegido.

Parâmetros de configuração disponíveis
Consulte as opções do comando docker run para a flag --env-file, onde você pode especificar todas as variáveis de ambiente necessárias em um único arquivo. Isso evitará que você escreva um comando docker run potencialmente longo.

Abaixo está a lista completa de parâmetros que podem ser definidos usando variáveis de ambiente.

  • ONLYOFFICE_HTTPS_HSTS_ENABLED: Opção de configuração avançada para desativar a configuração HSTS. Aplicável apenas quando SSL está em uso. Padrão: true.
  • ONLYOFFICE_HTTPS_HSTS_MAXAGE: Opção de configuração avançada para definir o max-age do HSTS na configuração vHost NGINX do onlyoffice. Aplicável apenas quando SSL está em uso. Padrão: 31536000.
  • SSL_CERTIFICATE_PATH: O caminho para o certificado SSL a ser usado. Padrão: /var/www/onlyoffice/Data/certs/tls.crt.
  • SSL_KEY_PATH: O caminho para a chave privada do certificado SSL. Padrão: /var/www/onlyoffice/Data/certs/tls.key.
  • SSL_DHPARAM_PATH: O caminho para o parâmetro Diffie-Hellman. Padrão: /var/www/onlyoffice/Data/certs/dhparam.pem.
  • SSL_VERIFY_CLIENT: Habilita a verificação de certificados de cliente usando o arquivo CA_CERTIFICATES_PATH. Padrão: false.
  • DB_TYPE: O tipo de banco de dados. Valores suportados são postgres, mariadb ou mysql. Padrão: postgres.
  • DB_HOST: O endereço IP ou o nome do host onde o servidor de banco de dados está sendo executado.
  • DB_PORT: O número da porta do servidor de banco de dados.
  • DB_NAME: O nome de um banco de dados a ser criado na inicialização da imagem.
  • DB_USER: O novo nome de usuário com permissões de superusuário para a conta do banco de dados.
  • DB_PWD: A senha definida para a conta do banco de dados.
  • AMQP_URI: O AMQP URI para conectar ao servidor de message broker.
  • AMQP_TYPE: O tipo de message broker. Valores suportados são rabbitmq ou activemq. Padrão: rabbitmq.
  • REDIS_SERVER_HOST: O endereço IP ou o nome do host onde o servidor Redis está sendo executado.
  • REDIS_SERVER_PORT: O número da porta do servidor Redis.
  • NGINX_WORKER_PROCESSES: Define o número de processos worker do NGINX.
  • NGINX_WORKER_CONNECTIONS: Define o número máximo de conexões simultâneas que podem ser abertas por um processo worker do NGINX.
  • SECURE_LINK_SECRET: Define o segredo para a diretiva de configuração nginx secure_link_md5. Padrão: string aleatória.
  • JWT_ENABLED: Especifica a habilitação da validação de JSON web token pelo ONLYOFFICE Docs. Padrão: true.
  • JWT_SECRET: Define a chave secreta para validar o JSON web token na solicitação ao ONLYOFFICE Docs. Padrão: valor aleatório.
  • JWT_HEADER: Define o cabeçalho HTTP que será usado para enviar o JSON web token. Padrão: Authorization.
  • JWT_IN_BODY: Especifica a habilitação da validação de token no corpo da solicitação ao ONLYOFFICE Docs. Padrão: false.
  • WOPI_ENABLED: Especifica a habilitação dos manipuladores wopi. Padrão: false.
  • USE_UNAUTHORIZED_STORAGE: Defina como true se estiver usando certificados autoassinados para seu servidor de armazenamento, por exemplo, Nextcloud. Padrão: false.
  • GENERATE_FONTS: Quando true, regenera a lista de fontes e as miniaturas de fontes etc. a cada início. Padrão: true.
  • METRICS_ENABLED: Especifica a habilitação do StatsD para o ONLYOFFICE Docs. Padrão: false.
  • METRICS_HOST: Define o host de escuta do StatsD. Padrão: localhost.
  • METRICS_PORT: Define a porta de escuta do StatsD. Padrão: 8125.
  • METRICS_PREFIX: Define o prefixo de métricas do StatsD para serviços backend. Padrão: ds..
  • LETS_ENCRYPT_DOMAIN: Define o domínio para o certificado Let's Encrypt.
  • LETS_ENCRYPT_MAIL: Define o endereço de e-mail do administrador do domínio para o certificado Let's Encrypt.
Artigo com o tag:
Veja todas as etiquetas