Recursos

O que o WardPane 2.0 faz

O WardPane 2.0 hospeda sites estáticos, PHP e Node.js com certificados automáticos e suporte ao Cloudflare. A proteção e o controle de tráfego rodam por site dentro do servidor web. Na maioria dos oito painéis da página de comparação, essas funções vêm do ModSecurity ou de um complemento pago.

Para iniciantes e para administradores experientes

Iniciantes têm um comando para instalar, certificados que se emitem sozinhos, sites isolados e configurações explicadas em palavras simples. Administradores experientes têm todas as opções, um terminal no navegador, PM2 por proprietário, .htaccess, regras por site em uma ordem conhecida, a API do Cloudflare, exportação e importação, checksums das versões e o código-fonte.

Hospedagem

Os sites ficam em uma estrutura no estilo do ISPmanager, pertencem a um usuário Linux e são servidos pelo próprio WardPane nas portas 80 e 443.

Sites e aliases
Um site é um domínio mais até 99 aliases (um certificado Let's Encrypt comporta no máximo 100 nomes). Um alias serve o site principal ou, se tiver uma pasta própria, essa pasta. Os sites podem ter um nome de exibição.
Estrutura por proprietário
Os arquivos ficam em /var/www/<owner>/data/www/<domain>, com logs e arquivos temporários ao lado. O proprietário padrão é www-root, um usuário Linux que o WardPane cria. Os sites da 1.x mantêm as pastas antigas.
Três manipuladores
Sem manipulador (hospedagem estática), PHP ou Node.js, escolhido por site e trocável a qualquer momento. As configurações dos outros manipuladores são mantidas, então voltar as restaura.
Arquivos estáticos
Modo SPA (caminhos desconhecidos vão para index.html), o seu próprio 404.html, ETags fortes com downloads retomáveis, redirecionamento de HTTP para HTTPS e links simbólicos que nunca saem da pasta do site.
Ambientes de execução
O painel lista as versões do PHP instaladas no servidor e as versões principais do Node.js que ele suporta: 20, 22, 24 e 26, com a 24 como padrão (a 20 chegou ao fim de vida em abril de 2026). As builds do Node.js vêm do nodejs.org e são conferidas com as somas SHA256 publicadas.
Um menu em cada site
Cada linha da tabela de sites tem um menu com todas as ações daquele site, e um interruptor desliga o site e liga de novo sem apagar nada.
Shell no navegador
Um terminal direto no painel: um shell root em uma sessão root, ou o shell do proprietário do site na pasta do site. pm2 list e pm2 restart funcionam ali para sites Node.js.
Exportação e importação
Cada site com todas as configurações, mais a lista de bloqueio global, vai para um único arquivo JSON. A importação mescla ou substitui, verifica o arquivo inteiro antes e nunca mexe nos arquivos em /var/www.
A tabela de sites com manipuladores, validade dos certificados e proteção ativa

PHP e Node.js

Cada site dinâmico roda com o seu próprio usuário Linux dentro de uma sandbox do systemd. Um site quebrado ou invadido não consegue ler os vizinhos.

Um pool php-fpm por site
Sem pool compartilhado, sem opcache ou sessões compartilhados. O código é somente leitura para o PHP; ele só pode escrever em tmp/, logs/, data/ e nas pastas que você listar, e o PHP nunca é executado a partir dessas pastas.
Uma sandbox PHP rigorosa
Todo o sistema de arquivos é somente leitura e noexec, exceto o próprio php-fpm, o open_basedir é definido, exec, system, shell_exec, proc_open, popen e putenv são desativados, e as chamadas de sistema são filtradas.
.htaccess sem Apache
Regras de rewrite, redirecionamentos, regras de acesso, Basic auth, cabeçalhos e cache de sites reais funcionam como estão: WordPress, Laravel e os redirecionamentos usuais para HTTPS e www. As linhas que ele não consegue aplicar são mostradas, nunca adivinhadas.
Node.js com PM2
Escolha uma versão principal do Node.js, um script npm ou um arquivo de entrada, variáveis de ambiente e limites. Um daemon PM2 por proprietário roda os apps, então o pm2 funciona no shell do proprietário.
O proxy na frente do app
Os arquivos em public/ são servidos diretamente, se você quiser, e o resto vai para o app com o IP real do visitante em X-Forwarded-For e X-Real-IP. Os WebSockets passam depois das mesmas verificações de proteção.
Reinício, npm install e logs
A aba Manipulador tem botões para reiniciar e para npm install (npm ci quando há um lockfile), os logs de saída, de erro e de instalação, e os scripts do package.json para escolher.
A aba Manipulador de um site: versão do Node.js, script de inicialização, variáveis de ambiente e limites

Certificados e Cloudflare

Os certificados são emitidos e renovados sem passos manuais, também para sites atrás do Cloudflare.

Let's Encrypt totalmente automático
Um certificado por site com todos os seus aliases, renovado quando resta um terço da validade. Nomes cujo DNS não aponta para o servidor são pulados e adicionados quando passarem a apontar, e o painel mostra o motivo.
IPv6 também verificado
O Let's Encrypt tenta o IPv6 primeiro, então cada registro AAAA precisa apontar para o servidor. O WardPane verifica esses registros antes de pedir um certificado.
Um certificado para o IP
O IP do servidor recebe um certificado de curta duração, renovado a cada poucos dias. O painel em https://<ip>:1500 abre sem aviso.
Limites de taxa do Let's Encrypt
O painel não pede certificado duplicado, informa de uma vez todos os nomes com falha de um pedido, espera mais depois de cada falha e substitui uma conta ACME desativada.
Um token do Cloudflare com um clique
O botão Criar token do Cloudflare abre o Cloudflare com as permissões certas já preenchidas. Cole o token de volta, e o painel pode verificar e corrigir as zonas dos seus sites.

Proteção

Cada site tem as suas próprias verificações, e elas rodam dentro do servidor web antes que o PHP ou o Node.js vejam a requisição. Um endereço só é banido por um ataque claro.

Regras geográficas: grupos de países, exceções e a lista resultante de países
Configurações do Bot Fight: categorias de bots, crawlers verificados pelo IP, listas públicas de IPs, detecção de sondagens, payloads e varreduras
Limite de requisições e banimentos
Cada endereço pode enviar 150 requisições em 10 segundos por padrão. Acima do limite, ele recebe um 404 e um banimento pelos minutos que você definir. Visitantes IPv6 são contados e banidos pelo seu /64, então trocar de endereço não adianta. Cada site tem uma lista de permissões.
Bot Fight
Bloqueia crawlers de IA, crawlers de SEO, scanners de vulnerabilidades, scripts e navegadores headless, user agents vazios e a sua própria lista. Mecanismos de busca e pré-visualizações de links só se você escolher. Monitoramento e leitores de RSS não são afetados.
Sondagens e payloads
Requisições para /.env, /.git, /wp-login.php e nomes parecidos que não existem no site banem o endereço. Payloads claros de SQL injection, XSS, path traversal e Log4Shell na URL banem; os ambíguos só rejeitam aquela requisição.
Detecção de varreduras
Muitos erros seguidos (25 em 60 segundos por padrão) parecem gobuster ou ffuf e banem o endereço. Uma imagem ausente conta como um décimo de erro, então uma página antiga com imagens quebradas não é uma varredura.
Crawlers verificados
Google, Bing, DuckDuckGo, Apple, OpenAI, Anthropic, Perplexity e Ahrefs publicam as suas faixas de IP. O WardPane baixa essas listas diariamente e bane quem afirma ser um deles a partir de outro endereço. Você também pode bloquear esses crawlers pelo IP, mesmo quando se escondem atrás de um user agent de navegador.
Listas públicas de IPs
Spamhaus DROP, FireHOL nível 1 e blocklist.de, atualizadas diariamente, aplicadas por site com um interruptor.
Geo com grupos
Permita ou negue países um a um ou em grupos: ex-URSS, CEI, UEE, UE, EEE, Schengen, OTAN, G7, G20, OCDE, BRICS, OCX, ASEAN, Liga Árabe, Mercosul, continentes e mais. Adicione exceções e veja a lista final de países.
Redes de hospedagem e AS numbers
Bloqueie requisições da AWS, Azure, Google Cloud, Hetzner, OVH, DigitalOcean, Vultr e outras nuvens, de onde vem a maior parte da automação, ou de qualquer AS number que você listar.
Filtro de idioma
Permita ou negue pelo idioma do navegador, com um interruptor separado para requisições que não enviam idioma nenhum. Um sinal extra útil ao lado do país, por exemplo atrás de uma VPN.
Dispositivos
Deixe entrar apenas Windows, macOS, Linux, Android, iOS ou outros, como filtro para navegadores comuns.
Só com link
Parâmetros de URL obrigatórios: o site só abre para quem chegou pelo seu link, por exemplo ?ref=metaads de um anúncio. Um cookie assinado e, opcionalmente, o IP do visitante mantêm o acesso. Caminhos para webhooks e callbacks de pagamento continuam abertos.
Senha
Login HTTP Basic para rascunhos e cópias de teste de um site. As senhas são armazenadas como hashes scrypt e verificadas fora da thread principal, depois de todos os outros filtros.
Proteção contra hotlink
Outros sites não podem incorporar as suas imagens e arquivos. Escolha as extensões, os sites permitidos (curingas funcionam) e o que fazer com requisições sem Referer.
Cabeçalhos de segurança
X-Frame-Options, Referrer-Policy, HSTS com includeSubDomains e preload, Content-Security-Policy e Permissions-Policy por site.
Honeypot
Um caminho que o robots.txt proíbe. Uma pessoa nunca abre esse caminho, então quem o solicita é banido na hora.
Páginas de bloqueio personalizadas
A sua própria página e código de status (404, 403 ou 200) para bloqueios por dispositivo, bot, geo e acesso só com link, servida com no-store.
Lista de bloqueio global
Endereços e redes bloqueados em todos os sites, gravados em disco e mantidos entre reinicializações. Ela vale mesmo onde um site está com a proteção desativada.

Controle de tráfego

Decida quem chega a cada site, em que ordem as regras se aplicam e o que um visitante bloqueado vê.

A ordem das verificações em cada requisição

  1. Cloudflare: IP real do visitante, só através do Cloudflare
  2. Lista de bloqueio global, depois a lista de permissões do site
  3. Limite de requisições e banimentos ativos
  4. Bot Fight: user agents, crawlers verificados, listas de IPs, sondagens, payloads, varreduras, honeypot
  5. Geo: países e grupos, redes de hospedagem, AS numbers, idioma do navegador
  6. Dispositivos
  7. Cabeçalhos de segurança e proteção contra hotlink
  8. Só com link
  9. Senha
  10. Regras do .htaccess, depois o manipulador: arquivos, PHP ou Node.js
IP real com suporte ao Cloudflare
O endereço do visitante é tirado do CF-Connecting-IP só quando a conexão vem de fato do Cloudflare. A lista de redes é atualizada diariamente a partir do cloudflare.com.
Só através do Cloudflare
Requisições diretas ao IP do servidor recebem um 404, então ninguém consegue pular a CDN e as suas regras.
Quando o interruptor está desligado
Um site atrás do Cloudflare que não está marcado como tal nunca bane endereços do Cloudflare e recebe um limite dez vezes maior por servidor do Cloudflare. O log sugere a correção.
Cloudflare Workers
As requisições de um Worker são contadas pela zona dele, com limites e banimentos normais; o Worker da sua própria zona é tratado como Cloudflare.
Códigos das páginas de bloqueio
Use 404 para parecer um endereço vazio, 403 para dizer que a requisição foi recusada ou 200 com a sua própria página. Clientes limitados e banidos sempre recebem um 404 simples.
Respostas seguras para cache
Respostas que dependem do acesso por link recebem Cache-Control: private e Vary: Cookie, para que uma CDN nunca as entregue a alguém sem o link.

Segurança do painel

O painel roda como o usuário sem privilégios wardpane, e a página de login tem os seus próprios limites contra força bruta.

Login como root
Opcionalmente, entre como root com a senha root do servidor. Ela é verificada pelo unix_chkpwd por meio de um pequeno helper root em um socket que só o painel pode abrir. Desativado por padrão.
Limites contra força bruta
5 falhas bloqueiam um endereço (no IPv6, o /64 dele) por 15 minutos, e 50 falhas bloqueiam o /48 dele. Uma onda de falhas vinda de muitos endereços fecha o login para endereços desconhecidos por 5 minutos. Endereços que entraram nos últimos 30 dias continuam funcionando.
Lista de IPs permitidos
Com PANEL_ALLOW_IPS definido, o painel simplesmente não responde a outros endereços. Ele recusa uma lista que bloquearia o endereço que você está usando.
Isolamento do helper root
O painel grava o estado desejado; um helper root iniciado pelo systemd verifica cada valor de novo antes de criar usuários, pastas e units.
PHP e Node.js isolados
Usuários Linux por site, sistema somente leitura, /tmp privado, sem novos privilégios, limites de memória e CPU e, opcionalmente, sem conexões de saída.
Checksums das versões
Cada arquivo é publicado com o seu checksum SHA-256 e contém o código-fonte completo. O instalador o baixa por HTTPS e verifica o SHA-256 antes de executar qualquer coisa.
Atualizações que podem ser desfeitas
Cada atualização faz um backup com um script de restauração, verifica se a nova versão inicia e reverte sozinha se ela não iniciar.
Recuperação de acesso
Se você ficar sem acesso, um comando no servidor redefine o login do painel e a lista de IPs permitidos, e remove os bloqueios de login.
A seção Segurança: lista de bloqueio global, listas de IPs de crawlers com datas de atualização, consulta de IP

O que vem a seguir

Estes recursos estão planejados para as versões depois da 2.0 e não estão na 2.0.

Ver o roteiro completo
  1. 2.1Bancos de dados e o arquivo de configuração do siteMySQL e MariaDB: bancos de dados, usuários e privilégios · Um arquivo de configuração por site em sintaxe parecida com nginx, sincronizado com os formulários · gzip e brotli, logs de acesso com rotação, blocos location
  2. 2.2UsuáriosLogin com a senha do sistema · Usuários que veem só os próprios sites · Permissões definidas pelo root, e entrar como um usuário para ajudar
  3. 2.3Para iniciantesUm assistente de configuração no primeiro acesso · Modos Simples e Especialista · Predefinições de proteção com um clique · Verificações com botão Corrigir e um painel inicial mais completo
  4. 2.4Certificados e DNSUma seção de certificados SSL · Seu próprio servidor DNS e servidores de nomes · Sincronização de DNS com o Cloudflare · Login com o Cloudflare
  5. 2.5E-mailDomínios de e-mail, caixas de correio e aliases · Postfix, Dovecot, Rspamd e DKIM · Webmail Roundcube

Experimente em um servidor sobrando

A instalação leva poucos minutos em um Ubuntu 24.04 limpo.