Guía de despliegue

Instalar GlitchTip en un VPS: rastreador de errores soberano

Desplegar en un VPS Cloud →

Tutorial

Instalar GlitchTip en un VPS: rastreador de errores soberano

Desarrollo9 min de lectura8 pasos

Sentry self-hosted 26.4.x acumula desde agosto de 2026 cinco regresiones simultáneas: consumers de Snuba en bucle infinito (issue #4301), deadlock del monitor_consumer (issue #4306) y fallo de autenticación HTTP/2 del relay (issue #4321). La comunidad documenta activamente migraciones a GlitchTip. Si ya ha instrumentado sus aplicaciones con el SDK de Sentry, la migración no toca una sola línea de código de aplicación: es un único reemplazo de variable de entorno, y su instancia funciona con 2 GB de RAM.

Contenido· Por qué migrar a GlitchTip ahora1/9
  1. 01Por qué migrar a GlitchTip ahora
  2. 02Lo que obtiene con GlitchTip v6 autoalojado
  3. 03Requisitos previos antes de empezar
  4. 04Desplegar GlitchTip con Docker Compose
  5. 05GlitchTip v6 vs alternativas — lo que realmente importa
  6. 06Configuración posterior a la instalación
  7. 07Endurecimiento de la stack
  8. 08Resolución de los errores más comunes
  9. 09GlitchTip en producción en un VPS

Por qué migrar a GlitchTip ahora

Sentry self-hosted 26.4.x sufre desde agosto de 2026 cinco regresiones simultáneas documentadas por la comunidad. Las issues #4301 y #4306 describen respectivamente consumers de Snuba que se reinician en bucle sin procesar ningún evento, y un deadlock en el monitor_consumer que bloquea el registro de los crons. La issue #4321 señala un fallo de autenticación del relay en las conexiones HTTP/2, lo que interrumpe la ingesta de eventos. Estas regresiones han llevado a varios equipos a documentar públicamente su migración a GlitchTip.

La objeción más frecuente es la compatibilidad: ha instrumentado sus aplicaciones con el SDK de Sentry (sentry-python, @sentry/node, sentry-rails…) y no desea reescribir esa instrumentación. GlitchTip implementa la API de Sentry y acepta los eventos enviados por esos mismos SDK. El intercambio se reduce a reemplazar el valor de su variable de entorno SENTRY_DSN por el DSN que GlitchTip proporciona al crear el proyecto. Cero cambios en el código de la aplicación.

Lo que obtiene con GlitchTip v6 autoalojado

  • Huella reducida — solo cuatro contenedores (Django, Celery, PostgreSQL, Redis), frente a los veinte y pico servicios de Sentry self-hosted.
  • Compatibilidad con el SDK de Sentry — todos los SDK oficiales de Sentry funcionan sin modificación; solo cambia el DSN.
  • Soberanía de los datos — las trazas de errores y los datos de usuario permanecen en su infraestructura, bajo su política de retención.
  • Licencia GPL-3.0 — el código es auditable, sin componentes propietarios ni funciones reservadas para un plan de pago.
  • Monitorización de disponibilidad — GlitchTip incluye monitores de tipo uptime (ping HTTP) sin dependencia externa.
  • Interfaz de gestión del rendimiento — seguimiento de las transacciones, de las trazas N+1 y de las consultas lentas a través de la API compatible con Sentry.
  • Bajo consumo de RAM — 2 GB de RAM bastan para un uso individual o de equipo pequeño, sin ajustes de configuración.

Requisitos previos antes de empezar

GlitchTip v6 se apoya en cuatro contenedores: Django (el servidor web y la interfaz), Celery (las tareas asíncronas de procesamiento de eventos), PostgreSQL (la base de datos principal) y Redis (la cola de tareas). Necesita:

- Un VPS Linux con 2 GB de RAM como mínimo (4 GB resultan cómodos para un equipo de diez desarrolladores y un volumen de algunos cientos de errores al día).
- Docker y Docker Compose instalados — disponibles en todas las distribuciones recientes.
- Un nombre de dominio o subdominio apuntado a la IP de su VPS, para activar HTTPS a través de Let's Encrypt.
- Los puertos 80 y 443 abiertos en su cortafuegos.

En un VPS de ServOrbit, Docker viene preinstalado. El VPS Start (2 vCPU, 4 GB de RAM), nuestro plan más pequeño, cubre este perfil de carga con margen.

Desplegar GlitchTip con Docker Compose

  1. Crear el directorio de trabajo

    Conéctese a su VPS por SSH y cree un directorio dedicado:

    mkdir -p /opt/glitchtip && cd /opt/glitchtip

  2. Crear el archivo de variables de entorno

    Cree un archivo .env con los valores de configuración:

    SECRET_KEY=<cadena-aleatoria-larga> — genérela con openssl rand -hex 32.
    DATABASE_URL=postgresql://glitchtip:contraseña@db:5432/glitchtip
    REDIS_URL=redis://redis:6379/0
    GLITCHTIP_DOMAIN=https://glitchtip.su-dominio.com
    [email protected]
    EMAIL_URL=smtp://usuario:contraseñ[email protected]:587

    GLITCHTIP_DOMAIN debe coincidir exactamente con el dominio que va a asegurar con HTTPS — queda inscrito en los DSN generados.

  3. Crear el archivo docker-compose.yml

    Cree un archivo docker-compose.yml con los servicios: db (postgres:16), redis (redis:7), web y worker (imagen glitchtip/glitchtip:latest), vinculando el puerto web a 127.0.0.1:8000:8080 únicamente. El puerto 8000 queda vinculado a 127.0.0.1 únicamente: el servicio nunca se expone directamente, sino a través de un proxy inverso.

  4. Inicializar la base de datos

    Ejecute las migraciones de Django para crear el esquema:

    docker compose run --rm web ./manage.py migrate

    Ejecute este comando una sola vez en la instalación y de nuevo cada vez que actualice a una nueva versión de GlitchTip.

  5. Crear el primer superusuario

    Cree su cuenta de administrador:

    docker compose run --rm web ./manage.py createsuperuser

    Introduzca la dirección de correo y la contraseña cuando el asistente los solicite.

  6. Iniciar la stack

    Inicie todos los contenedores en segundo plano:

    docker compose up -d

    Compruebe que los cuatro contenedores están en ejecución con docker compose ps. El servicio web responde en http://127.0.0.1:8000.

  7. Configurar el proxy inverso nginx con HTTPS

    Instale nginx y Certbot si aún no están presentes:

    apt install -y nginx certbot python3-certbot-nginx

    Cree un vhost en /etc/nginx/sites-available/glitchtip con un bloque server que escuche en el puerto 80, defina server_name glitchtip.su-dominio.com y reenvíe el tráfico a http://127.0.0.1:8000 mediante proxy_pass. Active la configuración y obtenga el certificado:

    certbot --nginx -d glitchtip.su-dominio.com

    Certbot actualiza automáticamente el vhost para redirigir HTTP a HTTPS y añade el bloque SSL.

  8. Conectar el SDK de Sentry de sus aplicaciones

    En la interfaz de GlitchTip, cree una organización y luego un proyecto. GlitchTip genera un DSN con el formato https://<clave>@glitchtip.su-dominio.com/<id-proyecto>.

    En cada una de sus aplicaciones, reemplace el valor de SENTRY_DSN (o el parámetro dsn pasado a Sentry.init()) por este nuevo DSN. Reinicie sus procesos. Los eventos aparecen en GlitchTip sin ningún otro cambio.

GlitchTip v6 vs alternativas — lo que realmente importa

Desplace la tabla

CriterioGlitchTip v6Sentry self-hosted 26.4.xRollbar (SaaS)Bugsnag (SaaS)
Huella de memoria (prod)~500 MB activo (4 contenedores)~6-8 GB (20+ servicios)Ninguna (SaaS)Ninguna (SaaS)
LicenciaGPL-3.0 — código 100% auditableBSL 1.1 — restricciones comercialesPropietariaPropietaria
Monitorización de disponibilidad integradaSí — ping HTTP, alertas incluidasNo nativa (solo extensión Crons)NoNo
Compatibilidad SDK SentryCompleta — DSN plug-inNativaSDK propietarioSDK propietario

Configuración posterior a la instalación

Tras el primer arranque, ajuste estos puntos en la interfaz de administración:

Variables de entorno complementarias. Active el envío de alertas por correo definiendo EMAIL_URL en su .env. Añada GLITCHTIP_MAX_EVENT_LIFE_DAYS=90 para limitar la retención de los eventos y controlar el crecimiento de la base de datos.

Acceso multiequipo. GlitchTip gestiona organizaciones y miembros con distintos niveles de permiso. Cree sus equipos desde Configuración → Miembros e invite a sus desarrolladores por correo.

Monitores de disponibilidad. En la sección Monitors de su proyecto, cree un monitor de ping para cada servicio expuesto: GlitchTip envía una petición HTTP a intervalos regulares y crea una issue si el servicio no responde en el tiempo configurado.

Alertas webhook hacia Slack o ntfy. Desde Configuración → Alertas, añada un destino de tipo "Webhook". Para Slack, pegue la URL de su Incoming Webhook (https://hooks.slack.com/services/…); para ntfy, use https://ntfy.sh/<su-topic> con el método POST. GlitchTip envía un JSON estructurado en cada nueva issue o superación de umbral.

Integración SDK — Python. Reemplace únicamente el valor del DSN; el resto del código permanece idéntico:

import sentry_sdk y luego sentry_sdk.init(dsn="https://<clave>@glitchtip.su-dominio.com/<id>", traces_sample_rate=1.0)

Integración SDK — React. Misma lógica en el front:

import * as Sentry from "@sentry/react" y luego Sentry.init({ dsn: "https://<clave>@glitchtip.su-dominio.com/<id>", tracesSampleRate: 1.0 })

GlitchTip recibe tanto las excepciones de Python/Node como los errores JavaScript capturados en el navegador, todo agrupado en la misma interfaz.

Retención de datos. La variable GLITCHTIP_MAX_EVENT_LIFE_DAYS (sin límite por defecto) controla la antigüedad máxima de los eventos conservados. En un SSD de 60 GB, una retención de 90 días para algunos cientos de errores al día raramente supera los 5 GB — monitorice con docker system df.

Endurecimiento de la stack

Restrinja el acceso al puerto 8000 con ufw: ufw allow 80/tcp && ufw allow 443/tcp && ufw deny 8000/tcp. Añada SECURE_SSL_REDIRECT=True y SESSION_COOKIE_SECURE=True en su .env para forzar HTTPS a nivel de Django. Programe un pg_dump diario hacia una ubicación remota — el volumen pg_data contiene todos sus datos de errores y configuración. Consulte también la guía de endurecimiento inicial del servidor Linux antes de exponer la instancia a producción.

Resolución de los errores más comunes

Error: relation "glitchtip_*" does not exist — La migración no se ha ejecutado. Lance docker compose run --rm web ./manage.py migrate y compruebe que el contenedor db está en buen estado con docker compose ps.

CSRF verification failed. Request aborted. — La variable GLITCHTIP_DOMAIN no coincide con el dominio desde el que accede a la interfaz. Compruebe que está definida sin barra final y reinicie los contenedores con docker compose restart.

Connection refused en el DSN desde su aplicación — El puerto 8000 no es accesible desde el exterior (es intencional). Verifique que nginx reenvía correctamente el tráfico HTTPS a 127.0.0.1:8000.

Los eventos aparecen en los logs de Celery pero no en la interfaz — El worker Celery arrancó antes de que terminaran las migraciones. Reinícielo con docker compose restart worker.

No such file or directory: '/etc/nginx/sites-enabled/glitchtip' — Olvidó crear el enlace simbólico. Ejecute ln -s /etc/nginx/sites-available/glitchtip /etc/nginx/sites-enabled/ y luego nginx -t && systemctl reload nginx.

celery.exceptions.WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) — El contenedor worker fue matado por el OOM killer del kernel. Su VPS se queda sin RAM: reduzca CELERY_WORKER_CONCURRENCY a 2 en .env, o pase a 4 GB de RAM. Confirme con docker compose logs worker --tail 50 y dmesg | grep -i oom.

django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections — PostgreSQL ha alcanzado su límite de max_connections (por defecto: 100). Añada CONN_MAX_AGE=60 en .env para activar el pool de conexiones de Django, o configure PgBouncer como intermediario. Este error aparece típicamente cuando varios workers Celery se ejecutan en paralelo sin pool de conexiones.

GlitchTip en producción en un VPS

GlitchTip v6, publicado en febrero de 2026 bajo licencia GPL-3.0, se apoya en cuatro contenedores. Su compatibilidad con el SDK de Sentry lo convierte en una salida limpia de Sentry self-hosted cuando este acumula regresiones difíciles de sortear.

Para ir más lejos, consulte nuestra guía sobre la checklist de Docker Compose en producción para asegurar aún más su despliegue, y nuestro artículo sobre la rutina de parches de las aplicaciones autoalojadas para mantener GlitchTip al día sin interrupción del servicio.

Una instancia GlitchTip cabe en 2 GB de RAM: el VPS Start (2 vCPU, 4 GB de RAM) cubre este perfil con margen, con acceso root y elección de SO.

Su rastreador de errores, en su propia infraestructura

GlitchTip funciona con 2 GB de RAM: despliéguelo en un VPS con acceso root y elección de sistema operativo — sin intermediarios, sin configuración impuesta.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva