Saltar al contenido
AutoalojamientoServidor disponible si lo solicitas

Ejecuta el servidor donde ya trabajas

El servidor de Crunu es ciego por diseño. En app.crunu.com o en una infraestructura que tú controlas, guarda datos cifrados, claves públicas y registros firmados, y no tiene ninguna clave que descifre un solo valor.

Ejemplo. Kiteline es una empresa ficticia.

Lo que necesitas antes

  • 1Node.js 24 y el código del servidorEn él se ejecutan las herramientas de operador server-init, doctor y crunu-server. El servidor no se puede descargar públicamente: escribe a support@crunu.com para obtenerlo.
  • 2Una dirección que vayas a conservarLas firmas de inicio de sesión, los enlaces de acceso, las llaves de acceso y los agentes están ligados al dominio del servidor, así que no se puede cambiar más adelante.
  • 3Un lugar seguro para .envSirve un gestor de contraseñas. El archivo contiene SERVER_KEY, el secreto principal del servidor.

Una vez por servidor

Instalar

Cinco pasos te llevan de una máquina vacía o una cuenta en la nube a un servidor en marcha con su primer propietario.

  1. 1Decide quién opera el servidor

    El cifrado ocurre en el navegador y en el agente crunu, nunca en el servidor. Por eso, elegir entre app.crunu.com y tu propio servidor es decidir quién lo opera y quién ve sus metadatos. En ningún caso nadie del lado del servidor puede leer tus valores.

    • app.crunu.com: Crunu opera el servidor en Cloudflare Workers con una base de datos D1, gratis durante el acceso anticipado
    • Tu propio servidor: lo operas tú, pagas a tu proveedor de plataforma y solo tú ves sus metadatos
    • Los metadatos son los nombres de organizaciones, proyectos, entornos y máquinas, las direcciones de correo, el registro de auditoría y el tamaño y la hora de las versiones
    Ejemplo. Kiteline es una empresa ficticia.
  2. 2Genera la configuración del servidor

    server-init escribe un archivo .env con una SERVER_KEY nueva, un BOOTSTRAP_TOKEN de un solo uso para el primer propietario y un CRON_SECRET. Solo tu usuario puede leer el archivo.

    • Guarda enseguida una copia en tu gestor de contraseñas
    • Si se pierde SERVER_KEY, se cierran todas las sesiones y dejan de funcionar los enlaces de acceso. Los datos de los entornos se conservan
  3. 3Elige una de cinco plataformas

    Todas las plataformas ejecutan el mismo servidor con el mismo esquema de base de datos, y la app web viene integrada en él. Cada script de despliegue comprueba .env con el mismo código que usa el servidor al arrancar, así que un ajuste incorrecto detiene el despliegue con un mensaje claro.

    • Docker en tu propio servidor: Caddy emite los certificados TLS, y Cloudflare Tunnel sirve cuando no quieres abrir puertos
    • Cloudflare Workers: el plan Free basta para una prueba, pero un equipo necesita Workers Paid, porque Free da a cada petición 10 ms de tiempo de CPU
    • Vercel: las vistas previas tienen su propia base de datos y su propia clave del servidor, y en el plan Hobby la limpieza se ejecuta como mucho una vez al día
    • AWS App Runner, solo en cuentas de AWS que ya lo usan: AWS lo ha cerrado a nuevos clientes, y Crunu no tiene script para Amazon ECS Express Mode
    Ejemplo. Kiteline es una empresa ficticia.
  4. 4Despliega con el script de la plataforma

    Un comando por plataforma compila y despliega el servidor. Los secretos llegan a la plataforma por stdin o por un archivo que solo tú puedes leer, nunca por argumentos de comandos ni por la salida. El propio servidor aplica las migraciones de la base de datos al arrancar.

    • El mismo script instala la primera versión y cada actualización
    • En Cloudflare, el código y los secretos se publican como una sola versión, así que un despliegue fallido no cambia nada
  5. 5Crea el primer propietario

    Abre la dirección del servidor e introduce la clave de arranque de .env. Las claves de tu cuenta y de la organización se crean en tu navegador, y la clave de arranque deja de funcionar después de este único uso. Después guarda tu Emergency Kit, crea un código de recuperación y activa un segundo factor.

    • Sin el Emergency Kit y tu contraseña, un dispositivo nuevo no puede iniciar sesión
    • Todos los demás entran por invitación

Cada día

Operar

Una vez en marcha, tres hábitos mantienen sano el servidor: una comprobación después de cada despliegue, la monitorización y una copia de seguridad diaria.

  1. 6Comprueba el despliegue con doctor

    doctor comprueba desde fuera un servidor en marcha: el estado, TLS y la caducidad del certificado, las cabeceras de seguridad, la compresión de las respuestas de la API, el reloj del servidor, la versión publicada del agente, las migraciones, la limpieza y la dirección del cliente detrás de proxies.

    • Un resultado global y un código de salida, así que encaja en cron y en la CI
    • --json da una salida legible por máquinas
  2. 7Vigila el estado, las métricas y las alertas

    GET /v2/health funciona con servicios de comprobación de disponibilidad como UptimeRobot o Better Stack. GET /v2/status con un token de operador devuelve métricas en JSON o en formato Prometheus, sin valores ni direcciones de correo. Las alertas llegan a tu equipo por un webhook firmado o por correo.

    • Slack, Microsoft Teams y PagerDuty se conectan mediante sus webhooks entrantes
    • En Cloud Run y App Runner, la limpieza solo se ejecuta cuando hay tráfico, así que las alertas basadas en el estado pueden llegar con retraso
  3. 8Haz copias de seguridad en el almacenamiento que prefieras

    crunu-server export escribe toda la base de datos en un solo archivo de exportación. No contiene valores sin cifrar, así que puedes guardarlo con cualquier proveedor. Guarda el archivo .env aparte, en tu gestor de contraseñas.

    • Exporta cada día y conserva 30 días. El servidor no tiene programador de tareas integrado, y la guía de copias de seguridad trae una línea de cron lista para Docker
    • Verifica una copia cada mes o, mejor aún, restáurala en una base de datos de pruebas
    • Una restauración deshace todo lo posterior a la copia, y los dispositivos que vieron datos más recientes rechazan el estado anterior hasta que los restableces

