Autenticación
La autenticación en Notarium está integrada y funciona por completo sobre la base de datos de metadatos: sin IdP externo, sin JWT, sin SMTP. El modo se elige con la variable AUTH_MODE y determina si existe siquiera un inicio de sesión.
El modo password (por defecto)
Seguro por defecto: autenticación multiusuario completa.
- Primer arranque. En una instancia limpia, el primer visitante crea al propietario desde la pantalla de configuración inicial (administrador del host —host-admin— y propietario de los espacios configurados). No hay contraseña preestablecida; una vez registrada esa cuenta, la configuración inicial se cierra para siempre.
- Sesiones. Un inicio de sesión crea una sesión del lado del servidor: una fila en la base de datos, no un JWT. Vive en la cookie HttpOnly
nt_session, con un TTL deslizante de 30 días y el flagSecuredetrás de HTTPS. La revocación es instantánea: deshabilitar un usuario o cambiar una contraseña invalida de inmediato las sesiones activas. - Hace falta una base de datos de metadatos. Está ahí por defecto: SQLite bajo
DATA_DIR, sin nada que configurar. Solo tocasMETA_DB_URLpara migrar a un Postgres externo. Consulta Base de datos.
El modo none
Un único principal con acceso total: el operador activa este modo de forma deliberada, para el escritorio, el desarrollo local o una intranet de confianza. Las rutas de autenticación devuelven 404, no existe interfaz de inicio de sesión y la autenticación no necesita ninguna base de datos de metadatos.
noneEn el modo none, cualquiera que pueda alcanzar el puerto obtiene acceso total a todos los datos, incluido el endpoint MCP de los agentes. Úsalo solo en una red aislada o de confianza.
Roles y acceso
El acceso a los datos se concede por membresía en un espacio, y hay tres roles:
| Rol | Permisos |
|---|---|
reader | Lee todo en el espacio. |
writer | Edita notas. |
owner | Gestiona la membresía. |
El flag host-admin otorga control sobre usuarios y espacios, pero para leer los datos de un espacio concreto sigues necesitando membresía en él. Más sobre el modelo: Modelo de acceso.
Invitaciones y restablecimientos de contraseña
Notarium no tiene SMTP: la entrega inicial de una cuenta es un enlace de un solo uso que el administrador pasa a mano. Un mecanismo, dos propósitos:
- Invitación: agrega un usuario sin contraseña; el enlace vive 7 días.
- Restablecimiento de contraseña: el enlace vive 24 horas; aceptarlo termina las sesiones antiguas.
El token viaja en el fragmento de la URL (/invite#<token>), así que nunca llega a los registros de acceso. Un usuario tiene un solo enlace de este tipo activo a la vez, y el administrador nunca conoce la contraseña de nadie.
Tokens para agentes
Los agentes de IA se autentican con un token de acceso personal (PAT) de la forma Authorization: Bearer ntp_…, con alcance read o write, opcionalmente acotado a espacios concretos. El secreto se muestra exactamente una vez. La emisión de tokens y las demás acciones de gestión solo están disponibles dentro de una sesión: un PAT filtrado no puede escalar privilegios. Detalles: Conectar un agente y Seguridad y visibilidad.
Recuperar el acceso
Como solo el administrador emite un enlace de restablecimiento, perder la contraseña del único administrador significaría perder el acceso. La vía de escape es la CLI de administración, que trabaja directamente contra la base de datos de metadatos. Es uno de los comandos integrados de la imagen, así que la llamada es corta y va directa al contenedor en marcha:
docker compose exec notarium admin create-admin <user> --random
# para un docker run a secas:
docker exec -it notarium admin create-admin <user> --random
No hace falta detener el servidor: SQLite en modo WAL tolera un segundo escritor, y Postgres, con mayor razón. La CLI localiza por su cuenta la base de datos de metadatos, con la misma lógica que sigue el servidor (META_DB_URL, o la raíz derivada de DATA_DIR); ante una ruta equivocada termina con un error en vez de crear en silencio una base de datos vacía en la que «no hay usuarios».
Comandos disponibles:
| Comando | Acción |
|---|---|
list | Lista los usuarios. |
passwd <user> [--password <pw> | --random] | Cambia una contraseña. |
create-admin <user> [--random] [--display "Name"] | Crea un administrador. |
grant <user> <space> <owner|writer|reader> | Concede un rol en un espacio. |
Sin ningún flag, la contraseña se lee de stdin con el eco suprimido, de modo que nunca llega al historial de comandos. setPassword/createAdmin solo están disponibles desde la CLI: no hay ruta HTTP para ellos; este es el límite del operador del host. Los demás comandos de la imagen se cubren en la página CLI de la imagen.