Execute tarefas em segundo plano do ownCloud de forma confiável com um temporizador do Systemd.

Se a página de administração do ownCloud indicar que as tarefas em segundo plano não estão sendo executadas, a limpeza em fila e outros trabalhos agendados podem sofrer atrasos até que alguém acesse o site. Em um servidor Linux gerenciado pelo systemd, configure o modo de tarefas em segundo plano do ownCloud para Cron e use um temporizador para executar occ system:croncomo a conta do servidor web. A documentação atual do ownCloud Server recomenda o uso do cron do sistema para tarefas regulares em segundo plano e menciona especificamente os temporizadores do systemd como outra forma de agendar comandos.

Este guia destina-se ao ownCloud Server Classic instalado diretamente em um host Linux. Ele não se aplica ao ownCloud Infinite Scale, que possui uma arquitetura diferente, nem à imagem oficial do ownCloud para Docker, que já executa o cron internamente. Para o Docker, siga as configurações documentadas da imagem em vez de criar um segundo timer de host. Consulte a documentação atual sobre tarefas em segundo plano do ownCloud Server .

Verifique o comando antes de alterar a programação.

Um serviço systemd define o comando a ser executado; um temporizador inicia esse serviço periodicamente. Primeiro, confirme o caminho de instalação do ownCloud e a conta do servidor HTTP. Os exemplos abaixo usam `sudo` /var/www/owncloude www-data`user`, comuns no Debian e Ubuntu. Outras distribuições Linux podem usar `user` wwwrun, apache`user` ou outra conta.

Execute o comando ownCloud manualmente com essa conta para distinguir um comando com falha de um agendamento com falha:

sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ system:cron

Altere o executável e o caminho do PHP para occcorresponder ao seu servidor. O ownCloud recomenda o uso de `php -r` system:cronpara tarefas em segundo plano; guias antigos que utilizam agendamento cron.phppodem se referir a comportamentos legados. Um comando em execução pode terminar sem exibir uma mensagem de sucesso, portanto, verifique seu status de saída echo $?imediatamente após a execução: 0`php -r` significa que o comando foi concluído com sucesso. Se retornar um erro, corrija primeiro o caminho, a instalação do PHP CLI, as permissões, a conectividade com o banco de dados ou o erro do ownCloud. O temporizador executará repetidamente o mesmo comando com falha se você ignorar esta verificação.

Configure o ownCloud para o modo Cron.

Nas configurações de administrador do ownCloud, abra a seção "Tarefas em segundo plano" ou "Cron" e selecione "Cron" . Você também pode configurar o agendador a partir do diretório de instalação com o seguinte comando:

cd /var/www/owncloud
sudo -E -u www-data php occ background:cron

Isso seleciona o modo Cron; o comando agendado permanece occ system:cron. O manual do ownCloud afirma que este comando é equivalente a selecionar Cron na página de administração. O Cron é preferível para um servidor que precisa processar tarefas de forma confiável, pois o AJAX depende de visitas à página e pode deixar tarefas em espera durante períodos de baixa atividade. Para uma pequena instância pessoal, o AJAX pode ser mais fácil, mas é menos previsível.

Crie o serviço systemd e o temporizador.

Crie /etc/systemd/system/owncloudcron.servicecom sua conta HTTP real e o caminho do ownCloud:

[Unit]
Description=ownCloud background jobs

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/owncloud
ExecStart=/usr/bin/php -f /var/www/owncloud/occ system:cron

Type=oneshotInforma ao systemd que o comando deve ser executado até o fim e, em seguida, encerrar. Fornecer o caminho completo do PHP evita depender dos recursos limitados PATHdisponíveis para os serviços do sistema. O diretório de trabalho ajuda o ownCloud a resolver caminhos relativos. Mantenha a conta de serviço alinhada com o proprietário dos arquivos e dados do ownCloud. Não execute a tarefa como root.

Em seguida, crie /etc/systemd/system/owncloudcron.timer:

[Unit]
Description=Run ownCloud background jobs every 15 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=15min
Unit=owncloudcron.service

[Install]
WantedBy=timers.target

O manual do ownCloud recomenda uma cadência de 15 minutos para o exemplo padrão do cron e reconhece os temporizadores do systemd como uma alternativa de agendamento. Esse temporizador inicia cinco minutos após a inicialização do sistema e, em seguida, agenda novas execuções 15 minutos após a ativação do serviço. Se sua carga de trabalho exigir outro intervalo, altere-o OnUnitActiveSeccuidadosamente e considere o tempo necessário para a conclusão de cada execução. Evite configurar outra entrada no crontab para o mesmo comando; agendadores duplicados podem iniciar execuções redundantes e dificultar a solução de problemas.

Diga ao systemd para recarregar suas definições de unidade e, em seguida, habilite e inicie o temporizador:

sudo systemctl daemon-reload
sudo systemctl enable --now owncloudcron.timer

daemon-reloadÉ necessário após criar ou editar arquivos de unidade. Habilitar o temporizador faz com que ele inicie automaticamente após inicializações futuras; --nowinicia-o na sessão atual. Habilite a unidade do temporizador, não apenas o serviço.

