NocoDB auto-hospedado: alternativa a Airtable como base de datos sin código
Qué cubre este artículo
- Qué es NocoDB: alternativa open source a Airtable, base de datos con interfaz de hoja de cálculo.
- Configuración con Docker y creación de la primera base.
- API REST para automatización e integración con IA.
- Flujos de n8n con NocoDB y Ollama.
- Cuándo NocoDB es mejor que Postgres directo y cuándo no.
Introducción
NocoDB es la alternativa open source más popular a Airtable: una base de datos con interfaz tipo hoja de cálculo. Creas tablas como en Excel, pero detrás hay una verdadera base de datos (Postgres, MySQL o SQLite) con API REST, vistas, filtros, formularios y webhooks.
Para flujos con IA resulta práctica: mantienes datos estructurados (leads, tickets, índice de documentos) en una interfaz visual, los conectas vía API con n8n u Ollama, todo sin escribir SQL.
Casos de uso típicos
- Sistema de tickets simple: ingresa solicitudes de soporte como registros en una tabla; la IA categoriza y n8n escala.
- Calendario de contenidos: artículos, estado, canales: la IA genera borradores directamente en la tabla.
- Gestión de leads: rastrear contactos, la IA redacta sugerencias de seguimiento.
- Índice de documentos: metadatos de PDFs, la IA etiqueta automáticamente.
- Mini-CRM: antes de Twenty o un CRM dedicado, suficiente para equipos pequeños.
Instalación: Docker
services:
nocodb:
image: nocodb/nocodb:latest
ports:
- "127.0.0.1:8081:8080"
environment:
- NC_DB=pg://db:5432?u=postgres&p=geheim&d=nocodb
- NC_AUTH_JWT_SECRET=langer-zufaelliger-string
depends_on: [db]
restart: always
db:
image: postgres:16
environment:
POSTGRES_DB: nocodb
POSTGRES_PASSWORD: geheim
volumes: [pg_data:/var/lib/postgresql/data]
restart: always
volumes:
pg_data:
O mínimo con SQLite integrado:
services:
nocodb:
image: nocodb/nocodb:latest
ports: ["127.0.0.1:8081:8080"]
volumes: [nc_data:/usr/app/data]
restart: always
volumes:
nc_data:
El primer usuario en http://localhost:8081 será administrador.
Conceptos básicos
- Base = proyecto o base de datos
- Tabla = tabla con tipos de columna (texto, número, fecha, selección simple/múltiple, enlaces, archivos adjuntos)
- Vistas: cuadrícula, kanban, galería, formulario; puedes tener varias por tabla
- Token API: Configuración → Tokens API, necesario para automatización
- Webhooks: dispara llamadas HTTP en cambios → n8n
API REST: usar datos programáticamente
# Crear token en la UI, luego:
curl -H "xc-token: DEIN_TOKEN" \
"http://localhost:8081/api/v2/tables/TABLE_ID/records"
# Crear nuevo registro
curl -X POST -H "xc-token: DEIN_TOKEN" -H "Content-Type: application/json" \
-d '{"Name": "Max", "Status": "Neu"}' \
"http://localhost:8081/api/v2/tables/TABLE_ID/records"
La API es completa: CRUD, filtros (where=(Status,eq,Neu)), ordenamiento, paginación; todo lo que n8n o tus propios scripts necesitan.
Integración con n8n
n8n tiene un nodo nativo para NocoDB, pero también funciona con HTTP Request:
Webhook (formulario en sitio web)
│
▼
Nodo Ollama: clasificar texto (categoría, prioridad)
│
▼
Nodo NocoDB: crear registro con categoría de IA
│
▼
Si prioridad=alta → alerta Telegram
Este es el flujo clásico de “IA como enriquecimiento de datos”: entrada sin estructura → IA la estructura → resultado limpio llega a NocoDB.
Ejemplo práctico: triage de tickets con IA
import requests
import ollama
NC = "http://nocodb:8081"
TOKEN = "dein-token"
HEADERS = {"xc-token": TOKEN}
TABLE = "tickets_table_id"
client = ollama.Client(host="http://ollama:11434")
def triage(text):
resp = client.chat(model="llama3.1:8b", messages=[{
"role": "user",
"content": f"Klassifiziere: Kategorie (Bug/Feature/Frage) + "
f"Priorität (niedrig/mittel/hoch). Antworte JSON.\n\n{text}"
}], format="json")
return resp["message"]["content"]
# Obtener nuevos tickets de NocoDB (Status=Neu)
tickets = requests.get(f"{NC}/api/v2/tables/{TABLE}/records",
headers=HEADERS, params={"where": "(Status,eq,Neu)"}).json()["list"]
for t in tickets:
result = triage(t["Beschreibung"])
import json as j
data = j.loads(result)
requests.patch(f"{NC}/api/v2/tables/{TABLE}/records",
headers=HEADERS,
json={"Id": t["Id"], "Kategorie": data["kategorie"],
"Prioritaet": data["prioritaet"], "Status": "Triaigiert"})
Seguridad
- Configura JWT-Secret (
NC_AUTH_JWT_SECRET), de lo contrario se genera de forma insegura. - Tokens API: un token por integración, nunca compartas el token admin.
- Login: por defecto usuario y contraseña; para equipos es posible SSO/LDAP (versión Enterprise).
- HTTPS: en acceso externo usa proxy inverso con TLS.
NocoDB vs. alternativas
| Herramienta | Fortaleza | Debilidad |
|---|---|---|
| NocoDB | Open source, API REST, compatible con Airtable | sin fórmulas reales |
| Airtable | Maduro, con fórmulas | cloud, caro, datos en EE.UU. |
| Baserow | similar, también open source | ecosistema más pequeño |
| Postgres directo | potente | sin interfaz para no técnicos |
| Supabase | Postgres + Auth + Realtime | más complejo, herramienta de desarrollo |
Enlaces relacionados
- IRC-Coding.de: tutoriales de programación avanzada: APIs REST, modelado de datos.
- n8n: automatización de flujos.
- Integración Nextcloud: archivos adicionales.
- Supabase: cuando necesitas un backend real.
- Docker: conceptos básicos de contenedores.
- Ollama: IA local.
Puntos clave:
- NocoDB = Airtable open source: interfaz de tablas + base de datos real + API REST.
- Ideal como capa de datos estructurada para flujos de IA (la IA completa, humanos verifican).
- Setup con Docker en minutos, Postgres o SQLite detrás.
- n8n tiene nodo nativo; API REST para tus propios scripts.
- Para lógica compleja es más potente Supabase/Postgres: NocoDB es el puente sin código.
FAQ
¿NocoDB o Airtable?
¿Qué base de datos hay detrás?
¿Tiene API NocoDB?
¿Cómo conecto NocoDB con IA?
¿Dónde están los límites?
¿Múltiples usuarios?
Fuentes y lecturas adicionales
- NocoDB: GitHub.
- NocoDB Docs: documentación.
- IRC-Coding.de: tutoriales de programación.


