(51) 2160.9170
  • Blog SOULinux

    Acompanhe Artigos, Notícias e nossos Casos de Sucesso.
Quinta, 09 Dezembro 2021

Instalação Nextcloud no Ubuntu 20.04

O Nextcloud é software open source que permite hospedar e compartilhar arquivos de forma segura e privativa, sendo semelhante ao conhecido Dropbox. A diferença com o Nextcloud é que todos os seus recursos são em código aberto. Além disso, ele restitui a você o controle e a segurança de seus dados confidenciais, eliminando assim o uso de serviço de hospedagem em nuvem de terceiros.

Se você busca uma solução de armazenamento de arquivos onde você possa ter total controle sobre o servidor e a plataforma, ou seja, ter sua Nuvem Privada, o Nextcloud é a solução.

Este artigo irá guiá-lo como instalar o Nextcloud no Ubuntu 20.04 com o servidor web Apache e o certificado SSL da Let’s encrypt.

 

1. PRé-requisitos

- Um servidor Ubuntu 20.04 instalado com IP estático (ex: 172.16.15.3) e devidamente atualizado.

- Acesso SSH e logado como usuário root.

- Um nome de domínio apontado para seu servidor: Para garantir conexões do Nextcloud com protocolos TLS/SSL. O Nextcloud pode configurar e gerenciar um certificado SSL gratuito e confiável da Let’s Encrypt se seu servidor tiver um nome de domínio (ex: arquivos.soulinux.com). Se não tiver um nome de domínio, o Nextcloud pode definir um certificado SSL autoassinado que possa criptografar conexões. porém, ele não será confiável por padrão em navegadores Web.

 

2. CONFIGURAÇÕES IMPORTANTES

 

2.1. Habilitar o acesso SSH no Ubuntu:

vim /etc/ssh/sshd_config


- A fim de melhorar a segurança, altere a porta de acesso SSH:

Port 2222


- Coloque a parte de autenticação como o mostrado abaixo:

#Authentication:
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes

- Para concluir, reinicie o serviço SSH:

systemctl restart sshd

 

2.2. Definir a região de fuso horário:

dpkg-reconfigure tzdata

 

2.3. Atualize o servidor e limpe itens não mais necessários:
apt update && sudo apt upgrade

apt autoremove

apt autoclean

apt clean

 

 

3. CONFIGURAÇÕES de Firewall

Supondo que você esteja usando o UFW para gerenciar seu firewall, será necessário abrir as portas HTTP ( 80 ) e HTTPS ( 443 ) e SSH (2222).

 

ufw allow 80

ufw allow 443

ufw allow 2222

enable

 

4. iNSTALAÇÃO DO sERVIDOR web (lamp)

 

4.1. Instalação do PHP e Apache:

No momento em que este tutorial está sendo escrito, a versão padrão do PHP no Ubuntu 20.04 é a 7.4.3 e é totalmente suportado e recomendado para o Nextcloud. por ser padrão, não é necessário indicar a versão na instalação:
apt install apache2 php libapache2-mod-php php-gmp php-bcmath php-gd php-json php-mysql php-curl php-mbstring php-intl php-xml php-zip php-imagick imagemagick php-fpm php-apcu php-fileinfo ffmpeg php-common php-bz2 unzip

 

Habilite alguns módulos Apache:
a2enmod headers dir mime ssl rewrite headers proxy proxy_http deflate cache proxy_wstunnel http2 proxy_fcgi env setenvif 

 

Teste a configuração:
sudo apache2ctl -t

 

Habilite para iniciar no boot e reinicie o Apache:
systemctl enable apache2

systemctl restart apache2

 

Confira a versão do PHP:
php --version

 

4.2. Atualizar Configuração do PHP:

Antes da criação do banco de dados, pode-se definir os parâmetros recomendados no arquivo php.ini:
nano /etc/php/7.4/apache2/php.ini
- Ajuste os seguintes campos para os valores abaixo ou de acordo com suuas necessidades:

output_buffering = off (linha 215)
max_execution_time = 120 (linha 388)
memory_limit = 1024M (linha 409)
post_max_size = 128M (linha 694)
upload_max_filesize = 1024M (linha 846)
date.timezone = America/Sao_Paulo (linha 962)

 

4.3. Instalar e configurar a base de dados MySQL (MariaDB):

O MariaDB é um sistema de gerenciamento de banco de dados de código aberto, usado com frequência como uma alternativa ao MySQL como a parte que representa o banco de dados da famosa pilha LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Ele foi criado como um substituto do MySQL.

No momento em que este tutorial está sendo escrito, os repositórios APT padrão do Ubuntu 20.04 incluem a versão 10.3.32 do MariaDB.

Proceda a instalação do MariaDB:
apt install mariadb-server

 

Após concluída a instalação, verifique se o habilite para iniciar no boot e reinicie o MariaDB:
systemctl enable mariadb

systemctl restart mariadb

 

Confira a versão do MariaDB:
mariadb --version

  

