Releases: maykomeier/berrycade
Releases · maykomeier/berrycade
Release list
berrycade-1.0.36.img.xz
1.0.36 — 2026-09-29
- Quedas do PPPoE: novo log em Logs & Relatórios › Quedas do PPPoE, para apresentar ao provedor. Registra cada queda da conexão PPPoE e, com o monitor do link ligado, cada período conectado mas sem internet: início, fim, duração, o motivo (ex.: provedor parou de responder aos pedidos de eco, sessão encerrada pelo provedor, sem PADO, falha de autenticação, porta WAN sem sinal) e o IP recebido na volta. Quedas causadas pelo próprio equipamento (reconexão manual, alteração de configuração, reinício pelo monitor) ficam marcadas e não contam contra o provedor. Resumo do período (quedas, tempo fora do ar, disponibilidade), filtro "só quedas do provedor" e Exportar PDF. Mantido por 1 ano.
- Monitor do link (WAN PPPoE): na interface WAN, seção Monitor do link. O equipamento testa a internet pela conexão PPPoE (ping em IPs/nomes e acesso a endereços http(s)://) e, quando todos os alvos falham várias rodadas seguidas — ou a conexão fica sem endereço —, refaz o PPPoE. Cobre o "conectado, mas sem internet", que o PPPoE sozinho não percebe. Configuráveis: alvos, intervalo, falhas seguidas e espera mínima entre reinícios. O estado, o último teste e o histórico aparecem no quadro Conexão PPPoE; cada reinício vai para a auditoria. Desligado por padrão.
- Consumo por dispositivo: clique num gráfico de consumo (ou em "quem está usando?") para abrir, ao vivo, os dispositivos consumindo o link naquele momento — nome, IP/MAC, download, upload, conexões e principais destinos —, do maior para o menor, atualizado a cada 3 s.
- Painel de Controle personalizável: em Personalizar, arraste cada widget pelo título para outra posição (inclusive lado a lado) e redimensione pelo canto ◢ (largura em 12 colunas, altura livre; duplo clique no canto volta à altura automática). O layout é salvo por administrador; Restaurar padrão volta ao original.
- Informações do sistema: IP público atual (consultado em api.ipify.org, com ifconfig.me como alternativa, a cada 10 minutos, sem atrasar o painel).
- Logs em PDF: Logs & Relatórios › Tráfego (e Conexões bloqueadas) ganhou Exportar PDF, com o filtro selecionado (ação, zona e busca).
- Navegação por dispositivo (7 dias): nova página Logs & Relatórios › Navegação com os sites acessados por cada dispositivo, a partir das consultas ao DNS do firewall (funciona com HTTPS, sem inspeção SSL). Filtros por dispositivo, período (última hora, hoje, 24 h, 7 dias ou datas), site e "só bloqueados", e Exportar PDF. Um registro por dispositivo e site a cada 5 minutos; o que passa de 7 dias é apagado.
- Corrigido: criar uma VLAN dava "Cannot read properties of undefined (reading 'length')" e a VLAN não era criada. As tabelas do painel também não quebram mais quando uma coluna não consegue ler uma linha.
- Tailscale: voltou a funcionar nas imagens montadas do zero (desde a 1.0.15), que não traziam o programa — ele não faz parte do Debian. As imagens (Raspberry Pi e Proxmox) passam a trazer o Tailscale do repositório oficial (chave
2596A99E…957F5868), desligado até ser habilitado. Nos equipamentos já instalados, a página VPN › Tailscale mostra Instalar Tailscale (precisa de internet, ~1 minuto). Autenticar sem o Tailscale instalado mostra essa explicação em vez de "erro interno". - Rede › Interfaces, WAN em PPPoE: a janela da interface mostra o estado da conexão (conectado, conectando ou desconectado) e, conectada, o IP, o gateway, a máscara e os DNS recebidos do provedor e há quanto tempo está no ar. O botão Conectar/Reconectar refaz a sessão com a configuração aplicada. Desconectada, aparecem as últimas linhas do registro do pppd, com o motivo (autenticação recusada, provedor sem resposta…).
- Todas as janelas de edição do painel (interfaces, VLANs, zonas, rotas, reservas e banimentos de DHCP, políticas, endereços, serviços, IPs virtuais, pools, NAT central, túneis IPsec, access points, nomes de dispositivos, administradores…) agora fecham na hora ao dar OK. A linha da tabela fica vermelha enquanto a alteração é aplicada e pisca verde quando entra em operação; um item novo aparece como linha provisória. Janelas que não ficam numa tabela (gerar certificado, importar CA, autenticar Tailscale…) fecham e mostram "Aplicando…". Se algo falhar, a janela reabre com o que foi digitado e o erro. Campos obrigatórios vazios são avisados antes de fechar. A troca de senha continua esperando o resultado na própria janela.
- Perfis de Segurança › Página de bloqueio: o editor visual voltou a mostrar a barra de formatação (negrito, títulos, listas, alinhamento, cor, link, imagem). A política de segurança do painel bloqueava o script que iniciava o editor.
- Aviso de versões novas: a versão mais nova agora é lida pela página de versões do GitHub, que não tem o limite de 60 consultas por hora por IP da API sem login, e a API só é consultada uma vez por versão nova, para buscar as notas. Antes, cada verificação gastava uma consulta desse limite, que é compartilhado por todos os equipamentos e computadores atrás do mesmo IP público, e aparecia "GitHub respondeu 403: API rate limit exceeded". Se a API estiver no limite quando sair uma versão nova, ela aparece mesmo assim, sem as notas, e a mensagem explica o limite e a hora em que ele volta.
- Corrigido: não era possível criar VLANs. A janela de VLAN dava erro ao abrir, por causa de campos de velocidade de link copiados da interface física. A porta pai sugerida passa a ser a de papel LAN, e cada opção mostra papel e dispositivo.
- Interfaces físicas: o nome lógico (lan, wan…) pode ser editado quando nada o usa. O assistente inicial acerta também o papel e a zona das portas, e não só o dispositivo: uma edição anterior podia deixar o objeto "lan" como WAN, e o assistente mantinha a troca.
- Manual do usuário: o capítulo 12 (Linha de comando) foi reescrito com a CLI completa: como as alterações são aplicadas e confirmadas, comandos de configuração e o formato dos campos, seções, comandos de operação, recuperação e exemplos.
- A montagem das listas do filtro web ao salvar um perfil acontece antes de travar o motor de aplicação: outras alterações no painel não ficam mais esperando esse ~1 minuto.
- Assistente de configuração: corrigidas as portas LAN/WAN que podiam aparecer (e ser aplicadas) trocadas. O assistente reconhecia a porta pelo nome (
eth0/eth1), e esse nome podia mudar de placa entre um boot e outro: o kernel e a fixação pelo MAC disputavam o mesmo nome. Agora a porta escolhida passa a se chamarlan0ouwan0, fixada pelo MAC, e o nome é trocado na hora (sem esperar reiniciar). Equipamentos que já rodaram o assistente passam a usar esses nomes na próxima aplicação. Voltar a uma configuração anterior ao assistente devolve os nomeseth0/eth1. - Nomes com espaços em políticas, endereços, serviços, pools de IP, VIPs, perfis de filtro web e de inspeção SSL e pontos de acesso (ex.: "Libera Tudo"). Zonas, interfaces, VLANs e túneis IPsec continuam sem espaços, porque viram nomes de dispositivo e de regra.
- Atualização de firmware: corrigida a volta automática para a versão anterior em equipamentos com perfis de filtro web grandes. Ao iniciar, o painel recompilava as listas de categorias (no Raspberry Pi, cerca de 2 minutos e 1,4 GB de RAM para 8 milhões de domínios), e o atualizador desiste após 120 s sem resposta. Agora a inicialização reaproveita as listas já compiladas, e a recompilação, quando necessária, roda em segundo plano sem travar alterações no painel. Fora da inicialização, as listas só são recompiladas quando um perfil ou uma categoria mudou, então salvar uma política ficou mais rápido.
- Desempenho do filtro web: cada consulta DNS a um site liberado ainda fora do cache levava ~300 ms com perfis grandes. A causa era o modo "Monitorar": o dnsmasq conferia cada resposta contra todos os domínios monitorados, um por um (7 milhões no teste). Agora o filtro só registra as consultas, e um serviço leve do painel procura cada nome na lista compilada (ordenada, por busca binária) e marca o IP para o log de tráfego, como antes. No Raspberry Pi 4, a consulta caiu para ~30 ms e o filtro de 590 MB para 168 MB. O cache do filtro subiu de 2.000 para 10.000 nomes, e os logs do DNS passam a ser gravados sem esperar o cartão SD.
- Corrigida a "correção de drift" a cada minuto: os IPs que o monitoramento acrescenta ao firewall eram vistos como alteração externa, e o sistema reaplicava toda a configuração (firewall e proxy) a cada minuto. A verificação agora ignora os elementos dos conjuntos dinâmicos.
- Painel mais leve: a configuração fica em cache até o arquivo mudar (antes: ~60 ms para reler e revalidar a cada requisição), e o estado dos serviços e o mapa IP → domínio ficam guardados por 5 s. Uma atualização do Painel de Controle (a cada 2 s) caiu de ~270 ms para ~12 ms no Pi.
- O proxy (Squid) só é recarregado quando mudam os arquivos que ele usa, e não mais a cada mudança das listas do filtro DNS.
- Página de bloqueio: um site bloqueado pelo filtro web mostrava só "ERR_NAME_NOT_RESOLVED". Agora o filtro DNS responde nomes bloqueados com um endereço reservado (198.18.0.1), e o firewall atende esse endereço com a página "Acesso bloqueado" (a padrão ou a personalizada). Em HTTP ela aparece direto. Em HTTPS, o certificado é gerado na hora pela CA do BerryCade: com a CA instalada no aparelho a página aparece normalmente, e sem ela o navegador avisa antes. Consultas IPv6 e de outros tipos para nomes bloqueados são respondidas localmente e nunca repassadas para fora. O proxy (Squid) passa a rodar sempre que alguma política usa filtro web.
- Inspeção SSL com perfis grandes: o Squid não carrega mais as listas de categorias. Com 8 milhões de domínios, só a verificação levava cerca de 7 minutos e estourava o tempo. Agora ele consulta o filtro DNS do próprio perfil para cada site novo (resposta guardada por 5 minutos) e verifica a configuração em 0,1 s. O resultado é exatamente ...
berrycade-1.0.18.img.xz
1.0.18 — 2026-09-24
- Imagem do Raspberry Pi: corrigido o equipamento que ligava e chegava ao login, mas sem rede. A placa de rede onboard recebia o nome
end0(Pi 4/5) ouenx…(Pi 3) em vez deeth0, e a configuração da LAN não era aplicada. O boot agora usanet.ifnames=0(portaseth0/eth1), como já acontecia na imagem Proxmox. Para um cartão já gravado, basta acrescentarnet.ifnames=0ao fim da linha docmdline.txtna partiçãobootfs. - Sistema › Serviços: botões no topo para Reiniciar API (o painel volta sozinho na tela de login; o tráfego não é afetado), Reiniciar equipamento e Desligar equipamento, com confirmação e registro na auditoria. O antigo "Reiniciar o firewall" da barra da lista foi substituído por eles.
- Painel de Controle: gráficos de consumo com linha sobre as barras (download contínua, upload tracejada). Com a velocidade do link definida na interface (Rede › Interfaces › Velocidade do link, em Mb/s; a LAN usa 1 Gb/s por padrão), a escala vai até o link, linhas tracejadas marcam a velocidade de cada sentido e a linha muda de cor pela ocupação, nas mesmas faixas dos gauges; a legenda mostra o percentual do link em uso.
- Painel de Controle: todos os gauges mudam de cor pela ocupação da escala — até 49% verde, até 75% amarelo, até 95% laranja e acima disso vermelho.
1.0.17 — 2026-09-23
- Atualização.
1.0.16 — 2026-09-23
- Console no painel web: botão
>_no topo abre um terminal já logado comoberrycade(o mesmo console restrito do Raspberry), em janela redimensionável e maximizável. Só para administradores logados; fecha junto com a sessão do painel; abertura e fechamento vão para a auditoria. Terminal: xterm.js (MIT), servido pelo próprio equipamento.
1.0.15 — 2026-09-23
- Painel de Controle: os gauges ficam vermelhos em nível crítico (temperatura ≥ 80 °C, memória ≥ 95%, disco ≥ 92%); fora disso seguem a cor do tema.
- Painel de Controle: gauges redesenhados — arco semicircular grosso na cor de destaque do tema, valor e nome dentro do arco, realce e detalhes ao passar o mouse.
- Imagem do Raspberry Pi montada do zero: em vez de copiar o equipamento de desenvolvimento, o gerador monta um sistema Raspberry Pi OS Lite novo a partir dos repositórios oficiais (Debian 13 + archive.raspberrypi.com), para Pi 3, 4 e 5. A imagem fica reproduzível, sem sobras do equipamento que gera, e pode ser gerada em qualquer máquina ARM64. A chave pública de assinatura é gravada como confiável; a geração falha se ela faltar.
- Imagens: correção de imagens geradas com o sistema de arquivos corrompido (desmontagem "preguiçosa" seguida de fsck). A geração agora desmonta de verdade e falha se o fsck encontrar qualquer erro.
- Sistema › Desenvolvimento: botão para cancelar a geração de uma imagem; logs de geração e de atualização acompanham a última linha.
- Correção: gerações de imagem e o atualizador eram vistos como parados enquanto rodavam (estado "activating"), o que permitia duas gerações ao mesmo tempo e, na migração a partir da 1.0.x, podia remover as unidades provisórias antes de o atualizador antigo terminar.
- Políticas: a visão escolhida (por par de zonas ou por sequência) fica salva no firewall, por administrador. Ordem das regras alterável arrastando a linha, nas políticas e no NAT central; na visão por par de zonas, a regra só pode ser solta dentro do mesmo par.
- NAT integrado às políticas, como nos firewalls de mercado: por padrão o NAT é definido em cada política (IP da interface de saída ou IP pool) e a tela separada sai do menu. A antiga "NAT de saída" virou o modo opcional NAT central (Sistema › Configurações). Configurações que já tinham regras nessa tabela continuam em NAT central automaticamente.
- Correção: depois de uma alteração aplicada (por exemplo, mover uma regra), a lista de políticas podia ficar vazia e o editor não abria.
- CLI: comandos para os usuários do painel web —
berrycade users,passwd <usuário>(com--temporary),blocked,unblock <usuário|IP>(ou--all),sessionselogout <usuário>, por um canal local (somente 127.0.0.1 e com token legível apenas pelo root).reset-adminencerra as sessões do admin na hora. - Login mais resistente: bloqueio após 5 falhas em 5 minutos por IP e por usuário, sem brecha para tentativas simultâneas; mesma resposta e mesmo tempo para usuário inexistente e para origem fora dos hosts confiáveis. Trocar a senha encerra as outras sessões do usuário.
- Logo nova, mais simples: escudo vermelho com framboesa branca, em cores chapadas (fonte vetorial em
web/static/img/logo.svg); favicon também em SVG. - Manual do usuário em
docs/BerryCade-Manual-do-Usuario.docx.
1.0.14 — 2026-09-23
- Imagem: o boot passa a localizar as partições pelo UUID do sistema de arquivos (
root=UUID=, fstab comUUID=), e não mais pelo ID do disco (PARTUUID), que pode ser alterado depois da gravação. Corrige o Pi parado em "Waiting for root file system". - Nova logo BerryCade no painel (menu, topo, login), no favicon (inclui favicon.ico) e na página de bloqueio do filtro web.
- O projeto passa a se chamar BerryCade. Código em
/usr/lib/berrycade, configuração em/etc/berrycade, dados em/var/lib/berrycadee/var/log/berrycade, releases em/opt/berrycade, serviçosberrycade-*, CLIberrycade, tabela nftablesinet berrycade, arquivo de primeiro bootberrycade.txt. - Migração automática ao atualizar por firmware a partir da 1.0.x: os diretórios são movidos (com links de compatibilidade nos caminhos antigos), os serviços antigos são trocados pelos novos e a tabela nftables antiga é removida na mesma transação que cria a nova. Backups feitos antes da troca continuam sendo restaurados.
- Porta HTTPS do painel: a troca passa a valer na hora (o painel abre a porta nova ao aplicar e volta para a anterior se a alteração não for confirmada). Antes o acesso era perdido até reiniciar o equipamento.
- Janela anti-bloqueio: conexões já abertas com o painel são reavaliadas pelas regras novas antes da confirmação, que agora só acontece se o acesso continuar funcionando de fato. Antes uma conexão aberta confirmava até alterações que bloqueavam o acesso.
- A porta 80 sempre redireciona para a porta HTTPS configurada.
1.0.13 — 2026-09-23
- Imagem: corrige boot que parava em "(initramfs) PARTUUID ... does not exist" no primeiro uso. A expansão da partição agora é feita pelo primeiro boot do BerryCade, sem trocar o ID do disco; a imagem não leva mais o estado do cloud-init do equipamento de desenvolvimento.
- Equipamento de desenvolvimento: a versão exibida no painel (Firmware, rodapé do menu) é atualizada assim que um novo firmware é gerado, sem reiniciar o serviço.
1.0.12 — 2026-09-22
- Corrige gauges do painel que saíam do enquadramento acima de 50% (arco SVG desenhado pelo lado longo).
- Clientes Wi-Fi com nome do dispositivo (personalizado, DHCP, aprendido pelo AP ou DNS reverso da LAN), fabricante pelo MAC e identificação de MAC privado.
- Opção "Mostrar dicas" (Sistema › Configurações › Aparência); dicas com visual neutro, sem parecer mensagem de erro.
- Temas: botão "Definir como padrão de fábrica" no equipamento de desenvolvimento (defaults/ui.yaml acompanha firmware e imagens); "Restaurar padrão" usa esse tema.
- Novo menu WiFi: access points UniFi e clientes Wi-Fi monitorados por SSH (mca-dump), somente leitura e sem depender da controladora. APs são adicionados com IP, usuário e senha SSH — a senha é usada uma única vez para o firewall instalar a própria chave e não é armazenada.
1.0.11 — 2026-09-22
Primeira versão em produção no Raspberry Pi (Raspberry Pi OS Lite 64 bits / Debian 13).
Base
- Motor nftables puro (tabela
inet berrycade) com aplicação atômica, rollback automático, janela
anti-bloqueio de 60 s, versionamento git de cada alteração e verificação de drift config ↔ kernel. - systemd-networkd (interfaces, VLANs 802.1Q, XFRM), dnsmasq (DNS/DHCP por VLAN), PPPoE via pppd (PAP/CHAP).
- Políticas zona → zona no modelo de firewall de mercado, objetos de endereço/serviço, Virtual IPs
(port forwarding), IP pools, NAT na política e NAT de saída central.
Segurança
- IDS/IPS Suricata via NFQUEUE (fail-open), por zona e por política; ET Open com atualização diária;
instância ajustada para ~1,2 GB RAM. - Filtro Web por perfil com ação por categoria (permitir / monitorar / bloquear), listas UT1,
Block List Project e HaGeZi, anti-contorno (DoT/DoH). - Inspeção SSL: certificado (SNI, sem descriptografar) e profunda (ssl-bump) com CA própria e isenções.
- Hosts confiáveis para o painel/SSH (global no nftables e por administrador).
VPN
- IPsec site-to-site (strongSwan, route-based) com assistente; certificados; Tailscale com subnet router.
Painel
- Dashboard em tempo real (gauges, consumo WAN/LAN), clientes DHCP (reservar / revogar / banir),
logs de tráfego, bloqueios, IDS e filtro web, sessões, auditoria. - Serviços sob demanda com monitor inteligente; backup completo cifrado (.swbk) com senhas e certificados;
tema personalizável; logo própria.
Distribuição
- Firmware assinado (.swfw, Ed25519) com instalação por upload, autoteste, verificação de saúde e rollback
automático; versões lado a lado em /opt/berrycade/releases. - Gerador de imagem (.img.xz) sem dados do equipamento de origem, com primeiro boot configurável (berrycade.txt).
- Assistente de configuração inicial: portas LAN/WAN por adaptador/MAC, LAN, WAN, identidade.