Nginx Proxy Manager: vários sites numa VPS só
Aprenda a instalar o Nginx Proxy Manager com Docker, criar o administrador, publicar vários sites com HTTPS na mesma VPS e manter atualização e backup do painel.
Por Redação Eleven Host · @robson.direitodigital · 1 de novembro de 2026 · 9 min de leitura

Capa da Redação Eleven Host para o guia: Nginx Proxy Manager: vários sites numa VPS só Arte: Eleven Host
O Nginx Proxy Manager é um painel web que gerencia o Nginx como proxy reverso e emite certificados Let's Encrypt. Ele roda em Docker e permite publicar vários sites e aplicativos, cada um no seu domínio, numa única VPS.
O que é o Nginx Proxy Manager
Segundo a documentação do projeto, o Nginx Proxy Manager serve para criar, sem conhecer a fundo o Nginx, domínios de encaminhamento, redirecionamentos, streams e hosts 404. A mesma documentação cita SSL gratuito com Let's Encrypt, ou o uso de certificados próprios.
Na prática, ele funciona como a porta de entrada do servidor. O visitante acessa blog.exemplo.com ou app.exemplo.com, os dois domínios chegam à mesma VPS, e o painel decide para qual serviço encaminhar cada pedido. Os serviços ficam atrás dele e o certificado HTTPS fica num lugar só.
Um painel, uma VPS e vários domínios: o Nginx Proxy Manager recebe o tráfego nas portas 80 e 443 e encaminha cada domínio para o serviço certo.
Este caminho é diferente de configurar o Nginx na mão, arquivo por arquivo. Aqui você usa uma interface web, e o painel cuida dos arquivos de configuração por baixo.
Antes de começar
Separe estas coisas antes do primeiro comando:
- Uma VPS com Docker e Docker Compose instalados. Se você ainda está conhecendo servidores, leia antes o guia de iniciantes sobre servidor VPS.
- Um domínio para cada site. Cada nome precisa apontar para o IP da VPS. Você pode usar subdomínios do mesmo domínio.
- As portas 80 e 443 livres no servidor. O painel ocupa as duas, então não pode haver outro servidor web, como Apache ou Caddy, escutando nelas ao mesmo tempo.
Uma dica: o Let's Encrypt precisa encontrar o domínio apontado para a VPS e alcançar a porta 80 para validar o certificado. Se o domínio ainda não aponta para o servidor, a emissão do certificado vai falhar.
O arquivo compose oficial
A página de instalação do projeto traz este arquivo compose. Crie uma pasta para o painel, salve o arquivo como compose.yaml dentro dela e ajuste o fuso horário:
services:
app:
image: 'jc21/nginx-proxy-manager:2.16.0'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
TZ: "Australia/Brisbane"
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Veja o que cada parte faz:
imagedefine a imagem do painel. A página de instalação fixa a tag2.16.0. O README do projeto no GitHub usa a taglatestno exemplo mínimo. Recomendamos uma tag fixa, porque assim você sabe qual versão está rodando e escolhe a hora de trocar.TZé o fuso horário do contêiner. O exemplo vem comAustralia/Brisbane; para o horário de Brasília, troque porAmerica/Sao_Paulo../data:/dataguarda o banco de dados do painel (SQLite por padrão), as chaves e as configurações../letsencrypt:/etc/letsencryptguarda os certificados emitidos.
Para subir, dentro da pasta do arquivo, rode:
docker compose up -d
Na primeira execução, o painel gera as chaves e inicializa o banco. A documentação avisa que esse processo pode levar alguns minutos, e o README explica que a geração das chaves às vezes demora um pouco. Espere antes de achar que algo deu errado.
Está escolhendo uma VPS? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver os planos de VPS
As portas 80, 443 e 81
Os comentários do compose oficial explicam as três portas:
80é a porta HTTP pública.443é a porta HTTPS pública.81é a porta da interface de administração. A documentação diz para conectar nela para abrir o painel.
Os sites passam pelas portas 80 e 443. A 81 é só o painel, e o compose oficial a publica em todas as interfaces do servidor. Por isso, a nossa recomendação é não deixar a 81 aberta para o mundo depois que o painel estiver configurado. Uma opção é trocar a linha por 127.0.0.1:81:81 no compose e acessar o painel por um túnel SSH. Outra é restringir a porta no firewall do seu provedor. A documentação do projeto não trata disso; é um cuidado que sugerimos.
Para conferir o que está escutando depois de subir, o guia Portas abertas no Linux: como ver com ss e lsof na VPS mostra os comandos. Se uma dessas portas já estiver em uso por outro programa, o contêiner do painel não consegue subir.
Primeiro acesso: criar o administrador
Abra o painel no navegador, na porta 81 do servidor, com o endereço no formato http://IP-DA-VPS:81 (use o IP da sua VPS). Tutoriais antigos pedem um e-mail e uma senha padrão. Isso mudou: segundo as notas da versão 2.13.0, existe agora um novo assistente de configuração e não há mais usuário inicial padrão. Nas versões atuais, o primeiro acesso pede para criar o administrador.
Faça isso logo depois de subir o contêiner. Enquanto o administrador não existe, quem chegar primeiro ao assistente cria a conta, e a porta 81 está aberta na internet. Escolha um e-mail seu e uma senha forte.
Quem prefere pular a tela do assistente pode definir o administrador por variáveis de ambiente, como mostra a seção de configuração avançada da documentação. Nesse caso, o painel cria o usuário ao iniciar. As variáveis são INITIAL_ADMIN_EMAIL e INITIAL_ADMIN_PASSWORD, e os valores do exemplo da documentação são só ilustração. Troque os dois pelos seus.
Publicar um site e emitir o SSL
Com o administrador criado, a ideia é cadastrar cada site no painel. A documentação do projeto não detalha a tela passo a passo, então descrevemos o caminho em linhas gerais, sem depender do nome de botões, na interface do painel:
- Cadastre o domínio do site, por exemplo
blog.exemplo.com. - Informe para onde o painel deve encaminhar: o nome do serviço na rede Docker ou o endereço do aplicativo, junto com a porta dele.
- Na parte de SSL, peça um certificado Let's Encrypt para esse domínio.
- Salve e abra o endereço com
https://no navegador.
Os sites atrás do painel não precisam publicar porta própria na internet. Nossa recomendação é deixá-los na mesma rede Docker do Nginx Proxy Manager, para que só as portas 80 e 443 fiquem expostas. A documentação do projeto não detalha as redes, então trate isso como um cuidado nosso.
Se o navegador mostrar o erro ERR_SSL_PROTOCOL_ERROR depois da configuração, o guia ERR_SSL_PROTOCOL_ERROR: o que é e como resolver ajuda a investigar.
Outras opções do painel
- Redirecionamentos, streams e hosts 404 também são criados pelo painel, segundo a documentação.
- É possível usar um banco externo: MySQL ou MariaDB pelas variáveis
DB_MYSQL_*, ou Postgres pelas variáveisDB_POSTGRES_*. - Se as variáveis
DB_MYSQL_*eDB_SQLITE_*estiverem juntas, a documentação diz que as de MySQL têm precedência. - Com Postgres, a documentação informa que o schema personalizado não é suportado e que o
publicserá usado.
O Nginx Proxy Manager não é o único caminho. O guia Caddy na VPS: servidor web com HTTPS automático mostra outro servidor web que usa as mesmas portas 80 e 443. Escolha um ou outro para ficar com elas, e não rode os dois juntos no mesmo servidor.
Atualizar o painel
A página de atualização do projeto indica estes dois comandos, rodados na pasta do compose:
docker compose pull
docker compose up -d
Como o compose usa uma tag fixa, o primeiro passo é trocar o número da versão na linha image pelo que você quer instalar, e só depois rodar os dois comandos. A mesma página manda consultar a lista de versões do projeto no GitHub, porque cada uma pode ter passos específicos de atualização.
Um exemplo é a 2.13.0, que atualizou o Certbot para a versão 5.1.0. As notas dessa versão avisam para esperar problemas com plugins desatualizados de alguns provedores de DNS. Em arquiteturas, a documentação informa que o armv7 deixou de ser suportado na versão 2.14 em diante, e indica a tag 2.13.7 para ARM de 32 bits.
Backup do painel
A documentação do projeto não traz um procedimento de backup. O que o compose mostra é onde ficam os dados: a pasta data, com o banco, as chaves e as configurações, e a pasta letsencrypt, com os certificados. Nossa recomendação é parar o contêiner, copiar as duas pastas para um local seguro e então subir de novo. Guarde a cópia fora da VPS e antes de cada atualização de versão.
Para restaurar, coloque as duas pastas de volta no mesmo lugar, ao lado do compose.yaml, e suba o contêiner.
Checklist do painel
- Os domínios apontam para o IP da VPS.
- As portas 80 e 443 estavam livres antes de subir o contêiner.
- Troquei o
TZpelo meu fuso. - Criei o administrador logo no primeiro acesso, com senha forte.
- Restringi a porta 81 depois de configurar o painel.
- Cada site está cadastrado no painel e tem o certificado emitido.
- Os sites atrás do painel não publicam porta própria na internet.
- Copio as pastas
dataeletsencryptantes de atualizar.
Vale usar um painel para os seus sites
Com um painel, publicar o segundo, o terceiro e o quarto site passa a ser cadastrar um domínio novo, e não mexer de novo em arquivos de configuração. Em troca, você assume a manutenção do próprio servidor: as atualizações, o backup e a atenção à porta 81.
Quer conhecer a VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS
Perguntas frequentes
Qual é o login inicial do Nginx Proxy Manager?
Nas versões atuais não há login padrão. Desde a 2.13.0, o primeiro acesso à porta 81 abre um assistente que pede para você criar o administrador.
Para que serve a porta 81?
É a porta da interface de administração do painel. Os sites usam as portas 80 e 443. Recomendamos restringir a 81 depois da configuração inicial.
Dá para usar o Nginx Proxy Manager junto com outro servidor web na VPS?
Não nas mesmas portas. O painel ocupa a 80 e a 443, então outro servidor web no host não pode escutar nelas ao mesmo tempo.
Como atualizar o Nginx Proxy Manager?
Na pasta do compose, rode docker compose pull e depois docker compose up -d, depois de trocar a tag da imagem. Consulte antes a lista de versões do projeto.
O que preciso copiar no backup?
As pastas data e letsencrypt, que o compose monta no contêiner. Recomendamos copiá-las com o contêiner parado.