Instalação e configuração de servidor Nextcloud

Nextcloud é uma solução de armazenamento de arquivos acessível via web, como Google Drive, que conta também com aplicativos de calendário, contatos, conversas e chamadas de vídeo, cliente de e-mail e suporte a compartilhamento de arquivos. Também tem suporte a integração de suíte office, através do ONLYOFFICE ou Nextcloud Office (baseado no LibreOffice).

Além disso, Nextcloud trás também o conceito de federação: instâncias distintas do Nextcloud podem se comunicar se assim os administradores quiserem, permitindo uma rede descentralizada de servidores, onde um usuário de uma instância pode se comunicar e compartilhar arquivos com um usuário de outra.

É software livre e aberto, licenciado sob a AGPLv3, e conta também com planos empresariais.

No momento os sistemas recomendados para o Nextcloud são Ubuntu 24.04 e RHEL 9, mas tem suporte também a outros como OpenSUSE, Debian e Alpine. Aqui vamos usar o Ubuntu 24.04.

O Nextcloud precisa de: um servidor web, um banco de dados e PHP. Eu segui a instalação com Apache pro servidor web e PostgreSQL pro banco de dados.

Outras alternativas suportadas são Nginx para o servidor web e MySQL e MariaDB para o banco de dados.

Instalação e configuração do Apache com PHP:

# apt install apache2 php

Caso tenha habilitado o firewall (Ubuntu traz o UFW desabilitado por padrão), permita o acesso por http:

# ufw allow http

Visite o seu servidor web via http e verifique que o Apache funciona. Coloque um arquivo como index.php na pasta do servidor web /var/www/html com o conteúdo

<?php phpinfo() ?>

e visite sua página no local /index.php para verificar que o Apache está processando PHP.

Instalando e configurando o banco de dados:

# apt install postgresql
# sudo -u postgres psql

Isso vai te levar à linha de comando do PostgreSQL, onde você pode criar o usuário e o banco de dados a ser usado no Nextcloud:

> CREATE USER nextcloud_operator WITH PASSWORD 'senhaNoPost-it';
> CREATE DATABASE nextcloud_db WITH OWNER nextcloud_operator TEMPLATE template0 ENCODING 'UTF8';
> \q

Baixe o arquivo do servidor em https://nextcloud.com/install/

Instale o utilitário unzip com

# apt install unzip

Extraia o arquivo .zip na pasta /var/www. Você vai ver uma pasta nextcloud. Mude o proprietário dela e dos arquivos e subpastas para o usuário www-data, que executa o Apache:

# chown -hR www-data:www-data /var/www/nextcloud

Edite o arquivo de configuração do Apache,
/etc/apache2/sites-enabled/000-default.conf
para alterar/adicionar as seguintes configurações:

	DocumentRoot /var/www/nextcloud

	<Directory /var/www/nextcloud/>
	Require all granted
	AllowOverride All
	Options Indexes FollowSymLinks MultiViews
		<IfModule mod_dav.c>
			Dav off
		</IfModule>
	</Directory>

Instale outros módulos PHP necessário para o Nextcloud:

# apt install php-curl php-xml php-gd php-mbstring php-zip php-pgsql 

Reinicie seu servidor web

# systemctl restart apache2.service

e dê sequência à instalação pela página web. O básico já está funcionando.

Agora existem alguns ajustes que podem ser feitos e você pode vê-los na seção de Configurações de administração > Visão geral

Um dos principais é o limite de memória usada na execução de scripts PHP. O recomendado é pelo menos 512mb mas a configuração padrão usa 128mb.

Outro é o limite do buffer do módulo OPcache, para o qual é sugerido um valor acima de 8mb.

Ajuste os seguintes valores no arquivo
/etc/php/8.3/apache2/php.ini

memory_limit = 512M
opcache.interned_strings_buffer=32

E no arquivo /etc/php/8.3/cli/php.ini

opcache.interned_strings_buffer=32

e reinicie o Apache.

Algumas mensagens de erro vão sugerir que você execute um script occ com algum argumento. Você pode fazer isso com

# sudo -u www-data php /var/www/nextcloud/occ argumento_sugerido

Sugestão de configuração adicional: os arquivos de usuários ficam na pasta /var/www/nextcloud/data, dentro da pasta raiz do Nextcloud. No caso de um bug num dos scripts PHP ou no servidor web, arquivos privados poderiam ser expostos. Então você pode querer configurar a pasta data em outro local, fora da raiz /var/www do servidor web, como por exemplo /var/nextcloud_data.

Essas e outras questões menos críticas de configuração são abordadas também na documentação oficial do Nextcloud.

O acesso via HTTPS será feito utilizando o servidor web Nginx atuando como proxy reverso, abordado em outra postagem.