Você tem um VPS com cinco ou seis serviços Docker nele: Nextcloud, Uptime Kuma, um blog Ghost, talvez um Vaultwarden. Um único IP público. E você quer cada um em seu próprio subdomínio com HTTPS, sem editar manualmente arquivos de configuração do Nginx toda vez que adiciona um contêiner. Esse é exatamente o problema que o Nginx Proxy Manager existe para resolver.
Esta é uma análise e uma configuração completa do Nginx Proxy Manager em VPS em um único guia. O Nginx Proxy Manager (NPM) é um app Docker que envolve o Nginx em uma interface web: você aponta subdomínios para contêineres de backend e solicita certificados Let's Encrypt por um painel em vez de escrever diretivas à mão. O guia é para quem faz auto-hospedagem e para sysadmins que já rodam Docker e agora precisam de um proxy reverso que não exija mexer em nginx.conf.
Ao final, você saberá se o NPM se encaixa no seu caso, o terá em execução com HTTPS no seu VPS e conhecerá os critérios para migrar para o Caddy ou o Traefik quando o NPM deixar de ser a ferramenta certa.
A versão curta
- O que o NPM é: um app Docker que coloca uma interface web sobre o Nginx para gerenciar proxy hosts e HTTPS automático via Let's Encrypt. Atende a quem quer uma GUI e roda uma stack de serviços pequena e razoavelmente estática.
- Os compromissos: a configuração fica em um banco de dados SQLite, então não é versionável nem comparável por diff como um arquivo de configuração. Em 12 de julho de 2026, a última versão marcada é afetada pela CVE-2026-40519, então novas implantações devem esperar por uma versão marcada que contenha a correção. Seu painel de administração na porta 81 é a principal coisa que você precisa proteger.
- Dimensionamento: O NPM em si consome cerca de 50 MB de RAM em repouso. Um VPS de 1 GB é a base prática; 2 GB é confortável quando você adiciona os serviços atrás dele.
- Quando migrar: fique no NPM para uma stack pequena e majoritariamente estática onde uma GUI importa. Use o Caddy quando quiser configuração como código e uma pegada menor. Use o Traefik quando mudanças frequentes de contêineres tornam a autodescoberta do Docker mais valiosa do que o registro manual de hosts.
O Que Este Guia Não Cobre
Este é um guia de implantação em VPS, não um manual de referência. Para mantê-lo focado, os itens a seguir estão fora do escopo:
- Personalização profunda de diretivas do Nginx (blocos location personalizados além do que a interface do NPM expõe).
- Arquitetura de balanceamento de carga em escala.
- Comparação de ingress do Kubernetes.
- NPM no Windows.
- O caminho do Cloudflare Tunnel para configurações sem IP estático.
O Que o Nginx Proxy Manager Faz (e Onde Ele Te Morde)
O Nginx Proxy Manager é uma aplicação Docker que roda o Nginx por baixo e adiciona um painel web por cima. Você cria proxy hosts (subdomínio para contêiner e porta de backend) e solicita certificados Let's Encrypt por formulários em vez de arquivos de configuração. Atende a uma stack pequena e razoavelmente estática de apps auto-hospedados em um único VPS.
Além do básico, o painel também lida com listas de acesso e encaminhamento bruto de fluxos TCP/UDP. Para uma stack de apps em um único VPS, isso é uma conveniência real: você adiciona um contêiner, abre o painel, aponta um subdomínio para ele, clica para emitir um certificado. Pronto.
O principal compromisso é que a configuração fonte-de-verdade do NPM fica em um banco de dados SQLite por padrão. O NPM gera arquivos legíveis do Nginx em /data/nginx/proxy_host/, mas esses arquivos são artefatos gerados, e não a configuração declarativa que você edita e versiona. Você pode inspecioná-los, mas eles não são um substituto limpo para um Caddyfile ou labels do Traefik, e a maneira confiável de reproduzir a implantação é restaurar os volumes de dados e de certificados do NPM. Para uma stack pequena e estática, isso pode ser aceitável. Para um fluxo de infraestrutura orientado a Git, é uma limitação real.
Em 12 de julho de 2026, a última versão marcada é a v2.15.1, publicada em 3 de junho de 2026. O projeto permanece ativo e licenciado sob MIT, mas sua situação de segurança atual exige uma ressalva importante: o NVD lista as versões 2.9.14 até 2.15.1 como afetadas pela CVE-2026-40519, uma vulnerabilidade de injeção de comando autenticada, corrigida no commit a5db5ed mas ainda não incluída em uma versão marcada mais recente. Antes de implantar, verifique a página de releases e use a primeira versão marcada que contenha essa correção. O NPM é mantido, mas a v2.15.1 não deveria ser descrita atualmente como totalmente corrigida.
Quanto à pegada, o NPM consome em repouso cerca de 50 MB de RAM, de acordo com a comparação de proxies reversos da byte-guard. Isso é leve o suficiente para que o NPM quase nunca seja o que sobrecarrega o seu VPS. Os serviços atrás dele é que são.
Minha opinião: o NPM é uma escolha razoável em 2026 se você quer uma GUI e roda uma pequena stack Docker. Se você vive no controle de versão e quer a configuração do seu proxy no Git, considere o Caddy. A configuração respaldada por SQLite é o fator decisivo, não algo errado no proxy em si.
O NPM troca portabilidade de configuração por uma GUI. Essa troca é boa para uma stack pequena e estática, e incômoda para um fluxo orientado a Git.
NPM vs Caddy vs Traefik: Qual Proxy Reverso Se Encaixa no Seu VPS
As três ferramentas se dividem em quatro eixos que decidem a escolha: como você as configura, como lidam com HTTPS, como escalam conforme o número de serviços e quanta RAM consomem em repouso. Aqui está a comparação.
| Atributo | Gerenciador de Proxy Nginx | Caddy | Traefik |
|---|---|---|---|
| Modelo de configuração | GUI web, armazenada em SQLite | Caddyfile (texto, versionável) | Labels do Docker / YAML |
| HTTPS automático | Sim, solicitação por host na interface | Sim, por padrão, configuração zero | Sim, exige configuração de resolver ACME |
| Autodescoberta do Docker | No | No | Sim, via labels de contêiner |
| RAM em repouso | ~50 MB | ~30 MB | ~80 MB |
| Melhor caso de uso | Usuários de GUI, stacks pequenas/estáticas | Configuração como código, menor pegada | Stacks Docker dinâmicas com mudanças frequentes de contêineres |
Os números de RAM em repouso são observações aproximadas de uma comparação de 2026, não requisitos fixos. O uso real varia conforme a versão da imagem, os recursos habilitados, o tráfego e o registro de logs.
Os critérios de migração decorrem diretamente dessa tabela. Se você quer um painel e roda um punhado de serviços que não mudam com frequência, o NPM é a ferramenta certa. Se você prefere configuração como código, quer a menor pegada ou aprecia o provisionamento e renovação de HTTPS automáticos do Caddy sem nenhuma configuração de ACME, use o Caddy. Eu mesmo recorro ao Caddy em implantações de site único porque o tratamento de SSL é automático e o Caddyfile é curto. Se você adiciona, remove ou reimplanta contêineres com frequência, a autodescoberta baseada em labels do Traefik faz com que você pare de registrar manualmente cada novo host.
Há também o Nginx puro com o Certbot, que alguns administradores preferem para controle preciso ou implantações sem Docker. O Certbot pode automatizar a renovação de certificados, mas você ainda gerencia o roteamento de virtual hosts e a configuração do Nginx por conta própria. Se o seu principal motivo para considerar o NPM é evitar a configuração manual de proxy, o Nginx puro provavelmente não será a melhor opção.
Uma observação sobre a escolha: a comparação da byte-guard aponta o Caddy como a opção mais leve daquela comparação, e para uma nova configuração de host único em 2026 essa é uma escolha razoável. O Caddy vence por ser mais leve que o NPM, mas se você quer especificamente uma GUI, ele não é a sua melhor aposta.
Para um comparativo mais aprofundado dos motores subjacentes, consulte a comparação Caddy vs Nginx em um VPS.
Pré-requisitos: o que vais precisar
Antes de implantar, tenha estes itens prontos. Esta é uma lista curta, mas pule qualquer item e a etapa do certificado falhará mais adiante.
- Um VPS com Docker e Docker Compose instalados (Ubuntu 22.04 LTS ou Debian 12 serve).
- Um nome de domínio, com um registro DNS A (e AAAA se você usa IPv6) apontando para o IP público do seu VPS.
- Acesso SSH ao VPS.
- Portas 80 e 443 abertas para a internet no seu firewall.
- Porta 81 acessível apenas por você, não aberta ao público (abordada na seção de segurança).
Configurando o Nginx Proxy Manager no Seu VPS com Docker Compose
Esta seção implanta o NPM usando Docker Compose. Depois que seus registros DNS resolvem para o VPS, a configuração do contêiner em si é rápida, embora a propagação do DNS e a emissão do certificado possam demorar mais.
A configuração usa um arquivo Docker Compose e um comando único para criar uma rede Docker compartilhada. Crie um diretório, crie a rede, adicione o docker-compose.yml arquivo abaixo e suba o contêiner.
Primeiro, crie a rede Docker compartilhada:
docker network create proxy
Em seguida, crie o seguinte docker-compose.yml arquivo:
# docker-compose.yml
services:
npm:
image: 'jc21/nginx-proxy-manager:<PATCHED_VERSION>'
restart: unless-stopped
ports:
- '80:80' # public HTTP
- '443:443' # public HTTPS
- '127.0.0.1:81:81' # admin UI, reachable only from the VPS itself
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- proxy
networks:
proxy:
external: true
Conecte todo contêiner de backend que o NPM precisa alcançar pelo nome de serviço à mesma rede proxy externa. Isso permite que o NPM resolva o contêiner pelo seu nome de serviço sem publicar a porta da aplicação de backend no VPS.
Faça backup de ambos os ./data e ./letsencrypt antes das atualizações. O diretório de dados contém o banco de dados e a configuração gerada do NPM, enquanto o diretório Let's Encrypt contém o material de certificados.
Algumas observações sobre este arquivo. A imagem usa por padrão um banco de dados SQLite armazenado no ./data volume. Esse é o backend padrão e é adequado para a maioria das implantações em um único VPS. Se você precisar de um banco de dados externo, o NPM suporta MariaDB/MySQL e PostgreSQL, o que significa adicionar um serviço de banco de dados e as variáveis de ambiente correspondentes. Para um único VPS, o SQLite ainda é o padrão mais simples, a menos que você tenha um motivo claro para mover o banco de dados para fora do volume de dados. A restart: unless-stopped política significa que o NPM sobe novamente se o VPS reiniciar, que é o que você quer para um serviço que fica à frente de todo o resto.
Suba-o e confirme que está em execução:
docker compose up -d
docker compose ps
Saída esperada: o contêiner npm com estado Up, portas 80 e 443 mapeadas publicamente e porta 81 vinculada apenas a 127.0.0.1. A primeira inicialização leva alguns minutos enquanto o NPM gera uma chave JWT, inicializa o banco de dados e cria o usuário administrador padrão. A documentação oficial de configuração descreve essa sequência de primeira execução.
Crie um túnel SSH a partir do seu computador local antes de abrir a interface de administração:
ssh -L 8181:127.0.0.1:81 user@your-vps
Em seguida, abra http://127.0.0.1:8181 no seu navegador. Em uma instalação nova, entre com [email protected] e changeme, e em seguida substitua imediatamente o e-mail e a senha padrão. Não torne o painel acessível publicamente enquanto as credenciais padrão estiverem ativas.
Depois de alterar as credenciais de administrador, adicione seu primeiro proxy host:
- No painel, vá até Hosts, depois Proxy Hosts, depois Add Proxy Host.
- Defina o Domain Name para o seu subdomínio (por exemplo
cloud.example.com). - Definir Forward Hostname / IP para o nome ou IP do contêiner de backend, e Forward Port para a porta em que ele escuta.
- Salve. O proxy host aparece na lista e o tráfego para esse subdomínio agora chega ao seu contêiner.
Se você roda uma interface de gerenciamento do Docker junto com isso, o mesmo padrão se aplica: aponte um subdomínio para a ferramenta de gerenciamento de contêineres da mesma forma, e faça o mesmo para um pilha de monitoramento com Prometheus e Grafana que você queira colocar atrás do proxy.
Configurando HTTPS Automático para um Subdomínio
Esta seção lhe dá um certificado Let's Encrypt válido e com renovação automática para o seu subdomínio. O pré-requisito é aquele que pega as pessoas: o registro DNS A desse subdomínio já precisa apontar para o seu VPS, e a porta 80 precisa ser acessível pela internet, porque o Let's Encrypt verifica o domínio se conectando de volta a ele.
Com o proxy host criado, solicite o certificado:
- Edite o proxy host, abra a SSL aba.
- Sob Certificado SSL, escolha Request a new SSL Certificate.
- Ativar Force SSL e HTTP/2 Support. Ative o HSTS somente depois de confirmar que o HTTPS funciona corretamente, porque os navegadores podem armazenar a política em cache e tornar a recuperação de um erro de certificado ou de configuração de proxy mais difícil.
- Concorde com os termos do Let's Encrypt e salve.
Por padrão, o NPM usa o desafio HTTP-01 para nomes não curinga, validando cada hostname solicitado pela porta 80. Um certificado pode conter vários nomes não curinga, mas o HTTP-01 não pode emitir certificados curinga. Nomes curinga como *.example.com exigem o desafio DNS-01 com um provedor de DNS suportado. Para uma configuração normal de um subdomínio por serviço, o HTTP-01 é tudo o que você precisa, e as renovações são automáticas.
Se a solicitação do certificado falhar, verifique primeiro a porta 80. As causas comuns incluem uma porta 80 inacessível, uma regra incorreta de firewall na nuvem ou de grupo de segurança e um DNS que não terminou de propagar. O Let's Encrypt não pode validar um domínio que não consegue alcançar.
Protegendo o Painel de Administração do NPM em um VPS
A interface de administração na porta 81 é a principal exposição em uma implantação do NPM, e esta seção a protege. Isto é fortalecimento operacional, não uma auditoria de segurança: três coisas, feitas uma vez, e o perfil de risco cai acentuadamente.
Primeiro, e mais importante, mantenha a porta 81 vinculada a 127.0.0.1 conforme mostrado no arquivo Docker Compose. Acesse o painel pelo túnel SSH descrito anteriormente. Se você precisar de acesso remoto persistente, torne a interface de administração acessível apenas por uma VPN privada. Não publique a porta 81 no IP público do VPS.
Segundo, habilite a autenticação de dois fatores TOTP na sua conta de administrador. O NPM adicionou 2FA baseado em TOTP na versão 2.13.6, então qualquer instalação atual o possui. Ative-o.
Terceiro, mantenha o NPM atualizado e verifique a versão exata em vez de presumir que a tag latest é segura. A CVE-2026-40519 afeta as versões 2.9.14 até 2.15.1 e pode permitir a execução remota de código autenticada por meio de credenciais maliciosas de provedor de DNS. CVE-2026-50892 afeta a v2.14.0 e pode permitir que um atacante autenticado obtenha o material de chave privada do Let's Encrypt. Um problema anterior, a CVE-2025-50579, afetou a v2.12.3 por meio de uma falha de CORS que poderia expor tokens JWT. A regra prática é simples: mantenha a porta 81 privada, habilite a autenticação de dois fatores, fixe uma versão sabidamente corrigida e verifique os avisos de segurança antes de atualizar.
A porta 81 fica privada e o NPM fica atualizado. Faça essas duas coisas e os principais riscos conhecidos ficam muito mais fáceis de gerenciar em uma configuração normal de VPS único.
Dimensionando o Seu VPS para o Nginx Proxy Manager
O NPM em si é leve; a questão do dimensionamento é, na verdade, sobre o NPM mais os serviços que ficam atrás dele. A pegada em repouso do proxy raramente é a restrição. Uma instância do Nextcloud ou um blog Ghost usará mais recursos do que o próprio proxy.
Veja como os níveis funcionam na prática:
- Base prática mínima: 1 GB RAM, 1 vCPU e 10 GB de armazenamento. Um guia de dimensionamento de terceiros usa a mesma base, mas trate-a como orientação de planejamento, e não como um requisito oficial do NPM. É suficiente para o NPM, o sistema operacional e alguns serviços leves, mas deixa pouca folga.
- Confortável: 2 GB RAM, 1 vCPU, 20 GB de armazenamento. O NPM mais três a cinco serviços com espaço para respirar. Este é o ponto ideal para a maioria de quem faz auto-hospedagem.
- Um passo acima: 4 GB RAM, 2 vCPU. Para oito a doze serviços, ou uma configuração com tráfego significativo onde você quer folga de CPU para o encerramento de TLS.
O número contra o qual você dimensiona é a soma dos apps atrás do proxy, não o NPM. Some as pegadas de RAM dos serviços que você pretende rodar, acrescente a pequena sobrecarga em repouso do proxy por cima e escolha o nível acima disso com margem.
Dimensionar o servidor é a parte fácil. Colocar o NPM em execução ainda significa provisionar o VPS, instalar o Docker, baixar a imagem e passar por aquela configuração de primeira execução. Se você preferir pular as etapas de provisionamento, o marketplace da Cloudzy tem uma implantação de um clique do Nginx Proxy Manager em um VPS NVMe. Ela sobe o contêiner em um servidor novo, então você vai direto ao painel e ao seu primeiro proxy host. De qualquer forma, os níveis de dimensionamento acima são a base do seu provisionamento.
Perguntas frequentes
Qual É a Diferença Entre o Nginx e o Nginx Proxy Manager?
O Nginx é o próprio servidor web e motor de proxy reverso, que você configura editando arquivos de texto. O Nginx Proxy Manager é uma aplicação Docker que roda o Nginx por baixo e adiciona uma interface web por cima, de modo que você gerencia proxy hosts e certificados Let's Encrypt por um painel em vez de escrever arquivos de configuração. O NPM é a camada de GUI; o Nginx é o motor que faz o trabalho.
O Nginx Proxy Manager Ainda Vale a Pena em 2026?
Sim, para usuários que preferem GUI e rodam uma pequena stack Docker, mas somente depois de verificar que a imagem que você implanta inclui as correções de segurança mais recentes. Em 12 de julho de 2026, a v2.15.1 é a última versão marcada, e o NVD a lista como afetada pela CVE-2026-40519. Se você prefere configuração como código, o Caddy continua sendo a melhor opção; a configuração respaldada por SQLite do NPM é sua principal limitação operacional.
Qual É a RAM Mínima para o Nginx Proxy Manager?
O NPM em si consome cerca de 50 MB de RAM em repouso. Um VPS de 1 GB é uma base prática, suficiente para o NPM mais alguns serviços leves. 2 GB é confortável quando você adiciona mais apps atrás do proxy. O requisito real de RAM é determinado pelos serviços atrás do NPM, não pelo próprio NPM.
Devo Expor a Porta 81 à Internet?
Não. Mantenha a porta 81 vinculada ao localhost e acesse-a por um túnel SSH, ou torne-a acessível apenas por uma VPN privada. Não publique a interface de administração no IP público do VPS.
Posso Rodar o Nginx Proxy Manager Sem Docker?
Não. O NPM é distribuído e projetado como um contêiner Docker, e não há instalação sem Docker suportada. Se você não puder ou não quiser rodar Docker, use o Nginx puro com o Certbot, ou o Caddy como um binário único.
O Nginx Proxy Manager Suporta Certificados Curinga?
Sim, por meio de um desafio DNS-01 com um provedor de DNS suportado configurado. Certificados padrão de hostname único usam o desafio HTTP-01 pela porta 80; certificados curinga (*.example.com) exigem o DNS-01 porque a autoridade certificadora valida o controle escrevendo um registro DNS em vez de alcançar um único host.