Fundaia

Entrar Empezar

Bases de datos y componentes

Un componente es un servicio del catálogo que se crea listo para usarse: la contraseña generada, las variables que su imagen necesita, las que leerán sus vecinos y un volumen para sus datos, todo de una vez. Esta guía es la referencia del catálogo y explica cómo mirar y cambiar los datos de cualquier base de datos: PostgreSQL, MySQL, SQLite, MongoDB o ClickHouse.

fundaia templates                                   # lo que esta cuenta puede añadir
fundaia new tienda Postgres --template postgres-16
fundaia new tienda Notas --template sqlite-3        # o mysql-8, mongodb-7…
fundaia connect tienda api Postgres

Qué trae cada uno

Conectar un servicio a un componente escribe exactamente las claves de la columna Exporta, como referencias.

ComponenteClaveExportaVolumen enMemoria
PostgreSQL 16postgres-16DATABASE_URL, PGHOST/var/lib/postgresql/data512 MB
MySQL 8.4mysql-8DATABASE_URL, MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE/var/lib/mysql1024 MB
SQLite (libSQL)sqlite-3LIBSQL_URL, LIBSQL_AUTH_TOKEN/var/lib/sqld256 MB
MongoDB 7mongodb-7MONGODB_URI, MONGO_URL/data/db1024 MB
ClickHouse 24clickhouse-24CLICKHOUSE_URL, CLICKHOUSE_HOST, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD/var/lib/clickhouse2048 MB
Redis 7redis-7REDIS_URL/data256 MB
Valkey 8valkey-8REDIS_URL, VALKEY_URL/data256 MB
Almacenamiento S3 (MinIO)bucketS3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION, S3_FORCE_PATH_STYLE/data512 MB
Meilisearchmeilisearch-1MEILI_URL, MEILI_MASTER_KEY/meili_data1024 MB
Typesensetypesense-27TYPESENSE_URL, TYPESENSE_API_KEY/data512 MB
Qdrantqdrant-1QDRANT_URL, QDRANT_API_KEY/qdrant/storage512 MB
Kafkakafka-4KAFKA_BOOTSTRAP_SERVERS, KAFKA_BROKERS, SPRING_KAFKA_BOOTSTRAP_SERVERS/var/lib/kafka/data1536 MB
RabbitMQ 4rabbitmq-4AMQP_URL, RABBITMQ_URL/var/lib/rabbitmq512 MB
NATSnats-2NATS_URL/data128 MB
Balanceador de carga (Traefik)traefik-3LOAD_BALANCER_URL—256 MB
API gateway (KrakenD)krakend-2API_GATEWAY_URL—256 MB
n8nn8n-1N8N_URL/home/node/.n8n512 MB
Uptime Kumauptime-kuma-1UPTIME_KUMA_URL/app/data256 MB
Grafanagrafana-11GRAFANA_URL/var/lib/grafana256 MB
Claude Codeclaude-codeCLAUDE_CODE_URL, CLAUDE_CODE_TOKEN, CLAUDE_CODE_MODEL/work1024 MB

El balanceador y el gateway tienen su propia guía, Balanceador y API gateway, y el agente la suya, Claude Code.

Todos se crean sin dormir, y los que tienen volumen se copian a diario; ver Volúmenes y copias. La memoria de la tabla es la de partida y se cambia en Ajustes → Recursos.

El host de cualquiera de ellos es su nombre en la red del proyecto: un mongodb://…@datos:27017/datos resuelve porque datos es el nombre del servicio.

n8n, Uptime Kuma y Grafana son aplicaciones que se usan desde el navegador: nacen privadas como todo lo demás, así que para abrirlas publícalas (fundaia expose tienda grafana, o Dominios). Lo que exportan es su dirección interna, para que otro servicio llame a su API o a sus webhooks.

Consultar y cambiar datos

Un componente PostgreSQL, MySQL, SQLite, MongoDB o ClickHouse tiene una pestaña Datos con sus tablas (o colecciones), una caja de consulta y una de cambios. Lo mismo está en la terminal y en el MCP (list_tables, query_database, execute_sql):

fundaia data tables tienda Datos
fundaia data query  tienda Datos "SELECT id, role FROM users WHERE email = 'ana@ejemplo.com'"
fundaia data run    tienda Datos "UPDATE users SET role = 'ADMIN' WHERE id = 'ae10…'" --preview
fundaia data run    tienda Datos "UPDATE users SET role = 'ADMIN' WHERE id = 'ae10…'" --confirm Datos
  • Una consulta es de solo lectura, y quien lo garantiza es la propia base de datos, nunca una lista de palabras prohibidas. Devuelve como mucho 200 filas y se corta a los 5 segundos.
  • Un cambio es una sola sentencia, confirmada repitiendo el nombre del servicio, y queda en la actividad del proyecto con el texto que se ejecutó.
  • Pruébalo antes. Probar en la pestaña, --preview en la terminal o preview: true en execute_sql ejecutan la sentencia y la deshacen, y el recuento es exactamente el que tocaría de verdad. Si el motor no puede deshacerla, el ensayo no ejecuta nada y lo dice (rehearsal: "unavailable"). No hay deshacer después.
MotorLenguajePor qué una consulta no puede escribirQué se puede ensayar
PostgreSQLSQLTransacción READ ONLYTodo, cambios de esquema incluidos
MySQLSQLSesión en modo READ ONLYFilas sí; un cambio de esquema (ALTER, CREATE) no, porque MySQL lo confirma por su cuenta
SQLiteSQLUn token que libSQL solo deja leerTodo, cambios de esquema incluidos
MongoDBComando JSONSolo se ejecutan find, aggregate sin $out ni $merge, count y distinctNada: un servidor sin réplicas no tiene transacciones
ClickHouseSQLModo readonly del propio servidor, que tampoco deja desactivarloNada: MergeTree no tiene transacciones

En MongoDB la sentencia es un comando en JSON, tal como lo recibe db.runCommand, con los identificadores y las fechas en Extended JSON:

fundaia data query tienda Mongo '{"find": "users", "filter": {"age": {"$gt": 30}}, "sort": {"_id": -1}}'
fundaia data query tienda Mongo '{"aggregate": "orders", "pipeline": [{"$group": {"_id": "$status", "n": {"$sum": 1}}}]}'
fundaia data run   tienda Mongo '{"update": "users", "updates": [{"q": {"_id": {"$oid": "6ad0…"}}, "u": {"$set": {"role": "admin"}}}]}' --confirm Mongo

Como en MongoDB no hay ensayo, compruébalo antes con un find o un count con el mismo filtro: es exactamente lo que el update o el delete tocarán. Si un insert falla a medias (una clave duplicada), el error dice cuántos documentos sí se escribieron.

En ClickHouse, un ALTER TABLE … UPDATE o DELETE espera a que su mutación termine antes de contestar, así que cuando la pestaña dice que se ejecutó, ya está aplicado. Solo un INSERT dice cuántas filas escribió: una mutación no lo cuenta.

Una base de datos dormida no se despierta por abrir la pestaña; arráncala desde Despliegues.

Detalles de cada componente