Para eliminar o aviso de bloqueio de arquivos transacionais do Nextcloud, primeiro certifique-se de que o bloqueio esteja habilitado e, em seguida, configure um backend persistente compatível com Redis, como o Redis ou o Valkey. Em instâncias pequenas, o Nextcloud pode usar seu backend de bloqueio de banco de dados por padrão; para um servidor de produção ou carga de trabalho compartilhada, o bloqueio baseado em Redis é a escolha usual, pois reduz o tráfego de bloqueio para o banco de dados. Não atribua bloqueios de arquivos ao Memcached: o Nextcloud alerta que os valores em cache podem desaparecer inesperadamente.
Escolha o sistema de bloqueio que melhor se adapta ao seu servidor.
O bloqueio transacional de arquivos protege as operações de arquivos contra gravações conflitantes e pode liberar bloqueios quando um upload ou outra transação é interrompida. Ele ajuda a evitar corrupção durante a operação normal, incluindo trabalhos que envolvem arquivos compartilhados e armazenamento externo. Não impede que duas pessoas editem o mesmo documento simultaneamente nem fornece indicadores de presença; ele controla salvamentos simultâneos. Consulte a documentação sobre bloqueio transacional de arquivos do Nextcloud 35 .
- Backend de banco de dados: O Nextcloud usa bloqueio de banco de dados por padrão. Isso evita a necessidade de adicionar outro serviço e pode ser adequado para uma pequena instalação pessoal, mas o bloqueio de banco de dados aumenta a carga. Se você estiver apenas removendo um aviso em um servidor pouco utilizado, primeiro verifique se o bloqueio não foi explicitamente desativado.
- Redis com phpredis: Uma boa opção para implantações estabelecidas em servidor único e em cluster. Requer um servidor compatível com Redis e a extensão PHP Redis, além de configurações de conexão correspondentes no Nextcloud.
- KeyValueCache com Redis ou Valkey: Disponível a partir do Nextcloud 34.0.2. Ele utiliza a biblioteca integrada do Nextcloud, portanto, não requer uma extensão PHP Redis. Isso é útil quando a extensão não está disponível, embora o Nextcloud observe que um servidor remoto de chave-valor pode adicionar sobrecarga de rede.
- Memcached: Pode servir para cache distribuído, mas não é apropriado para bloqueios de arquivos transacionais, pois os valores em cache podem ser removidos. Mantenha-o fora do
memcache.locking.
Para um servidor doméstico pequeno, o bloqueio de banco de dados pode ser suficiente se não houver aviso de bloqueio e nem pressão no banco de dados. Escolha Redis ou Valkey para instâncias com alta demanda, múltiplos servidores de aplicativos ou quando desejar que os bloqueios de arquivos sejam gerenciados fora do banco de dados. As diretrizes atuais do Nextcloud 35 sobre cache de memória recomendam o APCu para cache local e o Redis para bloqueio em implantações comuns de servidor único. Nós web em cluster devem usar o mesmo endpoint ou cluster Redis ou Valkey.
Verifique se o bloqueio foi desativado.
Localize o arquivo de configuração ativo do Nextcloud, geralmente config/config.phplocalizado no diretório de instalação do Nextcloud. Faça um backup antes de alterá-lo. Procure por `nextcloud.conf` filelocking.enablede `nextcloud.conf` memcache.locking. A referência de configuração define o bloqueio como ativado por padrão; se você encontrar um valor explícito `false`, altere-o para `true` ou remova essa sobrescrita.
'filelocking.enabled' => true,
Não adicione uma segunda cópia de uma chave existente. Os arrays de configuração do PHP devem conter um valor efetivo para cada configuração. Se você usa um contêiner ou painel de hospedagem gerenciada, faça as alterações por meio do mecanismo de configuração compatível para que elas persistam após atualizações ou reimplementações. A referência de aviso administrativo do Nextcloud 35 identifica o aviso de bloqueio e fornece links para os requisitos do backend.
Configure o bloqueio do Redis em um único servidor.
Em sistemas Debian ou Ubuntu, os nomes de pacotes geralmente têm a seguinte aparência: `php.php` redis-servere php-redis`php.php`; utilize os pacotes da sua distribuição e certifique-se de que o módulo PHP corresponda à versão do PHP utilizada pelo servidor web. Se estiver utilizando o backend Redis clássico, instale e inicie o serviço Redis e confirme se a extensão PHP Redis está habilitada para a SAPI web. Um módulo PHP somente para linha de comando não garante que o PHP-FPM ou o Apache consigam carregá-lo.
Adicione o backend de bloqueio e os detalhes de conexão ao config.phparray existente. Este exemplo pressupõe que o Redis esteja em execução na mesma máquina, escutando na porta 6379 do localhost e acessível ao processo PHP do Nextcloud:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Configure os detalhes de autenticação, caso seu servidor Redis os exija. Evite expor o Redis à internet pública; restrinja-o ao host ou à rede privada e configure as regras de autenticação e firewall. Para um socket Unix, use o caminho do socket como o host do Redis e a porta 0, e certifique-se de que o usuário do servidor web possa acessar esse socket. Não copie as configurações do localhost para uma implantação com vários servidores, a menos que o Redis seja realmente local e compartilhado de forma consistente; todos os nós da aplicação Nextcloud precisam acessar o mesmo backend.
Quando a extensão PHP Redis não estiver disponível
No Nextcloud 34.0.2 ou posterior, o KeyValueCache pode se conectar ao Redis ou Valkey sem a necessidade de instalar uma extensão PHP separadamente. Configure o backend e o armazenamento de chave-valor da seguinte forma, substituindo o host e as credenciais pelos valores do seu ambiente:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
Não configure o Redis e o KeyValueCache como provedores de bloqueio concorrentes. Siga a documentação do Nextcloud para obter informações sobre credenciais, TLS, sockets, Sentinel ou topologia de cluster, em vez de adaptar um exemplo de servidor único por tentativa e erro.
Reinicie e verifique se a correção foi aplicada.
Reinicie o serviço compatível com Redis se você alterou sua configuração e, em seguida, reinicie o servidor web ou o processo PHP-FPM se você instalou ou habilitou uma extensão PHP. Verifique o status do serviço usando o nome do serviço da sua distribuição; por exemplo, systemctl status redis-serverem muitos sistemas Debian ou Ubuntu. Confirme se o serviço está ativo e se o processo PHP consegue se conectar. Implantações em contêineres devem usar o nome do serviço Redis na rede do contêiner, e não localhost, a menos que ambos os serviços compartilhem um namespace de rede.
Faça login no Nextcloud como administrador e atualize a visão geral da Administração. O aviso de bloqueio de arquivos transacionais deve desaparecer quando o backend configurado estiver disponível e as configurações forem carregadas. Faça o upload, o download e a sincronização de um arquivo de teste e, em seguida, verifique os logs do Nextcloud e do PHP para verificar se ocorre algum erro de conexão com o Redis ou de permissão. Um aviso persistente geralmente indica um erro de digitação, uma chave de configuração duplicada, uma extensão/SAPI do PHP incorreta, uma conexão de rede bloqueada, permissões de socket incorretas ou um backend inacessível. Corrija essa causa específica em vez de desativar o bloqueio.
Para opções específicas de implantação, consulte as referências oficiais versionadas antes de alterar a topologia: Bloqueio de arquivos transacionais , Cache de memória e configuração do Redis/Valkey e parâmetros de configuração .