Sistema de redirecionamento para integração entre clientes da Betha Sistemas e o Login Único do GovBR usando Nginx.
✅ Domínio .gov.br configurado - O gateway deve estar em um domínio oficial da prefeitura
✅ Servidor Nginx disponível - Nginx configurado e funcionando
✅ Acesso de administrador - Para configurar o servidor
✅ Certificado SSL ativo - HTTPS é obrigatório para integração com GovBR
🐳 Instalação com Docker:
- ✅ Isolado em container
- ✅ Não afeta outras aplicações do servidor
- ✅ Fácil de remover e atualizar
⚠️ Requer Docker instalado no servidor- ⏱️ 5 minutos
🖥️ Instalação Tradicional:
- ✅ Controle total sobre configuração
- ✅ Integração com servidor web existente
- ✅ Melhor performance
- ✅ Ideal para servidores governamentais
⚠️ Requer conhecimento básico de Nginx- ⏱️ 15-30 minutos
O gateway usa quatro pontos de entrada frontend:
login.htmlbeth.htmlsuite.htmllogout.html
Cada página carrega o app.js hospedado pela Betha. O JavaScript identifica a
rota visível no navegador, preserva a query string e realiza o redirecionamento.
Arquivos auxiliares (só para quem usa Docker):
docker-compose.yml- Configuração do DockerDockerfile- Receita para criar o container
Esta opção isola o sistema em um container. Ideal se você já usa Docker.
Baixe todos os arquivos deste projeto para uma pasta no seu computador.
- Windows: Clique com botão direito na pasta → "Abrir no Terminal" ou "Git Bash Here"
- Linux/Mac: Abra o terminal e navegue até a pasta com
cd caminho/da/pasta
Digite este comando e pressione Enter:
docker-compose up -dO que vai acontecer: O Docker vai baixar tudo que precisa e iniciar o sistema. Isso pode demorar uns 2-3 minutos na primeira vez.
Abra seu navegador e acesse:
http://localhost:8085/login
Se o navegador for redirecionado para o Login Betha/GovBR, funcionou! 🎉
Quando quiser parar, digite:
docker-compose downUse esta opção se preferir instalar diretamente no servidor. Mais controle sobre a configuração.
Abra o terminal e cole estes comandos, um por vez:
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginxsudo mkdir -p /var/www/govbr-gatewayBaixe os arquivos da aplicação diretamente do repositório GitHub:
GATEWAY_REVISION=93aef6acb21cdf1f33468134bd20caf4c6a33936
for page in login beth suite logout; do
sudo curl -fsSL \
-o "/var/www/govbr-gateway/${page}.html" \
"https://raw.githubusercontent.com/betha-plataforma/govbr-gateway/${GATEWAY_REVISION}/${page}.html"
doneNão tem curl instalado?
sudo apt install curlAlternativa manual: baixe login.html, beth.html, suite.html e
logout.html da revisão indicada e copie-os para /var/www/govbr-gateway/.
sudo chown -R www-data:www-data /var/www/govbr-gateway/
sudo chmod 755 /var/www/govbr-gateway
sudo chmod 644 /var/www/govbr-gateway/*Crie um arquivo de configuração para o site:
sudo nano /etc/nginx/sites-available/govbr-gatewayCole este conteúdo:
server {
listen 80;
server_name seu-dominio.gov.br;
root /var/www/govbr-gateway;
# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
# O servidor entrega o HTML; o JavaScript redireciona no navegador.
location ~ ^/(?:.*/)?(login|beth|suite|logout)/?$ {
try_files /$1.html =404;
}
location ~ ^/(login|beth|suite|logout)\.html$ {
try_files $uri =404;
}
location / {
return 404;
}
# Logs
access_log /var/log/nginx/govbr-gateway-access.log;
error_log /var/log/nginx/govbr-gateway-error.log;
}Como salvar: Pressione Ctrl+X, depois Y, depois Enter
sudo ln -s /etc/nginx/sites-available/govbr-gateway /etc/nginx/sites-enabled/
sudo nginx -t # Testa a configuração
sudo systemctl reload nginxAbra o navegador e acesse: http://seu-servidor/login ou http://localhost/login
sudo dnf install nginx # Fedora
# ou
sudo yum install nginx # CentOS/RHEL
sudo systemctl start nginx
sudo systemctl enable nginxsudo mkdir -p /usr/share/nginx/govbr-gatewayGATEWAY_REVISION=93aef6acb21cdf1f33468134bd20caf4c6a33936
for page in login beth suite logout; do
sudo curl -fsSL \
-o "/usr/share/nginx/govbr-gateway/${page}.html" \
"https://raw.githubusercontent.com/betha-plataforma/govbr-gateway/${GATEWAY_REVISION}/${page}.html"
donesudo chown -R nginx:nginx /usr/share/nginx/govbr-gateway/
sudo chmod 755 /usr/share/nginx/govbr-gateway
sudo chmod 644 /usr/share/nginx/govbr-gateway/*
# SELinux (se habilitado)
sudo chcon -R -t httpd_sys_content_t /usr/share/nginx/govbr-gateway/Crie o arquivo de configuração:
sudo nano /etc/nginx/conf.d/govbr-gateway.confCole este conteúdo:
server {
listen 80;
server_name seu-dominio.gov.br;
root /usr/share/nginx/govbr-gateway;
# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
location ~ ^/(?:.*/)?(login|beth|suite|logout)/?$ {
try_files /$1.html =404;
}
location ~ ^/(login|beth|suite|logout)\.html$ {
try_files $uri =404;
}
location / {
return 404;
}
}sudo nginx -t # Testa a configuração
sudo systemctl reload nginx- Acesse: http://nginx.org/en/download.html
- Baixe a versão "Stable version" para Windows
- Extraia para
C:\nginx
- Edite o arquivo
C:\nginx\conf\nginx.conf - Substitua o bloco
serverpadrão por:
server {
listen 80;
server_name localhost;
root C:/nginx/html/govbr-gateway;
location ~ ^/(?:.*/)?(login|beth|suite|logout)/?$ {
try_files /$1.html =404;
}
location ~ ^/(login|beth|suite|logout)\.html$ {
try_files $uri =404;
}
location / {
return 404;
}
}- Crie a pasta
C:\nginx\html\govbr-gateway - Baixe
login.html,beth.html,suite.htmlelogout.htmlda revisão indicada na instalação Linux:- Acesse: https://github.com/betha-plataforma/govbr-gateway
- Baixe os arquivos para
C:\nginx\html\govbr-gateway
- Abra o Prompt de Comando como Administrador
- Navegue até a pasta:
cd C:\nginx - Inicie:
nginx.exe
Abra o navegador: http://localhost/login
Para parar o Nginx:
nginx.exe -s stopO teste precisa ser feito no navegador. curl confirma que o Nginx entrega o
HTML, mas não executa o JavaScript responsável pelo redirecionamento.
Com Docker, acesse:
http://localhost:8085/login?teste=govbr→ Login GovBRhttp://localhost:8085/beth?teste=govbr→ sistema Bethhttp://localhost:8085/suite?teste=govbr→ Betha Suitehttp://localhost:8085/logout?teste=govbr→ logout
Confirme que teste=govbr chegou ao destino. Para instalação tradicional,
troque localhost:8085 pelo domínio configurado.
Se instalou em subpasta, teste também:
http://localhost:8085/govbr-gateway/login?teste=govbr
O Nginx apenas entrega a página com HTTP 200. O app.js remoto identifica a
rota, preserva a query string e redireciona o navegador.
Veja a seção "Problemas Comuns" abaixo.
O que está acontecendo: O Nginx não está entregando o HTML da rota.
Solução para Docker:
- Verifique se o container está rodando:
docker ps - Veja os logs:
docker-compose logs gateway
Solução para instalação tradicional:
- Verifique se a configuração
try_filesestá correta no arquivo de configuração - Teste a configuração:
sudo nginx -t - Recarregue:
sudo systemctl reload nginx
O que está acontecendo: Os arquivos JavaScript não estão carregando.
Solução:
- Pressione F12 no navegador
- Clique na aba "Console"
- Veja se há erros em vermelho
- Verifique se os quatro arquivos HTML estão na pasta correta e se o navegador
consegue carregar
https://govbr-gateway-config.plataforma.betha.cloud/app.js
O que está acontecendo: O Nginx não tem permissão para ler os arquivos.
Solução para Linux:
sudo chown -R www-data:www-data /var/www/govbr-gateway # Ubuntu/Debian
# ou
sudo chown -R nginx:nginx /usr/share/nginx/govbr-gateway # CentOS/RHEL
sudo chmod 755 /var/www/govbr-gateway
sudo chmod 644 /var/www/govbr-gateway/*Solução para Windows:
- Clique com botão direito na pasta
- Propriedades → Segurança
- Certifique que "Todos" tem permissão de leitura
Solução:
- Verifique se o Docker está rodando
- Tente parar e iniciar novamente:
docker-compose down
docker-compose up -dMensagem de erro: "Port 80/8085 is already in use" ou "Unable to bind to port"
Solução para Docker:
- Mude a porta no arquivo
docker-compose.yml - Onde está
8085:80mude para8086:80(ou outra porta livre) - Reinicie com
docker-compose up -d
Solução para Linux:
- Veja o que está usando a porta:
sudo ss -tulpn | grep :80 - Pare o serviço conflitante ou mude a porta no Nginx:
server {
listen 8080; # Mude de 80 para 8080
# resto da configuração...
}- Recarregue:
sudo systemctl reload nginx - Acesse usando
http://localhost:8080
Verificar configuração:
sudo nginx -t # Testa sintaxeVer logs de erro:
sudo tail -f /var/log/nginx/error.logProblemas comuns:
- Arquivo de configuração com sintaxe incorreta
- Porta 80 já em uso por outro serviço
- Permissões incorretas nos arquivos
Com Docker:
- Pare o sistema:
docker-compose down - Atualize os arquivos
- Inicie novamente:
docker-compose up -d
Sem Docker:
- Substitua os quatro arquivos HTML na pasta do servidor
- Recarregue a página no navegador (F5)
Os redirecionamentos são executados pelo app.js hospedado pela Betha. Alterações
de destino devem ser feitas no projeto responsável por esse arquivo central.
Sempre faça backup dos arquivos antes de atualizar:
login.html,beth.html,suite.htmlelogout.html- Arquivos de configuração do Nginx
Se algo não funcionou, tente:
-
Reiniciar o servidor Nginx
- Linux:
sudo systemctl restart nginx - Windows: Pare (
nginx.exe -s stop) e inicie novamente (nginx.exe)
- Linux:
-
Verificar se os arquivos estão no lugar certo
- Os quatro arquivos HTML devem estar na mesma pasta
-
Limpar o cache do navegador
- Pressione Ctrl+F5 na página
-
Consultar a documentação do Nginx
- Site oficial: https://nginx.org/
Docker:
docker-compose up -d # Iniciar
docker-compose down # PararLinux:
sudo systemctl restart nginx # Reiniciar Nginx
sudo nginx -t # Testar configuraçãoWindows:
nginx.exe # Iniciar
nginx.exe -s stop # Parar
nginx.exe -s reload # Recarregar configuraçãoGovBR Gateway - Desenvolvido pela Betha Sistemas para facilitar a integração entre prefeituras brasileiras e o Login Único do Governo Federal, conforme exigências do padrão OAuth2 em domínios .gov.br.
Para suporte técnico, entre em contato com a equipe Betha Sistemas.