Pesquisa de site

Instale NextCloud no Ubuntu 22.04 (Nginx + PostgreSQL + PHP8)


Este tutorial mostrará como instalar NextCloud no Ubuntu 22.04 LTS com servidor web Nginx.

O que é NextCloud?

NextCloud é uma solução gratuita de armazenamento em nuvem auto-hospedada de código aberto. É funcionalmente semelhante ao Dropbox. Soluções proprietárias de armazenamento em nuvem (Dropbox, Google Drive, etc.) são convenientes, mas têm um preço: elas podem ser usadas para coletar dados pessoais porque seus arquivos são armazenados em seus computadores. Se você está preocupado com a privacidade, pode mudar para NextCloud, que pode ser instalado em seu servidor doméstico privado ou em um servidor virtual privado (VPS). Você pode fazer upload de seus arquivos para seu servidor via NextCloud e depois sincronizá-los com seu computador desktop, laptop ou smartphone. Dessa forma você tem controle total sobre seus dados.

Recursos do NextCloud

  • Gratuito e de código aberto
  • Criptografia ponta a ponta, o que significa que os arquivos podem ser criptografados nos dispositivos do cliente antes de serem carregados no servidor, portanto, mesmo que alguém roube seu servidor, não poderá ler seus arquivos.
  • Pode ser integrado a um pacote de escritório online (Collobora Online, OnlyOffice) para que você possa criar e editar seus arquivos doc, ppt, xls diretamente do NextCloud.
  • A app store contém centenas de aplicativos para ampliar a funcionalidade (como aplicativo de calendário, aplicativo de contatos, aplicativo de anotações, aplicativo de videoconferência, etc.).
  • O cliente de sincronização está disponível em Linux, macOS, Windows, iOS e Android.

Requisitos

Você pode instalar o NextCloud em seu servidor doméstico ou em um VPS (servidor virtual privado).

Você também precisa de um nome de domínio para que mais tarde você possa ativar o HTTPS para criptografar o tráfego HTTP. Registrei meu nome de domínio no NameCheap porque o preço é baixo e eles oferecem proteção de privacidade whois gratuita para o resto da vida. Nextcloud pode ser instalado sem um nome de domínio, mas realmente não faz sentido se você não criptografar a conexão HTTP para evitar espionagem. Eu recomendo comprar um nome de domínio se você realmente quiser mexer no software de servidor e usá-lo ao máximo.

Agora vamos instalar o NextCloud.

Etapa 1: Baixe NextCloud no Ubuntu 22.04

Faça login em seu servidor Ubuntu 22.04. Em seguida, baixe o arquivo zip NextCloud em seu servidor. A versão estável mais recente era 24.0.0 no momento da redação deste artigo. Acesse https://nextcloud.com/install e clique em download para servidor -> Arquivar arquivo para ver a versão mais recente.

Você pode executar o seguinte comando para baixá-lo em seu servidor.

wget https://download.nextcloud.com/server/releases/nextcloud-24.0.0.zip

Você sempre pode usar o formato de URL acima para baixar o NextCloud. Se uma nova versão for lançada, simplesmente substitua 24.0.0 pelo novo número da versão.

Instale o utilitário de descompactação.

sudo apt install unzip

Crie o diretório/var/www/ e extraia o arquivo compactado.

sudo mkdir -p /var/www/

sudo unzip nextcloud-24.0.0.zip -d /var/www/

A opção -d especifica o diretório de destino. Os arquivos da web NextCloud serão extraídos para /var/www/nextcloud/.

Etapa 2: Crie um banco de dados e usuário para Nextcloud no PostgreSQL

Nextcloud é compatível com PostgreSQL, MariaDB/MySQL e SQLite. Nextcloud é muito mais rápido com PostgreSQL, então usaremos PostgreSQL neste tutorial. Se você instalou anteriormente o Nextcloud com servidor de banco de dados MariaDB/MySQL, também poderá migrar para PostgreSQL.

Execute o seguinte comando para instalar o Postgresql. (PostgreSQL e MariaDB podem ser executados no mesmo servidor. Você não precisa remover o MariaDB.)

sudo apt install -y postgresql postgresql-contrib

