---
title: "Instalación"
description: "Una sola imagen de Docker sirve la API, el MCP y la interfaz web en el puerto 3000; un único volumen /data guarda todo el estado."
---

# Instalación

Notarium se distribuye como **una única imagen autónoma**: un solo proceso de Node sirve la API REST, el endpoint MCP para agentes y la interfaz web compilada en un único puerto (`3000` por defecto). No requiere servicios externos (ni base de datos, ni broker de mensajes, ni un motor de búsqueda aparte): el motor de conocimiento corre dentro de ese mismo proceso. Todo el estado vive en un único volumen `/data`: la base de datos de metadatos, los índices derivados, tus archivos Markdown (la fuente de la verdad) y los artefactos de exportación.

> [!note] Qué vas a necesitar
> Solo **Docker** (o Docker Desktop) y un puerto libre. No hace falta instalar Node, una base de datos ni un índice vectorial por separado: todo está dentro de la imagen.

## Ejecutar la imagen

La vía más rápida es levantar un contenedor a partir de la imagen preconstruida:

```bash
docker run -d --name notarium \
  -p 3000:3000 \
  -v notarium-data:/data \
  docouno/notarium:latest
```

Un único volumen `/data` guarda todo el estado: la base de datos de metadatos, los índices, tus notas y los artefactos de exportación. No hay nada más que configurar: el puerto `3000` y la ruta de datos `/data` ya vienen fijados en la imagen. El volumen sobrevive a la recreación del contenedor; el puerto a la izquierda de `:3000` puede cambiarse por cualquiera que esté libre.

No hace falta añadir ningún comando al `docker run`: el entrypoint de la imagen es la CLI integrada `notarium`, que por defecto ejecuta `start`. Esa misma CLI trae los comandos del operador: `backup`, `restore`, `admin`, `healthcheck`, `version`. Consulta [CLI de la imagen](/docs/self-hosting/cli/).

## Con Docker Compose

Para una instancia que piensas conservar, un archivo compose es más fácil de editar y de llevar bajo control de versiones, y `restart` vuelve a levantar el contenedor tras reiniciar el host.

```yaml
services:
  notarium:
    image: docouno/notarium:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - notarium-data:/data

volumes:
  notarium-data:
```

Guárdalo como `compose.yaml` y levántalo con `docker compose up -d`. El volumen con nombre `notarium-data` vive con independencia del contenedor: `docker compose down` lo deja intacto y solo un `docker volume rm` explícito lo borra.

> [!note] Los ajustes también van aquí
> Las variables de entorno se definen en el bloque `environment:` del servicio. Si prefieres tenerlas en un archivo aparte, añade ahí mismo la línea `env_file: .env`: un `.env` que simplemente esté junto al archivo compose **no** llega al contenedor por sí solo, porque Docker Compose únicamente lo sustituye en el texto del propio archivo compose. La lista completa, en [Variables de entorno](/docs/reference/environment-variables/).

## Primer arranque

Abre `http://localhost:3000` y te recibirá la **pantalla de configuración inicial**. Por defecto, la instancia funciona en modo `password`, y el primer visitante crea al **propietario**: la única cuenta con derechos de administrador y propiedad sobre los espacios que crea. No hay contraseña predefinida; una vez que el propietario se registra, la configuración inicial se cierra para siempre. Para más detalles sobre los modos, consulta [Autenticación](/docs/self-hosting/authentication/).

## Volúmenes de datos

| Volumen | Qué contiene | Naturaleza |
|---|---|---|
| `/data` | Tus archivos Markdown (`/data/spaces`, una carpeta por espacio), la base de datos de metadatos (`/data/meta.db` — identificadores, historial de versiones, usuarios, accesos), los índices derivados del motor (`/data/engine`) y los artefactos de exportación. | Los archivos son la fuente de la verdad (el principio file-first); la base de datos de metadatos no puede derivarse de los archivos; los índices son derivados y se restauran con una reconstrucción. |

Protege el volumen en sí: si lo pierdes, tus datos se van con él. Si se pierden los índices en `/data/engine`, se reconstruyen a partir de los archivos, pero la base de datos de metadatos (`/data/meta.db` — historial, usuarios, accesos) y las notas mismas (`/data/spaces`) no se pueden restaurar desde ningún lado: su copia de seguridad es obligatoria. Cómo hacer una copia de seguridad verificada sin detener el servicio: [Copia de seguridad y restauración](/docs/self-hosting/backup/).

## Compilar desde el código fuente

Si trabajas con el repositorio de Notarium, el único punto de entrada para Docker es `make`:

```bash
cp .env.example .env   # los valores por defecto funcionan — no hay nada que rellenar
make up                # imagen de prod en local → http://localhost:3000
make dev               # stack de desarrollo con recarga en caliente (HMR)
```

Comandos útiles: `make logs` (logs), `make ps` (estado), `make down` (detener y eliminar), `make sh` (shell dentro del contenedor).

## Instalación sin registry (air-gapped)

Para desplegar en un entorno aislado, la imagen puede trasladarse como archivo, sin acceso a un registry (registro de imágenes):

```bash
make image                              # compilar la imagen
make save                               # exportar a notarium-<version>.tar.gz
# traslada el archivo al host de destino y luego:
docker load < notarium-<version>.tar.gz # cargar la imagen
```

Después ejecútala con tu propio `compose`/`.env`: la coordenada del registry no queda incrustada en la imagen.

El siguiente paso es adaptar la instancia a tus necesidades: consulta [Configuración](/docs/self-hosting/configuration/).
