Firecracker Platform
Plataforma de microVMs inspirada na arquitetura da Fly.io, composta por tres componentes principais que rodam dentro de containers LXC no Proxmox com /dev/kvm passthrough.
Visao Geral
A Firecracker Platform permite criar, gerenciar e rotear trafego para microVMs Firecracker com boot em menos de 2 segundos, sub-100KB de overhead de memoria e isolamento completo via KVM.
| Componente | Linguagem | Funcao | Porta |
|---|---|---|---|
| npool-proxy | Rust (Tokio/Hyper) | Data plane -- reverse proxy HTTP + HTTP server dentro das microVMs | :8088 (proxy), :8080 (serve) |
| npoold | Go | Control plane -- gestao de microVMs, networking, bridge, TAP | :8089 API |
| npool (npool-cli) | Go | Cluster management CLI -- placement engine, DNS sync | CLI only |
| dashboard | Next.js 16 | Web dashboard (apps, machines, stats) | :3000 (CT 101 Docker) |
| Corrosion | Rust (Fly.io OSS) | State store distribuido -- SQLite + gossip + CRDT | :4001 gossip, :4002 API |
Fluxo de Request (Ponta a Ponta)
HTTP: Internet → PVE:80 (iptables DNAT -i vmbr0) → CT 201:8088 (npool-proxy) → microVM:8080
HTTPS: Internet → PVE:443 (iptables DNAT -i vmbr0) → CT 201:8443 (npool-proxy TLS termination) → microVM:8080
- Usuario acessa
https://test1.npool.cloud - Cloudflare faz proxy (DNS-only para
*.npool), npool-proxy faz TLS termination - iptables DNAT no PVE redireciona porta 80 para CT 201:8088, porta 443 para CT 201:8443
- npool-proxy (Rust/Tokio) extrai
Hostheader (HTTP) ou SNI (TLS) - npool-proxy consulta Corrosion:
SELECT backend FROM routes WHERE domain = ? - npool-proxy faz forward para
172.16.1.2:8080(microVM) - npool-proxy (serve mode) dentro da microVM responde com conteudo estatico
- Response volta pelo mesmo caminho
Arquitetura Hexagonal
Todos os componentes seguem Arquitetura Hexagonal (Ports & Adapters):
domain/-- Entidades e logica de negocio pura, sem I/Oports/-- Interfaces/traits que o domain espera (contratos)adapters/-- Implementacoes concretas (Corrosion, Firecracker, Hyper, Linux network)
Imutabilidade Estilo Fly.io
As microVMs sao imutaveis. Para atualizar uma VM, voce a destroi e recria. O rootfs com npool-proxy serve ja vem baked na imagem Alpine, garantindo que toda VM nova ja nasce pronta para servir trafego.
Infraestrutura
| Recurso | Detalhes |
|---|---|
| Host | Proxmox VE (OVH), IP 51.68.229.144 |
| CT 201 | npool-node-1 (Ubuntu 24.04, 10.10.10.5, 4 cores, 10GB RAM, /dev/kvm) |
| CT 202 | npool-node-2 (Ubuntu 24.04, 10.10.10.6, 4 cores, 10GB RAM, /dev/kvm) |
| CT 203 | postgresql (Debian 13, 10.10.10.7, 2 cores, 2GB RAM) -- PG 17 + NATS |
| Subnet microVMs | CT 201: 172.16.1.0/24, CT 202: 172.16.2.0/24 (bridge npool0, gateway .1) |
| Firecracker | v1.14.1, kernel 6.1.150, rootfs Alpine 3.21 |
| Dominio | *.npool.cloud (A record) + *.npool.cloud (NS delegation) |
Quick Links
- Quickstart -- Subir a plataforma em 5 minutos
- Arquitetura -- Diagramas e fluxos detalhados
- npool-proxy -- Data plane Rust
- npoold -- Control plane Go
- API Reference -- Endpoints HTTP
- DNS e TLS -- DNS autoritativo e Let's Encrypt
- Taskfile Reference -- Todos os comandos disponiveis