// Engineering Log
n8n y servicios de backend: Parte 2 — Supabase
Publicado el 22.09.2026
// Ruta rapida
Este articulo pertenece al tema Python y automatizacion.
Supabase — una plataforma backend basada en PostgreSQL. Agrupa la base de datos, una API REST generada automáticamente, registro e inicio de sesión de usuarios, almacenamiento de archivos, funciones del lado del servidor y suscripción a cambios. El código se distribuye bajo la licencia Apache 2.0, por lo que Supabase se puede usar como servicio en la nube o instalar en un servidor propio.
De qué consta Supabase
- Base de datos — un PostgreSQL completo: tablas, índices, funciones, transacciones, extensiones.
- REST API — se genera automáticamente según la estructura de las tablas (PostgREST): para cada tabla están disponibles lectura, inserción, actualización y eliminación.
- Auth — registro e inicio de sesión por correo y contraseña, enlaces de un solo uso, a través de proveedores externos.
- Row Level Security — políticas de acceso a nivel de fila: el usuario ve solo los registros que permite la política.
- Storage — almacenamiento de archivos con permisos de acceso.
- Edge Functions — funciones del servidor en TypeScript.
- Realtime — envío de cambios de datos a clientes suscritos.
La principal diferencia frente a servicios documentales es que se trata de un PostgreSQL normal. Los datos se pueden exportar con las herramientas estándar (pg_dump), y a la base se puede conectar cualquier aplicación que sepa trabajar con PostgreSQL, incluido n8n.
Nube o servidor propio
La versión en la nube es cómoda, pero sus servidores están en el extranjero y no es posible pagar el servicio con la tarjeta de un banco ruso. Para los datos personales de ciudadanos de Rusia a partir del 1 de julio de 2025 no es adecuada: la recolección primaria de esos datos debe realizarse en bases ubicadas en territorio de Rusia.
La instalación en un servidor propio está descrita en la documentación oficial: se clona el repositorio, se copia el archivo .env.example a .env, se configuran los secretos y luego se inician todos los servicios con el comando docker compose up -d. Antes del primer arranque sustituya obligatoriamente los valores POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY y DASHBOARD_PASSWORD: la documentación advierte explícitamente que no se debe ejecutar el servicio con los valores por defecto.
Requisitos mínimos para una instalación de trabajo pequeña: 4 GB de RAM, 2 núcleos y 40 GB en SSD; se recomiendan 8 GB, 4 núcleos y 80 GB. A diferencia de la nube, la instalación propia no incluye registros y analítica (se conectan con un archivo compose separado), copias de seguridad automáticas ni HTTPS: el certificado se configura en el proxy inverso y la copia de la base la debe gestionar usted.
Qué puede hacer el nodo Supabase en n8n
El nodo integrado Supabase trabaja solo con filas de tablas. Hay cinco operaciones:
- crear una fila;
- eliminar una fila;
- obtener una fila;
- obtener todas las filas que coinciden con un filtro;
- modificar una fila.
Por defecto el nodo ve el esquema public; se puede indicar otro esquema en el parámetro Use Custom Schema.
Las credenciales del nodo son la dirección del proyecto (Host) y la clave secreta. Supabase está migrando a un nuevo formato de claves: las claves antiguas service_role funcionan por ahora, pero se desactivarán, así que para nuevas conexiones utilice la clave secreta del nuevo formato. La clave secreta evita las políticas Row Level Security, por lo que debe almacenarse solo en n8n y en el servidor.
Qué no hace el nodo
No hay SQL arbitrario, ni operaciones con usuarios Auth ni con archivos Storage en el nodo. Para eso hay dos vías:
- Nodo Postgres con conexión directa a la base de Supabase. Ejecuta cualquier SQL: joins de tablas, agregados, actualizaciones masivas. En una instalación propia es una conexión normal a PostgreSQL por la red privada.
- Nodo HTTP Request a la API de Supabase con las mismas credenciales. Así se llaman Auth, Storage y Edge Functions.
Cómo Supabase notifica a n8n sobre cambios
Para esto sirven los Database Webhooks. Es un envoltorio sobre triggers de PostgreSQL y la extensión pg_net: tras insertar, modificar o eliminar una fila la base envía asíncronamente una solicitud HTTP y no bloquea la transacción principal. Los webhooks se configuran en el panel de control o mediante una consulta SQL.
En el cuerpo de la petición llega un JSON con los campos type (INSERT, UPDATE o DELETE), table, schema, record — la fila después del cambio — y old_record — la fila antes del cambio. En n8n esa petición la recibe un nodo Webhook, y un nodo Switch reparte el procesamiento según el valor type.
Si Supabase y n8n se ejecutan en Docker en la misma máquina, la dirección localhost dentro de un contenedor apunta al propio contenedor. La documentación de Supabase para ese caso recomienda host.docker.internal; en un servidor es más conveniente poner ambos servicios en una misma red Docker y dirigirse a n8n por el nombre del contenedor.
Ejemplos de flujos
Formularios del sitio a la base. Webhook recibe el formulario → nodo Supabase guarda la solicitud en la tabla leads → mensaje al responsable en Telegram. Si ya existe una solicitud con el mismo teléfono, es mejor buscarla con una selección por filtro y actualizarla en vez de crear un duplicado.
Correo por cambio de estado del pedido. Database Webhook en la tabla orders → Webhook en n8n → IF: record.status difiere de old_record.status → correo al cliente. Comparar con el valor antiguo evita notificar cambios que no afectan al estado.
Informe diario. Schedule Trigger a las 9:00 → nodo Postgres (Execute Query) con la consulta que cuenta pedidos e ingresos de ayer → mensaje en el chat de trabajo. La agregación la hace la base en una sola consulta y no n8n sobre miles de filas.
Errores típicos
- Clave secreta en código cliente. Al frontend solo se debe enviar la clave pública; la secreta permanece en n8n.
- Tabla sin Row Level Security. Si no está activada una política, la clave pública da acceso a todas las filas de la tabla vía REST API.
- Instalación propia sin copias de seguridad. Las copias de la nube no se trasladan a su servidor; configure
pg_dumpo copias con los logs WAL. - Puerto de PostgreSQL abierto hacia fuera para n8n. Conecte n8n a la base a través de la red privada.
- Selecciones grandes mediante el nodo Supabase. Miles de filas es más seguro procesarlas con una consulta SQL en la base.
// Tarea parecida
Si estas resolviendo algo parecido
Este articulo pertenece a uno de los temas principales de trabajo. Puedes seguir leyendo sobre el tema, ir a la pagina principal para entender a que me dedico o abrir directamente los servicios.
Tema del articulo
Python y automatizacion
Bots, integraciones, servicios internos, automatizacion de procesos y workflows.
Tareas frecuentes de esta tema
- Crear un bot, integracion o herramienta interna
- Eliminar trabajo manual con Python y APIs
- Conectar servicios y automatizar todo el flujo
// Siguiente paso
Si necesitas ayuda con este tema y no solo otro articulo, es mejor ir directo a la pagina del servicio. La pagina principal y la seleccion de materiales quedan como rutas secundarias.
Abrir servicios// Reviews
Reseñas relacionadas
Como siempre, rápido y de calidad. Para asuntos con los servidores, me dirijo a Mijaíl.
¡Como siempre, rápido y de calidad! Para asuntos relacionados con los servidores, me dirijo a Mijaíl.
// Contact
¿Necesitas ayuda?
Escríbeme y te ayudaré a resolver el problema
Respondo en un día laborable (03:00-13:00 GMT)
Или оставьте заявку здесь:
// Related