Todo se queda dentro del perímetro: código, panel, hallazgos.
Para sectores regulados y redes cerradas: el panel, el análisis y la base corren en tus servidores. Solo dos puertas se abren hacia fuera - el registro de imágenes y el archivo de licencia; en una instalación air-gapped, ambos pueden llevarse dentro.
Un producto, una sola línea de versiones
Cada instalación ejecuta las mismas imágenes, versionadas con una sola etiqueta. Sin bifurcación ni edición rezagada.
Todos los módulos incluidos
Todos los módulos, de ArchPilot a Archito, se ejecutan en sus servidores. Cada función llega a cada instalación en las mismas imágenes.
Consola de administración incluida
La instalación tiene su propia área de administración: licencia, usuarios y correo en un lugar, con un asistente en el primer arranque.
Identidad e IA
No hay inicio de sesión con Google ni GitHub: la identidad se queda en su perímetro, con correo y contraseña o LDAP / Active Directory. Las funciones de IA son opcionales y solo ellas necesitan Internet, hacia el proveedor que elija su operador.
¿Qué se ejecuta en la instalación?
La instalación de referencia son cuatro contenedores en un servidor. El análisis no se ejecuta en ese servidor, sino dentro de sus trabajos de CI.
| Componente | Función | Quién accede |
|---|---|---|
| Panel (app-ui) | La interfaz web que abren sus usuarios. Reenvía cada petición a la API con la identidad del propio usuario. | Navegadores; puerto 8080 por defecto |
| API (api) | Recibe los informes de análisis, calcula las puntuaciones y ejecuta tareas programadas como la sincronización de Git y los informes. Es el único componente que habla con la base de datos. | El panel y sus runners de CI; puerto 5000 por defecto |
| PostgreSQL 16 | Hallazgos, informes, usuarios y ajustes de administración. | Solo la API |
| Redis 7 | Sesiones, caché y las claves de sesión que comparten las réplicas. | El panel y la API |
| Imágenes de análisis (collectors) | Analizan el código en su trabajo de CI y envían el informe a su propia API. Una imagen para cada uno de los nueve lenguajes. | Sus trabajos de CI; nada se ejecuta de forma permanente en el servidor |
El TLS lo aporta el proxy inverso (nginx, traefik) o el ingress situado delante. Los navegadores solo necesitan el puerto del panel; los runners de CI, solo el de la API.
La instalación son tres pasos
Kubernetes no es obligatorio; con docker compose basta. La guía, con capturas, está en docs.apparch.io.
- 01
Licencia + clave de instalación
Ventas envía tu ID de instalación y la clave de instalación; la clave se transmite una sola vez. En el primer arranque, la instalación obtiene su licencia en línea. Sin conexión (air-gap), envías el código de instalación que muestra el asistente y recibes un archivo .lic vinculado a ese código.
- 02
Descarga las imágenes
docker login hub.apparch.io - el ID de instalación es el usuario y la clave la contraseña. En una red air-gapped las imágenes se bajan una vez fuera y se llevan dentro.
- 03
compose up + asistente
El archivo compose levanta el panel, el análisis y las migraciones de base; en el primer arranque el asistente conecta la cuenta admin y la licencia.
Requisito: Docker Engine 24+ con el plugin compose. Eso es todo.
Instalación en una red aislada
Ni la instalación ni el funcionamiento necesitan una conexión hacia fuera de su red. El único intercambio con el exterior son dos archivos llevados a mano.
- 01
Introducir las imágenes
Las imágenes del panel y de la API se entregan en un único archivo comprimido; lo lleva al servidor y lo carga con docker load. Las imágenes de análisis van a su propio registro interno, de donde las toman sus trabajos de CI.
- 02
Generar los secretos en el servidor
gen-secrets.sh crea al azar, en el propio servidor, las contraseñas de la base de datos y de Redis, la clave de firma de sesiones y la clave maestra de cifrado. Ninguna nos llega y ninguna está en las imágenes.
- 03
Enviar el código de instalación
Arranque los servicios y envíe a AppArch el código de instalación que muestra el paso de licencia del asistente. El archivo .lic que recibe queda vinculado solo a esta instalación; colóquelo en ./license/apparch.lic o péguelo en el asistente.
- 04
No sale ninguna petición
Deje vacías las direcciones del proveedor y de actualizaciones: la licencia se verifica en local, no se comprueban versiones y ninguna petición sale de la red. Las nuevas versiones también llegan como archivos.
Fácil de operar, claro de vigilar
Lo que su equipo necesita saber tras la instalación, en cuatro puntos.
Endpoints de salud
/health/live indica que el proceso está activo; /health/ready, que la base de datos y Redis responden (en el panel: la API). Compose los usa como healthchecks del contenedor; en Kubernetes sirven para las sondas liveness y readiness.
Actualizaciones
Cambie la versión de imagen en .env y ejecute docker compose pull y up. Las migraciones pendientes se aplican al arrancar, en orden, sin importar cuántas versiones se hayan saltado. Solo avanzan, así que haga antes una copia con pg_dump.
Un arranque que se explica
La API registra su arranque paso a paso: base de datos, migraciones, datos de referencia, licencia. Si un paso falla, la línea de error indica en cuál se detuvo; un fallo de conexión muestra host y puerto, nunca credenciales.
Más de una réplica
Las réplicas que comparten el mismo PostgreSQL y Redis son una sola instalación: las migraciones se ejecutan una vez bajo un bloqueo de base de datos, las tareas programadas se disparan en una réplica mediante un planificador en clúster y las sesiones se comparten a través de Redis.
Seguro por defecto
Medidas que vienen con la instalación y no necesitan configuración adicional.
- Los secretos son suyos. Contraseñas y claves se generan en su servidor durante la instalación; las imágenes solo llevan valores por defecto no secretos.
- Credenciales de Git cifradas. Los tokens de acceso de los proveedores conectados se cifran en la base de datos con AES-GCM bajo la clave maestra de su instalación.
- Imágenes sin shell y sin root. Los contenedores solo llevan el runtime de .NET, no incluyen shell y se ejecutan con un usuario sin privilegios.
- Una licencia que no se puede editar. La licencia se verifica con la clave de firma de AppArch incluida en las imágenes; editar el archivo a mano rompe la firma.
- El inicio de sesión se queda en su red. Correo y contraseña (con autenticación en dos pasos opcional) o LDAP / Active Directory. No hay inicio de sesión con Google ni con GitHub.
¿Cómo se comporta la licencia?
Sin apagones sorpresa: los límites son explícitos, y lo que pasa al superarlos también.
Un archivo firmado, verificado sin conexión
La licencia es un archivo .lic firmado con RS256; la instalación lo verifica en local, y una licencia funciona en una sola instalación. No llama a un servidor de licencias para seguir funcionando. Varios pods que comparten una misma base de datos cuentan como una sola instalación.
Contadores por mes natural
Los límites de uso se cuentan por mes natural y se reinician a principio de mes - sin sorpresas de ventana deslizante.
Primero límite blando, luego duro
Superar un límite no detiene el trabajo: se toleran siete días y un 10% mientras el panel te avisa. El corte duro solo llega al agotarse ese margen.
Preguntas frecuentes
¿Cómo recibo actualizaciones?
¿Qué opciones de autenticación hay?
En un air-gap total, ¿qué funciona y qué no?
¿Quién ve los datos?
¿Cómo funciona el precio?
¿Funciona en Kubernetes?
¿Qué debo respaldar?
¿Qué pasa con la licencia si cambio de servidor?
Pruébalo dentro de tu perímetro
Pide tu ID de instalación; con el archivo compose estás en pie en una tarde.