Download
Código-fonte:
curl -O https://minirepo.minidc.com.br/download/miniproxy.tar.gz
Binário compilado:
curl -O https://minirepo.minidc.com.br/download/miniproxy-bin.tar.gz
O download é liberado apenas para IPs autorizados.
Changelog
-
2.13.0 [] 29/08/2026- Portas TCP: opcao "preservar porta" no destino (FTP passivo).
-
2.12.0 [] 29/08/2026- Regras por Path: opcao "remover prefixo" (strip) para gateways.
-
2.11.0 [] 29/08/2026- Alterar backend principal do dominio + 404 limpo para gateways.
-
2.10.0 [] 29/08/2026- Dashboard: card contador do WAF.
-
2.9.0 [] 29/08/2026- Dashboard: graficos historicos de conexoes e in/out por servidor.
-
2.8.0 [] 29/08/2026- Cloudflare por dominio (flag CF por dominio).
-
2.7.1 [] 29/08/2026- Cloudflare modo Flexible: servir conteudo na :80 via loopback.
-
2.7.0 [] 29/08/2026- Integracao Cloudflare: IP real do visitante + lockdown + fix redirect loop.
-
2.6.0 [ - 2.6.2] 29/08/2026- WAF: CRS em disco, wizard de dominio, logs por dominio e backend HTTPS; correcoes no setup-waf.sh e no wizard sem WAF/restricao.
-
2.2.0 [] 29/08/2026- Triagem de falso-positivo do WAF.
-
2.1.0 [] 29/08/2026- WAF OWASP (Coraza) por dominio + gerenciamento de regras e logs.
-
1.10.0 [] 29/08/2026- Dashboard: card de Backends com conexoes, in/out e latencia ao vivo.
-
1.9.0 [] 29/08/2026- Ver IPs resolvidos + restricao de acesso em proxies TCP.
-
1.8.0 [] 29/08/2026- Endurecimento de seguranca para exposicao web.
-
1.7.0 [] 29/08/2026- Restricao de acesso por dominio via IP/CIDR + DDNS.
-
1.6.0 [ - 1.6.1] 29/08/2026- Portas TCP: editar proxy, enable/disable e status ao vivo; persistir secret key da sessao entre restarts.
-
1.5.0 [] 29/08/2026- Proxy de portas TCP (FTP, MySQL, SSH, etc.) na UI e API.
-
1.4.0 [] 29/08/2026- Tuning: sugestao de valores com base nos recursos do servidor.
-
1.3.0 [] 29/08/2026- Multiplos aliases + criacao inline de backend ao adicionar dominio.
-
1.2.0 [] 29/08/2026- Roteamento por path por dominio na interface.
-
1.0.0 [] 29/08/2026- Versao inicial com controle de versao.
-
2.25.0 [] 23/08/2026### Adicionado - **Tela de Dominios: servidores do backend inline + busca**. Cada dominio agora mostra os servidores do seu backend (nome, IP:porta, status, backup, maxconn) e permite **adicionar / remover / habilitar-desabilitar** servidores ali mesmo (reusa as APIs `/api/backends/*`), com aviso de que a edicao afeta todos os dominios que compartilham o backend. Novo **campo de busca** filtra os cards por hostname, backend ou IP. ### Corrigido / robustez - **Atualizacao mais confiavel**: apos o `rsync`, o reinicio do servico agora tem fallback (systemd-run e, se falhar, processo destacado) e loga se nao conseguir. A tela de Atualizacao passa a comparar a **versao rodando vs. a versao em disco** e, quando divergem (arquivos ja atualizados mas servico ainda na versao antiga), mostra um aviso "reinicie para concluir" com botao de **Reiniciar agora** — evita o caso em que o update aplica os arquivos mas o processo antigo continua servindo templates/codigo em cache.
-
2.24.0 [] 23/08/2026### Adicionado - **Gateway de saida (NAT)** na pagina Configs: card para usar este servidor como gateway de internet das VMs da rede interna. Liga `ip_forward` + masquerade (nftables, table propria `mp_gateway`) da(s) rede(s) interna(s) escolhida(s) saindo pela interface publica, com opcao de firewall de encaminhamento (restrito/liberado). Persistente no boot (sysctl.d + unit systemd), validado com `nft -c` antes de aplicar, e reversivel (desativar remove tudo). - Menu **Tuning renomeado para Configs**. ### Corrigido - **Loop de redirect (302) para IPs da whitelist**: o `http-request allow if trusted_src` encerrava o processamento das regras antes dos `set-header X-Forwarded-Proto https`, entao o backend (ex.: Magento) achava que a requisicao era HTTP e redirecionava pra HTTPS em loop. Os cabecalhos `X-Forwarded-Proto/Port/For` + `X-Real-IP` agora sao setados dentro do bloco da whitelist, antes do `allow` — corrige o loop e tambem o IP real do cliente nos logs do backend para IPs confiaveis.
-
2.23.0 [] 20/08/2026### Alterado - **"Lista de confianca" virou "Whitelist" — e agora libera de tudo**: IPs/faixas na whitelist passam sem qualquer bloqueio, limite ou inspecao (blocklist global, bloqueio temporario de IP, rate-limit, regras condicionais e WAF). Implementado como `http-request allow if trusted_src` no topo do ft_https (logo apos o bloco Cloudflare, com o IP real ja resolvido, e antes de todas as defesas). Antes so isentava rate-limit, bloqueio manual de IP e WAF. O escape para liberar Googlebot, webhooks de pagamento, monitoramento ou o proprio IP sem quebrar nada.
-
2.22.1 [] 20/08/2026### Alterado - **Trafego enxuto, Regras centraliza a seguranca**: "Lista de confianca" (allowlist), "Blocklist global (IP/UA)" e "Limite de requisicoes por dominio" sairam da pagina Trafego e viraram abas/sub-itens da pagina **Regras**. A pagina Trafego fica so com o monitoramento ao vivo de requisicoes por IP e o bloqueio temporario de IP por dominio. O menu "Regras" passa a ter: Condicoes, Listas de UA, Listas de dominio, Lista de confianca, Blocklist global e Limite por dominio.
-
2.22.0 [] 20/08/2026### Adicionado - **Regras condicionais por dominio** (estilo firewall da Cloudflare): pagina "Regras" com construtor de regra combinando condicoes por **E** (todas precisam bater) com opcao de **negacao** ("nao e"), e acao **Bloquear (403)**, **Permitir (excecao)** ou **Limitar (429)**. Tipos de condicao: **pais** (geoip), **path/URL** (comeca com / contem), **User-Agent** (substring), **lista de UA** e **IP/CIDR**. Varias regras por dominio sao avaliadas de cima pra baixo — a primeira que casar vence (Permitir acima de um bloqueio funciona como excecao). Cada regra tem **contador de matches** ao vivo e **log por regra** (via marcador no log-format do HAProxy), com modal listando IP, hora, status, metodo e path. - **Listas de User-Agent reutilizaveis**: listas nomeadas de UAs usadas nas regras pela condicao "Lista de UA" (casa se o UA contiver qualquer item). - **Listas de dominio**: agrupam varios dominios (apenas dominios **ja configurados no HAProxy**, via checkboxes) para servir de **alvo** de uma regra — a regra vale pra todos os dominios da lista de uma vez. - **Pagina de fallback "Dominio nao disponivel"** (host guard): acesso pelo IP do servidor, com Host ausente, ou por dominio apontado por DNS mas **nao criado** no HAProxy agora recebe uma pagina de erro branded do miniProxy (404) em vez de cair no `default_backend` e servir o vhost padrao do backend. A lista de dominios validos (`valid_hosts.lst`) e mantida em sincronia automaticamente; o desafio ACME continua liberado para emitir SSL de dominios novos. - **Bypass ACME** (`/.well-known/acme-challenge/`): allow no topo dos frontends para a emissao/renovacao de SSL nunca ser barrada por restricoes do dominio (blocklist, geoblock, rate-limit, WAF, regras). - **Menu lateral reorganizado**: secoes **Infraestrutura / Seguranca / Sistema**; "Regras" colapsavel com sub-itens (Condicoes, Listas de UA, Listas de dominio) e secao "Sistema" colapsavel para ocupar menos espaco; "Sair" fixo no rodape. Card "Regras" na Dashboard com o numero de regras ativas. ### Alterado - **/traffic simplificado**: "Geoblock por dominio", "Bloqueio de User-Agent por dominio" e "Limite de requisicoes por User-Agent por dominio" sairam da pagina Trafego e passaram a ser feitos pela pagina **Regras** (condicoes pais / UA / lista de UA + acoes Bloquear/Limitar), evitando duplicidade.
-
2.21.0 [] 14/08/2026### Adicionado - **Contadores de bloqueio na Dashboard**: card "Bloqueios" com o total ativo e detalhamento (IP + User-Agent global/por dominio + bloqueios temporarios), linkando para a pagina Bloqueios; e card "Rate-limit UA" com o numero de regras de throttle por User-Agent, linkando para Trafego. Calculo leve (le os arquivos de estado, sem varrer log).
-
2.20.0 [] 14/08/2026### Adicionado - **Pagina "Bloqueios"** (log dos bloqueios), com duas visoes: - **Historico de acoes (auditoria)**: registra cada bloqueio/desbloqueio feito pelo painel ou pela API — quando, acao, alvo, detalhe e por quem. Cobre IP, User-Agent (global e por dominio), import de lista e bloqueio temporario de IP. Inclui itens ja removidos. Guardado em `/etc/haproxy/blocklist-audit.jsonl` (auto-poda nas ultimas 5000 linhas), com filtro de busca. - **Eventos 403**: requisicoes que foram barradas de verdade (status 403), lidas do log de acesso do HAProxy (IP, dominio, metodo, path), com busca e modo ao vivo. (O log-format nao inclui User-Agent — avisado na tela.) - **Limite de requisicoes por User-Agent (por dominio)**: throttle (429) de um User-Agent num dominio, com contador **agregado por UA** (todos os IPs somam), casando por substring em minusculas. Stick-table string por dominio (sc2), separado do rate-limit por IP (sc1) — dá pra ter os dois no mesmo dominio. IPs da lista de confianca sao isentos.
-
2.19.0 [] 14/08/2026### Adicionado - **Tema claro** com alternancia: botao no rodape da barra lateral troca entre claro/escuro; preferencia salva no navegador (localStorage) e aplicada antes de pintar a tela (sem flash). O logo troca junto com o tema. Paleta clara via variaveis CSS (`data-bs-theme="light"`); caixas de terminal/log seguem escuras nos dois temas de proposito. - **Bloqueio de User-Agent por dominio** (importar lista): na pagina "Trafego", cola-se uma lista de User-Agents (1 por linha, ex.: do `.htaccess`) e escolhe-se os alvos — "Todos os dominios" (blocklist global) e/ou dominios especificos. Casa por substring em minusculas (`ahrefsbot` pega `AhrefsBot/7.0`). Cada dominio tem seu proprio mapa (`/etc/haproxy/ua-block/<dominio>.map`) e uma regra de deny que casa host + UA; a lista bloqueada aparece por dominio, com remocao individual. Remover o ultimo UA de um dominio apaga o mapa e a regra some.
-
2.18.0 [] 12/08/2026### Adicionado - **Blocklist global de IP e User-Agent** (aplicada em ft_http e ft_https): - **API REST** sob `/haproxy-admin/api/blocklist/ip` e `/blocklist/ua` (GET lista, POST bloqueia, DELETE desbloqueia; resposta `{"ok":...}`). Autenticada (sessao do painel ou HTTP Basic para automacao). - **Efeito imediato sem reload** via Runtime API (`add/del map` no socket admin) + persistencia nos arquivos `.map`; metadados (motivo/timestamp) num sidecar `/etc/haproxy/blocklist-meta.json`. - IP casa endereco/CIDR (`map_ip`); User-Agent casa substring em minusculas (`map_sub`, ex.: `ahrefsbot` pega `AhrefsBot/7.0`). - Bloco de deny inserido nos frontends apos o Cloudflare (src ja e o IP real por tras da CF) e antes dos `use_backend`; instalado sob demanda no primeiro bloqueio (um reload) e depois so runtime. Maps criados no boot. - Validacao: IP via `ipaddress.ip_network`; UA normalizado (minusculas, strip, <=200 chars, sem espacos/quebras); entrada sanitizada antes do socket. - **Tela** na pagina "Trafego" (secao "Blocklist global"): listas de IP e User-Agent com motivo, adicao e remocao, reusando o mesmo backend da API.
-
2.17.0 [] 03/08/2026### Adicionado - **Nova pagina "Logs"** — central unica de todos os logs gerados no servidor: - **Visualizador ao vivo** com dropdown de fontes: acesso HTTP do HAProxy, WAF Coraza (matches + auditoria), servico do painel e do HAProxy (journald), e um item por proxy TCP quando a separacao esta ligada. Filtro de texto, nº de linhas e modo "ao vivo". Cai para o journald quando o arquivo nao existe (servidores journald-only). - **Retencao por fonte**: edita os arquivos reais do logrotate (`/etc/logrotate.d/*`) — dias a guardar + compressao on/off — validando com `logrotate -d` antes de gravar. Lista os arquivos de cada fonte (inclui os rotacionados `.gz`) com tamanho e **download** (restrito aos diretorios de log, com protecao contra path traversal), e botao "Rotacionar agora". - **Separacao de logs TCP por porta**: cada `listen tcp_<nome>` recebe `log-tag haproxytcp-<nome>` e uma regra rsyslog roteia por `programname` para `/var/log/haproxy-tcp/<nome>.log` (antes ficavam misturados no `haproxy.log`). Ativacao/desativacao reversivel pela interface, com validacao (`haproxy -c`) e reload. ### Corrigido / robustez - Detecta servidores **journald-only** (sem rsyslog instalado): a separacao de logs TCP se recusa a ativar com mensagem clara em vez de reportar sucesso falso, e a pagina orienta a usar o journald do servico `haproxy`.
-
2.16.0 [] 09/07/2026### Adicionado - **Nova pagina "Trafego"** — modulo de observabilidade e defesa por dominio: - **Requisicoes por IP**: lista os IPs que mais acessaram cada dominio nos ultimos 30s/60s/120s/5min (lido do log de acesso do HAProxy, independente do audit.log do WAF), com taxa normalizada em req/10s e atualizacao viva. - **Bloqueio temporario de IP por dominio**: bloqueia um ou varios IPs/CIDRs num dominio por 10min/1h/6h/24h/7 dias. Expira sozinho via ACL `date()` do HAProxy (sem job de desbloqueio). Lista de bloqueios ativos com contagem regressiva + desbloqueio manual, e historico das ultimas 24h. - **Limite de requisicoes por dominio (rate-limit)**: define req/10s por IP por dominio (stick-table dedicado por dominio, isolado dos demais); quem passa do limiar recebe 429 automaticamente. - **Geoblock por dominio (permitir-so)**: aceita so visitantes dos paises escolhidos; o resto recebe 403. Seletor de paises com busca e checkboxes (231 paises). Faixas de IP (IPv4+IPv6) baixadas do ipdeny.com e cacheadas em `/etc/haproxy/geoip/`, com botao de atualizar. - **Lista de confianca (allowlist)**: IPs/prefixos isentos de rate-limit, bloqueio de IP e geoblock — o escape para liberar Googlebot, webhooks de pagamento, pixel do Facebook etc. sem quebrar SEO/checkout. - **WAF - exclusoes por path**: exclusoes globais por prefixo de URI (`global_path_exclusions`, sem checar dominio) e exibicao/remocao das exclusoes por dominio+path na interface, alem de contador de eventos bloqueados recentes. ### Alterado - Estado dos novos recursos em arquivos proprios: `/etc/haproxy/ip-blocks.json`, `rate-limits.json`, `geoblock.json`, `traffic-allowlist.lst`. Todos os blocos na `haproxy.cfg` sao gerenciados entre marcadores, validados com `haproxy -c` e aplicados com backup + reload gracioso. - **Genericizacao de plataforma**: removidas as mencoes de "CWP" e "Magento" da interface e do codigo (rotulos, comentarios e exemplos passam a ser neutros), para o painel servir a qualquer plataforma. Os nomes de backend/servidor da `haproxy.cfg` do usuario nao sao tocados.
-
2.15.0 [] 29/06/2026- Auto-atualizacao via minirepo: aba **Atualizacao** com check de versao e update remoto (baixa pacote, aplica com `rsync` preservando dados, reinicia).
-
2.14.0 [] 27/06/2026- Rebrand para **miniProxy** (logos, favicon e nome em toda a interface).