(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

Escrito por

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

  

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

 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here.

Enter current password for root (enter for none): DEFINA A SUA SENHA DE ROOT

root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
... skipping.

By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!

- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

 

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_general_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

 

A configuração acima irá indicar um score A+ no site https://www.ssllabs.com/ssltest/index.html

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 (por marcador)