APIIS WebAdmin

IIS Manager for Linux โ€” REST API para gestao de aplicacoes .NET em servidores Linux

ASP.NET Core 8 Clean Architecture SignalR Azure Blob Prometheus REST API

PROBLEMA

  • Migracao IIS para Linux
  • Sem interface gestao
  • Deploy manual via terminal
  • Sem padronizacao ciclo de vida
  • Sem monitoramento
  • Sem controle de pacotes
โ†’

SOLUCAO

  • REST API completa
  • Deploy Blue-Green + rollback
  • Integracao systemd + Caddy
  • Azure Blob Storage
  • Prometheus metrics
  • SignalR real-time
REVOLUCAO NA GESTAO DE SERVIDORES
TECNOLOGIAS

Stack Tecnologica

โš™๏ธ

.NET 8 / C#

ASP.NET Core 8

Clean Architecture

Ports & Adapters

๐Ÿ—„๏ธ

Persistencia

EF Core 8

SQLite

JSON columns

๐Ÿ”

Seguranca

JWT Bearer

RBAC 3 roles

FluentValidation

๐Ÿ“Š

Observabilidade

Prometheus

Serilog

Scalar + Swagger

๐Ÿง

Infra Linux

systemd

Caddy reverse proxy

Let's Encrypt

โ˜๏ธ

Cloud

Azure Blob Storage

Pacotes por grupo

Pull & Deploy

โšก

Real-Time

SignalR Hub

Deploy notifications

Channel queue

๐Ÿ”„

Mapping

AutoMapper

Entity-DTO

Profile-based

ARQUITETURA

Clean Architecture โ€” Ports & Adapters

PRESENTATION

7 Controllers REST (30+ endpoints) + SignalR DeployHub

Scalar UI / Swagger OpenAPI

โ–ผ
APPLICATION

Services: Application, Site, Deploy, JwtToken, ServerMetrics, AzureBlobPackage

DTOs + FluentValidation + AutoMapper Profiles

โ–ผ
DOMAIN

Entities: Application, Site, Deployment, ServerMetricSnapshot, ApplicationLog

Interfaces (Ports) โ€” zero dependencias externas

โ–ผ
INFRASTRUCTURE

Services: Systemd, Caddy, File, AzureBlob, CommandExecutor

Background: BackgroundDeployService, MetricsCollector, DeployTracker

Persistence: EF Core Repositories + SQLite

FEATURES

Funcionalidades Principais

⚙️

Gestao de Aplicacoes

  • CRUD completo
  • Start/Stop/Restart via systemd
  • Enable/Disable auto-start
  • Logs estruturados com severidade
  • Agrupamento logico (Escola, Contrato)
  • Blue-Green slots (A/B)
🚀

Deploy Inteligente

  • Deploy template->destino
  • Batch deploy assincrono (1->N)
  • Pull & Deploy do Azure Blob
  • Blue-Green zero downtime
  • Backup automatico + Rollback
  • SignalR real-time status
🌐

Gestao de Sites

  • Dominio primario + alternativos
  • Caddy reverse proxy
  • HTTPS automatico Let's Encrypt
  • Status certificados SSL
  • Vinculacao app-dominio
📊

Monitoramento

  • CPU Memoria Disco Rede
  • Historico 30 dias
  • Prometheus /metrics
  • Agregacoes min/max/avg
  • Coleta automatica 60s
☁️

Azure Blob Storage

  • Pacotes por grupo
  • Download com streaming
  • Pull & Deploy integrado
  • Exclusao remota
  • Conexao configuravel
🛡️

Seguranca

  • JWT Bearer 60min
  • RBAC Admin/Operator/Viewer
  • FluentValidation
  • Prevencao injection/traversal
  • Health check publico
API

30+ Endpoints ยท 7 Controllers LIVE — 15 apps

Auth /api/auth
POST /login
GET /me
Applications /api/applications
GET / POST / PUT / DEL CRUD
POST start/stop/restart
POST enable/disable
GET logs/structured
GET group/{name}
Sites /api/sites
GET / POST / PUT / DEL CRUD
GET /application/{appId}
Deploy /api/deploy
POST single
POST /batch async
POST /pull Azure Blob
GET /batch/{id}
POST rollback
GET /recent
Metrics /api/server/metrics
GET current/history/summary
DEL /history purge
Packages /api/packages
GET /{group}
DEL /{group}/{file}
Health /api/health
GET / (sem auth)
GET /metrics Prometheus
DEPLOY

Pipeline de Deploy โ€” Blue-Green

