Para quem deseja utilizar um servidor de arquivos privado e seguro de forma simples, rodando em conteiners.
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)
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/
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
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
Acesse o diretório Nginx Proxy Manager e execute o seguinte comando para subir o Nginx Proxy Manager:
docker-compose up -d
Acessando o NPM |
---|
IP_HOST:81 |
Por exemplo:
121.225.31.48:81
login: [email protected]
Senha: changeme
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 |
Na aba SSL deixe como na imagem a abaixo e clique em salvar.
Você deverá ter uma imagem semelhante a essa:
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
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:
Na aba SSL, deixe como na imagem abaixo ou ative mais alguma opção se preferir:
- 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;
}
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,
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.
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 |
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 |
Segue algumas configurações pessoais de como o OnlyOffice irá se comportar e quais arquivos terá suporte:
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.