ObjectOS
Desplegar

Docker

Ejecuta ObjectOS en un contenedor — para evaluación, staging o producción.

Docker

Docker es el camino que la mayoría de los equipos toman hacia producción. Se ajusta a la forma en que el runtime está diseñado para operarse: un contenedor sin estado por instancia, una base de datos externa, un almacén de objetos externo para los archivos y secretos inyectados en tiempo de ejecución.

Descarga la imagen precompilada

Publicamos la imagen del runtime en GitHub Container Registry en cada push a main y en las releases etiquetadas:

docker pull ghcr.io/objectstack-ai/objectos:latest

Tags disponibles:

TagCanal
latestÚltima compilación de main (recomendado para una primera evaluación)
mainIgual que latest, pero explícito
sha-<short>Fijado a un commit específico (recomendado para producción)
vX.Y.Z, X.Y, XReleases etiquetadas

Para producción, fija a sha-<short> o a un tag semver — latest irá cambiando con el tiempo.

Ejecuta con el ejemplo incluido

docker run --rm -p 3000:3000 \
  -e OS_AUTH_SECRET="$(openssl rand -hex 32)" \
  ghcr.io/objectstack-ai/objectos:latest

Luego abre http://localhost:3000. La imagen incluye una app de ejemplo vacía para que puedas verificar que el runtime arranca y que Console/Account se renderizan antes de apuntarla a tu propio artefacto.

OS_AUTH_SECRET es obligatorio para arrancar. Rotarlo invalida las sesiones existentes.

Ejecuta con tu propio artefacto

La definición de tu app es un único archivo: dist/objectstack.json. Se produce mediante:

OrigenCómo
Tu propio proyectopnpm exec objectstack compile después de editar objectstack.config.ts
Una plantillaClónala desde el repo de plantillas, ejecuta pnpm install && pnpm exec objectstack compile
App del marketplaceSe proporciona como parte de la app publicada

Monta el archivo en /artifacts/objectstack.json y apunta el runtime a él:

docker run --rm -p 3000:3000 \
  -e OS_AUTH_SECRET="$(openssl rand -hex 32)" \
  -e OS_ARTIFACT_FILE=/artifacts/objectstack.json \
  -v "$PWD/dist:/artifacts:ro" \
  -v objectos-data:/var/lib/objectos \
  ghcr.io/objectstack-ai/objectos:latest

El volumen objectos-data contiene la base de datos SQLite (cuando no hay una BD externa configurada) y cualquier archivo subido almacenado localmente.

Usa Postgres en lugar de SQLite

docker run --rm -p 3000:3000 \
  -e OS_AUTH_SECRET="$(openssl rand -hex 32)" \
  -e OS_ARTIFACT_FILE=/artifacts/objectstack.json \
  -e OS_DATABASE_DRIVER=postgres \
  -e OS_DATABASE_URL='postgres://user:pass@db.internal:5432/myapp' \
  -v "$PWD/dist:/artifacts:ro" \
  ghcr.io/objectstack-ai/objectos:latest

Consulta Runtime Configuration para ver la matriz completa de drivers y opciones de conexión.

Docker Compose

En el repo hay un docker-compose.yml de referencia dentro de docker/:

git clone https://github.com/objectstack-ai/objectos.git
cd objectos
mkdir -p docker/artifacts
cp /path/to/your/objectstack.json docker/artifacts/
export OS_AUTH_SECRET="$(openssl rand -hex 32)"
docker compose -f docker/docker-compose.yml up

El puerto por defecto es 3000; sobrescríbelo con OBJECTOS_PORT=3200 docker compose ....

Construye tu propia imagen

Si necesitas incrustar un artefacto, plugins personalizados o tu propio bundle SSL/CA:

git clone https://github.com/objectstack-ai/objectos.git
cd objectos
docker build -f docker/Dockerfile -t myorg/objectos:custom .

El Dockerfile incluido es una compilación multi-etapa que produce una imagen de runtime ligera sobre Node 20 Alpine.

Lo que debes mantener separado

RecursoDónde debería residir
Artefacto (objectstack.json)Imagen (inmutable) o volumen montado
Base de datos de negocioPostgres / MySQL / Mongo gestionado externamente
Identidad y sesionesLa misma base de datos
Archivos subidosS3 / R2 / volumen de disco gestionado externamente
Secretos (OS_AUTH_SECRET, URL de BD, claves de API)Tu gestor de secretos, inyectados como variables de entorno
Logsstdout — recopilados por tu driver de logs

Verifica

Tras el arranque:

curl -fsS http://localhost:3000/health
# {"status":"ok",...}

Luego inicia sesión en http://localhost:3000/_account/register y confirma que la API responde:

curl http://localhost:3000/api/v1/data/<your-object>

Siguiente

On this page