Faça login no PostgreSQL como usuário postgres.

sudo -u postgres psql

Crie o banco de dados nextcloud

CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE';

Crie um usuário (nextclouduser) e defina uma senha.

CREATE USER nextclouduser WITH PASSWORD 'nextclouduser_password';

Conceda permissões ao usuário do banco de dados.

ALTER DATABASE nextcloud OWNER TO nextclouduser; 

GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextclouduser;

Pressione Ctrl+D para sair do console do PostgreSQL.

Em seguida, execute o seguinte comando para testar se você consegue fazer login no PostgreSQL como nextclouduser.

psql -h 127.0.0.1 -d nextcloud -U nextclouduser -W

Pressione Ctrl+D para sair.

Etapa 3: Crie um host virtual Nginx para Nextcloud

Instale o servidor web Nginx.

sudo apt install nginx

Crie um arquivo nextcloud.conf no diretório /etc/nginx/conf.d/, com um editor de texto de linha de comando como o Nano.

sudo nano /etc/nginx/conf.d/nextcloud.conf

Copie e cole o seguinte texto no arquivo. Substitua nextcloud.example.com pelo seu próprio subdomínio preferido. Não se esqueça de criar um registro DNS A para este subdomínio em seu editor de zona DNS. Se você não tiver um nome de domínio real, recomendo ir ao NameCheap para comprar um. O preço é baixo e eles oferecem proteção de privacidade gratuita para o resto da vida.

server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.example.com;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    #I found this header is needed on Ubuntu, but not on Arch Linux. 
    add_header X-Frame-Options "SAMEORIGIN";

    # Path to the root of your installation
    root /var/www/nextcloud/;

    access_log /var/log/nginx/nextcloud.access;
    error_log /var/log/nginx/nextcloud.error;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # last;

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
       return 301 $scheme://$host/remote.php/dav;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
       rewrite ^ /index.php;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
       deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
       deny all;
     }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php8.1-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
       try_files $uri/ =404;
       index index.php;
    }

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        # Optional: Don't log access to assets
        access_log off;
   }

   location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Salve e feche o arquivo. (Para salvar um arquivo no editor de texto Nano, pressione Ctrl+O e pressione Enter para confirmar. Para sair, pressione Ctrl+X. )

Precisamos alterar o proprietário deste diretório para www-data para que o servidor web (Nginx) possa gravar neste diretório.

sudo chown www-data:www-data /var/www/nextcloud/ -R

Em seguida, teste a configuração do Nginx.

sudo nginx -t

Se o teste for bem-sucedido, recarregue o Nginx para que as alterações tenham efeito.

sudo systemctl reload nginx

Etapa 4: instalar e ativar módulos PHP

A versão mais recente do Nextcloud é compatível com PHP8.1. Execute os seguintes comandos para instalar os módulos PHP exigidos ou recomendados pelo NextCloud.

sudo apt install imagemagick php-imagick php8.1-common php8.1-pgsql php8.1-fpm php8.1-gd php8.1-curl php8.1-imagick php8.1-zip php8.1-xml php8.1-mbstring php8.1-bz2 php8.1-intl php8.1-bcmath php8.1-gmp

Etapa 5: habilitar HTTPS

Agora você pode acessar o assistente de instalação na web do Nextcloud em seu navegador inserindo o nome de domínio para sua instalação do Nextcloud.

nextcloud.example.com

Se a página da web não carregar, provavelmente será necessário abrir a porta 80 no firewall.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

E a porta 443 também.

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Antes de inserir qualquer informação confidencial, devemos habilitar a conexão HTTPS segura no Nextcloud. Podemos obter um certificado TLS gratuito em Let’s Encrypt. Instale o cliente Let’s Encrypt (certbot) do repositório Ubuntu 22.04.

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx é o plugin Nginx. Em seguida, execute o seguinte comando para obter um certificado TLS gratuito usando o plugin Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d nextcloud.example.com

