Pular para o conteúdo principal

Versão 1.5.0

Visão geral​

A Versão 1.5.0 apresenta novos recursos, incluindo uma notificação por e-mail opcional de Resumo Diário, chaves de API com escopo e listas de permissões de IP para acesso externo à API, controles de acesso ao servidor por usuário e selos de versão do Duplicati exibidos no painel. Os e-mails de notificação agora são formatados em Markdown. O serviço cron vincula-se por padrão ao localhost. Além disso, o esquema do banco de dados é atualizado para a versão 4.3 durante a inicialização.


Novos recursos​

Resumo Diário​

  • Um e-mail de status por dia: Configurações → Resumo Diário (desativado por padrão) envia um único instantâneo localizado de cada trabalho de Backup conhecido no horário escolhido no fuso horário do seu navegador. A programação é armazenada como UTC. O padrão para novas instalações é 01:00 UTC. A tarefa cron é executada uma vez por dia nesse horário.
  • O que é pausado: Enquanto o Resumo Diário estiver ativado, os e-mails de Backup e Atrasado para o destinatário de E-mail padrão não são enviados. Destinos de e-mail adicionais nas Notificações de Backup ainda recebem os eventos correspondentes, e o NTFY por trabalho continua. Essas configurações por trabalho permanecem armazenadas e são retomadas quando o modo é desativado.
  • Destinatário e link do painel: Um destinatário de substituição opcional envia o resumo para um local diferente do endereço das Configurações de E-mail. Uma URL do painel público opcional (ou a variável de ambiente DUPLISTATUS_PUBLIC_URL) preenche {duplistatus_link} no e-mail.

