[{"data":1,"prerenderedAt":189},["ShallowReactive",2],{"seo-verification":3,"blog-instalar-glitchtip-en-un-vps-ma-es":6,"promo-bar-likely":163},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-instalar-glitchtip-en-un-vps-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":128,"ctaBody":129,"ctaButton":130,"ctaUrl":131,"relatedPosts":132},250,"instalar-glitchtip-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"self-host-glitchtip-vps","self-host-glitchtip-on-a-vps-a-sovereign-error-tracker","تثبيت-glitchtip-على-vps-تتبع-الأخطاء-بشكل-مستقل","Instalar GlitchTip en un VPS: rastreador de errores soberano","Despliegue GlitchTip v6 en un VPS Linux con Docker Compose. Compatible SDK Sentry, 2 GB RAM, alertas Slack\u002Fntfy, ejemplos sentry-python y @sentry\u002Freact.",9,2,false,"2026-08-13T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"Desarrollo","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-glitchtip-vps-poster.svg",{"categorySlug":34,"appSlug":35},"desarrollo","glitchtip","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\u002F2 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.",[38,42,53,56,84,115,118,122,125],{"type":39,"title":40,"body":41},"h2","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\u002F2, lo que interrumpe la ingesta de eventos. Estas regresiones han llevado a varios equipos a documentar públicamente su migración a GlitchTip.\n\nLa objeción más frecuente es la compatibilidad: ha instrumentado sus aplicaciones con el SDK de Sentry (sentry-python, @sentry\u002Fnode, 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.",{"type":43,"title":44,"items":45},"ul","Lo que obtiene con GlitchTip v6 autoalojado",[46,47,48,49,50,51,52],"**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.",{"type":39,"title":54,"body":55},"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:\n\n- 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).\n- **Docker** y **Docker Compose** instalados — disponibles en todas las distribuciones recientes.\n- Un **nombre de dominio** o subdominio apuntado a la IP de su VPS, para activar HTTPS a través de Let's Encrypt.\n- Los **puertos 80 y 443** abiertos en su cortafuegos.\n\nEn un VPS de ServOrbit, Docker viene preinstalado. El VPS Solo (2 vCPU, 4 GB de RAM), nuestro plan más pequeño, cubre este perfil de carga con margen.",{"type":57,"title":58,"steps":59},"steps","Desplegar GlitchTip con Docker Compose",[60,63,66,69,72,75,78,81],{"title":61,"body":62},"Crear el directorio de trabajo","Conéctese a su VPS por SSH y cree un directorio dedicado:\n\n`mkdir -p \u002Fopt\u002Fglitchtip && cd \u002Fopt\u002Fglitchtip`",{"title":64,"body":65},"Crear el archivo de variables de entorno","Cree un archivo `.env` con los valores de configuración:\n\n`SECRET_KEY=\u003Ccadena-aleatoria-larga>` — genérela con `openssl rand -hex 32`.\n`DATABASE_URL=postgresql:\u002F\u002Fglitchtip:contraseña@db:5432\u002Fglitchtip`\n`REDIS_URL=redis:\u002F\u002Fredis:6379\u002F0`\n`GLITCHTIP_DOMAIN=https:\u002F\u002Fglitchtip.su-dominio.com`\n`DEFAULT_FROM_EMAIL=no-reply@su-dominio.com`\n`EMAIL_URL=smtp:\u002F\u002Fusuario:contraseña@smtp.su-dominio.com:587`\n\n`GLITCHTIP_DOMAIN` debe coincidir exactamente con el dominio que va a asegurar con HTTPS — queda inscrito en los DSN generados.",{"title":67,"body":68},"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\u002Fglitchtip: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.",{"title":70,"body":71},"Inicializar la base de datos","Ejecute las migraciones de Django para crear el esquema:\n\n`docker compose run --rm web .\u002Fmanage.py migrate`\n\nEjecute este comando una sola vez en la instalación y de nuevo cada vez que actualice a una nueva versión de GlitchTip.",{"title":73,"body":74},"Crear el primer superusuario","Cree su cuenta de administrador:\n\n`docker compose run --rm web .\u002Fmanage.py createsuperuser`\n\nIntroduzca la dirección de correo y la contraseña cuando el asistente los solicite.",{"title":76,"body":77},"Iniciar la stack","Inicie todos los contenedores en segundo plano:\n\n`docker compose up -d`\n\nCompruebe que los cuatro contenedores están en ejecución con `docker compose ps`. El servicio web responde en `http:\u002F\u002F127.0.0.1:8000`.",{"title":79,"body":80},"Configurar el proxy inverso nginx con HTTPS","Instale nginx y Certbot si aún no están presentes:\n\n`apt install -y nginx certbot python3-certbot-nginx`\n\nCree un vhost en `\u002Fetc\u002Fnginx\u002Fsites-available\u002Fglitchtip` 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:\u002F\u002F127.0.0.1:8000` mediante `proxy_pass`. Active la configuración y obtenga el certificado:\n\n`certbot --nginx -d glitchtip.su-dominio.com`\n\nCertbot actualiza automáticamente el vhost para redirigir HTTP a HTTPS y añade el bloque SSL.",{"title":82,"body":83},"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:\u002F\u002F\u003Cclave>@glitchtip.su-dominio.com\u002F\u003Cid-proyecto>`.\n\nEn 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.",{"type":85,"title":86,"headers":87,"rows":93,"caption":114},"comparison","GlitchTip v6 vs alternativas — lo que realmente importa",[88,89,90,91,92],"Criterio","GlitchTip v6","Sentry self-hosted 26.4.x","Rollbar (SaaS)","Bugsnag (SaaS)",[94,99,104,109],[95,96,97,98,98],"Huella de memoria (prod)","~500 MB activo (4 contenedores)","~6-8 GB (20+ servicios)","Ninguna (SaaS)",[100,101,102,103,103],"Licencia","GPL-3.0 — código 100% auditable","BSL 1.1 — restricciones comerciales","Propietaria",[105,106,107,108,108],"Monitorización de disponibilidad integrada","Sí — ping HTTP, alertas incluidas","No nativa (solo extensión Crons)","No",[110,111,112,113,113],"Compatibilidad SDK Sentry","Completa — DSN plug-in","Nativa","SDK propietario","Rollbar y Bugsnag no ofrecen versión autoalojada; los datos deben pasar obligatoriamente por sus servidores. GlitchTip y Sentry self-hosted son las dos únicas opciones soberanas, pero la diferencia de huella de memoria es un factor decisivo en un VPS de 2 GB.",{"type":39,"title":116,"body":117},"Configuración posterior a la instalación","Tras el primer arranque, ajuste estos puntos en la interfaz de administración:\n\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.\n\n**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.\n\n**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.\n\n**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:\u002F\u002Fhooks.slack.com\u002Fservices\u002F…`); para ntfy, use `https:\u002F\u002Fntfy.sh\u002F\u003Csu-topic>` con el método POST. GlitchTip envía un JSON estructurado en cada nueva issue o superación de umbral.\n\n**Integración SDK — Python.** Reemplace únicamente el valor del DSN; el resto del código permanece idéntico:\n\n`import sentry_sdk` y luego `sentry_sdk.init(dsn=\"https:\u002F\u002F\u003Cclave>@glitchtip.su-dominio.com\u002F\u003Cid>\", traces_sample_rate=1.0)`\n\n**Integración SDK — React.** Misma lógica en el front:\n\n`import * as Sentry from \"@sentry\u002Freact\"` y luego `Sentry.init({ dsn: \"https:\u002F\u002F\u003Cclave>@glitchtip.su-dominio.com\u002F\u003Cid>\", tracesSampleRate: 1.0 })`\n\nGlitchTip recibe tanto las excepciones de Python\u002FNode como los errores JavaScript capturados en el navegador, todo agrupado en la misma interfaz.\n\n**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`.",{"type":119,"title":120,"body":121},"tip","Endurecimiento de la stack","Restrinja el acceso al puerto 8000 con ufw: `ufw allow 80\u002Ftcp && ufw allow 443\u002Ftcp && ufw deny 8000\u002Ftcp`. 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.",{"type":39,"title":123,"body":124},"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 .\u002Fmanage.py migrate` y compruebe que el contenedor `db` está en buen estado con `docker compose ps`.\n\n**`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`.\n\n**`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`.\n\n**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`.\n\n**`No such file or directory: '\u002Fetc\u002Fnginx\u002Fsites-enabled\u002Fglitchtip'`** — Olvidó crear el enlace simbólico. Ejecute `ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fglitchtip \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F` y luego `nginx -t && systemctl reload nginx`.\n\n**`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`.\n\n**`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.",{"type":39,"title":126,"body":127},"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.\n\nPara 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.\n\nUna instancia GlitchTip cabe en 2 GB de RAM: el VPS Solo (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.","Descubrir las soluciones para desarrolladores","\u002Fsolutions\u002Fdeveloppeurs",[133,154,175],{"id":134,"slug":135,"slugs":136,"title":140,"excerpt":141,"readTime":142,"views":143,"isPinned":19,"noindex":19,"publishedAt":144,"updatedAt":145,"category":146,"categories":151,"featuredImage":30,"bgImage":31,"posterImage":153,"relatedSolution":30},229,"checklist-docker-compose-en-produccion",{"fr":137,"en":138,"ar":139,"es":135},"docker-compose-production-checklist","docker-compose-in-production-10-point-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose en producción: checklist de 10 puntos","Docker Compose en producción: 10 ajustes, health checks, secretos, rollback, solución de errores y paso de docker-compose v1 a docker compose en Ubuntu 26.04.",12,1,"2026-08-06T00:00:00+00:00","2026-10-23T13:27:09+00:00",{"id":147,"name":148,"slug":149,"color":150,"icon":149},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[152],{"id":147,"name":148,"slug":149,"color":150,"icon":149},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":155,"slug":156,"slugs":157,"title":161,"excerpt":162,"readTime":23,"views":143,"isPinned":19,"noindex":163,"publishedAt":164,"updatedAt":165,"category":166,"categories":172,"featuredImage":30,"bgImage":31,"posterImage":174,"relatedSolution":30},224,"apps-self-hosted-rutina-de-parches",{"fr":158,"en":159,"ar":160,"es":156},"routine-correctifs-apps-self-hosted","self-hosted-apps-the-patching-routine","التطبيقات-المستضافة-ذاتيا-روتين-التصحيحات","Aplicaciones self-hosted: la rutina de parches","Inventario, avisos de seguridad, ventana de parcheo, copia de seguridad y verificación: la rutina que falta en la mayoría de los parques self-hosted.",true,"2026-08-05T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":167,"name":168,"slug":169,"color":170,"icon":171},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[173],{"id":167,"name":168,"slug":169,"color":170,"icon":171},"\u002Fblog\u002Fcovers\u002Froutine-correctifs-apps-self-hosted-poster.svg",{"id":176,"slug":177,"slugs":178,"title":182,"excerpt":183,"readTime":167,"views":143,"isPinned":19,"noindex":19,"publishedAt":144,"updatedAt":184,"category":185,"categories":186,"featuredImage":30,"bgImage":31,"posterImage":188,"relatedSolution":30},228,"hardening-inicial-servidor-linux",{"fr":179,"en":180,"ar":181,"es":177},"durcissement-serveur-linux-initial","initial-linux-server-hardening","تصليب-الخادم-linux-الأولي","Endurecimiento (hardening) inicial de un servidor Linux","Cree un usuario sudo, configure SSH con claves y active UFW y fail2ban en Ubuntu o Debian en menos de una hora.","2026-10-20T23:18:07+00:00",{"id":167,"name":168,"slug":169,"color":170,"icon":171},[187],{"id":167,"name":168,"slug":169,"color":170,"icon":171},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",1794270610415]