01 Validacao Verifica template e destino
โ†’
02 Backup Cria tar.gz do destino
โ†’
03 Stop Para servico systemd
โ†’
04 Sync rsync com exclusoes
โ†’
05 Config Aplica variaveis JSON
โ†’
06 Start Inicia + health check

Blue-Green Strategy

  • Slots A/B (ActiveSlot)
  • Deploy no slot inativo
  • Apos sucesso alterna slot
  • Zero downtime
  • Rollback instantaneo

Batch Deploy + Rollback

  • 1 template -> N destinos (202 Accepted)
  • BackgroundDeployService Channel queue
  • Paralelismo max 3 simultaneos
  • SignalR progresso real-time
  • Rollback restaura backup tar.gz
batch-deploy.sh
$ curl -X POST /api/deploy/batch
-d '{"sourceId":"...", "targetIds":["...","..."]}'
{ "batchId": "abc-123", "status": "Accepted" }

Semaforo por aplicacao impede deploys concorrentes

SEGURANCA

Autenticacao & Controle de Acesso

Operacao Admin Operator Viewer
Leitura GET
Criar / Editar / Deletar
Start / Stop / Restart
Deploy / Rollback / Batch
Azure Blob / Purge
jwt-login.sh
$ curl -X POST /api/auth/login
-d '{"userName":"admin","password":"***"}'
{ "token": "eyJhbGciOiJIUzI1NiIs...",
"role": "Admin", "expiresIn": 3600 }

Medidas de Protecao

  • JWT Bearer expiracao 60 min
  • FluentValidation em todos inputs
  • CommandExecutor previne injection
  • Path traversal bloqueado (.. e ~)
  • Regex nomes, dominios, portas
  • SignalR JWT via query string
  • Semaforo previne race conditions
  • Secret key configuravel por ambiente
REAL-TIME & CLOUD

SignalR & Azure Blob Storage

SignalR โ€” Notificacoes em Tempo Real

  • DeployHub para status de deploy live
  • Eventos: Started, Completed, Failed
  • Batch deploy com progresso por app
  • JWT authentication via query string
  • Channel-based queue processamento async
  • DeployTrackerSingleton estado em memoria
SignalR Client
// SignalR Client
connection.on("DeployProgress", (data) => {
console.log(`Deploy ${data.appName}: ${data.status}`);
});
connection.on("BatchCompleted", (data) => {
console.log(`Batch done: ${data.succeeded}/${data.total}`);
});
☁️

Azure Blob Storage โ€” Gestao de Pacotes

  • Armazenamento centralizado de pacotes
  • Organizacao por grupo (escola, contrato)
  • Listagem com metadados (tamanho, data)
  • Download com streaming e progresso
  • Pull & Deploy: baixa do Blob e deploya
  • Exclusao remota de pacotes obsoletos
Pull & Deploy
$ curl POST /api/deploy/pull
-d '{"groupName":"ESCOLA","version":"latest"}'
{ "status": "Success",
"deployed": 12, "failed": 0 }
Arquitetura event-driven para operacoes de longa duracao
OBSERVABILIDADE

Monitoramento & Qualidade

📊

Prometheus Metrics

  • CPU/Memoria/Disco/Rede
  • Load average 1/5/15
  • Background service auto
  • Retencao 30 dias
  • Agregacoes min/max/avg
  • Leitura nativa /proc
📝

Serilog Structured

  • Console + Rolling File
  • Logs apps journalctl
  • Parsing severidade JSON
  • Rastreabilidade completa
  • Niveis Debug->Fatal
  • Enrichers contextuais
📚

Documentacao

  • Swagger/OpenAPI + Scalar UI
  • 12 arquivos Markdown
  • Exemplos cURL prontos
  • Guia deploy e arquitetura
  • Checklist e relatorio final
  • Fluxo visual de deploy
LIVE
CPU
0.0%
Memory
0/0 MB
Disk
0.0/0.0 GB
Network
0.0 KB / 0.0 KB
42+ Arquivos C#
30+ Endpoints REST
7 Controllers
4 Camadas
12 Docs Markdown
3 Estrategias Deploy
Metricas coletadas a cada 60 segundos โ€” retencao configuravel
VERSAO FINAL

APIIS WebAdmin

Solucao completa e production-ready para gestao de aplicacoes .NET em ambientes Linux.

  • Clean Architecture com Ports & Adapters
  • Deploy Blue-Green com rollback automatico
  • Batch deploy assincrono com SignalR real-time
  • Azure Blob Storage para distribuicao de pacotes
  • Monitoramento completo โ€” Prometheus + Serilog
  • JWT com RBAC granular (Admin, Operator, Viewer)
  • Documentacao abrangente โ€” pronto para producao
.NET 8 Linux SignalR Azure Prometheus
AUTO
1
11