Skip to content

Latest commit

 

History

History
211 lines (163 loc) · 8.81 KB

README.md

File metadata and controls

211 lines (163 loc) · 8.81 KB

Docker - Nextcloud

Executando Nextcloud em docker + Nginx Proxy Manager + Redis + Postgres + Onlyoffice

Para quem deseja utilizar um servidor de arquivos privado e seguro de forma simples, rodando em conteiners.

Configuração organizada e separada

Organizei toda a configuração em pastas, cada uma contendo um docker-compose.yml, exceto a pasta Agendamento que contém os arquivos para agendar tarefaz do Nextcloud no cron utilizando o Systemd.

  • Pasta Nextcloud (Contém o docker-compose.yml contendo os conteines: Nextcloud, Postgres e Redis, e o onlyofice.yml contendo o conteiner do Onlyofice)
  • Pasta Nginx Proxy Manager (contém o docker-compose contendo o Ngnix Proxy Manager)
  • Pasta Agendamentos (contém os arquivos do Systemd para manter o cron do Nextcloud atualizado)

Pré-requesitos:

docker, docker-compose e git

Pelo menos dois domínios: um para o Nextcloud e um para o Onlyoffice. Opcionalmente pode ter mais um domínio para o Nginx Proxy Manager (Local aonde serão configurados todos os domínios vinculados ao docker, já com SSL (Let's Encrypt)). Caso não queira gastar com um domínio, pode contratar um gratuitamente aqui: https://www.freenom.com/

Baixar os arquivos para sua máquina

Comece clonando o repositório nextcloud com:
git clone https://github.com/talesam/nextcloud.git

Todos os arquivos que precisa estará dentro do diretório nextcloud

Liberando Firewall

Caso esteja com firewall ativo, libere as portas 80, 81 e 443. Se estiver usando o ufw, isso pode ser feito da seguinte maneira:

sudo ufw allow 80,81,443/tcp

Configuração e execução do Nginx Proxy Manager

Acesse o diretório Nginx Proxy Manager e execute o seguinte comando para subir o Nginx Proxy Manager:

docker-compose up -d

Abra o seu navegador para acessar o Nginx Proxy Manager

Acessando o NPM
IP_HOST:81

Por exemplo:
121.225.31.48:81

Na tela de login coloque os seguintes dados para acessar

login: [email protected]
Senha: changeme
Captura de tela de 2021-03-28 19-51-11
Após a tela de login, insira um email válido e defina uma senha para o seu usuário.

OPCIONAL - Definindo um domínio para o npm (Ngnix Proxy manager)
Não vou explicar aqui como configurar um domínio, caso não saiba como fazer, pesquise na web.
Configure de acordo com a imagem abaixo, altere apenas o domínio para o seu.

Domínio para NPM
Forward Hostname / IP: npm-proxy
Forward Port: 81

Captura de tela de 2021-03-28 20-14-18

Na aba SSL deixe como na imagem a abaixo e clique em salvar.
Captura de tela de 2021-03-28 20-20-11

Você deverá ter uma imagem semelhante a essa: Captura de tela de 2021-03-28 20-22-29

Configuração e execução do Nextcloud

Acesse o diretório Nextcloud e edite o arquivo db.env. Altere YOU_PASSWORD_POSTGRES para a senha que desejar e salve. Em seguida edite o arquivo docker-compose.yml e altere YOU_PASSWORD_REDIS para a senha que desejar e salve. Rode o seguinte comando para subir os conteiners do Nextcloud, Ngnix, Redis e OnlyOffice:

docker-compose -f docker-compose.yml -f onlyofice.yml up -d

Confiruração de domínio do NextCloud no NPM

Acesse Hosts -> Proxy Hosts -> Add Proxy Host para adicionar um novo domínio.

Aba Details Configuração
Domain Names seu_dominio.com
Scheme http
Forward Hostname / IP nextcloud
Forward Port 80

Ative as outras 3 opções como na imagema abaixo:
Captura de tela de 2021-03-29 00-25-01

Na aba SSL, deixe como na imagem abaixo ou ative mais alguma opção se preferir:
Captura de tela de 2021-03-29 00-26-21

  • Após finalizar, verifique se as opções de SSL estão ativas, senão ative-as.

Na aba Advanced insira o seguinte conteúdo e salve:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 16384m;
client_max_body_size 0;

location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }

Instalação e configuração do sistema NextCloud

Acesse o domínio configurado, defina um nome de usuário e senha, e finalize a configuração inicial.

Edite o arquivo config.php do NextCloud para acrescentar algumas opções no final. Aqui irão entrar algumas correções, melhorias.
nano volumes/nextcloud/config/config.php

Acrescente no início do arquivo o conteúdo do Redis:

'memcache.local' => '\\OC\\Memcache\\APCu',
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => 
array (
  'host' => 'redis',
  'port' => 6379,
  'timeout' => 0.0,
  'password' => 'SENHA_DO_REDIS',

Inclua no final do arquivo

'trashbin_retention_obligation' => '30, 60',
'overwriteprotocol' => 'https',
'maintenance' => false,

Derrube e levante os conteiners para ativar as novas configurações:

docker-compose down && docker-compose up -d
#### Verificação do NextCloud (imagemagick)
Após fazer a verificação será exibido um aviso sobre o **imagemagick**, caso queira obter mais informações sobre essa mensagem, acesse o seguinte link: https://github.com/nextcloud/docker/issues/1414#
- Basicamente essa mensagem pode ser ignorada, não irá fazer diferença alguma no funcionamento do NextCloud.

Configuração do Onlyoffice

Primeiro começe configurando um domínio para o Onlyoffice no NPM. As configurações são semelhantes a do NPM, altere apenas os campos abaixo, o demais deixe igual ao NPM nas imagens acima.

Domínio para Onlyoffice
Forward Hostname / IP: onlyoffice
Forward Port: 80

Configurando Onlyoffice no NextCloud

Acesse o seu NextCloud como admin, vá em Configurações e em seguida em ONLYOFFICE.

Configuração do OnlyOffice
Endereço do Serviço de Edição de Documentos: Domínio do OnlyOffice Configurado no NPM
Endereço do Serviço de Edição de Documentos para pedidos internos do servidor: Domínio do OnlyOffice Configurado no NPM
Endereço do servidor para pedidos internos do Serviço de Edição de Documentos: Domínio do NextCloud configurado no NPM

Configurações de documentos do OnlyOffice

Segue algumas configurações pessoais de como o OnlyOffice irá se comportar e quais arquivos terá suporte:

Captura de tela de 2021-04-05 18-29-57


Agendamento do cron no Nexcloud por Systemd

Cheguei a testar diretamente no cron e não fica tão bom quanto fazer no Systemd, o qual possui mais recursos e é muito mais leve. Comece copiando os arquivos nextcloudcron.service e nextcloudcron.timer que estão dentro do diretório Agendamento para /etc/systemd/system/ e então execute:

(Ativar o serviço no boot do sistema)
systemctl enable nextcloudcron.timer

(Iniciar o serviço já!)
systemctl start nextcloudcron.timer

(Verificar o status do serviço)
systemctl status nextcloudcron.timer

No arquivo nextcloudcron.timer a variável (OnUnitActiveSec=3min) está setada para atualizar o cron no NextCloud a cada 3 minutos, o valor padrão é 5 minutos. Altere para o valor que desejar.