Guia Completo: Como instalar e configurar o Nextcloud Hub 9 no Debian 12
Neste tutorial, você aprenderá como configurar e instalar o NextCloud em um servidor Linux Debian 12. O Nextcloud Hub é uma poderosa solução de armazenamento em nuvem que permite hospedar seus próprios arquivos, calendários, contatos e outros dados, garantindo total controle sobre a privacidade e segurança.
Abordaremos passo a passo desde a configuração do servidor web com Apache, PHP e MariaDB, até a instalação e configuração do NextCloud. Além disso, este guia inclui ajustes de segurança, como a implementação de SSL com Certbot (Let’s Encrypt) e otimizações para melhorar o desempenho do sistema.
Ao final, você terá um ambiente funcional e seguro para hospedar sua própria nuvem privada, ideal para empresas ou usuários que desejam independência de serviços de terceiros.
Prepare-se para transformar seu servidor em uma plataforma de nuvem privada robusta e personalizável! 🚀
Debian 12
Instalação do Debian 12 Bookworm limpa passo-a-passo
Subindo Servidor Web
Instale o servidor web Apache e vários módulos do PHP necessários para o nextcloud
# apt install apache2 apache2-utils redis-server php \ php-{fpm,pclzip,xmlrpc,imagick,redis,memcached,apcu,imap,ldap,intl,mysql,cli,pear,gmp,gd,bcmath,mbstring,curl,xml,zip} -y
Habilitação de Módulos do Apache
# a2enmod proxy_fcgi setenvif mpm_event rewrite headers http2
- proxy_fcgi: Permite que o Apache se conecte a servidores FastCGI, como PHP-FPM.
- setenvif: Configura variáveis de ambiente com base em condições das requisições.
- mpm_event: Otimiza o Apache para lidar com conexões simultâneas de forma eficiente.
- rewrite: Permite redirecionamentos e reescritas de URL dinâmicas.
- headers: Permite manipulação de cabeçalhos HTTP em respostas e requisições.
- http2: Habilita suporte ao protocolo HTTP/2 para maior velocidade e eficiência.
Desabilitação do Módulo PHP do Apache, vamos utilizar o PHP-FPM.
# a2dismod php8.2
Ativação do PHP-FPM no Boot, e habilite o PHP-FPM no Apache.
# systemctl enable php8.2-fpm # a2enconf php8.2-fpm
Melhorias de Segurança: Ajusta as configurações para ocultar informações sensíveis do servidor, como versão do Apache e detalhes do sistema operacional.
# sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/apache2/conf-available/security.conf # sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-available/security.conf
Adiciona o usuário `www-data` (usado pelo servidor web) ao grupo do Redis, permitindo acesso ao cache Redis pelo Apache ou PHP.
# usermod -a -G redis www-data echo 'apc.enable_cli=1' >> /etc/php/8.2/cli/php.ini
Edite o arquivo php.ini do PHP-FPM
# vim /etc/php/8.2/fpm/php.ini
- Defina o limite de memória para scripts PHP em 512MB, garantindo que aplicações PHP que consomem mais memória possam funcionar adequadamente.
- Configura o opcache para usar 16MB de buffer para strings internada, melhorando o desempenho e reduzindo o consumo de memória de strings repetitivas.
memory_limit = 512M opcache.interned_strings_buffer=16
Para instalação do NextCloud vou utilizar o diretório padrão do Apache /var/www/html, desta forma se você se você não fou utilizar DNS (acessar via IP) pode pular o próximo passo.
Aponte em seus DNS a entra para o subdomínio, exemplo: nextcloud.seudominio.com.br. Agora vamos criar a configuração do Apache para tratar o “nextcloud.seudominio.com.br”
# vim /etc/apache2/sites-available/nextcloud.conf
Ajuste da seguinte forma:
<virtualhost *:80> Protocols h2 http/1.1 ServerName nextcloud.seudominio.com.br ServerAdmin noc@seudominio.com.br DocumentRoot /var/www/html <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> <directory /var/www/html/ > Options FollowSymLinks AllowOverride All </directory> LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error_nextcloud.log CustomLog ${APACHE_LOG_DIR}/access_nextcloud.log combined </virtualhost>
Se estiver configurado servidor para um DNS desative a configuração 000-default, caso não configurou pule essa etapa.
# a2dissite 000-default
Ative as configurações do nextcloud.conf no apache para interpretar as configurações com nosso domínio.
# a2ensite nextcloud
Reinicia o servidor Apache e php-fpm para aplicar as configurações feitas.
# systemctl restart php8.2-fpm apache2
Instala o Certbot (ferramenta para gerenciar certificados grátis da Let’s Encrypt) e o plugin para integração com o Apache.
# apt install certbot python3-certbot-apache
Execute o Certbot para configura automaticamente o VirtualHost.
# certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): noc@seudominio.com.br 👈 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y 👈 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N 👈 Account registered. Which names would you like to activate HTTPS for? We recommend selecting either all domains, or all domains in a VirtualHost/server block. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: nextcloud.seudominio.com.br - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 Requesting a certificate for nextcloud.seudominio.com.br Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/nextcloud.seudominio.com.br/fullchain.pem Key is saved at: /etc/letsencrypt/live/nextcloud.seudominio.com.br/privkey.pem This certificate expires on 2025-04-06. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for nextcloud.seudominio.com.br to /etc/apache2/sites-available/nextcloud-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://nextcloud.seudominio.com.br - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Certificados gerados pela Let’s Encrypt tem validade de 90 dias. Então vamos criar um script para renovar de forma automática.
# vim /usr/local/bin/renew-certificates.sh
Adicione:
#!/bin/bash # Renova os certificados usando Certbot /usr/bin/certbot renew --quiet
De permissão para execução.
chmod +x /usr/local/bin/renew-certificates.sh
Adicione ao cron para 1x por semana às 03:00 da manhã ele realizar a renovação.
crontab -e
Adicion:
0 3 * * 1 /usr/local/bin/renew-certificates.sh
Reinicie o cron.
# systemctl restart cron
MariaDB (Banco de Dados)
Instala o servidor e o cliente do MariaDB, um sistema de gerenciamento de banco de dados.
# apt install mariadb-server mariadb-client
Crie o banco de dados para o NextCloud, acesso o terminal do MariaDB.
# mariadb -u root
Altere SUA_SENHA para sua senha.
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'SUA_SENHA'; CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost'; FLUSH PRIVILEGES; QUIT;
Vamos fazer mais um ajuste no banco de dados MariaDB:
# vim /etc/mysql/conf.d/mysql.cnf
Adicione configuração extras do innodb_buffer_pool_size e innodb_io_capacity para uma melhor performace.
[mysqld] # Define o tamanho do buffer pool do InnoDB para 1 GB, usado para armazenar # dados e índices em memória, melhorando o desempenho. innodb_buffer_pool_size=1G # Configura a capacidade máxima de I/O por segundo do InnoDB, # ideal para servidores com discos rápidos, como SSDs. innodb_io_capacity=4000
Reinicie o serviço para carregar as novas configurações.
# systemctl restart mariadb
Bibliotecas adicionais
Instala bibliotecas adicionais para suporte a formatos de imagem extras e funcionalidades avançadas no ImageMagick.
# apt install libmagickcore-6.q16-6-extra -y
Instalação do NextCloud
Servidor web pronto, vamos as configurações do NextCloud
Vamos fazer download da versão mais recente (Hoje 06/01/2025 v30.0.4)
# cd /tmp/ # wget https://download.nextcloud.com/server/releases/latest.zip
--2025-01-06 11:50:58-- https://download.nextcloud.com/server/releases/latest.zip Resolvendo download.nextcloud.com (download.nextcloud.com)... 2a01:21c8::145, 5.9.202.145 Conectando-se a download.nextcloud.com (download.nextcloud.com)|2a01:210:21c8::145|:443... conectado. A requisição HTTP foi enviada, aguardando resposta... 200 OK Tamanho: 225508096 (215M) [application/zip] Salvando em: “latest.zip” latest.zip 100%[============================================>] 215,06M 373KB/s em 8m 11s 2025-01-06 11:59:10 (448 KB/s) - “latest.zip” salvo [225508096/225508096]
Extraia o arquivo
# unzip -q latest.zip
Agora vamos mover os arquivos para /var/www/html, porem antes vamos renomear a pasta html que contém o arquivo index.html padrão do apache.
# mv /var/www/html/ /var/www/html_old
Agora vamos mover nossa pasta que extraímos nextcloud para /var/www/html, e vamos dar permissões para o usuário Apache administrar os arquivos.
# mv nextcloud /var/www/html # chown -R www-data: /var/www/html
Agora acesse em seu navegador “https://nextcloud.seudominio.com.br” para finalizar a instalação:
Crie uma nome de usuário e senha para o administrador, em seguida informe os dados da conexão do banco de dados MariaDB, conforme você criou anteriormente, e clique em instalar.
Selecione quais aplicações gostaria de instalar e clique em instalar, ou clique em ignorar para não instalar agora. (É possível instalar posteriormente no painel de administração.)
Algumas telas irão aparecer apresentando o Nexcloud Hub.
Ao final você terá a seguinte tela.
Seu NextCloud está quase pronto para utilizar, vamos a mais alguns ajustes.
Adicionar Índices Ausentes ao Banco de Dados:
# su - www-data --shell=/bin/bash -c 'php /var/www/html/occ db:add-missing-indices'
Este comando utiliza a interface de linha de comando do Nextcloud (`occ`) para verificar e adicionar índices que possam estar faltando nas tabelas do banco de dados. Índices são cruciais para melhorar a velocidade das consultas e o desempenho geral do sistema. Ao adicionar os índices ausentes, garantimos que o banco de dados opere de maneira mais eficiente.
Configurar o Horário de Início da Janela de Manutenção:
# su - www-data --shell=/bin/bash -c 'php /var/www/html/occ config:system:set maintenance_window_start --type=integer --value=3'
Este comando define o horário de início da janela de manutenção para as tarefas de segundo plano que exigem muitos recursos. Ao configurar este parâmetro, você especifica a hora (em UTC) em que essas tarefas devem começar, minimizando o impacto no desempenho durante os períodos de uso intenso. No exemplo acima, o valor `3` indica que a janela de manutenção começará às 03:00 UTC.
Executar Reparos de Manutenção Incluindo Migrações de Mime Types:
# su - www-data --shell=/bin/bash -c 'php /var/www/html/occ maintenance:repair --include-expensive'
Este comando executa uma série de reparos no sistema Nextcloud, incluindo tarefas que podem ser demoradas (`–include-expensive`). Entre essas tarefas, está a migração de tipos MIME, que assegura que novos tipos de arquivos sejam reconhecidos e tratados corretamente pelo sistema. É especialmente útil após atualizações ou quando novos tipos de arquivos são adicionados.
Ajustes finais
# vim /var/www/html/config/config.php
Adicione as seguintes linhas dentro do array $CONFIG {}:
'default_language' => 'pt-BR', 'default_locale' => 'pt_BR', 'default_phone_region' => 'BR',
Adicione: Redis como memcache para o bloqueio de arquivos.
'filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'localhost', 'port' => 6379, ],
Sempre que você cria um usuário novo ele cria vários arquivos de exemplo/modelo, se desejar desativar isso adicione também:
'skeletondirectory' => '',
Agora limpe os logs
# > /var/www/html/data/nextcloud.log
Agora vá até as configurações de administrador para verificar se a instalação está tudo “dentro dos conformes”.
Deve conter apenas um “problema”: Você ainda não definiu ou verificou a configuração do seu servidor de e-mail. Para resolver basta configurar o serviço de envio de e-mail.
É possível testar seu servidor em: https://scan.nextcloud.com
Agora sim seu servidor NextCloud Hub está pronto!
Bônus
Perdi a senha como recupara?
# su - www-data --shell=/bin/bash -c 'php /var/www/html/occ user:resetpassword administrador'
Enter a new password: Confirm the new password: Successfully reset password for administrador
Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.
Fonte:
https://docs.nextcloud.com/server/latest/admin_manual/contents.html
Muito bom o material, gostaria de saber se já tem algum tutorial em vídeo passo a passo para a instalação e configuração de todo o processo, obrigado.
Não tem.
Excelente, obrigado.