Autoalojar NexBasira
El mismo stack de Docker que ejecuta nuestro SaaS gestionado es lo que entregamos on-premise. El mismo backend de Django, la misma SPA de React, la misma cadena de auditoría. Disponible en el nivel Enterprise con un DPA + un pack de cuestionario de InfoSec.
docs/SELF_HOST.md en el repositorio de origen — lo entregamos a los clientes Enterprise con su paquete de instalación. Contáctenos mediante Contacto (Enterprise) para iniciar la conversación. Por qué autoalojar
- Mandato regulatorio — su sector o jurisdicción exige que las pruebas residan en su infraestructura.
- Aislamiento de red — sus inspectores operan dentro de una VPN; la salida hacia un SaaS no es una opción.
- Residencia de datos personalizada — necesita ubicar los datos en una región específica o una nube soberana.
- Previsibilidad de costes a escala — con >5k inspecciones/mes, la infraestructura dedicada suele ser más barata que el nivel por inspección.
Arquitectura
Seis servicios (más su proveedor de identidad existente para SSO):
| Servicio | Qué hace | Imagen |
|---|---|---|
| caddy | Terminación TLS, enrutamiento HTTP, servicio de activos estáticos | caddy:2 |
| backend | Aplicación Django — API REST, cadena de auditoría, SCIM, firma | ghcr.io/codelounge-io/certivisiopro/api (your tag) |
| frontend | Nginx sirviendo la SPA compilada + el estático de marketing | ghcr.io/codelounge-io/certivisiopro/web |
| postgres | Almacén de datos principal, aislamiento de tenant impuesto por RLS | postgres:16 |
| redis | Broker de Celery + caché + almacén de sesiones | redis:7 |
| celery-worker + celery-beat | Tareas en segundo plano (sondeo de TSA, posprocesamiento de grabaciones, barrido de retención) | igual que el backend |
| livekit | SFU WebRTC para el plano de vídeo en vivo | livekit/livekit-server |
| minio (optional) | Almacenamiento de objetos compatible con S3 para pruebas + grabaciones | minio/minio |
Para el almacenamiento de objetos, también puede apuntar a cualquier servicio compatible con S3 (AWS S3, Wasabi, OVH Object Storage, su clúster Ceph on-premise existente). MinIO se incluye como opción predeterminada para instalaciones verdaderamente aisladas (air-gap).
Requisitos mínimos
| Aspecto | Mínimo | Holgado |
|---|---|---|
| OS | Linux x86_64 (Ubuntu 22.04 LTS or Debian 12) | igual |
| Docker / Compose | Docker 24 + Compose v2 | igual |
| CPU | 4 vCPU | 8 vCPU |
| RAM | 8 GB | 16 GB |
| Disk | 200 GB SSD (BD + pruebas iniciales) | 500 GB + almacenamiento de objetos compatible con S3 para las grabaciones |
| Network | IP estática, puertos 443 + WebRTC (LiveKit) accesibles | igual |
| TLS | Caddy aprovisiona automáticamente mediante Let's Encrypt | Certificado propio (BYO) para redes cerradas |
Bootstrap
Aproximadamente la forma que automatiza el script de instalación:
# 1. Clone the released bundle
git clone --depth 1 https://github.com/codelounge-io/nexbasira-onprem.git
cd nexbasira-onprem
# 2. Fill in env from the example
cp .env.example .env
$EDITOR .env # set DOMAIN, SECRET_KEY, DB password, S3 creds, LiveKit keys
# 3. Pull pinned images
docker compose pull
# 4. Run migrations + create the platform superuser
docker compose run --rm backend python manage.py migrate
docker compose run --rm backend python manage.py createsuperuser
# 5. Start everything
docker compose up -d
# 6. Tail the logs until you see the audit-chain self-test pass
docker compose logs -f backend | grep "audit chain self-test" En un VPS Ubuntu 22.04 limpio, toda la secuencia se ejecuta en unos 5 minutos.
Qué obtiene de fábrica
- Tanto
app.<su-dominio>(SPA) como<su-dominio>(sitio de marketing, opcional) en un único Caddy. - TLS automático mediante Let's Encrypt — o fije una CA privada en redes cerradas.
- Migraciones RLS de Postgres + los cuatro roles del sistema sembrados.
- Trigger de Postgres de la cadena de auditoría (append-only).
- Sembrador de sesión de demostración para que los administradores primerizos puedan explorar con datos realistas.
Operaciones del día 2
- Copias de seguridad — volcado lógico de Postgres cada noche + ciclo de vida S3 para los objetos. El runbook
docs/SELF_HOST.mdincluye pruebas de humo de restauración desde copia de seguridad, incluidaaudit-chain verify. - Actualizaciones — descargue la nueva etiqueta de imagen,
docker compose up -d. Las migraciones de esquema son solo hacia adelante y están probadas en CI; el rollback está documentado para uso de último recurso. - Observabilidad — Django emite logs estructurados en JSON con etiquetas
tenant_id+session_id; enrútelos a su agregador de logs existente. - Métricas — endpoint de exportador Prometheus en el backend; recópielo desde su stack de monitorización.
Qué cambia respecto al SaaS gestionado
| Aspecto | SaaS gestionado | Autoalojado |
|---|---|---|
| Backends de TSA | YodaLedger + FreeTSA + OpenTimestamps configurados de forma predeterminada | Configurable. Puede desactivar cualquiera; puede conectar directamente un QTSP de pago (DataSure). |
| Almacenamiento de grabaciones | S3 en la UE con ciclo de vida a Glacier | Su bucket compatible con S3; el ciclo de vida corre por su cuenta. |
| Entrega de correo | Sendgrid en nuestra infraestructura | Configure las variables de entorno SMTP para su propio relay. |
| Entrega de SMS | Twilio en nuestra infraestructura (opcional) | Twilio con su propia cuenta, o backend nulo si no se usa. |
| Facturación con Stripe | Integrado | Desactivado de forma predeterminada — el autoalojamiento implica su propio contrato de facturación. |
| Actualizaciones | Nosotros desplegamos | Usted descarga las etiquetas de imagen a su propio ritmo. |
Soporte
Los clientes Enterprise de autoalojamiento obtienen un canal dedicado de Slack + Connect, un SLA de 1 hora, guías programadas de actualización y acceso directo a nuestra rotación de guardia para incidentes en producción.
Qué sigue
- Iniciar una conversación Enterprise
- Postura de seguridad — qué contiene el pack de cuestionario de InfoSec
- DPA — qué contiene el paquete contractual