Onde :

  • --nginx: Use o autenticador e instalador Nginx
  • --agree-tos: concorda com os termos de serviço do Let’s Encrypt
  • --redirect: Aplique HTTPS adicionando redirecionamento 301.
  • --hsts: Habilita segurança de transporte estrito HTTP. Isso protege contra ataques de remoção de SSL/TLS.
  • --staple-ocsp: habilita o grampeamento OCSP.
  • --email: E-mail utilizado para cadastro e contato de recuperação.
  • O sinalizador -d é seguido por uma lista de nomes de domínio, separados por vírgula. Você pode adicionar até 100 nomes de domínio.

Você será perguntado se deseja receber e-mails da EFF (Electronic Frontier Foundation). Após escolher S ou N, seu certificado TLS será automaticamente obtido e configurado para você, o que é indicado pela mensagem abaixo.

Descobri que o Certbot pode não conseguir adicionar o cabeçalho HSTS no arquivo de configuração Nginx para Nextcloud. Se desejar ativar o HSTS (HTTP Strict Transport Security), edite o arquivo.

sudo nano /etc/nginx/conf.d/nextcloud.conf

Podemos então adicionar a seguinte linha no bloco do servidor SSL para habilitar o cabeçalho HSTS. (Se já estiver lá, então sua configuração está correta.)

add_header Strict-Transport-Security "max-age=31536000" always;

Além disso, você pode ativar o protocolo HTTP2 adicionando a opção http2, que irá acelerar o carregamento da página da web.

listen [::]:443 ssl http2; # managed by Certbot
listen 443 ssl http2; # managed by Certbot

Como abaixo.

Salve e feche o arquivo. Em seguida, envie uma mensagem de texto para configurações do Nginx.

sudo nginx -t

Se o teste for bem-sucedido, recarregue o Nginx para que a alteração tenha efeito.

sudo systemctl reload nginx

A configuração acima obterá pontuação A+ no teste SSL.

Etapa 6: inicie o assistente de configuração baseado na Web em seu navegador da Web

Agora você pode acessar o assistente de instalação na web do Nextcloud usando conexão HTTPS.

https://nextcloud.example.com

Para concluir a instalação, você precisa

  • Crie uma conta de administrador
  • Digite o caminho da pasta de dados Nextcloud
  • Insira os detalhes do banco de dados que você criou na etapa 2. Você pode usar localhost:5432 como endereço de host, pois o PostgreSQL escuta na porta 5432.

A pasta de dados é onde os arquivos dos usuários são armazenados. Por segurança, é melhor colocar o diretório de dados fora do diretório webroot Nextcloud. Portanto, em vez de armazenar os arquivos dos usuários em /var/www/nextcloud/data/, podemos alterá-lo para /var/www/nextcloud-data. que pode ser criado com o seguinte comando:

sudo mkdir /var/www/nextcloud-data

Em seguida, certifique-se de que o usuário Nginx (www-data) tenha permissão de gravação no diretório de dados.

sudo chown www-data:www-data /var/www/nextcloud-data -R

Clique no botão Instalar e em alguns segundos você verá a interface Web do Nextcloud. Parabéns! Você pode começar a usá-lo como armazenamento em nuvem privada.

Como configurar a notificação por e-mail NextCloud

Se sua instância NextCloud for usada por mais de uma pessoa, é importante que seu servidor NextCloud possa enviar e-mails transacionais, como e-mails de redefinição de senha. Primeiro, você deve definir um endereço de e-mail para sua própria conta. Vá para Configurações -> Informações Pessoais e defina um endereço de e-mail para sua conta.

Em seguida, vá para Configurações -> Configurações básicas. Você encontrará as configurações do servidor de e-mail. Existem dois modos de envio: sendmail e smtp. Escolha o modo sendmail.

A seguir, siga o tutorial com link abaixo para configurar a retransmissão SMTP no Ubuntu.

  • Como configurar o relé SMTP Postfix no Ubuntu com Sendinblue

Assim que a retransmissão SMTP estiver configurada, clique no botão enviar e-mail no Nextcloud para testar se o e-mail está funcionando.

Como redefinir a senha do usuário Nextcloud na linha de comando

Se você perdeu a senha da sua conta de administrador e não configurou a entrega de e-mail no Nextcloud, será necessário redefinir a senha executando o seguinte comando em seu servidor. Substitua nextcloud_username pelo seu nome de usuário real.

sudo -u www-data php /var/www/nextcloud/occ user:resetpassword nextcloud_username