Descubra por que uma execução foi ignorada ou falhou.

Verifique se o temporizador está ativado e quando ele será executado novamente:

systemctl is-enabled owncloudcron.timer
systemctl list-timers --all owncloudcron.timer
systemctl status owncloudcron.timer

Um temporizador ativado deve aparecer na lista de temporizadores com uma próxima ativação. Caso contrário, confirme o nome do arquivo da unidade, recarregue o systemd e ative o temporizador novamente. Se o temporizador mostrar uma execução, mas o trabalho do ownCloud ainda estiver atrasado, inspecione o serviço e seus logs:

systemctl status owncloudcron.service
sudo journalctl -u owncloudcron.service --since today

Procure por caminhos incorretos, diretórios de dados inacessíveis, extensões PHP ausentes ou erros no banco de dados. Teste manualmente o comando exato no arquivo de serviço para www-datareproduzir o ambiente da forma mais fiel possível. Verifique também se você usou o comando `owncloud` occ system:cron, em vez de copiar um exemplo do Nextcloud que invoca ` cron.php.

Verifique se o ownCloud está processando tarefas.

Após um ou dois intervalos de temporizador, confirme se o serviço foi concluído com sucesso e se o temporizador tem uma ativação posterior agendada. Em seguida, verifique o status da tarefa em segundo plano na página de administração do ownCloud. O horário da última execução exibido deve avançar e um aviso de tarefa Cron desatualizada deve desaparecer. Se o systemd relatar sucesso, mas o aviso permanecer, inspecione o log de aplicativos do ownCloud e verifique se a interface web está conectada à mesma instância e banco de dados que a instalação pela linha de comando utiliza.

Para contêineres oficiais do ownCloud, não instale essas unidades de host a menos que você tenha desativado intencionalmente o agendador interno do contêiner e a documentação atual do ownCloud suporte sua configuração. A configuração aqui apresentada é uma solução em nível de host para o ownCloud clássico no systemd; nomes de serviço, caminhos, versões do PHP e comportamento do contêiner dependem da implantação.

Deixar um comentário

Execute tarefas em segundo plano do ownCloud de forma confiável com um temporizador do Systemd.

Substitua a execução de tarefas sob demanda por um temporizador systemd que execute o comando occ system:cron compatível com o ownCloud a cada 15 minutos.

Restaurar a sincronização WebDAV do ownCloud encontrando a rota interrompida.

Rastreie a solicitação WebDAV através do Apache, Nginx ou um proxy reverso e, em seguida, confirme se a sincronização do ownCloud funciona com um teste PROPFIND autenticado.

Configure o URL público do Nextcloud para que ele possa se acessar.

Corrija o aviso de endereço de saída ausente do Nextcloud definindo seu URL canônico e verificando o DNS, HTTPS e roteamento de proxy reverso no próprio servidor.

Configurar o cache Redis do Nextcloud no Ubuntu 24.04

Configurar o cache Redis do Nextcloud no Ubuntu 24.04

Configure o APCu e o Redis através de um socket Unix local para cache e bloqueio de arquivos do Nextcloud, com instruções para versões atuais e antigas do Nextcloud.

Configure o Cron do Nextcloud para funcionar automaticamente com um temporizador do Systemd.

Verifique o modo cron do Nextcloud, repare o serviço systemd e o temporizador, e certifique-se de que as tarefas em segundo plano sejam executadas após a inicialização e a cada cinco minutos.

Remova o aviso de bloqueio de arquivos do Nextcloud com o Redis.

Habilite o bloqueio de arquivos confiável do Nextcloud, escolha o backend Redis ou Valkey adequado e verifique se o aviso desaparece sem risco de alterações simultâneas nos arquivos.

O que é preciso para alcançar uma classificação de segurança A+ no Nextcloud

O que é preciso para alcançar uma classificação de segurança A+ no Nextcloud

Corrija problemas comuns encontrados em verificações do Nextcloud com as atualizações mais recentes, HTTPS e HSTS, configuração precisa de proxy reverso e verificações em relação ao servidor público.

Habilite a criptografia do lado do servidor do Nextcloud com impacto mensurável.

Configure o Nextcloud SSE para o armazenamento que precisa dele, proteja as chaves de criptografia e meça o impacto na transferência e na CPU antes de criptografar os arquivos existentes.

Adicione a pesquisa de texto completo do Elasticsearch ao Nextcloud.

Conecte a busca de arquivos do Nextcloud ao Elasticsearch, indexe o conteúdo dos documentos e escolha uma configuração que se adapte às suas necessidades de servidor e segurança.

Defina uma política de expiração confiável para arquivos excluídos do Nextcloud.

Defina uma política de expiração confiável para arquivos excluídos do Nextcloud.

Configure o Nextcloud para remover arquivos excluídos após um período de retenção definido, agendar tarefas em segundo plano de forma confiável e evitar comandos que esvaziam a lixeira de todos os usuários.