Proteção de API externa​

  • Chaves de API com escopo (issue #79): Os administradores podem criar chaves upload e read. Elas são opcionais e desativadas por padrão, para que os trabalhos existentes do duplicati continuem funcionando. O segredo é mostrado uma vez e posteriormente identificado por uma Impressão digital. Quando as chaves não são obrigatórias, uma chave válida e correspondente é aceita e rastreada; uma chave inválida, desativada, expirada ou com Escopo incorreto é ignorada e a solicitação ainda prossegue.
  • Listas de permissão de IP: Listas CIDR separadas podem restringir a Interface de administração e as APIs externas (/api/upload, /api/summary, /api/lastbackup*). Ambas as listas estão desativadas por padrão e sempre incluem 127.0.0.1 e ::1. Os endereços de cliente encaminhados são confiáveis apenas quando o par TCP é um proxy confiável configurado.
  • Limites de upload: /api/upload tem um limite configurável de tamanho do corpo (padrão de 5 MB) e limites de taxa por IP.

Acesso e versões​

  • Acesso ao servidor por usuário: Configurações → Usuários pode limitar uma conta de não administrador a servidores selecionados. O padrão permanece como todos os servidores atuais e futuros. Uma lista personalizada oculta outros servidores no painel, páginas de detalhes, gráficos e listas de configurações. Os administradores sempre veem todos os servidores.
  • Selos de versão do duplicati: Os cartões do painel e a tabela mostram a Versão do duplicati de cada servidor em relação à versão mais recente para aquele Canal (stable, beta, experimental, canary). As versões atuais usam texto atenuado; as versões desatualizadas usam amarelo de aviso. Configurações → Versões do Duplicati mostra as versões do canal em cache e permite que os administradores definam uma verificação diária, de 12 horas ou de 6 horas.
  • Falhas de entrega: Os administradores veem um botão na barra de ferramentas enquanto a entrega de E-mail ou NTFY está falhando. Ele mostra o erro e vincula à Página de configurações correspondente.
  • Compactação semanal do banco de dados: Todo Domingo às 04:00 UTC, o serviço cron remove as linhas de Backup cujo servidor foi removido, servidores sem backups, configurações de notificação restantes e linhas antigas de entrega do Resumo Diário e, em seguida, executa o vacuum no SQLite.
  • Hora relativa no idioma da interface (issue #74): Configurações de Exibição → Localidade de Formatação possui uma caixa de seleção de adesão para que as frases de tempo relativo permaneçam no idioma da interface quando a Localidade de Formatação for substituída.

Melhorias​

Notificações​

  • Modelos de e-mail em Markdown: Os corpos de Sucesso, Aviso/Erro, Atrasado e Resumo Diário são em Markdown, renderizados para HTML sanitizado e Texto simples. Os padrões armazenados não modificados são atualizados para o novo layout; os Modelos personalizados são mantidos. As Mensagens do NTFY enviam Markdown e omitem as linhas de cabeçalho da tabela GFM.
  • O idioma segue o Usuário conectado: O idioma da interface é armazenado por conta no navegador, da mesma forma que o tema e as Configurações de Exibição. O cookie NEXT_LOCALE ainda controla a Página de login e a renderização do Servidor. O código de localidade para hindi agora é hi; os cookies e favoritos hi-Latn existentes ainda são resolvidos.

Operações​

  • Plano de controle do Cron: O serviço cron se vincula a 127.0.0.1 por padrão (CRON_BIND_HOST). Vincular a outro endereço requer CRON_SERVICE_SECRET. As rotas de sessão do Administrador são necessárias para alterar as tarefas do cron através do aplicativo.
  • Tamanho da restauração do banco de dados: Configurações → Manutenção do Banco de Dados aceita uploads de restauração de até 200 MB. Se você colocar o Nginx à frente, defina client_max_body_size para pelo menos 256 MB para que o proxy não corte o arquivo antes.
  • Servidor de desenvolvimento: pnpm dev inicia o Next.js (porta 8666) e o serviço cron (porta 8667) juntos. CTRL-C interrompe ambos.

Correções de bugs​

  • Alertas de atraso não se repetem mais a cada verificação: Um canal de notificação com falha não envia mais outro alerta de atraso no próximo ciclo de monitoramento quando outro canal já foi entregue. A janela única, diária, semanal ou mensal é registrada após qualquer canal bem-sucedido.
  • Coletar logs no Duplicati 2.4: A coleta de logs de backup e a sincronização de agendamentos não falham mais com Could not find machine-id in system options no Duplicati 2.4.0 e versões posteriores. O ID da máquina configurado é lido nas configurações do servidor.
  • Inicialização do Docker: O processo cron de produção não encerra imediatamente na inicialização do contêiner, e os builds de imagem não falham mais ao instalar dependências em sistemas de arquivos overlay.
  • Primeiro login: Após a alteração obrigatória de senha em uma nova instância, o aplicativo abre o painel.
  • Agendamento do Resumo Diário: Alterar a hora de envio cria uma nova ocorrência. Esse horário ainda envia após Enviar resumo agora ou outro e-mail no mesmo dia. A lista de tarefas corresponde ao painel (relatório mais recente por servidor e Nome do Backup).

Segurança​

Probes, modelos e dependências​

  • Saúde e ping: GET /api/health não lista mais tabelas SQLite nem executa consultas do painel. /api/health e /api/ping possuem limite de taxa por IP para clientes que não estão em loopback. Quando qualquer Lista de permissões de IP está habilitada, essas sondagens aceitam loopback mais endereços da lista de administradores ou da lista externa.
  • E-mail HTML: Os corpos das notificações são analisados como Markdown com HTML bruto desativado e depois sanitizados antes do envio.
  • Correções de dependências: nodemailer agora é 10.0.9. Os achados da auditoria do espaço de trabalho da documentação foram limpos com undici, svgo e image-size-next atualizados.

Notas de migração​

A partir da versão 1.4.2​

Quando atualizar para a versão 1.5.0:

  1. As migrações de banco de dados são executadas na inicialização: O esquema 4.2 adiciona o registro de entrega do Resumo Diário. O esquema 4.3 adiciona acesso ao servidor por usuário. Os usuários existentes mantêm acesso a todos os servidores.
  2. Novos controles permanecem desativados: Resumo Diário, Chaves de API obrigatórias e ambas as Listas de permissões de IP têm como padrão Desativado. As URLs de upload do Duplicati existentes continuam funcionando até que você ative a proteção.
  3. As listas de permissões sempre incluem loopback: 127.0.0.1 e ::1 são mesclados em ambas as listas e não podem ser removidos nas Configurações.
  4. O Cron se vincula ao localhost: A porta do cron não pode ser acessada de outros hosts, a menos que você defina CRON_BIND_HOST e CRON_SERVICE_SECRET.
  5. Modelos de notificação padrão: Os modelos de Sucesso, Aviso, Atrasado e Resumo Diário não modificados são substituídos pelos padrões Markdown. Os modelos personalizados são mantidos como estão.
  6. Dependências: Execute pnpm install para aplicar o lockfile e os overrides atualizados. O Node.js 24 ou mais recente ainda é necessário.

Suporte​

Obtendo ajuda​

Reportando bugs​

Ao reportar bugs, por favor inclua:

  • Versão: 1.5.0
  • Sistema operacional e versão
  • Versão do Docker/podman
  • Tipo de contêiner (Docker ou podman)
  • Mensagens de erro e logs
  • Etapas para reproduzir

Changelog detalhado​

As seções acima são os destaques desta versão. A lista completa de alterações está em dev/CHANGELOG.md sob [1.5.0].


Licença​

Este projeto é licenciado sob a Licença Apache 2.0.

Copyright © 2026 Waldemar Scudeller Jr.