Base de Conhecimento

Nginx Proxy Manager: vários sites numa VPS só

  • nginx proxy manager, proxy reverso, docker, ssl let's encrypt, vps
  • Usuários acharam útil: 0

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

Arte da Eleven Host: janela de terminal com o título: Nginx Proxy Manager: vários sites numa VPS só

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:

  • image define a imagem do painel. A página de instalação fixa a tag 2.16.0. O README do projeto no GitHub usa a tag latest no 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 com Australia/Brisbane; para o horário de Brasília, troque por America/Sao_Paulo.
  • ./data:/data guarda o banco de dados do painel (SQLite por padrão), as chaves e as configurações.
  • ./letsencrypt:/etc/letsencrypt guarda 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:

  1. Cadastre o domínio do site, por exemplo blog.exemplo.com.
  2. 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.
  3. Na parte de SSL, peça um certificado Let's Encrypt para esse domínio.
  4. 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áveis DB_POSTGRES_*.
  • Se as variáveis DB_MYSQL_* e DB_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 public será 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 TZ pelo 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 data e letsencrypt antes 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.

Esta resposta lhe foi útil?

Artigos Relacionados