Instalação do Nextcloud + HTTP2 + HTTPS + Debian Buster – Seu próprio servidor de arquivos em nuvem!

Nextcloud tem funcionalidade muito semelhante ao Dropbox, com a diferença de ser código aberto, e assim permitir que qualquer pessoa instalar e operá-lo sem custo em um servidor privado. Nextcloud é um fork do projeto ownCloud.

Requisito:
1- Debian 10 Stretch / Instalação Limpa
2- Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”
Instalação do PHP 7.3 (Requisito)
Instalação do MariaDB 10.3 (Requisito)
Instalação do Apache 2.4 (Requisito)
phpMyAdmin :: (Opcional)

Para a instalação irei configurar um domínio virtual no apache. Leia para entender mais sobre domínios virtuais:
Como ter diversos sub/domínios no mesmo servidor? (Domínios virtuais com Apache2)

Tenha então em seu servidor DNS a configuração do host cloud (ou nome que você preferir) apontando para o IP de seu servidor.

Instalamos mais algumas extensões necessárias do PHP e o redis para fazer caching da memória.

# apt install php-fpm php-pclzip php-xmlrpc php-imagick php-redis redis-server php-memcached php-apcu php-imap php-ldap php-intl
# usermod -a -G redis www-data

Altere o limite de memória do PHP para pelo menos 512M

# sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/7.3/fpm/php.ini

Desativamos/Ativamosos mods necessários.

# a2enmod proxy_fcgi setenvif mpm_event rewrite headers http2
# a2dismod php7.3
# a2enconf php7.3-fpm
# systemctl enable php7.3-fpm
# systemctl restart php7.3-fpm
# systemctl restart apache2

Criamos o arquivo que vai representar o host cloud. Vou utilizar como base o diretório /var/www/cloud que vamos criar em seguida.
Não vou entrar em detalhes da criação das configurações, pois basta ler o tutorial citado.

# vim /etc/apache2/sites-available/cloud.conf
<virtualhost *:80>
        Protocols h2 http/1.1
        ServerName cloud.remontti.com.br
        ServerAdmin noc@remontti.com.br

        DocumentRoot /var/www/cloud 

        <IfModule mod_headers.c>
          Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
        </IfModule> 

        <directory /var/www/cloud/ >
                Options FollowSymLinks
                AllowOverride All
        </directory> 

        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error_cloud.log
        CustomLog ${APACHE_LOG_DIR}/access_cloud.log combined
</virtualhost>
# a2ensite cloud
# systemctl restart apache2
# mkdir /var/www/cloud

Para ficar bacana vamos obter um certificado grátis com o Let’s Encrypt. Leia o tutorial: Criando certificado grátis com Let’s Encrypt para o Apache no Debian 10

# su - 
# apt update
# apt upgrade
# apt install letsencrypt python-certbot-apache
# systemctl stop apache2
# letsencrypt --authenticator standalone --installer apache -d cloud.remontti.com.br
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): noc@remontti.com.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for cloud.remontti.com.br
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/cloud-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/cloud-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/cloud-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://cloud.remontti.com.br

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=cloud.remontti.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/cloud.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/cloud.remontti.com.br/privkey.pem
   Your cert will expire on 2019-12-16. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Acesse seu domínio com https e o mesmo já deve estar prontinho para o Nextcloud.

Não esqueça de criar o script para renovar seu certificado

Finalmente vamos a instalação do Nextcloud! Na data de hoje (set/2019) o projeto se encontra na versão 16.0.4.

# apt install unzip wget
# cd /tmp/
# wget https://download.nextcloud.com/server/releases/nextcloud-16.0.4.zip
# unzip nextcloud-*.zip 
# rm -rf /var/www/cloud/
# mv nextcloud /var/www/cloud 
# chown www-data. /var/www/cloud -R

Crie o banco de dados chamado nextcloud e defina sua senha. Use o gerador de senhas!

# mariadb -uroot -p -e\
 "CREATE DATABASE nextcloud character set utf8 collate utf8_bin;\
  GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'SUA_SENHA';"

Abra agora em seu navegador https://cloud.dominio.com.br e colocar as informações para criar sua conta de administrador, e para conexão com o banco de dados.

Clique em concluir configurações e aguarde o Nextcloud fazer a instalação.

Ao concluir você a seguinte tela ira aparecer:

Para não criar toda vez que adicionar um novo usuario esses arquivos padrões que para mim é só lixo, edite o config.php e adicione ‘skeletondirectory’ => ”, aproveitando já adicionamos os idiomas defaults e configuramos o mamcache.

# vim /var/www/cloud/config/config.php

Adicione a baixo de ‘installed’ => true,

  'default_language' => 'pt-BR',
  'default_locale' => 'pt_BR',
  'skeletondirectory' => '',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'localhost',
    'port' => 6379,
  ),

Ficando:

<?php
$CONFIG = array (
  'instanceid' => 'xxxxxxxxxxxxxxxxxxxx',
  'passwordsalt' => 'xxxxxxxxxxxx+xxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'trusted_domains' => 
  array (
    0 => 'cloud.remontti.com.br',
  ),
  'datadirectory' => '/var/www/cloud/data',
  'dbtype' => 'mysql',
  'version' => '16.0.4.1',
  'overwrite.cli.url' => 'https://cloud.remontti.com.br',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => 'xxxxxxxxxxxxxxxxxxxx',
  'installed' => true,
  'default_language' => 'pt-BR',
  'default_locale' => 'pt_BR',
  'skeletondirectory' => '',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'localhost',
    'port' => 6379,
  ),
);

Acesse o menu de Configurações e em seguida o menu Visão Geral e certifique-se que está tudo ok!

Faça um testes em:
https://scan.nextcloud.com/
https://tools.keycdn.com/http2-test

Se desejar pode instalar as versões desktop ou mobile.

Outras melhorias que podem ser aplicadas.

# vim /etc/mysql/conf.d/mysql.cnf
[mysqld]
innodb_buffer_pool_size=1G
innodb_io_capacity=4000
# vim  /etc/php/7.3/fpm/conf.d/10-opcache.ini
; configuration for php opcache module
; priority=10
zend_extension=opcache.so

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=256
opcache.save_comments=1
opcache.revalidate_freq=1
# systemctl restart php7.3-fpm apache2 

Caching Configuration

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Fonte: https://docs.nextcloud.com/server/16/admin_manual/installation/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