Confira a versão do MariaDB:
mariadb --version

 

Antes de criar a base de dados, vamos tornar o MariaDB mais seguro. Execute o comando a seguir e, quando solicitado, defina a "senha do usuário root do MariaDB", remova o "usuário anônimo", "mantenha o login remoto pelo usuário root do banco de dados" e exclua a base de dados "test":

/usr/bin/mysql_secure_installation

Quando solicitado, responda às perguntas abaixo:

Enter current password for root (enter for none): Pressione Enter
Change the root password? [Y/n]: Digite Y
New password: Digite a senha do SGBD
Re-enter new password: Digite a senha novamente
Remove anonymous users? [Y/n]: Digite Y
Disallow root login remotely? [Y/n] : Digite Y
Remove test database and access to it? [Y/n]: Digite Y
Reload privilege tables now? [Y/n]: Digite Y
 

Faça login ao servidor do banco de dados MariaDB com o respectivo usuário root e entre com a respectiva senha definida acima:
mysql -u root -p

 Estando na interface de administração do MariaDB, crie a base de dados do seu NextCloud:

create database NomeDB_nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Defina o respectivo usuário e uma senha forte para esse banco de dados.

grant all on NomeDB_nextcloud.* to 'UsuarioDB_nextcloud'@'localhost' identified by 'SENHA_UsuárioDB';

 Atribua os respectivos privilégios: 

flush privileges;

Saia da interface de administração do MariaDB: 

exit

 

 

5. INSTALAÇÃO DO NextCloud Server

 

5.1. Faça o download da última versão do NextCloud na pasta padrão do Apache:

 

Acesse a pasta "/var/www":

cd /var/www

 

Remova a subpasta padrão "html", pois colocaremos a pasta "nextcloud" em "/var/www":
rm -r /var/www/html/

 No momento da elaboração desse artigo, a última versão do NextCloud é a 23.0. Faça o download da última versão do NextCloud. :

wget https://download.nextcloud.com/server/releases/latest.zip

Descompacte o arquivo recém baixado:

unzip latest.zip

Após descomapctado, remova o arquivo compactado recém baixado:
rm latest.zip

  O shopt é um comando interno do shell Bash que pode ativar ou desativar as opções da sessão atual do shell. No caso, o bash inclui nomes de arquivos que começam com ‘ . ‘nos resultados do nome do caminho global:

shopt -s dotglob

 

O usuário "www-data" é o padrão para operação normal para servidores Web no Ubuntu como o Apache. Defina esse usuário como proprietário da pasta: 
chown -R www-data:www-data /var/www

 

5.2. Definir permissões adequadas da pasta do NextCloud:

Para isso faremos o download e usaremos um shell script. Continue na pasta /var/www e faça o download a partir do github da Nextcloud.

wget https://raw.githubusercontent.com/nextcloud/vm/master/static/setup_secure_permissions_nextcloud.sh

Torne o script executável:

chmod +x setup_secure_permissions_nextcloud.sh

Como esse script busca um outro script que deve estar em uma pasta específica (/var/scripts). Crie essa pasta:

mkdir -p /var/scripts

 Acesse essa pasta:

cd /var/scripts

 Faça o download do arquivo com o nome que está indicado no script de permissões segura:

wget -O fetch_lib.sh https://raw.githubusercontent.com/nextcloud/vm/master/lib.sh 

Torne o script executável:

chmod +x fetch_lib.sh

Volte para a pasta "/var/www":cd /var/www

Execute o script:./setup_secure_permissions_nextcloud.sh

 

 

5.3. Crie um site na configuração do Apache:

Crie o arquivo "nextcloud.conf" na pasta "/etc/apache2/sites-available":

cd /etc/apache2/sites-available

nano nextcloud.conf

Coloque o seguinte conteúdo, ajustando de acordo com suas configurações:

<VirtualHost *:80>
ServerName nextcloud.SeuDominio.com
ServerAlias www.nextcloud.SeuDominio.com
DocumentRoot /var/www/nextcloud

<Directory "/var/www/nextcloud">
Require all granted
AllowOverride All
Options -Indexes +FollowSymLinks
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

ErrorLog /var/log/apache2/nextcloud.SeuDominio.com-error.log
CustomLog /var/log/apache2/nextcloud.SeuDominio.com-requests.log combined
</VirtualHost>

 

Saia do editor (nano) e habilite o site nextcloud:

a2ensite nextcloud

 

Como vamos utilizar somente o site nextcloud, desabilite o site padrão definido em "000-default.conf":

sudo a2dissite 000-default.conf

Reinicie o Apache para fazer com que estas alterações tenham efeito:

sudo systemctl restart apache2

 

Agora você deve conseguir acessar e ver o Nextcloud no navegador. Mas não comece a instalação ainda.

 

 

5.4. Instalação do Certificado Digital:

Instalaremos o certbot do Let’s encrypt e obteremos um certificado para o Ubuntu 20.04:

