A execução do Nextcloud num servidor NGINX permite uma uti­li­za­ção eficiente dos recursos do software na nuvem e oferece opções de im­ple­men­ta­ção flexíveis. A ins­ta­la­ção requer tanto um ambiente de sistema com­pa­tí­vel como uma con­fi­gu­ra­ção adequada. Além disso, para integrar o Nextcloud sem problemas no ambiente NGINX, é ne­ces­sá­rio efetuar alguns ajustes es­pe­cí­fi­cos.

Nextcloud e NGINX: uma com­bi­na­ção poderosa para a sua nuvem

O NGINX é um software de servidor web baseado no princípio do código aberto, que também pode ser utilizado como proxy reverso, ba­lan­ce­a­dor de carga e cache HTTP. A aplicação foi de­sen­vol­vida em grande parte pelo pro­gra­ma­dor russo Igor Sysoev e foi publicada sob a licença BSD (uma variante do Unix).

O NGINX foi concebido para gerir um grande número de ligações em si­mul­tâ­neo. Para tal, utiliza uma ar­qui­te­tura orientada para eventos e não blo­que­ante. Ao contrário dos ser­vi­do­res web tra­di­ci­o­nais, que criam threads ou processos para cada ligação, o NGINX utiliza um processo mestre (master process) e vários processos de trabalho (worker processes). O processo mestre é res­pon­sá­vel pela gestão da con­fi­gu­ra­ção, enquanto os processos de trabalho gerem os pedidos recebidos dos clientes.

A com­bi­na­ção do Nextcloud com o NGINX oferece várias vantagens que são es­pe­ci­al­mente re­le­van­tes para ambientes de servidor com elevadas exi­gên­cias de de­sem­pe­nho. Entre os be­ne­fí­cios mais notáveis, destacam-se os seguintes:

  • Uti­li­za­ção eficiente dos recursos: o NGINX é capaz de gerir inúmeras ligações si­mul­tâ­neas de forma altamente otimizada.
  • Elevada es­ca­la­bi­li­dade: permite dis­tri­buir a carga de forma flexível e pode ser fa­cil­mente ampliado através da adição de ser­vi­do­res adi­ci­o­nais.
  • Opções de per­so­na­li­za­ção: graças à sua estrutura modular, o NGINX pode ser adaptado a uma variedade de casos de uti­li­za­ção.
  • De­sem­pe­nho estável sob carga: mesmo com elevada procura do servidor, o NGINX continua a funcionar de forma fiável e a estar cons­tan­te­mente dis­po­ní­vel.
Nota

O Nextcloud é ofi­ci­al­mente com­pa­tí­vel apenas com o Apache 2.x como servidor web e não oferece suporte oficial ao NGINX. Por isso, a uti­li­za­ção do Nextcloud com o NGINX é re­co­men­dada sobretudo para uti­li­za­do­res com ex­pe­ri­ên­cia na con­fi­gu­ra­ção de ser­vi­do­res web.

Quais são os re­qui­si­tos ne­ces­sá­rios para instalar o Nextcloud com o NGINX?

Para instalar o Nextcloud com o NGINX, o essencial é ter um servidor com Ubuntu, Debian ou outro sistema com­pa­tí­vel já instalado. O seu servidor deve ter, no mínimo, 4 GB de RAM e 2 núcleos de CPU. Se pretender utilizar muitas apli­ca­ções do Nextcloud ou ter muitos uti­li­za­do­res, recomendo um sistema com mais núcleos de CPU e mais memória RAM. Além disso, cer­ti­fi­que-se de que dispõe de espaço de ar­ma­ze­na­mento su­fi­ci­ente para os seus dados e cópias de segurança.

Para a ins­ta­la­ção, também é ne­ces­sá­rio um banco de dados com­pa­tí­vel, como o MySQL ou o MariaDB, bem como a linguagem de script PHP (versão 8.1, no mínimo; recomenda-se a versão 8.3). No banco de dados são ar­ma­ze­na­dos tanto os uti­li­za­do­res como os plugins, os seus dados e os metadados dos ficheiros. O PHP é essencial para o pro­ces­sa­mento e a execução das funções do Nextcloud. Além disso, para poder instalar o Nextcloud, é ne­ces­sá­ria uma conta com per­mis­sões de ad­mi­nis­tra­dor.

