Grafana con PostgreSQL
Grafana con base de datos real — para producción multi-usuario.
Grafana emparejado con un backend PostgreSQL dedicado en un stack Pier. El despliegue PostgreSQL-backed es lo que Grafana recomienda para producción — multi-usuario, HA-friendly, y evita los issues de write-lock SQLite que afectan a Grafana bajo carga con múltiples editores concurrentes.
Desplegar con Pier
- 1 Abre el panel de Pier y haz clic en Add service.
- 2 Elige Grafana with PostgreSQL en la lista de plantillas.
- 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
- 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.
¿Qué es Grafana con PostgreSQL?
Esta plantilla envía Grafana — la plataforma de dashboards de observabilidad de facto — cableada a un backend PostgreSQL dedicado para su estado interno (usuarios, dashboards, organizaciones, alertas, anotaciones). Grafana documenta PostgreSQL (o MySQL) como el backend recomendado para cualquier despliegue multi-usuario o de producción; SQLite está bien solo para uso homelab single-admin.
Los dos servicios suben juntos en un solo stack Compose con las env vars ya configuradas para que Grafana encuentre Postgres en la red Docker interna. Sin config manual GF_DATABASE_*. Inicias sesión y usas Grafana exactamente como en la plantilla standalone — el backend de DB es invisible.
Cómo lo despliega Pier
Pier usa la imagen oficial grafana/grafana y postgres:17-alpine para el
backend. Grafana en puerto 3000 internamente detrás de Traefik. PostgreSQL
permanece en la red Docker interna (no expuesto). Cada servicio tiene su
propio volumen de datos — /var/lib/grafana para plugins Grafana y
provisioning, /var/lib/postgresql/data para datos Postgres.
Usuario admin por defecto es admin con password generado por Pier
(mostrado en la página del servicio). Cámbialo en el primer login.
Para HTTPS, adjunta un dominio custom al servicio Grafana en Pier — Traefik maneja terminación TLS y proxia al puerto 3000.
Cuándo NO usar esta plantilla
Si eres un solo usuario con homelab y no esperas edición concurrente, la
plantilla standalone grafana es más simple. Si ya tienes un PostgreSQL
gestionado (Pier o RDS o donde sea), usa la plantilla Grafana standalone y
apúntala al Postgres existente vía env vars. Para Grafana-como-servicio sin
overhead ops, el tier gratis de Grafana Cloud vale la pena considerar.
Esta plantilla es la respuesta correcta para “quiero Grafana de producción
en mi propio VPS y no quiero cablear dos servicios manualmente.”
Características clave
Persistencia production-ready
La DB de usuario de Grafana — dashboards, organizaciones, usuarios, sesiones, anotaciones — vive en PostgreSQL en vez de SQLite. Maneja writes concurrentes limpiamente.
Env pre-cableado
Pier configura GF_DATABASE_TYPE=postgres, host/user/password env vars, y settings de conexión — Grafana arranca directo en Postgres sin provisión manual.
Misma UI Grafana
Dashboards, paneles, alerting, plugins — idéntico al Grafana SQLite. Solo difiere el store backing.
Todos los plugins Grafana
Datasources (Prometheus, InfluxDB, ES, ClickHouse, MySQL, Postgres, Loki, Tempo, Mimir), plugins panel, plugins app — todo compatible.
Backup / restore vía Postgres
pg_dump respalda el estado Grafana entero. Restore es pg_restore en un stack fresco. Mucho más fácil que malabarear Grafana SQLite + archivos provision.
Multi-org / escala equipo
Edición concurrente por muchos usuarios en muchos dashboards funciona sin contention de write-lock.
Casos de uso
Equipo analítica multi-usuario
Un puñado o docenas de analistas editando dashboards concurrentemente. PostgreSQL evita los errores SQLite write-lock que surgen bajo carga de equipo.
Escenarios HA / disaster-recovery
Backups PG + standby replicas te dan recovery point-in-time y opciones warm-standby que SQLite no puede.
Volumen grande de dashboards / anotaciones
Muchos miles de dashboards y streams de anotación de alta escritura (alertas CI, marcadores deploy) — Postgres escala mucho más allá de donde SQLite se degrada.
Hub centralizado de observabilidad
Una sola instancia Grafana sirviendo 100s de usuarios a través de muchos equipos — exactamente el despliegue para el cual Grafana recomienda Postgres.
Ejemplos de código
Configuration → Data sources → PostgreSQL
Host - postgres:5432
Database - grafana
User - grafana
Password - (de Pier env)
TLS - disabled (red Docker interna) Configuration → Data sources → Prometheus
URL - https://prometheus.example.com
Auth - Bearer Token o Basic curl -H "Authorization: Bearer $API_KEY" \
https://grafana.example.com/api/dashboards/uid/abc123 > dashboard.json # /etc/grafana/provisioning/dashboards/default.yaml
apiVersion: 1
providers:
- name: default
folder: ""
type: file
options:
path: /var/lib/grafana/dashboards Comparativa
| vs Grafana con SQLite (default standalone) | SQLite Grafana es más simple y está bien para uso single-admin o homelab pequeño. Postgres-backed Grafana es requerido cuando múltiples usuarios editan concurrentemente, o para cualquier setup HA. |
| vs Grafana Cloud | Grafana Cloud es hosted, incluye tier gratis, autoescala. Self-host en Pier es gratis para el plano de datos y te da control. |
| vs Metabase / Superset | Metabase y Superset apuntan a analistas BI más que dashboards ops. Grafana es default para ops/observabilidad; los otros para analítica embebida. |
Preguntas frecuentes
¿Qué hay de malo con SQLite Grafana?
¿Puedo migrar de SQLite Grafana a Postgres Grafana?
¿Este PostgreSQL también sirve como datasource que puedo consultar?
¿Qué tan grande puede escalar?
¿Compatibilidad de plugins?
¿Estrategia de backup?
¿Puedo compartir el Postgres con otros servicios?
Servicios relacionados
Desplegar en tu VPS
Grafana emparejado con un backend PostgreSQL dedicado en un stack Pier. El despliegue PostgreSQL-backed es lo que Grafana recomienda para producción — multi-usuario, HA-friendly, y evita los issues de write-lock SQLite que afectan a Grafana bajo carga con múltiples editores concurrentes.
Desplegar este servicio →