QrRapido/appsettings.Production.json
Ricardo Carneiro 6d4a8904f2 feat: Docker Secrets para credenciais sensíveis
- Criado DockerSecretsConfigurationProvider para ler secrets de /run/secrets/
- Removidas credenciais sensíveis do appsettings.Production.json
- Adicionado indicador visual no rodapé (✓/✗) para verificar se secrets foram carregados
- Atualizado deploy.yml para usar Docker Secrets no Swarm
- Criado script create-docker-secrets.sh para gerenciar secrets
- Criado template secrets.env.template para facilitar configuração
- Documentação completa em DOCKER_SECRETS_SETUP.md

Secrets gerenciados:
- stripe_secret_key
- stripe_webhook_secret
- mongodb_connection_string
- google_client_id / google_client_secret
- microsoft_client_id / microsoft_client_secret

IMPORTANTE: Após este deploy, é necessário criar os secrets no Swarm
e recriar o service. Consulte DOCKER_SECRETS_SETUP.md.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 21:39:20 -03:00

94 lines
2.3 KiB
JSON

{
"ApplicationName": "QRRapido-Prod",
"App": {
"Environment": "Production",
"SecretsLoaded": false
},
"Support": {
"TelegramUrl": "https://t.me/jobmakerbr",
"FormspreeUrl": "https://formspree.io/f/xpwynqpj"
},
"ConnectionStrings": {
"MongoDB": "LOADED_FROM_DOCKER_SECRET"
},
"Serilog": {
"SeqUrl": "http://172.17.0.1:5341",
"ApiKey": "",
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.AspNetCore": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"System": "Warning",
"QRRapidoApp": "Information"
}
}
},
"Authentication": {
"Google": {
"ClientId": "LOADED_FROM_DOCKER_SECRET",
"ClientSecret": "LOADED_FROM_DOCKER_SECRET"
},
"Microsoft": {
"ClientId": "LOADED_FROM_DOCKER_SECRET",
"ClientSecret": "LOADED_FROM_DOCKER_SECRET"
}
},
"Stripe": {
"PublishableKey": "pk_live_51Rs42SB6bFjHQirAXIhK2fetsfH7MDYWeTT5jiRGYpIS7g5fCCT0XzLK1tIOdxUYXG4gwN4OEAzuVFw9GTmvq7iM00iJmUSZWB",
"SecretKey": "LOADED_FROM_DOCKER_SECRET",
"WebhookSecret": "LOADED_FROM_DOCKER_SECRET"
},
"ResourceMonitoring": {
"Enabled": true,
"IntervalSeconds": 30,
"CpuThresholdPercent": 75,
"MemoryThresholdMB": 512,
"ConsecutiveAlertsBeforeError": 3,
"GcCollectionThreshold": 8
},
"MongoDbMonitoring": {
"Enabled": true,
"IntervalMinutes": 5,
"DatabaseSizeWarningMB": 1024,
"DatabaseSizeErrorMB": 5120,
"GrowthRateWarningMBPerHour": 100,
"IncludeCollectionStats": true,
"CollectionsToMonitor": [
"Users",
"QRCodeHistory",
"AdFreeSessions"
]
},
"HealthChecks": {
"MongoDB": {
"TimeoutSeconds": 5,
"IncludeDatabaseSize": true,
"TestQuery": true
},
"Seq": {
"TimeoutSeconds": 3,
"TestLogMessage": "QRRapido-Prod health check test"
},
"Resources": {
"CpuThresholdPercent": 80,
"MemoryThresholdMB": 600,
"GcPressureThreshold": 12
},
"ExternalServices": {
"TimeoutSeconds": 8,
"TestStripeConnection": true,
"TestGoogleAuth": true,
"TestMicrosoftAuth": true
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"QRRapidoApp": "Information"
}
}
}