Se o Nextcloud exibir um aviso de que o bloqueio de arquivos transacionais não está configurado ou está desativado, as operações de arquivo podem ficar menos protegidas contra gravações simultâneas e transferências interrompidas. A solução usual é configurar um armazenamento de chave-valor compatível, como o Redis ou o Valkey, para o bloqueio. Primeiro, identifique como o Nextcloud está instalado e, em seguida, configure o serviço de cache e o Nextcloud em conjunto; instalar o Redis isoladamente não elimina o aviso.
O Manual de Administração atual do Nextcloud afirma que o bloqueio transacional usa o banco de dados por padrão. O backend de banco de dados pode funcionar, mas aumenta a carga no banco. Redis ou Valkey podem fornecer um backend de bloqueio dedicado. O texto exato do aviso varia de acordo com a versão do Nextcloud: a documentação atual lista "O bloqueio transacional de arquivos está desativado, o que pode levar a problemas com condições de corrida". Um aviso separado sobre o cache de memória não se refere ao mesmo problema. Consulte o guia oficial sobre bloqueio transacional de arquivos e a página de referência de avisos do administrador .
Antes de alterar o servidor
Estas etapas pressupõem que você administre o host do Nextcloud. Os comandos abaixo usam Debian ou Ubuntu com uma instalação de pacotes convencional; os nomes dos pacotes, nomes dos serviços, versões do PHP e caminhos de configuração variam em outras distribuições Linux. Se você estiver executando o Nextcloud AIO, Docker, Snap, TrueNAS ou uma imagem de um provedor de hospedagem, siga as instruções dessa implantação para instalar e reiniciar os serviços. A instalação de pacotes PHP no host pode não alterar o ambiente PHP dentro de um contêiner ou appliance.
- Encontre o diretório raiz da web do Nextcloud e seu arquivo de configuração ativo
config/config.php.
- Faça um backup protegido desse arquivo antes de editá-lo. Ele pode conter credenciais de banco de dados e outros dados confidenciais.
- Confirme se o Nextcloud utiliza um único servidor web ou vários. Uma configuração com múltiplos nós requer um servidor ou cluster Redis/Valkey compartilhado, acessível a todos os nós do Nextcloud.
- Planeje uma janela de manutenção curta se seus usuários dependem de uploads de arquivos ininterruptos.
Passo 1: Confirme o aviso e o tipo de instalação.
Faça login como administrador e abra as configurações de administração . Em seguida, revise a visão geral ou os avisos de segurança e configuração. Anote a mensagem exata. Se a página apenas indicar que nenhum cache de memória está configurado, essa é uma verificação diferente; configure um cache local, como o APCu, conforme apropriado, mas não presuma que ele fornecerá bloqueio transacional. O Nextcloud documenta que as configurações de cache devem ser explicitamente ativadas em config.php.
Em uma instalação Linux tradicional, use o shell para identificar o caminho de implantação e inspecionar o arquivo de configuração sem imprimir segredos em um log de terminal compartilhado. Por exemplo, a partir do servidor:
cd /var/www/nextcloud
ls -l config/config.php
Substitua /var/www/nextcloudpelo seu caminho real. Para contêineres, identifique o contêiner e sua configuração montada em vez de editar um arquivo do lado do host que a instância em execução não utiliza.
Etapa 2: Instale e inicie um armazenamento de chave-valor.
Para Debian ou Ubuntu, o backend Redis tradicional normalmente usa o serviço Redis e a extensão PHP Redis. Instale os pacotes que correspondem à versão do PHP usada pelo servidor web:
sudo apt update
sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server
sudo systemctl status redis-server
A saída do status deve indicar que o serviço está ativo. Confirme se o ambiente de execução PHP que serve o Nextcloud consegue carregar a extensão Redis. Em uma instalação padrão, php -m | grep -i redisisso pode ser verificado rapidamente pela linha de comando (CLI), mas o PHP da CLI e o PHP da web podem usar versões ou arquivos de configuração diferentes. Se o módulo estiver ausente no ambiente de execução da web, instale ou habilite o pacote correspondente e reinicie o PHP-FPM ou o servidor web.
O Nextcloud 34.0.2 e versões posteriores também oferecem um KeyValueCachebackend integrado para armazenamentos compatíveis com Redis. Ele não requer a extensão PHP Redis. Isso pode ser útil quando um ambiente de hospedagem não permite a instalação de módulos PHP, mas ainda exige um serviço Redis ou Valkey em execução. O guia atual de cache de memória do Nextcloud documenta ambas as abordagens. Escolha uma das configurações de backend abaixo em vez de adicionar ambas.
Etapa 3: Configure o bloqueio no Nextcloud
Edite o array ativo config/config.phpe adicione as entradas selecionadas dentro do $CONFIGarray existente. Preserve a sintaxe PHP e as vírgulas. Não crie um segundo array de configuração nem duplique chaves. Mantenha as configurações de cache existentes, a menos que você entenda por que elas precisam ser alteradas.
Opção A: Redis com a extensão PHP Redis
Use esta opção quando o ambiente de execução PHP da web tiver a phpredisextensão compatível instalada. Um servidor Redis local escutando na porta 6379 pode usar uma configuração como esta:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'timeout' => 0.0,
],
Se o Redis exigir autenticação, configure a senha correta config.phpe proteja as permissões do arquivo. Não exponha o Redis publicamente. Mantenha-o vinculado ao localhost ou a uma rede privada protegida e use um socket Unix quando apropriado.
Opção B: KeyValueCache com Redis ou Valkey
Use esta opção quando a sua versão do Nextcloud for compatível com o provedor integrado e você preferir não instalar uma extensão PHP Redis. Para um serviço local que escuta na porta 6379, o exemplo mínimo é:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => '127.0.0.1',
'port' => 6379,
],
],
Adicione as configurações documentadas de autenticação, TLS, socket, Sentinel ou cluster, caso seu serviço as utilize. Não copie credenciais de um exemplo. Para obter parâmetros detalhados e topologias suportadas, consulte a referência oficial de configuração de cache .
Etapa 4: Verifique a conectividade e as configurações de vários servidores.
O Nextcloud precisa conseguir acessar o servidor de cache configurado usando o mesmo host, porta, socket e credenciais do serviço. Um erro comum é configurar o localhostRedis em cada nó web do Nextcloud enquanto ele roda em apenas um host separado. Em uma implantação com múltiplos servidores, configure todos os nós web para usar o mesmo servidor ou cluster Redis. Restrinja o acesso à rede dos nós do Nextcloud e proteja o Redis com autenticação e regras de firewall apropriadas.
Para um socket Unix, confirme se a conta PHP/servidor web tem permissão de leitura e escrita no socket. As permissões ou alterações de grupo variam conforme o sistema operacional, portanto, siga a documentação do Redis/Valkey e da distribuição, em vez de aplicar permissões amplas, como acesso de escrita para todos. Uma recusa de conexão, um erro de autenticação ou um erro de permissão de socket podem impedir o Nextcloud de usar o provedor de bloqueio, mesmo quando a chave de configuração estiver presente.
Passo 5: Reinicie os serviços corretos
Após salvar a configuração, reinicie o serviço Redis se as configurações tiverem sido alteradas e, em seguida, reinicie o ambiente de execução PHP que serve o Nextcloud. Por exemplo, uma instalação do Apache pode exigir a reinicialização do Apache, enquanto uma instalação do PHP-FPM requer a reinicialização do serviço PHP-FPM correspondente. Os nomes dos serviços incluem números de versão do PHP em algumas distribuições. Com contêineres, recrie ou reinicie o serviço relevante usando o método compatível com a implantação. Evite reiniciar serviços não relacionados indiscriminadamente em um servidor de produção.
Se o Nextcloud retornar um erro de configuração ou sintaxe, restaure o backup e verifique se há vírgulas faltando, aspas incorretas, chaves duplicadas ou edições feitas no local errado config.php. As configurações de array do PHP devem permanecer dentro da estrutura de configuração existente.
Etapa 6: Verificar a configuração e testar as operações do arquivo.
Atualize a visão geral do administrador e verifique se o aviso de bloqueio de arquivo transacional desapareceu. Se você configurou um cache local e ainda vê um aviso de cache de memória, verifique isso separadamente; o Nextcloud recomenda o APCu para cache local em muitas implantações de servidor único, enquanto o Redis lida com bloqueio e cache distribuído. Não adicione o Redis como cache local por padrão, especialmente em uma configuração com vários servidores.
Você também pode verificar a configuração de bloqueio efetiva com a ferramenta de linha de comando do Nextcloud. Execute-a occa partir do diretório do Nextcloud como a conta do servidor web; no Debian/Ubuntu, essa conta geralmente é www-data:
sudo -u www-data php occ config:system:get memcache.locking
O valor deve corresponder ao backend escolhido, como `/ \OC\Memcache\Redisetc/ backend` ou `/etc/backend` \OC\Memcache\KeyValueCache. Se o comando não encontrar a configuração, verifique o caminho, o usuário de execução e o arquivo de configuração ativo. O guia oficial do OCC explica como executar comandos administrativos.
Por fim, carregue um pequeno arquivo de teste, renomeie-o, faça o download e confirme se um cliente desktop ou móvel consegue sincronizar a alteração. Essas verificações não simulam todas as cargas de trabalho simultâneas, mas confirmam que as operações comuns de arquivo ainda funcionam após a alteração. Para um servidor ocupado ou em cluster, monitore o log do Nextcloud e a disponibilidade do Redis/Valkey durante o uso normal. Se o aviso persistir, verifique se o ambiente de execução PHP da web possui a extensão correta ao usar a Opção A, se o host de cache está acessível, se as credenciais e permissões de socket estão corretas e se todos os nós compartilham o mesmo backend.
O que o bloqueio de arquivos transacionais faz — e o que ele não faz.
O bloqueio transacional ajuda a prevenir a corrupção de arquivos quando operações se sobrepõem, lida com transações interrompidas e coordena alterações envolvendo arquivos compartilhados e armazenamento externo. Ele não reserva um documento para que apenas uma pessoa possa editá-lo, exibe quem mais está editando ou mescla edições simultâneas. Trate o aviso como um problema de configuração do servidor e teste os uploads e a sincronização normais após a configuração do backend. Para edição colaborativa, use um aplicativo projetado para coautoria em vez de depender de bloqueios de arquivos.