Existem também outros comandos que você pode achar úteis. Liste os comandos disponíveis com:

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

ou

sudo -u www-data php /var/www/nextcloud/console.php

Como mover o diretório de dados

Caso você precise mover o diretório de dados NextCloud, existem 4 passos para fazer isso. Primeiro, você precisa usar o comando cp para copiar o diretório de dados para o novo diretório. Por exemplo, o ponto de montagem do meu disco rígido externo é /media/linux-terminal/b43e4eea-9796-4ac6-9c48-2bcaa46353731. Eu crio o novo diretório de dados no disco rígido externo.

sudo mkdir /media/linux-terminal/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/

Em seguida, copio o diretório de dados original para o novo diretório de dados. O sinalizador -R significa que a operação de cópia é recursiva.

sudo cp /var/www/nextcloud-data/* /media/linux-terminal/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R

Você também precisa copiar o arquivo .ocdata.

sudo cp /var/www/nextcloud-data/.ocdata /media/linux-terminal/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/

Em seguida, você precisa definir www-data (usuário Nginx) como proprietário.

sudo chown www-data:www-data /media/linux-terminal/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R

Por último, você precisa editar o arquivo config.php.

sudo nano /var/www/nextcloud/config/config.php

Encontre a linha a seguir e altere o valor de datadirectory.

'datadirectory' => '/var/www/nextcloud-data',

Salve e feche o arquivo. Recarregue a página da web NextCloud e pronto.

Etapa 7: aumentar o limite de memória PHP

O limite de memória padrão do PHP é 128 MB. NextCloud recomenda 512 MB para melhor desempenho. Para alterar o limite de memória do PHP, edite o arquivo php.ini.

sudo nano /etc/php/8.1/fpm/php.ini

Encontre a seguinte linha. (linha 409)

memory_limit = 128M

Altere o valor.

memory_limit = 512M

Salve e feche o arquivo. Alternativamente, você pode executar o seguinte comando para alterar o valor sem abrir o arquivo manualmente.

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.1/fpm/php.ini

Em seguida, recarregue o serviço PHP-FPM para que as alterações tenham efeito.

sudo systemctl reload php8.1-fpm

Etapa 8: Configurar o PHP para consultar corretamente as variáveis de ambiente do sistema

Edite o arquivo www.conf.

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Encontre a seguinte linha (linha 396).

;clear_env = no

Remova o ponto e vírgula para descomentar esta linha.

clear_env = no

Salve e feche o arquivo. Alternativamente, você pode executar o seguinte comando para descomentar esta linha sem abrir o arquivo manualmente.

sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/8.1/fpm/pool.d/www.conf

Em seguida, recarregue o serviço PHP-FPM para que as alterações tenham efeito.

sudo systemctl reload php8.1-fpm

Etapa 9: aumentar o limite de tamanho do arquivo para upload

O limite máximo de tamanho de arquivo de upload padrão definido pelo Nginx é 1 MB. Para permitir o upload de arquivos grandes para seu servidor NextCloud, edite o arquivo de configuração Nginx para NextCloud.

sudo nano /etc/nginx/conf.d/nextcloud.conf

Já definimos o tamanho máximo do arquivo neste arquivo, conforme indicado por

client_max_body_size 512M;

Você pode alterá-lo se preferir, como 1G.

client_max_body_size 1024M;

Salve e feche o arquivo. Em seguida, recarregue o Nginx para que as alterações tenham efeito.

sudo systemctl reload nginx

PHP também define um limite para o tamanho do arquivo de upload. O tamanho máximo padrão do arquivo para upload é 2 MB. Para aumentar o limite de tamanho de upload, edite o arquivo de configuração PHP.

sudo nano /etc/php/8.1/fpm/php.ini

Encontre a seguinte linha (linha 846).

upload_max_filesize = 2M

Altere o valor como abaixo:

upload_max_filesize = 1024M

Salve e feche o arquivo. Alternativamente, você pode executar o seguinte comando para alterar o valor sem abrir o arquivo manualmente.

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/8.1/fpm/php.ini

Em seguida, reinicie o PHP-FPM.

sudo systemctl restart php8.1-fpm

Etapa 10: configurar o cache Redis para NextCloud

Se você acessar a página de configurações -> visão geral do NextCloud, poderá ver o seguinte aviso:

No memory cache has been configured. To enhance your performance please configure a memcache if available.

Habilitaremos o cache de memória para nextCloud usando Redis. Execute o seguinte comando para instalar o servidor Redis do repositório Ubuntu.

sudo apt install redis-server

Você pode verificar a versão com:

redis-server -v

Exemplo de saída:

Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef44459b3ad6

Agora podemos verificar se o servidor redis está em execução.

systemctl status redis

Dica: Se o comando acima não for encerrado imediatamente, você pode pressionar a tecla Q para recuperar o controle do terminal.

Na captura de tela acima, podemos ver que ele está em execução e a inicialização automática está habilitada. Se por algum motivo não estiver funcionando, execute o seguinte comando:

sudo systemctl start redis-server

E se a inicialização automática no momento da inicialização não estiver habilitada, você pode usar o seguinte comando para habilitá-la:

sudo systemctl enable redis-server

Para configurar o Redis como cache para nextCloud, precisamos instalar a extensão PHP para interface com o Redis.

sudo apt install php8.1-redis

Verifique se a extensão está habilitada.

php8.1 --ri redis

Podemos ver que a extensão Redis está habilitada. Se não estiver habilitado, execute o seguinte comando:

sudo phpenmod redis

Em seguida, edite o arquivo de configuração nextCloud.

sudo nano /var/www/nextcloud/config/config.php

Adicione as seguintes linhas acima da linha final );.

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

Salve e feche o arquivo. Em seguida, reinicie o Nginx e o PHP-FPM.

sudo systemctl restart nginx php8.1-fpm

Agora vá para a página configurações -> visão geral do NextCloud novamente e atualize a página da web, o aviso sobre o cache de memória deve ter desaparecido.

Adicionando índices ausentes

Se você vir a seguinte mensagem na página NextCloud Configurações -> Visão geral,

The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically.

Então você precisa adicionar manualmente esses índices. Mude para o diretório webroot Nextcloud.

cd /var/www/nextcloud/

Execute o seguinte comando para adicionar índices ao banco de dados Nextcloud.

sudo -u www-data php occ db:add-missing-indices

Agora, se você atualizar a página Configurações -> Visão geral do NextCloud, o aviso sobre índices ausentes deverá desaparecer.

Conversão para Big Int

Se você vir a seguinte mensagem na página NextCloud Configurações -> Visão geral,

Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically.

Então você precisa alterar manualmente o tipo de coluna. Mude para o diretório webroot Nextcloud.

cd /var/www/nextcloud/

Mude seu Nextcloud para o modo de manutenção para evitar que os usuários façam login e façam alterações.

sudo -u www-data php occ maintenance:mode --on

Em seguida, execute o seguinte comando para alterar o tipo de coluna.

sudo -u www-data php occ db:convert-filecache-bigint

Quando terminar, desligue o modo de manutenção.

sudo -u www-data php occ maintenance:mode --off

Agora, se você atualizar a página Configurações -> Visão geral do NextCloud, o aviso sobre big int deverá desaparecer.

Como instalar o cliente NextCloud no desktop Ubuntu 22.04

Execute os seguintes comandos no desktop Ubuntu 22.04 para instalar o cliente do repositório padrão.

sudo apt install nextcloud-client

Cliente NextCloud no Ubuntu 22.04

O software cliente para macOS, Windows, Android e iOS pode ser encontrado na página de download do Nextcloud.

Como ativar o OnlyOffice/Collabora Online

Por padrão, o Nextcloud vem com suporte para OnlyOffice, um pacote de escritório online que permite editar seus arquivos doc, ppt, xls diretamente do NextCloud. Precisamos apenas instalar um aplicativo para usar esse recurso. Vá para Nextcloud Aplicativos -> Office & Text. Encontre e ative o aplicativo community document server.

Agora, ao clicar no botão adicionar (+) no Nextcloud, você poderá criar documentos Word, planilhas e apresentações diretamente de seu servidor Nextcloud.

No entanto, descobri que este aplicativo não é muito confiável. E a edição comunitária permite no máximo 20 usuários. Você precisa adquirir uma edição empresarial se tiver mais de 20 usuários. Existe outro pacote de escritório online de código aberto baseado no LibreOffice chamado Collabora Online que tem a mesma funcionalidade, mas sem limitação no número de usuários. Você pode ler o artigo a seguir para integrá-lo ao Nextcloud.

  • Integre Collabora Online com Nextcloud no Ubuntu sem Docker

Adicionando entrada DNS local

É recomendado editar o arquivo /etc/hosts em seu servidor Nextcloud e adicionar a seguinte entrada, para que o próprio Nextcloud não precise consultar o DNS público, o que pode melhorar a estabilidade geral. Se o seu servidor Nextcloud não conseguir resolver o nome do host nextcloud.example.com, você poderá encontrar um erro de tempo limite do gateway 504.

127.0.0.1   localhost nextcloud.example.com

Um endereço IP no arquivo /etc/hosts pode ter vários nomes de host, portanto, se você tiver outros aplicativos instalados na mesma caixa, também poderá adicionar outros nomes de host ou subdomínios na mesma linha como esta :

127.0.0.1   localhost focal ubuntu nextcloud.example.com collabora.example.com

Usando Cron para executar trabalhos em segundo plano

Por padrão, Nextcloud usa AJAX para executar uma tarefa a cada carregamento de página. Você pode usar o serviço cron do sistema mais eficiente para executar tarefas em segundo plano. Vá para Nextcloud Configurações -> Configurações básicas e selecione Cron.

Em seguida, edite o arquivo crontab do usuário www-data.

sudo -u www-data crontab -e

Adicione a seguinte linha neste arquivo, para que o cron job seja executado a cada 5 minutos.

*/5 * * * * php8.1 -f /var/www/nextcloud/cron.php