Nextcloud com o NGINX como servidor web: ins­ta­la­ção e con­fi­gu­ra­ção

Antes de instalar o Nextcloud, já re­a­li­zá­mos as tarefas pre­li­mi­na­res es­sen­ci­ais. Neste guia, partimos de um servidor Ubuntu no qual o sistema operativo já foi instalado, jun­ta­mente com todas as de­pen­dên­cias ne­ces­sá­rias. Mais con­cre­ta­mente, trata-se do NGINX como servidor web, do MySQL como base de dados e do PHP na versão 8.3 com todas as extensões ne­ces­sá­rias.

Também ins­ta­lá­mos o Certbot para podermos instalar fa­cil­mente um cer­ti­fi­cado SSL com o Let’s Encrypt. Além disso, partimos do princípio de que dispõe de um domínio próprio, para poder aceder ao Nextcloud através de um URL per­so­na­li­zado em vez de um endereço IP.

Dica

Noutros artigos, mostramos-lhe como instalar o Nextcloud no Ubuntu 22.04 ou como con­fi­gu­rar o Nextcloud no Ku­ber­ne­tes. Além disso, temos um guia detalhado para instalar e con­fi­gu­rar o Nextcloud no Debian 12.

Des­car­re­gue o Nextcloud e des­com­pacte-o

Primeiro, aceda ao diretório do uti­li­za­dor no seu servidor e crie uma pasta chamada «nextcloud». É aqui que irá des­car­re­gar os ficheiros de ins­ta­la­ção do Nextcloud. Pode fazê-lo ma­nu­al­mente a partir do changelog do Nextcloud, mas é mais fácil se utilizar o seguinte comando curl:

mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zip
bash
Nota

Se pre­fe­ri­res instalar outra versão, certifica-te de que utilizas o URL correto do ficheiro ZIP no comando de download.

Des­com­pacte o ficheiro, mova a pasta para ./var/www (que funciona como diretório raiz) e defina os direitos de acesso dos ficheiros. Para tal, utilize estes comandos:

unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloud
bash

Con­fi­gu­rar a base de dados

Para con­fi­gu­rar a base de dados MySQL, execute o comando sudo mysql_secure_installation. Digite «y» para definir a sua palavra-passe de root (VALIDATE PASSWORD) e selecione «2» para uma palavra-passe segura (STRONG), que poderá con­fi­gu­rar a seguir. Prima «y» para confirmar a palavra-passe e novamente «y» para eliminar uti­li­za­do­res anónimos, proibir acessos remotos, eliminar a base de dados de teste e re­car­re­gar as tabelas de pri­vi­lé­gios.

Em seguida, deve fazer o seguinte:

  1. Inicie sessão como uti­li­za­dor root na base de dados com o comando sudo mysql -u root -p.
  2. Crie a base de dados do Nextcloud com o comando create database nextcloud;.
  3. Crie a conta de uti­li­za­dor do Nextcloud através do comando create user 'nextcloud'@'localhost' identified by <new_password>;.
  4. Conceda todas as per­mis­sões da base de dados ao uti­li­za­dor com o comando grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Em seguida, atualize as per­mis­sões com flush privileges; e saia da consola da base de dados com o comando exit.

Depois de a base de dados ter sido criada com sucesso, introduza os dados de acesso (DB_NAME, DB_USER, DB_PASSWORD) no ficheiro de con­fi­gu­ra­ção do Nextcloud. Para tal, abra o ficheiro ./var/www/nextcloud/config/config.php e adicione as seguintes entradas re­le­van­tes:

'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
txt

Desativar a con­fi­gu­ra­ção padrão do NGINX

Antes de integrar o Nextcloud no NGINX, cer­ti­fi­que-se de que não existe nenhum ficheiro de con­fi­gu­ra­ção que possa in­ter­fe­rir com a ins­ta­la­ção. Por pre­de­fi­ni­ção, é possível que ainda exista um ficheiro de con­fi­gu­ra­ção chamado default em ./etc/nginx/sites-enabled/, que poderá impedir que o Nextcloud seja carregado cor­re­ta­mente. Este ficheiro deve ser eliminado uti­li­zando o seguinte comando:

sudo rm /etc/nginx/sites-enabled/default
bash

Com o seguinte comando, garante que a nova con­fi­gu­ra­ção do Nextcloud está ativa:

sudo ln -s /etc/nginx/sites-available/ejemplodominio.es /etc/nginx/sites-enabled/
bash

Con­fi­gu­rar o servidor NGINX

Para con­fi­gu­rar o NGINX como servidor web, é ne­ces­sá­rio que já tenha um domínio con­fi­gu­rado e associado ao endereço IP do servidor. Cer­ti­fi­que-se também de que a con­fi­gu­ra­ção DNS está correta. Crie o ficheiro de con­fi­gu­ra­ção do NGINX no diretório sites-available uti­li­zando o comando Linux sudo sudo touch /etc/nginx/sites-available/ejemplodominio.es (uti­li­zá­mos a URL ejemplodominio.es).

Abra o ficheiro de con­fi­gu­ra­ção num editor de texto como o Vim com sudo vim /etc/nginx/sites-available/ejemplodominio.es e copie o bloco de código da secção «Nextcloud in a subdir of the NGINX webroots» da página oficial do Nextcloud para con­fi­gu­rar o NGINX e cole-o na con­fi­gu­ra­ção com o comando ./etc/nginx/sites-available/ejemplodominio.es.

Como o cer­ti­fi­cado HTTPS será adi­ci­o­nado com o Certbot, também deve eliminar todas as linhas re­la­ci­o­na­das com o SSL do ficheiro de con­fi­gu­ra­ção do NGINX. O Certbot en­car­re­gar-se-á de realizar au­to­ma­ti­ca­mente a con­fi­gu­ra­ção, pelo que não é ne­ces­sá­rio configurá-la ma­nu­al­mente.

Con­fi­gu­rar o cer­ti­fi­cado SSL com o Certbot

Para que o Nextcloud funcione através de uma ligação HTTPS segura, é ne­ces­sá­rio con­fi­gu­rar um cer­ti­fi­cado SSL (neste caso, da Let’s Encrypt). Primeiro, é preciso con­fi­gu­rar o firewall para permitir ligações HTTPS e SSH. Utilize o seguinte comando com o sudo:

sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
bash

Em seguida, utilize sudo ufw enable para ativar o firewall e verifique se as ligações são per­mi­ti­das com o sudo ufw status. Depois disso, já pode gerar o cer­ti­fi­cado SSL com o Certbot:

sudo certbot --nginx -d ejemplodominio.es
bash

Introduza o seu endereço de e-mail para a renovação dos cer­ti­fi­ca­dos, aceite os termos de uti­li­za­ção e selecione a opção 2 para re­di­re­ci­o­nar au­to­ma­ti­ca­mente todo o tráfego HTTP para HTTPS. Os ficheiros do cer­ti­fi­cado são guardados no diretório .etc/letsencrypt/live/ejemplodominio.es/. O ficheiro fullchain.pem contém o cer­ti­fi­cado SSL, enquanto o ficheiro privkey.pem contém a chave privada. Ambos devem ser adi­ci­o­na­dos ao ficheiro de con­fi­gu­ra­ção do NGINX:

ssl_certificate /etc/letsencrypt/live/ejemplodominio.es/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ejemplodominio.es/privkey.pem;
txt

Uma vez que o Certbot alterou o ficheiro de con­fi­gu­ra­ção, é ne­ces­sá­rio voltar a adicionar o atributo ssl entre 443 e http2. O bloco cor­res­pon­dente deverá ficar assim:

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name ejemplodominio.es;
txt

Reiniciar os serviços e aceder ao Nextcloud

Para que as al­te­ra­ções tenham efeito, é ne­ces­sá­rio reiniciar os serviços PHP-FPM e NGINX exe­cu­tando este comando:

sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.service
bash

Em seguida, abra o seu navegador e aceda ao seu domínio (no nosso caso, exem­plo­do­mi­nio.es). Se tudo estiver con­fi­gu­rado cor­re­ta­mente, irá ver a página inicial do Nextcloud.

Ir para o menu principal