O portal NCCSoft's é a central de acesso unificado para aplicações internas da empresa. Combina autenticação SSO via Google OAuth2, gestão de permissões granulares por aplicativo e uma interface de administração completa.
nccsofts, usuário nccsofts_userbluedeploy)Internet
└── Nginx (reverse proxy)
├── www.nccsofts.com.br → /var/www/nccsofts (HTML estático)
│ └── /sso/* → BlueDeploy (Gunicorn :8000)
├── docs.nccsofts.com.br → /var/www/nccsofts-docs (HTML estático)
│ └── /sso/api/me → proxy para BlueDeploy
├── bluedeploy.nccsofts.com.br → BlueDeploy (Gunicorn :8000)
└── monitorjuridico.nccsofts.com.br → Monitor Jurídico (unix socket)
O SSO é implementado via Google OAuth2 usando a biblioteca Authlib. O cookie de sessão é compartilhado entre todos os subdomínios .nccsofts.com.br.
Google OAuth2 via Authlib. Configurado com SESSION_COOKIE_DOMAIN = .nccsofts.com.br para que o cookie seja válido em todos os subdomínios.
@sso_required — exige sessão SSO (session["sso_email"])@admin_required — exige sessão SSO + session["sso_is_admin"] = Truesso_users — id, email, nome, foto_url, ativo, is_admin, criado_em, ultimo_acessosso_apps — id, slug, nome, url_base, ativo, iconesso_permissoes — id, user_id, app_id, concedido_em — constraint única (user_id, app_id)| Método | Rota | Descrição | Proteção |
|---|---|---|---|
| GET | /sso/ | Portal do usuário (apps disponíveis) | sso_required |
| GET | /sso/login | Tela de login | pública |
| GET | /sso/auth/google | Inicia OAuth Google | pública |
| GET | /sso/auth/google/callback | Callback OAuth | pública |
| GET | /sso/logout | Logout | pública |
| GET | /sso/api/me | Dados do usuário logado (JSON) | sso_required |
| GET | /sso/admin | Painel admin | admin_required |
| GET | /sso/painel | Gestão de portal_apps | admin_required |
| GET | /sso/backup | Painel de backups | admin_required |
/opt/bluedeploy/BlueDeploy/app_bluedeploy.py → bluedeploy_app.app.create_app()bluedeploy (Gunicorn na porta 8000)nccsofts, usuário nccsofts_userNCC_DATABASE_URL ou DATABASE_URL — DSN PostgreSQLGOOGLE_CLIENT_ID — ID do cliente OAuth GoogleGOOGLE_CLIENT_SECRET — Segredo do cliente OAuth GoogleGOOGLE_REDIRECT_URI — URI de callback OAuthSECRET_KEY — Chave secreta Flask para assinatura de sessõesmodules.sso — SSO e autenticaçãomodules.governanca_indices — Governança de Índices EconômicosGerencia índices econômicos como IPCA, INPC, IGP-M, UFESP e EC 113/2021, com controle de versão, conferência e auditoria completa.
/governanca-indices//api/governanca-indices/...gi_indice — codigo, nome, fonte, tipo_valor, periodicidade, unidade, metodo_atualizacao, ativo, robot_tipo, robot_config_jsongi_indice_valor — indice_id, competencia, valor, status, origemgi_indice_conferencia — valor_id, resultado, conferido_porgi_audit_log — entidade, entidade_id, acao, usuario, origem, diff_jsonBCB_SGS_JSON — Banco Central do Brasil, API SGS (JSON)SP_UFESP_SEFAZ_HTML — UFESP, portal SEFAZ-SP (HTML scraping)TJSP_PDF_MATRIX — TJSP, extração de PDFs com matriz de valoresTJSP_COMUNICADO_SCRAPER — TJSP, scraper de comunicados.nccsofts.com.brESCAVADOR_TOKEN — Token de acesso à API EscavadorWEBHOOK_AUTH_TOKEN — Token de autenticação para webhooks| Rota | Descrição |
|---|---|
/ | Página principal |
/ui | Interface de usuário |
/health | Health check |
/watchlist | Lista de monitoramento |
/processos | Listagem de processos |
Auto-discover de processos a partir de documentos (CNPJs/CPFs) cadastrados na watchlist.
Contabo/nginx/nccsofts_portal/etc/nginx/sites-available/nccsofts_portalX-Content-Type-Options: nosniffX-Frame-Options: DENYReferrer-Policy: strict-origin-when-cross-originContent-Security-Policy: frame-ancestors 'none'Permissions-Policy: geolocation=(), microphone=(), camera=()Requisições para /sso/* são encaminhadas para http://127.0.0.1:8000 (Gunicorn BlueDeploy).
O subdomínio docs.nccsofts.com.br serve arquivos estáticos de /var/www/nccsofts-docs/ e faz proxy apenas de /sso/api/me para o BlueDeploy.
O repositório está clonado em /opt/bluedeploy/ no servidor. Para aplicar mudanças após um merge na branch principal:
cd /opt/bluedeploy && git pull sudo cp Contabo/www/index.html /var/www/nccsofts/index.html sudo cp Contabo/www/docs.html /var/www/nccsofts/docs.html sudo cp Contabo/www/status.html /var/www/nccsofts/status.html sudo cp Contabo/www/docs.html /var/www/nccsofts-docs/index.html sudo chown www-data:www-data /var/www/nccsofts/*.html /var/www/nccsofts-docs/*.html sudo systemctl restart bluedeploy
Para configurar o subdomínio docs.nccsofts.com.br pela primeira vez, use o script de setup:
sudo bash /opt/bluedeploy/Contabo/scripts/setup_docs_ssl.sh
O script cria o diretório /var/www/nccsofts-docs/, instala a config nginx e obtém o certificado SSL via certbot.
| Variável | Valor | Uso |
|---|---|---|
--bg | #0b0b0d | Background principal |
--panel | rgba(255,255,255,.045) | Cards e painéis |
--line | rgba(255,255,255,.085) | Bordas e divisores |
--text | #f4f5f7 | Texto principal |
--muted | rgba(244,245,247,.72) | Texto secundário |
--yellow | #ffd200 | Destaque, acento dourado |
.card — Painel com fundo semitransparente, borda e border-radius 18px.badge — Tag compacta com variantes .yellow e .green.btn — Botão com variante .primary (dourado).pill — Pílula de navegação/ação.nav-item — Item de âncora de navegação interna.logo-badge — Badge do logo no header com fundo douradoStack: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial
Breakpoint principal: @media(max-width:768px) — ajusta padding, font-size e layout de tabelas.
fadein — opacity 0 para 1 com translateY 8px para 0, duração 0.45s ease-out.
| Variável | Obrigatória | Descrição | Exemplo |
|---|---|---|---|
NCC_DATABASE_URL |
sim | DSN PostgreSQL principal (alternativa a DATABASE_URL) | postgresql://user:pass@localhost/nccsofts |
DATABASE_URL |
alternativa | DSN PostgreSQL (usado se NCC_DATABASE_URL não estiver definido) | postgresql://user:pass@localhost/nccsofts |
SECRET_KEY |
sim | Chave secreta Flask para assinatura de cookies de sessão | uma-string-longa-e-aleatoria |
GOOGLE_CLIENT_ID |
sim | ID do cliente OAuth2 do Google Cloud Console | 123456789.apps.googleusercontent.com |
GOOGLE_CLIENT_SECRET |
sim | Segredo do cliente OAuth2 do Google | GOCSPX-xxxxxxxxxxxxxxxxxxxxx |
GOOGLE_REDIRECT_URI |
sim | URI de callback OAuth2 (deve estar registrada no Google Console) | https://www.nccsofts.com.br/sso/auth/google/callback |
ESCAVADOR_TOKEN |
Monitor Jurídico | Token de acesso à API Escavador para consulta de processos | Token xxxxxxxxxxxxxxxxxxxxxxxx |
WEBHOOK_AUTH_TOKEN |
Monitor Jurídico | Token para autenticação de webhooks recebidos | um-token-secreto |