Salve e feche o arquivo.

(Opcional) Impedir tentativas de login maliciosas

Se o seu computador tiver um endereço IP público estático, você poderá criar uma lista de permissões de IP no arquivo de configuração do Nginx.

sudo nano /etc/nginx/conf.d/nextcloud.conf

Adicione as seguintes linhas no bloco do servidor SSL para restringir o acesso ao URL /login, para que apenas o seu endereço IP possa acessar este URL. Substitua 78.56.34.12 pelo seu próprio endereço IP.

location ~* ^/login{
       try_files $uri /index.php;
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php8.1-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;

       allow 78.56.34.12;
       deny all;
}

Salve e feche o arquivo. Em seguida, teste a configuração do Nginx.

sudo nginx -t

Se o teste for bem-sucedido, recarregue o Nginx para que as alterações tenham efeito.

sudo systemctl reload nginx

Se você não tiver um endereço IP estático em sua rede doméstica, poderá configurar um servidor VPN em um data center.

Dicas de soluções de problemas

Se encontrar erros, você pode verificar um dos seguintes arquivos de log para descobrir o que há de errado.

  • Log de erros do Nginx: /var/log/nginx/error.log
  • Log de erros Nginx para o host virtual Nextcloud: /var/log/nginx/nextcloud.error
  • Registro do aplicativo Nextcloud: /var/www/nextcloud/data/nextcloud.log

Por exemplo, uma vez tive um “Internal Server Error” em minha instância Nextcloud e o arquivo /var/log/nginx/nextcloud.error me disse que

FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught OC\HintException: [0]: Memcache \OC\Memcache\Redis not available for local cache (Is the matching PHP module installed and enabled?)

Acontece que, como usei o PPA ppa:ondrej/php no meu servidor Ubuntu, também preciso instalar o php8.0-redis além do php-redis pacote.

Atualizando Nextcloud

É importante manter seu servidor Nextcloud atualizado com as mais recentes correções de segurança e bugs. Leia o tutorial abaixo para saber como atualizar o Nextcloud.

  • 2 maneiras de atualizar o Nextcloud [linha de comando e GUI]

Empacotando

Espero que este tutorial tenha ajudado você a instalar o NextCloud no servidor Ubuntu 22.04 com Nginx. Como sempre, se você achou esta postagem útil, assine nosso boletim informativo gratuito para obter mais dicas e truques. Se cuide 🙂

Artigos relacionados