Este artigo revela os segredos de como construir um servidor de armazenamento em nuvem de alto desempenho e totalmente personalizável, utilizando Ubuntu Server 24.04.1 e Nextcloud Hub 9. O conhecimento prévio em administração de servidores Linux e em linha de comando é altamente recomendado.
Ninguém gosta de ficar sem espaço em armazenamento na nuvem. Receber aquele aviso do Google Fotos ou do iCloud informando que o espaço se esgotou pode arruinar a empolgação de uma viagem exótica para ver preguiças na América do Sul. Contudo, para os entusiastas do DIY e para aqueles que adoram um bom desafio no laboratório, há uma solução para quem está disposto a colocar a mão na massa.
Descubra o Nextcloud
Nextcloud é uma plataforma de armazenamento em nuvem gratuita e de código aberto que oferece o poder e a flexibilidade que os utilizadores precisam. Compatível com várias distribuições Linux populares, como Red Hat Enterprise Linux 9 e Ubuntu 24.04 LTS, este artigo utilizará o Ubuntu Server 24.04.1 e Nextcloud Hub 9 (30.0.0) para construir um servidor de armazenamento em nuvem altamente eficiente e totalmente personalizável. Alguns passos requerem conhecimentos prévios de administração de servidores Linux e da interface de linha de comando, por isso preparem-se para um mergulho técnico!
Preparação do Servidor
Para dar início à configuração do servidor Nextcloud, é necessário ter uma instalação fresca do Ubuntu Server no sistema que escolher. Um computador virtual na sua máquina principal ou qualquer hardware extra que tenha à disposição servirá. Recomenda-se um computador com pelo menos 2-4 núcleos de CPU, 8 gigabytes de RAM e 500 GB de armazenamento. Assim que o sistema estiver pronto, obtenha o Ubuntu Server através deste link: Ubuntu Server Download.
Se nunca instalou o Ubuntu Server antes, é aconselhável consultar o guia deles antes de começar: Instalar o Ubuntu Server. Tenha cuidado para não selecionar a opção de pré-instalação do Nextcloud na página de software recomendado, pois esse passo será feito por nós!
Depois de conectar o servidor à rede, atribuir um nome e fazer login com o nome de utilizador e a senha criados na configuração inicial, obtenha as atualizações de software mais recentes para o Ubuntu Server digitando sudo apt update && sudo apt upgrade -y
no console e pressione Enter. Reinicie o servidor após a conclusão das atualizações usando sudo reboot
.
Nota: Pode ser necessário inserir a senha novamente para executar comandos sudo
.
Instalando o Software Necessário
Em seguida, é hora de instalar alguns softwares pré-requisitos essenciais para a nossa instância do Nextcloud. Digite (ou, preferencialmente, copie e cole) os seguintes comandos na sua interface de linha de comando para baixar e instalar o servidor web Apache e alguns pacotes que serão necessários posteriormente para configurações mais avançadas do Nextcloud:
sudo apt install apache2 mariadb-server php libapache2-mod-php redis-server libmagickcore-6.q16-7-extra
sudo apt install php-apcu php-bcmath php-bz2 php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-ldap php-mbstring php-memcached php-mysql php-redis php-smbclient php-zip php-xml
Se surgirem solicitações para continuar ou parar a instalação, pressione “Y” e depois Enter. Finalmente, digite wget https://download.nextcloud.com/server/releases/latest.zip
para obter a versão mais recente do Nextcloud e use sudo apt install unzip
para instalar a ferramenta de descompactação que precisaremos para extrair esses arquivos.
Agora que temos todo o software necessário para configurar a nossa instância do Nextcloud, vamos dar uma olhada no servidor web que instalamos.
Configuração do Servidor Web Apache – Parte 1
Antes de começarmos a mexer no Apache, precisamos garantir que conseguimos conectar ao servidor corretamente. Para permitir conexões do navegador web (HTTP e HTTPS) à instância do Nextcloud, utilize os seguintes comandos:
sudo ufw allow in "Apache Full"
sudo ufw enable
Neste momento, o servidor web deve estar em funcionamento e acessível no seu Ubuntu Server! Em outro computador conectado à mesma rede da sua máquina Nextcloud, digite o endereço IP do seu servidor em uma janela do navegador e pressione Enter. Se não se lembrar do endereço IP do servidor, utilize o comando hostname -I
no seu servidor para visualizá-lo. Se a instalação foi bem-sucedida, deverá visualizar a página padrão do Apache2 em todo o seu esplendor!
Embora alguns possam achar que esta página padrão do servidor web é bastante interessante, iremos substituí-la por algo ainda mais incrível na segunda parte. Agora, vamos fazer uma pausa rápida e configurar o MariaDB!
Configuração do MariaDB
O nosso servidor Nextcloud precisará de um banco de dados sempre disponível para armazenar a configuração do servidor e as informações do perfil do utilizador. Para configurar o MariaDB para iniciar após a reinicialização do sistema, digite sudo systemctl enable mariadb
e pressione Enter. Agora, estamos prontos para preparar o banco de dados para a instalação do Nextcloud!
Felizmente, o MariaDB vem com uma ferramenta de configuração segura embutida, então não precisamos fazer muito trabalho pesado. Utilize sudo mysql_secure_installation
para iniciá-la e responda às perguntas do assistente.
Passos da configuração:
- Digite a senha atual para root (pressione Enter se não houver).
- Mudar para autenticação unix_socket? [Y/n] n
- Mudar a senha de root? n
- Remover utilizadores anónimos? [Y/n] y
- Proibir login remoto do root? [Y/n] y
- Remover o banco de dados de teste e o acesso a ele? [Y/n] y
Agora o MariaDB está seguro, e podemos começar a criar um banco de dados para servir a nossa instância do Nextcloud. Digite sudo mysql -u root
e insira os seguintes comandos quando a interface de linha de comando do MySQL aparecer (e certifique-se de usar ;
no final de cada linha!):
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'P@$$w0rd';
Nota: Substitua nextcloud
e P@$$w0rd
por um nome de utilizador e senha de sua escolha.
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
quit;
Estamos cada vez mais perto! Agora temos um servidor web funcional (mas ainda não finalizado) e um banco de dados.
Ativando as Extensões PHP e Melhorando o Desempenho do PHP
Lembra-se de todas aquelas extensões PHP que instalámos? Precisamos ativá-las para garantir que o Nextcloud possa utilizá-las corretamente. Utilize este comando para habilitar as extensões PHP necessárias:
sudo phpenmod apcu bcmath bz2 curl gd gmp imagick intl ldap mbstring memcached mysql redis smbclient zip xml
Agora que as extensões corretas foram ativadas, precisamos ajustar algumas configurações do PHP para melhor se adequar às nossas necessidades. O arquivo de configuração do PHP que iremos editar está localizado em /etc/php/8.3/apache2/php.ini
e pode ser modificado digitando sudo nano
à frente do caminho e pressionando Enter. Se instalou uma versão diferente do PHP, troque 8.3
pelo número da versão maior instalada, que pode ser obtido digitando php -v
no console.
Depois de abrir o arquivo php.ini
usando o nano, mantenha pressionada a tecla Control (ctrl) e pressione a tecla “W” no seu teclado. Quando a barra de pesquisa aparecer, digite max_execution_time
e pressione Enter. O nano pulará para a primeira correspondência encontrada com o valor que escreveu. Usando as teclas de seta para navegar e a tecla Backspace para remover caracteres, mude o 30
para 360
. Repita este truque para alterar os valores das seguintes configurações PHP:
memory_limit = 512M ; Pode ser opcionalmente aumentado para dar mais memória ao PHP, se necessário (1024M, 2048M, etc.)
post_max_size = 100G ; Este valor e o anterior representam o tamanho máximo de arquivo que pode ser enviado ao seu servidor Nextcloud.
upload_max_filesize = 100G ; Cuidado para colocar tamanhos apenas em K (kilobytes), M (megabytes) e G (gigabytes).
date.timezone = America/New_York ; Remova “;” antes da linha e use este guia para determinar seu fuso horário correto: https://www.php.net/manual/en/timezones.php
opcache.enable=1 ; Remova “;” antes da linha.
opcache.memory_consumption=128 ; Este valor, em megabytes, pode ser personalizado para adequar-se à quantidade de memória do seu servidor Nextcloud.
opcache.interned_strings_buffer=16 ; Remova “;” antes da linha.
opcache.max_accelerated
_files=100000 ; Remova “;” antes da linha.
opcache.revalidate_freq=1 ; Remova “;” antes da linha.
Após fazer as alterações necessárias, pressione ctrl + O
para salvar o arquivo e ctrl + X
para sair do editor. Agora precisamos reiniciar o servidor Apache para que as alterações sejam aplicadas:
sudo systemctl restart apache2
Instalação do Nextcloud
Agora, o próximo passo é extrair a pasta Nextcloud baixada e copiá-la para o diretório correto do servidor web. Vamos mover a pasta Nextcloud para o diretório /var/www/html
e dar as permissões adequadas, digite:
sudo unzip latest.zip -d /var/www/html
sudo chown -R www-data:www-data /var/www/html/nextcloud
sudo chmod -R 755 /var/www/html/nextcloud
Após mover a pasta do Nextcloud, podemos prosseguir com a configuração no Apache para tornar o acesso ao Nextcloud mais fácil e direto.
Configuração do Servidor Web Apache – Parte 2
Neste ponto, já estamos quase prontos para concluir a instalação do Nextcloud. Precisamos criar um novo arquivo de configuração para a nossa instância do Nextcloud. Para fazer isso, digite:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Agora, cole o seguinte código no arquivo nextcloud.conf
, ajustando conforme necessário:
<VirtualHost *:80>
DocumentRoot /var/www/html/nextcloud
ServerName [Seu-Servidor-Nome]
<Directory /var/www/html/nextcloud/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>
Substitua [Seu-Servidor-Nome]
pelo nome do seu servidor ou pelo seu endereço IP.
Depois de adicionar o código acima, salve e feche o arquivo. Agora, precisamos ativar o novo site e o módulo de reescrita:
sudo a2ensite nextcloud
sudo a2enmod rewrite
Por último, reinicie o Apache uma vez mais:
sudo systemctl restart apache2
Finalizando a Instalação do Nextcloud
Agora que o servidor está configurado, é hora de finalizar a instalação do Nextcloud. Acesse o servidor em um navegador digitando o endereço IP ou nome do seu servidor na barra de endereços. Deve ver a tela de configuração do Nextcloud, onde precisará inserir o nome de utilizador, a senha e as informações do banco de dados que criamos anteriormente.
Use as seguintes configurações:
- Usuário: nextcloud
- Senha: P@$$w0rd (ou o que escolheu anteriormente)
- Banco de dados: nextcloud
- Servidor de banco de dados: localhost
Clique em “Instalar” e, em poucos momentos, deve ver a tela de boas-vindas do Nextcloud! Agora pode começar a explorar e usar sua nova instalação do Nextcloud.
Claro! Vamos então adaptar o texto para um português de Portugal, com uma abordagem mais ibérica e centrada em Lisboa. Aqui está a versão revista:
Criar um Trabalho Cron
Um trabalho cron é um comando executado regularmente sem intervenção do utilizador. O nosso servidor Nextcloud necessita de um trabalho cron para chamar o script “cron.php” do servidor a cada 5 minutos, garantindo um desempenho e funcionalidade ideais.
Para configurar este trabalho cron, insira o comando sudo crontab -u www-data -e
na consola do servidor. Quando o crontab do utilizador “www-data” se abrir, adicione a seguinte linha ao fundo do ficheiro:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Quando terminar, mantenha a tecla control (ctrl) e pressione a tecla O para salvar o ficheiro, e mantenha control (ctrl) e pressione a tecla X para sair. Parabéns! Agora tem um servidor Nextcloud a funcionar na sua rede local! Pode começar a carregar e descarregar ficheiros para e do seu servidor Nextcloud na sua rede doméstica. No entanto, para maximizar a sua utilização, precisamos de melhorar a segurança, adicionar algumas aplicações populares, configurar um sistema de cache rápido e torná-lo acessível na Internet pública.
Melhorar a Segurança do Seu Servidor Nextcloud
Uma das melhores maneiras de aumentar a segurança do seu servidor web é fazer a atualização para HTTPS em vez de utilizar HTTP não encriptado e inseguro. Quando ativado, os pedidos serão servidos através do TLS 1.3, o padrão de encriptação mais recente e seguro para ligações web. Este é um passo necessário sempre que pretenda expor um site à Internet pública e é uma excelente primeira medida para proteger informações sensíveis.
Assim que decidir encriptar o tráfego do Nextcloud, existem duas opções para configurar o HTTPS: utilizar um certificado autoassinado ou um certificado de uma autoridade de certificação válida. Se ainda não possui um domínio ou não pretende configurar um para uma instância temporária do Nextcloud, recomendamos utilizar um certificado autoassinado ou um de um fornecedor de hostname. Se está a planear ter uma configuração de Nextcloud mais permanente, recomendamos fortemente que obtenha um certificado publicamente confiável de uma autoridade de certificação como o Let’s Encrypt.
HTTPS com um Certificado Autoassinado
Para habilitar e criar um certificado autoassinado, precisa de emitir alguns comandos simples:
sudo a2enmod ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt
Agora que ativámos o módulo SSL (também conhecido como TLS) do Apache e criámos o certificado autoassinado, precisamos de instruir o site para ativar o TLS e utilizar o certificado. Escreva sudo nano /etc/apache2/sites-available/nextcloud.conf
e pressione enter para começar a editar o ficheiro do host virtual mais uma vez.
Adicione as seguintes linhas ao fundo do seu ficheiro de host virtual exatamente como segue, mas substitua o campo “ServerName” pelo nome de domínio totalmente qualificado do seu servidor:
<VirtualHost *:443>
DocumentRoot /var/www/html/nextcloud/
ServerName nextcloud-demo.moose.local
SSLEngine on
SSLCertificateFile /etc/ssl/certs/nextcloud-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/nextcloud-selfsigned.key
<Directory /var/www/html/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
Mantenha control (ctrl) e pressione a tecla O para salvar o ficheiro, e depois control (ctrl) e pressione a tecla X para sair do nano. Para aplicar estas alterações ao servidor web Apache, use o comando sudo systemctl restart apache2
. Deverá agora ter o HTTPS ativado utilizando um certificado autoassinado!
Da próxima vez que visitar o seu site ao digitar o nome de domínio totalmente qualificado ou o endereço IP do servidor, deverá ver um aviso informando que a autoridade de certificação do site não é válida. Continue além deste erro (o método varia consoante o seu navegador) e visualize o site. O navegador web conectou-se automaticamente utilizando HTTPS e enviará dados usando encriptação TLS.
HTTPS com um Certificado Confiável
Para utilizar um certificado confiável para o Nextcloud, primeiro deve possuir um domínio ou ter um certificado assinado de um fornecedor de hostname. Se estava a utilizar um certificado autoassinado e seguiu os passos da seção anterior para ativar o HTTPS, remova a parte do texto que foi adicionada ao fundo do ficheiro e execute os comandos sudo a2dismod ssl
e sudo systemctl restart apache2
. Lembre-se de utilizar control + O e control + X para salvar e sair do nano quando terminar.
Configuração HTTPS para Proprietários de Domínio (via Certbot)
Agora que o ficheiro do host virtual voltou a uma configuração HTTP padrão, podemos começar a preparar-nos para utilizar um certificado confiável de uma autoridade de certificação. Se possui um domínio, siga estes passos para adquirir e implementar um certificado. Se não, salte para a próxima seção, que detalhará o uso de um certificado adquirido de um fornecedor de hostname. Para adquirir um certificado utilizado com o seu próprio domínio, utilizaremos o Certbot do Let’s Encrypt, uma organização sem fins lucrativos que fornece certificados gratuitos para uso em servidores web.
Para fazer o download do Certbot, primeiro instale e atualize o Snap usando sudo snap install core && sudo snap refresh core
. Depois, digite sudo snap install --classic certbot
(com dois hífens seguidos antes de “classic”) para instalar o pacote.
Execute o comando sudo certbot --apache
(novamente, com dois hífens antes de “apache”) para iniciar o Certbot e siga todos os prompts para criar e baixar o seu certificado web.
O processo de criação do certificado exigirá informações como um endereço de e-mail usado para contactar o proprietário do domínio, e pedirá que concorde com os termos e condições exigidos pelo Let’s Encrypt. Insira ou selecione o nome do domínio para o qual está a adquirir um certificado quando solicitado, e termine o processo interativo. Se encontrar erros ao usar o Certbot, pode ser necessário habilitar o encaminhamento de portas no seu router para as portas 80 e 443 para o endereço IP privado do seu servidor Nextcloud ou configurar os registos DNS do seu domínio para apontar para o endereço IP público do seu router. O processo de encaminhamento de portas e configuração dos registos DNS depende do seu router, do seu registrador de domínio e do seu fornecedor de serviços de Internet, e não é coberto por este guia.
Após o Certbot concluir, reabra o ficheiro do host virtual digitando sudo nano /etc/apache2/sites-available/nextcloud.conf
e pressione enter. Adicione as seguintes linhas logo acima do cabeçalho </VirtualHost>
para habilitar a reescrita de URLs HTTP como HTTPS, e substitua “nextcloud-demo.moose.local” pelo nome de domínio totalmente qualificado do seu servidor:
RewriteEngine on
RewriteCond %{SERVER_NAME} = nextcloud-demo.moose.local
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
O ficheiro de host virtual completo deverá ter este aspeto quando terminar:
<VirtualHost *:443>
DocumentRoot /var/www/html/nextcloud/
ServerName nextcloud-demo.moose.local
SSLEngine on
SSLCertificateFile /etc/ssl/certs/nextcloud-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/nextcloud-selfsigned.key
<Directory /var/www/html/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
Agora deverá estar configurado com um certificado confiável de uma autoridade de certificação válida e com a encriptação HTTPS pronta para a web!
Configuração HTTPS Usando um Certificado de um Fornecedor de Hostname
Os passos para usar um certificado de um fornecedor de hostname para habilitar HTTPS no seu servidor Nextcloud são idênticos aos abordados na seção “HTTPS com um Certificado Autoassinado” descrita neste artigo, com a única exceção de que deve substituir o caminho dos certificados autoassinados pelo caminho dos certificados do seu fornecedor de hostname. Comandos como wget
e mv
podem ser usados para baixar e mover os ficheiros do certificado para os diretórios apropriados (/etc/ssl/certs
para o ficheiro do certificado e /etc/ssl/private
para o ficheiro da chave). Certifique-se de ativar o módulo SSL do Apache com o comando sudo a2enmod ssl
e utilize sudo systemctl restart apache2
quando terminar para aplicar as suas alterações.
Transformar o Nextcloud num Verdadeiro Servidor Web
Agora a sua instância Nextcloud, rica em funcionalidades, está quase pronta para se tornar um servidor web publicamente disponível
A última etapa para implantar o seu servidor Nextcloud é torná-lo acessível na Internet pública. Esta etapa requer que você configure o encaminhamento de portas no seu router, e pode exigir alguma pesquisa da sua parte. Utilize o catálogo de guias de encaminhamento de portas em portforward.com para encontrar o fabricante do seu router e seguir a solução. Caso não consiga encontrar o seu fabricante na lista ou esteja a usar um router empresarial ou doméstico, pode ser necessário realizar algumas pesquisas na web até encontrar o método adequado.
Ao configurar o encaminhamento de portas, encaminhe as portas 80 e 443 do endereço IP privado do seu servidor Nextcloud (que pode ser encontrado usando o comando hostname -I
) para o endereço IP público do seu router. Se o seu fornecedor de internet não fornecer um endereço IP público, precisará de utilizar um serviço como os Túneles do Cloudflare, que permitem criar um túnel seguro entre o seu servidor web e os servidores do Cloudflare, que depois encaminham o tráfego dos visitantes do site de volta para si.
Conclusão
Parabéns! Agora é o orgulhoso proprietário e operador de um servidor Nextcloud totalmente funcional, robusto e de alto desempenho. Pode convidar familiares ou amigos a usar o seu servidor para armazenamento em nuvem, se assim o desejar. Lembre-se de que o Nextcloud é uma plataforma altamente modular, por isso não hesite em experimentar novas aplicações ou alterar a sua configuração para satisfazer as suas necessidades! Não se esqueça de configurar backups regulares do servidor o mais rapidamente possível e mantenha um olho atento para garantir que tudo esteja a funcionar corretamente.