sudo apt install certbot python3-certbot-apache

Crie um certificado de acordo com o seu caminho de instalação do NextCloud e com seu respectivo domínio:certbot certonly --webroot -w /var/www/nextcloud -d nextcloud.SeuDominio.com

O certificado Let's Encrypt tem duração de 3 meses, para realizar a renovação de forma automática, vamos executar a instrução no "crontab":crontab -e

Adicione o seguinte conteúdo ao "crontab":

#Renovação ocorre todo dia às 4:30
30 04 * * * certbot renew

Atualize o arquivo do site nextcloud para adicionar a porta 443 (SSL):

nano /etc/apache2/sites-enabled/nextcloud.conf

 Coloque o seguinte conteúdo, ajustando de acordo com suas configurações:

<VirtualHost *:80>
ServerName nextcloud.SeuDominio.com
ServerAlias www.nextcloud.SeuDominio.com
DocumentRoot /var/www/nextcloud
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

<Directory "/var/www/nextcloud">
Require all granted
AllowOverride All
Options -Indexes +FollowSymLinks
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

ErrorLog /var/log/apache2/nextcloud.SeuDominio.com-error.log
CustomLog /var/log/apache2/nextcloud.SeuDominio.com-requests.log combined

</VirtualHost>

<VirtualHost *:443>
ServerName nextcloud.SeuDominio.com
ServerAlias www.nextcloud.SeuDominio.com
DocumentRoot /var/www/nextcloud

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubnextcloud.SeuDominio.coms; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

<Directory "/var/www/nextcloud">
Require all granted
AllowOverride All
Options -Indexes +FollowSymLinks
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

ErrorLog /var/log/apache2/nextcloud.SeuDominio.com-error.log
CustomLog /var/log/apache2/nextcloud.SeuDominio.com-requests.log combined
SSLEngine on
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.SeuDominio.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/nextcloud.SeuDominio.com/fullchain.pem
</VirtualHost>

  

Reinicie o Apache:

systemctl restart apache2

 

Os certificados foram baixados, instalados e carregados. Tente recarregar o seu site usando https://nextcloud.SeuDominio.com e verifique o indicador de segurança do seu navegador. Ele deve indicar que o site está devidamente protegido, normalmente com um ícone de cadeado.

Faça também um teste no site SSL Labs Server Test​​​​, e você deverá receber uma classificação A.

Agora é possível acessar o navegador web com SSL ativado. https://nextcloud.seudominio.com

 

 

5.5. Configuração inicial do NextCloud:

Acesse o nexcloud a partir de do navegador web (Firefox, Chrome, etc.) e proceda com as configurações iniciais.

 

  

6. INSTALAÇÃO DO Redis Cache

Nextcloud se tornou uma das soluções de nuvem privada mais amplamente usadas no planeta. Este software em nuvem não é apenas de código aberto, mas também é escalonável, extensível e confiável. Por padrão, o Nextcloud não habilita o armazenamento em cache. Por que você precisa de cache? O armazenamento em cache aumenta o desempenho, armazenando objetos solicitados com frequência na memória.

Ao fazer isso, a recuperação desses objetos é consideravelmente mais rápida. Já que estamos falando sobre nuvem, você pode ter centenas (até milhares) de usuários acessando esse servidor simultaneamente. Sem o cache ativado, esse servidor sofrerá um impacto significativo à medida que cada usuário recupera objetos. Felizmente, com o Nextcloud é possível adicionar esse recurso utilizando um servidor Redis, que é um tipo de banco de dados NoSQL, classificado como servidor de estrutura de dados e armazena as informações em esquemas de chave-valor na memória. Ele é Open Source e licenciado em BSD. Seu nome é um acrônimo de REmote DIctionary Server (servidor de dicionário remoto).

 

6.1. Faça a instalação e configuração do servidor Redis: 

apt install redis-server php-redis

Habilite o módulo php-redis:
phpenmod redis

Habilite e reinicie o servidor Redis:
systemctl enable redis-server

systemctl restart redis-server

Confira se o servidor Redis está em execução:

systemctl status redis-server

 

A fim de configurar o cache, edite o arquivo "config.php"
nano /var/www/nextcloud/config/config.php

 

Adicione o seguinte conteúdo ao arquivo "config.php" acima do final do bloco ");" :

'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.local' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),

  

Salve e feche o arquivo e em seguida, reinicie o Apache e o PHP-FPM:
systemctl restart apache2 php7.4-fpm

 

Configure Opcache para PHP (substituir o número da versão pelo que corresponde ao PHP instalada, em nosso caso é 7.4):

nano /etc/php/7.4/apache2/php.ini

 

Descomente a linhas relacionadas ao bloco [opcache] (pode-se modificar os valores padrão conforme necessário):

; Nextcloud Opcache settings
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

 

Salve e feche o arquivo e em seguida, reinicie o Apache e o PHP-FPM:
systemctl restart apache2 php7.4-fpm

 

 

 

 

Itens relacionados