25 Resultados

  1. kadasross disse:

    Muito bom dia caros
    Alguem pode ajudar-me a instalar esta aplicaçao?
    Preciso alguem que ja fez e conseguiu

  2. Boa tarde Rudimar
    Estou revendo seu post de instalação do Nextcloud e me deparei com um probleminha de permissão que não entendi muito bem como resolver e talvez possa me ajudar. A mensagem é a seguinte quando tento acesso o nextcloud que instalei no Debian 11:
    Can’t write into config directory!
    This can usually be fixed by giving the webserver write access to the config directory.

    Agradeceria muito sua ajuda.
    Abraço

  3. Denis disse:

    Excelente tutorial, estou usando a pouco tempo o Nextcloud e de fato, as explicações, perguntas e suas respostas ajudaram a resolver o problema que apresentava na minha instancia, PARABÉNS!!!

  4. Pedro Gomes disse:

    Show, excelente.
    É possível adicionar uma whitelist de extensões de arquivos, muitos formatos não são sincronizados como *.exe, *.ini, *.dll

  5. Max disse:

    Show, show parabéns. De todos os tutos seja no youtube ou sites este foi o melhor. Parabéns.

  6. Wagner Andrade disse:

    Parabéns cara, melhor tutorial que encontrei na net. Poderia ensinar como fazer a integração deste servidor nextcloud com o onlyoffice, tentei fazer mais não conecta porque o servidor onlyoffice não usa https.

  7. Flávio José de Siqueira Cavalcanti Veras disse:

    Bom dia Remontti.
    Perfeito seu tutorial. Ajudou bastante. Didática e passo a passo impecáveis.
    Parabéns e obrigado.
    Para terminar tenho uma sugestão a fazer: Um tutorial sobre configuração de Armazenamento Externo no Nextcloud, principalmente o “local”

  8. paulo henrique disse:

    Show de bola, obrigado por compartilhar

  9. Douglas disse:

    Olá, você teria um tutorial mais atualizado sobre a instalação do Nextcloud + HTTP2 + HTTPS + Debian(ou Ubuntu)

  10. Braulio Henrique disse:

    No meu caso instalei por Snap o Nextcloud em um Servidor Debian Buster e quando vou em CONFIGURACOES -> VISAO GERAL, ele dá um erro em laranja:
    O cabeçalho HTTP “Strict-Transport-Security” não está definido para ao menos “15552000” segundos. Para maior segurança, é recomendado ativar o HSTS conforme descrito nas dicas de segurança ↗.
    Reparei que na sua instalação vc corrige isso no arquivo /etc/apache2/sites-available/cloud.conf, na instalacao por snap nao achei esse arquivo para editar, poderia esclarecer como fazer isso?

  11. Wanderson disse:

    O SSD é classe 10, mas o armazenamento do nextcloud é em um HD externo de 500 GB conectado na USB 3.0 do rpi. No momento da sincronização, a utilização do processador fica em torno de 40% a 50% e a memória ram fica em apenas 450 MiB de 3,8 GiB disponíveis. A memória Swap (não sei o que significa…) fica em 2MiB de 100MiB disponíveis. A transferência fica variando entre 5kB/s e 350kB/s. Parece que tem muito processamento para pouca transferência e mesmo assim, não está utilizando o processamento máximo disponível. Achei muitas postagens na internet relatando o mesmo problema, mas nenhuma solução. Muitas pessoas dizem que é configuração do MySQL e o ajuste deve ser feito nós parâmetros do InnoDB, mas fiquei completamente perdido nisso aí.

  12. Wanderson disse:

    Meu nextcloud está com a sincronização muito lenta. Está instalado em um raspberry pi 4 (4GB de ram). Fiz o teste em https://scan.nextcloud.com/ e não tem nada de errado. A classificação é A+. O tempo previsto para fazer a sincronização de 10.000 arquivos com 10 GB no total, está em torno de uma semana. No entanto, de ontem pra hoje só sincronizou 400 MB. A conexão com a internet é boa, com 200 Mb de download e 100 Mb de upload. Tem alguma configuração do mysql ou php para melhorar essa performance? Valeu!

  13. Wadjô disse:

    Valeu demais!
    Consegui fazer todo o procedimento com seu tutorial.
    Só quebrei muito a cabeça por causa do acesso com a porta 443. Eu tenho Vivo fibra e custei descobrir que eles estavam bloqueando essa porta, mesmo eu tendo liberado ela no roteador. Aí, depois de fritar bastante os miolos, consegui alterar as portas padrão 80 e 443 no apache para outras portas mais altas e aí sim consegui acessar fora da minha rede interna, bastando adicionar as portas no final do endereço do serviço DDNS.
    No próximo tutorial, talvez seja interessante você explicar como fazer essa alteração de portas, pois muita gente deve ter problemas com isso e acabam desistindo do projeto.
    Eu cheguei a ligar na Vivo para pedir o desbloqueio das portas e eles disseram que não era possível e para ter meu nextcloud funcionando na internet eu precisaria pagar por um IP fixo deles, que custa R$ 450,00 por mês.

    Grande abraço, e muito obrigado!
    Wadjô

  14. Thiago Henrique disse:

    Bom dia! Meu esta apresentando esta mensagem ao acessar via navegador: Internal Server Error

    The server encountered an internal error and was unable to complete your request.
    Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
    More details can be found in the server log.

    log de erro:
    [Thu Oct 10 10:59:08.321427 2019] [mpm_prefork:notice] [pid 990] AH00169: caught SIGTERM, shutting down
    [Thu Oct 10 10:59:08.519154 2019] [mpm_prefork:notice] [pid 1024] AH00163: Apache/2.4.38 (Debian) configured — resuming normal operations
    [Thu Oct 10 10:59:08.519306 2019] [core:notice] [pid 1024] AH00094: Command line: ‘/usr/sbin/apache2’

    Pelo app eu acesso, vejo os arquivos ai tento fazer alguma coisa fala; configuracao servidor invalida

  1. 25 de agosto de 2020

    […] Existe um tutorial mais novo do Nextcloud Instalação do Nextcloud + HTTP2 + HTTPS + Debian Buster – Seu próprio servidor de arquivos … […]

  2. 23 de junho de 2022

    […] Que tal conectar ao “nosso nextcloud“? […]

  3. 31 de agosto de 2022

    […] Reference: Instalação do Nextcloud + HTTP2 + HTTPS + Debian Buster – Seu próprio servidor de arquivos … […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *