Para quem deseja ter controle total sobre seus dados, o Nextcloud oferece uma poderosa solução open-source para criar um sistema de armazenamento em nuvem privado. A plataforma não só permite sincronização segura de arquivos entre dispositivos, como também possibilita hospedar o armazenamento no seu próprio servidor, evitando a dependência de provedores terceiros.
Neste guia, vamos passar pelo processo de instalação do Nextcloud usando contêineres Docker isolados, o que simplifica bastante o deployment e a administração. Também vamos configurar criptografia automática de tráfego com certificados SSL do Let’s Encrypt para garantir uma transmissão segura dos dados.
Você vai precisar de:
Um servidor em nuvem Hostman com Linux Ubuntu 24.04 pré-instalado.
Um nome de domínio.
Docker e Docker Compose instalados.
Para o servidor, recomenda-se uma configuração com 1 núcleo de CPU, 2 GB de RAM e um endereço IPv4 público, que pode ser solicitado ao criar o servidor ou depois, na seção “Network”.
O servidor estará pronto em poucos minutos. O endereço IPv4 e as credenciais de login para acesso via SSH estarão disponíveis no Dashboard.
O Nextcloud requer vários componentes essenciais:
Banco de dados: neste caso, MariaDB — um SGBD rápido e confiável.
Certificado SSL: usaremos certificados gratuitos emitidos pelo Let’s Encrypt.
Reverse proxy: utilizaremos o Nginx Proxy Manager, que roteará o tráfego HTTP e HTTPS para os contêineres corretos.
Primeiro, crie o diretório onde ficarão os arquivos de configuração e navegue até ele:
mkdir nextcloud && cd nextcloud
Este arquivo oculto armazenará variáveis com senhas:
nano .env
Conteúdo do arquivo:
NEXTCLOUD_ROOT_PASSWORD=secure_root_password_123
NEXTCLOUD_DB_PASSWORD=secure_nextcloud_db_password_456
NPM_ROOT_PASSWORD=secure_npm_root_password_789
NPM_DB_PASSWORD=secure_npm_db_password_012
Não esqueça de substituir os valores pelas suas próprias senhas seguras.
Crie o arquivo com:
nano docker-compose.yml
Adicione a configuração abaixo (não traduzida conforme solicitado):
volumes:
nextcloud-data:
nextcloud-db:
npm-data:
npm-ssl:
npm-db:
networks:
frontend:
backend:
services:
nextcloud-app:
image: nextcloud:31.0.8
restart: always
volumes:
- nextcloud-data:/var/www/html
environment:
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud-db
- MYSQL_PORT=3306
networks:
- frontend
- backend
nextcloud-db:
image: mariadb:12.0.2
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- nextcloud-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${NEXTCLOUD_ROOT_PASSWORD}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- backend
npm-app:
image: jc21/nginx-proxy-manager:2.12.6
restart: always
ports:
- "80:80"
- "81:81"
- "443:443"
environment:
- DB_MYSQL_HOST=npm-db
- DB_MYSQL_PORT=3306
- DB_MYSQL_USER=npm
- DB_MYSQL_PASSWORD=${NPM_DB_PASSWORD}
- DB_MYSQL_NAME=npm
volumes:
- npm-data:/data
- npm-ssl:/etc/letsencrypt
networks:
- frontend
- backend
npm-db:
image: jc21/mariadb-aria:10.11.5
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${NPM_ROOT_PASSWORD}
- MYSQL_DATABASE=npm
- MYSQL_USER=npm
- MYSQL_PASSWORD=${NPM_DB_PASSWORD}
volumes:
- npm-db:/var/lib/mysql
networks:
- backend
Execute:
docker compose up -d
Caso ocorra um erro relacionado ao limite de downloads do Docker Hub:
Entre na sua conta do Docker Hub ou crie uma nova.
Vá até Account settings → Personal access tokens.
Clique em Generate new token.
Defina uma descrição, escolha uma data de expiração e selecione as permissões: Read, Write, Delete.
Clique em Generate e copie o token (ele aparece apenas uma vez).
No servidor, faça login:
docker login -u dockeruser
Substitua dockeruser pelo seu nome de usuário e use o token como senha.
Reinicie os contêineres:
docker compose up -d
Verifique o status:
docker ps
Todos os contêineres devem exibir Up.
Abra no navegador:
http://<server-IP>:81
Faça login com as credenciais padrão:
Usuário: admin@example.com
Senha: changeme
No primeiro login:
Atualize o nome, apelido e e-mail do administrador.
Altere a senha:
Current Password: changeme
New Password: nova senha
Confirm Password: repetir senha
Acesse Hosts → Proxy Hosts.
Clique em Add Proxy Host e preencha:
Domain Names: domínio da sua instância Nextcloud
Scheme: http
Forward Hostname/IP: nextcloud-app
Forward Port: 80
Na aba SSL:
Selecione Request a new SSL Certificate
Ative:
Force SSL
HTTP/2 Support
HSTS Enabled
Informe seu e-mail para o Let’s Encrypt e aceite os termos. Clique em Save.
Agora abra o seu domínio. Se tudo foi configurado corretamente, a interface web do Nextcloud será exibida e um certificado SSL será emitido automaticamente pelo Let’s Encrypt.
Crie uma nova conta de administrador.
Instale apps recomendadas, se desejar.
A instalação e a configuração básica estão concluídas.
Neste artigo mostramos como fazer o deploy do Nextcloud usando Docker e como emitir um certificado SSL gratuito do Let’s Encrypt.
Esse método é um dos mais confiáveis, seguros e fáceis de escalar. O Docker garante isolamento adequado da aplicação, simplifica atualizações e facilita migrações. Usar um certificado SSL não é apenas recomendado — é essencial para proteger dados sensíveis e garantir tráfego criptografado.