Instalando o ONLYOFFICE Docs para Docker no KylinOS
Introdução
A Community Edition permite que você instale o ONLYOFFICE Docs no seu servidor local e integre os editores online com a plataforma de colaboração ONLYOFFICE ou com outros sistemas populares (veja a lista detalhada de recursos). A partir da versão 7.2, as imagens Docker do ONLYOFFICE Docs foram reformuladas para execução no Kylin Linux Advanced Server OS release V10; este guia mostrará como instalar a versão Docker do ONLYOFFICE Docs Community Edition no KylinOS.
Requisitos do sistema
- CPU: dual core 2 GHz ou melhor
- RAM: 4 GB ou mais
- HDD: pelo menos 40 GB de espaço livre
- SWAP: pelo menos 4 GB, mas depende do sistema operacional do host. Mais é melhor
- OS: distribuição Linux amd64 com versão do kernel 3.10 ou posterior
- Docker: qualquer versão suportada pelo KylinOS
Instalando o ONLYOFFICE Docs
O Docker especifica os servidores DNS do Google por padrão. Se o seu ONLYOFFICE Docs não tiver acesso à Internet, recomendamos que você altere o endereço DNS padrão do Docker para o endereço do seu servidor DNS local. Para fazer isso, vá para o arquivo /etc/default/docker e altere o endereço IP na seguinte linha para o endereço IP de um servidor DNS na sua rede local:
docker_OPTS="--dns 8.8.8.8"
Para sistemas operacionais baseados em RPM como o CentOS:
-
Crie o arquivo de configuração
/etc/docker/daemon.jsoncom o seguinte conteúdo:{ "dns" : [ "8.8.8.8" ] } -
Reinicie o serviço Docker:
sudo systemctl restart docker.service
Desabilitar o SELinux
Você precisa desabilitar o SELinux no arquivo de configuração /etc/selinux/config.
Abra o arquivo /etc/selinux/config utilizando qualquer editor de texto, substitua a string SELINUX=enforcing ou SELINUX=permissive por SELINUX=disabled e salve as alterações.
Reinicie o servidor para que as alterações entrem em vigor. Certifique-se de que o SELinux está desabilitado:
[root@test ~]# sestatus
SELinux status: disabled
Instalar o ONLYOFFICE Docs
Execute o seguinte comando para instalar o ONLYOFFICE Docs:
sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
A partir da versão 7.2, adicionamos uma geração aleatória de segredo JWT. Se o segredo JWT não for especificado com a variável de ambiente, ele será regenerado a cada reinicialização de VMs ou servidores físicos, o que pode causar problemas nas integrações. Para evitar esse problema, especifique seu próprio valor em -e JWT_SECRET=my_jwt_secret.
Se você não for usar JWT na sua instalação, use -e JWT_ENABLED=false.
A chave --security-opt seccomp=unconfined é necessária para desabilitar os perfis de segurança do contêiner. Mais detalhes podem ser encontrados aqui.
Você também pode usar o nosso perfil de segurança personalizado: kylin-seccomp7.json.
Por padrão, o ONLYOFFICE Docs escuta as conexões recebidas usando a porta 80. A partir da versão 4.3, você pode alterar a porta para o ONLYOFFICE Docs se planeja usá-la em vez da padrão. Isso pode ser facilmente feito alterando a porta de mapeamento durante a instalação:
sudo docker run -i -t -d -p <PORT_NUMBER>:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
Onde <PORT_NUMBER> é o número da porta que você deseja que o ONLYOFFICE Docs use.
Isso instalará o ONLYOFFICE Docs e todas as dependências necessárias (a lista do que está sendo feito pelo script pode ser encontrada aqui).
Adicionar uma exceção ao firewall
Você também precisa adicionar uma exceção ao serviço firewalld.service:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
Concluída a configuração, você pode inserir http://localhost na barra de endereços do seu navegador para abrir a página de boas-vindas do ONLYOFFICE Docs, onde encontrará mais instruções sobre como ativar os exemplos de documentos ou integrar os editores online na sua aplicação web usando a API fornecida.
Armazenando dados fora dos contêineres
Todos os dados são armazenados em diretórios especialmente designados, volumes de dados, na seguinte localização:
/var/log/onlyofficepara logs do ONLYOFFICE Docs/var/www/onlyoffice/Datapara certificados/var/lib/onlyofficepara cache de arquivos
Recomendamos fortemente que você armazene os dados fora dos contêineres Docker na máquina host, pois isso permite que você atualize facilmente o ONLYOFFICE Docs quando uma nova versão for lançada, sem perder seus dados.
Para acessar seus dados localizados fora do contêiner, você precisa montar os volumes. Isso pode ser feito especificando a opção -v no comando docker run.
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
Observe que, caso você esteja tentando montar pastas que ainda não foram criadas, essas pastas serão criadas, mas o acesso a elas será limitado. Você precisará alterar manualmente seus direitos de acesso.
Normalmente, você não precisa armazenar dados do contêiner porque a operação do contêiner não depende do seu estado. Salvar dados será útil:
- para fácil acesso aos dados do contêiner, como logs;
- para remover o limite de tamanho dos dados dentro do contêiner.
Executando o ONLYOFFICE Docs usando HTTPS
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=my_jwt_secret onlyoffice/documentserver
O acesso ao aplicativo ONLYOFFICE pode ser protegido usando SSL para evitar acesso não autorizado. Embora um certificado SSL certificado por uma CA permita a verificação de confiança via CA, certificados autoassinados também podem fornecer um nível igual de verificação de confiança, desde que cada cliente tome algumas medidas adicionais para verificar a identidade do seu site. As instruções para alcançar isso são fornecidas abaixo.
Para proteger o aplicativo via SSL, basicamente são necessárias duas coisas:
- Chave privada (.key)
- Certificado SSL (.crt)
Portanto, você precisa criar e instalar os seguintes arquivos:
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
Ao usar certificados certificados por CA (por exemplo, Let's Encrypt), esses arquivos são fornecidos a você pela CA. Se você estiver usando certificados autoassinados, precisará gerar esses arquivos você mesmo.
Mudando o ONLYOFFICE Docs para HTTPS usando certbot
A maneira mais fácil de mudar o ONLYOFFICE Docs para HTTPS é obter automaticamente certificados SSL do Let's Encrypt usando o certbot.
Execute o contêiner Docker do ONLYOFFICE Docs, especificando as portas 80 e 443 e definindo seus próprios valores para as variáveis:
sudo docker run -i -t -d -p 80:80 -p 443:443 --security-opt seccomp=unconfined --restart=always \
-e LETS_ENCRYPT_DOMAIN=yourdomain.com -e LETS_ENCRYPT_MAIL=email@example.com -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
Onde:
- LETS_ENCRYPT_DOMAIN - um nome de domínio a ser usado para o certificado.
- LETS_ENCRYPT_MAIL - um email usado para registro e contato de recuperação.
O certificado assinado pela CA letsencrypt.org será gerado e instalado automaticamente em seu servidor. Agora, seu ONLYOFFICE Docs deve estar disponível no endereço https://yourdomain.com.
Geração de certificados autoassinados
A geração de certificados SSL autoassinados envolve um procedimento simples de 3 etapas:
ETAPA 1: Crie a chave privada do servidor
openssl genrsa -out onlyoffice.key 2048
ETAPA 2: Crie a solicitação de assinatura de certificado (CSR)
openssl req -new -key onlyoffice.key -out onlyoffice.csr
ETAPA 3: Assine o certificado usando a chave privada e o CSR
openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
Agora você gerou um certificado SSL válido por 365 dias.
Fortalecendo a segurança do servidor
Esta seção fornece instruções para fortalecer a segurança do seu servidor.
Para isso, você precisa gerar parâmetros DHE mais fortes.
openssl dhparam -out dhparam.pem 2048
Instalação dos certificados SSL
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 um backup seguro do arquivo (caso precise dele novamente).
O caminho padrão que a aplicação onlyoffice está configurada para procurar os certificados SSL é /var/www/onlyoffice/Data/certs, no entanto, isso pode 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ê deve criar uma pasta chamada certs dentro de /app/onlyoffice/DocumentServer/data/ e copiar os arquivos para dentro dela e, como medida de segurança, você atualizará a permissão no arquivo onlyoffice.key para que seja lido 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}}
Agora você está a apenas um passo de ter nossa aplicação segura.
Parâmetros de configuração disponíveis
Para evitar escrever um comando docker run potencialmente longo, você pode armazenar todas as variáveis de ambiente em um arquivo de texto simples e passá-lo usando a flag --env-file:
sudo docker run ... --env-file /path/to/your.env onlyoffice/documentserver
Abaixo está a lista completa de parâmetros que podem ser configurados 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 o SSL está em uso. O padrão é
true. - ONLYOFFICE_HTTPS_HSTS_MAXAGE: Opção de configuração avançada para definir o tempo máximo de HSTS na configuração do vHost NGINX do onlyoffice. Aplicável apenas quando o SSL está em uso. O padrão é
31536000. - SSL_CERTIFICATE_PATH: O caminho para o certificado SSL a ser usado. O padrão é
/var/www/onlyoffice/Data/certs/tls.crt. - SSL_KEY_PATH: O caminho para a chave privada do certificado SSL. O padrão é
/var/www/onlyoffice/Data/certs/tls.key. - SSL_DHPARAM_PATH: O caminho para o parâmetro Diffie-Hellman. O padrão é
/var/www/onlyoffice/Data/certs/dhparam.pem. - SSL_VERIFY_CLIENT: Habilitar verificação de certificados de cliente usando o arquivo
CA_CERTIFICATES_PATH. O padrão éfalse. - NGINX_WORKER_PROCESSES: Define o número de processos de trabalho do NGINX.
- NGINX_WORKER_CONNECTIONS: Define o número máximo de conexões simultâneas que podem ser abertas por um processo de trabalho do NGINX.
- SECURE_LINK_SECRET: Define o segredo para a diretiva de configuração nginx secure_link_md5. O padrão é
random string. - JWT_ENABLED: Especifica a habilitação da validação do token web JSON pelo ONLYOFFICE Docs. O padrão é
true. - JWT_SECRET: Define a chave secreta para validar o token web JSON na solicitação para o ONLYOFFICE Docs. O padrão é valor aleatório.
- JWT_HEADER: Define o cabeçalho HTTP que será usado para enviar o token web JSON. O padrão é
Authorization. - JWT_IN_BODY: Especifica a habilitação da validação do token no corpo da solicitação para o ONLYOFFICE Docs. O padrão é
false. - WOPI_ENABLED: Especifica a habilitação dos manipuladores wopi. O padrão é
false. - USE_UNAUTHORIZED_STORAGE: Defina como
truese estiver usando certificados autoassinados para seu servidor de armazenamento, por exemplo, Nextcloud. O padrão éfalse. - GENERATE_FONTS: Quando
true, regenera a lista de fontes e as miniaturas das fontes, etc., a cada início. O padrão étrue. - METRICS_ENABLED: Especifica se o StatsD está habilitado para o ONLYOFFICE Docs. O padrão é
false. - METRICS_HOST: Define o host de escuta do StatsD. O padrão é
localhost. - METRICS_PORT: Define a porta de escuta do StatsD. O padrão é
8125. - METRICS_PREFIX: Define o prefixo de métricas do StatsD para serviços de backend. O 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.