Cuando haga falta

Cambiar

Para cambiar de plataforma, rotar la clave del servidor y actualizar se usan los scripts de despliegue y el crunu-server que ya tienes.

  1. 9Pásate a otra plataforma con un solo archivo

    Exporta la base de datos, verifica el archivo de exportación, impórtalo en una base de datos vacía en la nueva plataforma y despliega allí con el mismo .env; después cambia el DNS. Cualquiera de las seis configuraciones puede pasarse a cualquier otra, en ambos sentidos.

    • Conserva la misma SERVER_KEY y la misma dirección. Solo cambia el registro DNS
    • Las máquinas siguen funcionando con las variables que ya tienen durante su concesión, hasta 24 horas
    • Mantén la plataforma anterior una semana. Volver atrás es un cambio de DNS
    Ejemplo. Kiteline es una empresa ficticia.
  2. 10Rota la clave del servidor sin cerrar la sesión de nadie

    Durante una rotación, la clave anterior sigue funcionando, los hashes de los tokens se recalculan con la clave nueva a medida que se usan, y rotate-key vuelve a cifrar los secretos TOTP y los canales de alertas. Nadie pierde la sesión y los enlaces de acceso siguen abriéndose. Los datos de los entornos nunca se cifran con esta clave.

    • Cuatro pasos: new-server-key, deploy, rotate-key, drop-previous-key
    • Rota la clave si alguien pudo ver el .env, después de un cambio de plataforma o una vez al año
  3. 11Actualiza sin un paso de migración aparte

    Una actualización usa el mismo script de despliegue que la primera instalación, y el servidor aplica las migraciones al arrancar. Las migraciones solo añaden, y las ya publicadas están protegidas con sumas de verificación, así que puedes volver a una versión anterior del código sin revertir la base de datos.

    • Las versiones publicadas de la app web van firmadas, y el servidor sirve la firma para que un sitio desplegado pueda comprobarse con ella
    • No es posible volver a una versión anterior a la 6.0

Preguntas sobre el autoalojamiento

Lo que preguntan los operadores antes de ejecutar su propio servidor.

¿Otra pregunta? Escribe a support@crunu.com.

¿app.crunu.com es el mismo software que puedo alojar yo?

Sí. app.crunu.com ejecuta el mismo servidor de Crunu, desplegado en Cloudflare Workers con una base de datos D1.

¿Pueden leer mis secretos quienes operan app.crunu.com?

No. El servidor guarda datos cifrados y no tiene ninguna clave para descifrarlos. Como operador, Crunu sí ve metadatos: nombres de organizaciones, proyectos, entornos y máquinas, direcciones de correo, el registro de auditoría, y el tamaño y la hora de cada versión. Hay un riesgo que afecta a toda bóveda web: un servidor comprometido podría servir una app web modificada que vea tu contraseña y tu Secret Key cuando inicias sesión. Las versiones firmadas y una política de seguridad de contenido estricta reducen ese riesgo, y la página de limitaciones explica el resto.

¿Puedo pasar más adelante de app.crunu.com a mi propio servidor?

No en un solo paso. El archivo que traslada un servidor entre plataformas se crea a partir de toda la base de datos del servidor, y en app.crunu.com solo el operador tiene acceso a ella. En cualquier momento puedes exportar como archivo .env cada entorno que puedas leer o descargar una copia sin conexión, y luego añadir esos archivos a tu propio servidor. De esta forma no se trasladan el historial, los ajustes de acceso ni el registro de auditoría.

¿Hay soporte para AWS?

En parte. El script de Crunu despliega en AWS App Runner, pero AWS ha cerrado App Runner a nuevos clientes, así que solo funciona en cuentas que ya lo usan. Crunu no tiene script para Amazon ECS Express Mode, el servicio que AWS recomienda en su lugar. Con una cuenta de AWS nueva, elige Cloud Run, Vercel o tu propio servidor.

¿Qué pasa con las máquinas y la CI durante un cambio de plataforma?

Las máquinas siguen funcionando con las variables que ya tienen mientras dura su concesión, hasta 24 horas. Pide al equipo que no cambie entornos ni invite a nadie durante 15 a 30 minutos mientras haces el cambio: lo que se escriba en el servidor anterior después de la exportación no llegará al nuevo.

¿Puedo ejecutar varias instancias del servidor para alta disponibilidad?

Con Postgres, varias instancias pueden compartir una base de datos: un bloqueo de la base de datos serializa las escrituras en el registro de auditoría. No hay guía para un clúster con conmutación por error, así que planifícalo como una configuración propia.

¿Las herramientas de operador tienen interfaz en inglés?

Sí. server-init, doctor y crunu-server muestran sus mensajes en inglés, o en ruso cuando CRUNU_LANG o la configuración regional del sistema están en ruso.

¿Cómo consigo el servidor para alojarlo yo?

El servidor no se publica como descarga pública. Escribe a support@crunu.com e indica qué plataforma piensas usar.

Prueba Crunu primero en el servicio alojado

Gratis durante el acceso anticipado. Tu contraseña y tu Secret Key se crean en tu navegador y nunca llegan al servidor.