[{"data":1,"prerenderedAt":188},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-glitchtip-vps-ma-fr":6,"promo-bar-likely":162},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-self-host-glitchtip-vps-ma-fr",{"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":35,"sections":36,"ctaTitle":127,"ctaBody":128,"ctaButton":129,"ctaUrl":130,"relatedPosts":131},250,"self-host-glitchtip-vps",{"fr":10,"en":12,"ar":13,"es":14},"self-host-glitchtip-on-a-vps-a-sovereign-error-tracker","تثبيت-glitchtip-على-vps-تتبع-الأخطاء-بشكل-مستقل","instalar-glitchtip-en-un-vps","Installer GlitchTip sur un VPS : le tracker d'erreurs souverain","Déployez GlitchTip v6 sur votre VPS Linux avec Docker Compose. Compatible SDK Sentry, 2 Go RAM, alertes Slack\u002Fntfy, exemples sentry-python et @sentry\u002Freact inclus.",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,"Développement","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":25,"appSlug":34},"glitchtip","Sentry self-hosted 26.4.x cumule depuis août 2026 cinq régressions simultanées : consumers Snuba en boucle infinie (issue #4301), deadlock du monitor_consumer (issue #4306) et échec d'authentification HTTP\u002F2 du relay (issue #4321). La communauté documente des migrations vers GlitchTip. Si vous avez déjà instrumenté vos applications avec le SDK Sentry, la migration ne touche pas une ligne de code applicatif : c'est un simple remplacement de variable d'environnement, et votre instance tient dans 2 Go de RAM.",[37,41,52,55,83,114,117,121,124],{"type":38,"title":39,"body":40},"h2","Pourquoi migrer vers GlitchTip maintenant","Sentry self-hosted 26.4.x souffre depuis août 2026 de cinq régressions simultanées documentées par la communauté. Les issues #4301 et #4306 décrivent respectivement des consumers Snuba qui redémarrent en boucle sans traiter d'événements, et un deadlock dans le monitor_consumer qui bloque l'enregistrement des crons. L'issue #4321 signale un échec d'authentification du relay sur les connexions HTTP\u002F2, ce qui interrompt l'ingestion des événements. Ces régressions ont poussé plusieurs équipes à documenter publiquement leur migration vers GlitchTip.\n\nL'objection la plus fréquente est la compatibilité : vous avez instrumenté vos applications avec le SDK Sentry (sentry-python, @sentry\u002Fnode, sentry-rails…) et vous ne souhaitez pas réécrire cette instrumentation. GlitchTip implémente l'API Sentry et accepte les événements envoyés par ces mêmes SDK. Le swap se résume à remplacer la valeur de votre variable d'environnement `SENTRY_DSN` par le DSN que GlitchTip vous fournit lors de la création du projet. Zéro modification de code applicatif.",{"type":42,"title":43,"items":44},"ul","Ce que vous obtenez avec GlitchTip v6 auto-hébergé",[45,46,47,48,49,50,51],"**Empreinte réduite** — quatre conteneurs seulement (Django, Celery, PostgreSQL, Redis), contre la vingtaine de services de Sentry self-hosted.","**Compatibilité SDK Sentry** — tous les SDK Sentry officiels fonctionnent sans modification ; seul le DSN change.","**Souveraineté des données** — les traces d'erreurs et les données utilisateur restent sur votre infrastructure, sous votre politique de rétention.","**Licence GPL-3.0** — le code est auditable, sans composant propriétaire ni fonctionnalité réservée à un plan payant.","**Monitoring de disponibilité** — GlitchTip inclut des monitors de type uptime (ping HTTP) sans dépendance externe.","**Interface de gestion des performances** — suivi des transactions, des traces N+1 et des requêtes lentes via l'API Sentry compatible.","**Faible consommation de RAM** — 2 Go de RAM suffisent pour un usage solo ou petite équipe, sans ajustement de configuration.",{"type":38,"title":53,"body":54},"Prérequis avant de démarrer","GlitchTip v6 repose sur quatre conteneurs : Django (le serveur web et l'interface), Celery (les tâches asynchrones de traitement d'événements), PostgreSQL (la base de données principale) et Redis (la file de tâches). Il vous faut :\n\n- Un VPS Linux avec **2 Go de RAM minimum** (4 Go sont confortables pour une équipe de dix développeurs et un volume de quelques centaines d'erreurs par jour).\n- **Docker** et **Docker Compose** installés — disponibles sur toutes les distributions récentes.\n- Un **nom de domaine** ou sous-domaine pointé vers l'adresse IP de votre VPS, pour activer HTTPS via Let's Encrypt.\n- Les **ports 80 et 443** ouverts dans votre pare-feu.\n\nSur un VPS ServOrbit, Docker est préinstallé. Le VPS Solo (2 vCPU, 4 GB de RAM), notre plus petite offre, couvre ce profil de charge avec de la marge.",{"type":56,"title":57,"steps":58},"steps","Déployer GlitchTip avec Docker Compose",[59,62,65,68,71,74,77,80],{"title":60,"body":61},"Créer le répertoire de travail","Connectez-vous à votre VPS en SSH, puis créez un répertoire dédié :\n\n`mkdir -p \u002Fopt\u002Fglitchtip && cd \u002Fopt\u002Fglitchtip`",{"title":63,"body":64},"Créer le fichier de variables d'environnement","Créez un fichier `.env` avec les valeurs de configuration :\n\n`SECRET_KEY=\u003Cchaîne-aléatoire-longue>` — générez-la avec `openssl rand -hex 32`.\n`DATABASE_URL=postgresql:\u002F\u002Fglitchtip:motdepasse@db:5432\u002Fglitchtip`\n`REDIS_URL=redis:\u002F\u002Fredis:6379\u002F0`\n`GLITCHTIP_DOMAIN=https:\u002F\u002Fglitchtip.votre-domaine.com`\n`DEFAULT_FROM_EMAIL=no-reply@votre-domaine.com`\n`EMAIL_URL=smtp:\u002F\u002Futilisateur:motdepasse@smtp.votre-domaine.com:587`\n\nRemplacez les valeurs par vos propres identifiants. Le champ `GLITCHTIP_DOMAIN` doit correspondre exactement au domaine que vous allez sécuriser avec HTTPS — il est inscrit dans les DSN générés.",{"title":66,"body":67},"Créer le fichier docker-compose.yml","Créez un fichier `docker-compose.yml` avec le contenu suivant (adapté depuis la documentation officielle GlitchTip) :\n\n`version: \"3.8\"` puis définissez les services `db` (postgres:16), `redis` (redis:7), `web` et `worker` (image `glitchtip\u002Fglitchtip:latest`), en liant le port web sur `127.0.0.1:8000:8080` uniquement. Notez que le port 8000 est lié à `127.0.0.1` uniquement : le service ne sera jamais exposé directement, mais via un proxy inverse.",{"title":69,"body":70},"Initialiser la base de données","Lancez les migrations Django pour créer le schéma :\n\n`docker compose run --rm web .\u002Fmanage.py migrate`\n\nCette commande est à lancer une seule fois à l'installation, puis lors de chaque mise à jour vers une nouvelle version de GlitchTip.",{"title":72,"body":73},"Créer le premier super-utilisateur","Créez votre compte administrateur :\n\n`docker compose run --rm web .\u002Fmanage.py createsuperuser`\n\nSaisissez l'adresse e-mail et le mot de passe lorsque l'assistant les demande.",{"title":75,"body":76},"Démarrer la stack","Démarrez tous les conteneurs en arrière-plan :\n\n`docker compose up -d`\n\nVérifiez que les quatre conteneurs sont en cours d'exécution avec `docker compose ps`. Le service web répond sur `http:\u002F\u002F127.0.0.1:8000`.",{"title":78,"body":79},"Configurer le proxy inverse nginx avec HTTPS","Installez nginx et Certbot si ce n'est pas déjà fait :\n\n`apt install -y nginx certbot python3-certbot-nginx`\n\nCréez un vhost dans `\u002Fetc\u002Fnginx\u002Fsites-available\u002Fglitchtip` avec le bloc `server` qui écoute sur le port 80, définit `server_name glitchtip.votre-domaine.com` et transmet le trafic vers `http:\u002F\u002F127.0.0.1:8000` avec `proxy_pass`. Activez la configuration, puis obtenez le certificat :\n\n`certbot --nginx -d glitchtip.votre-domaine.com`\n\nCertbot met à jour automatiquement le vhost pour rediriger HTTP vers HTTPS et ajoute le bloc SSL.",{"title":81,"body":82},"Brancher le SDK Sentry de vos applications","Dans l'interface GlitchTip, créez une organisation, puis un projet. GlitchTip génère un DSN du format `https:\u002F\u002F\u003Cclé>@glitchtip.votre-domaine.com\u002F\u003Cid-projet>`.\n\nDans chacune de vos applications, remplacez la valeur de `SENTRY_DSN` (ou du paramètre `dsn` passé à `Sentry.init()`) par ce nouveau DSN. Redémarrez vos processus. Les événements apparaissent dans GlitchTip sans aucune autre modification.",{"type":84,"title":85,"headers":86,"rows":92,"caption":113},"comparison","GlitchTip v6 vs alternatives — ce qui compte vraiment",[87,88,89,90,91],"Critère","GlitchTip v6","Sentry self-hosted 26.4.x","Rollbar (SaaS)","Bugsnag (SaaS)",[93,98,103,108],[94,95,96,97,97],"Empreinte mémoire (prod)","~500 Mo actif (4 conteneurs)","~6-8 Go (20+ services)","Aucune (SaaS)",[99,100,101,102,102],"Licence","GPL-3.0 — code 100 % auditable","BSL 1.1 — restrictions commerciales","Propriétaire",[104,105,106,107,107],"Uptime monitoring intégré","Oui — ping HTTP, alertes incluses","Non natif (extension Crons seulement)","Non",[109,110,111,112,112],"Compatibilité SDK Sentry","Complète — DSN drop-in","Native","SDK propriétaire","Rollbar et Bugsnag n'ont pas d'offre self-hosted ; les données transitent obligatoirement par leurs serveurs. GlitchTip et Sentry self-hosted restent les deux seules options souveraines, mais l'écart d'empreinte mémoire est un facteur décisif sur un VPS à 2 Go.",{"type":38,"title":115,"body":116},"Configuration post-installation","Après le premier démarrage, ajustez ces points dans l'interface d'administration :\n\n**Variables d'environnement complémentaires.** Activez l'envoi d'alertes par e-mail en définissant `EMAIL_URL` dans votre `.env`. Ajoutez `GLITCHTIP_MAX_EVENT_LIFE_DAYS=90` pour limiter la rétention des événements et maîtriser la croissance de la base de données.\n\n**Accès multi-équipes.** GlitchTip gère des organisations et des membres avec différents niveaux de permission. Créez vos équipes depuis Paramètres → Membres et invitez vos développeurs par e-mail.\n\n**Monitors de disponibilité.** Dans la section Monitors de votre projet, créez un monitor de type ping pour chacun de vos services exposés : GlitchTip envoie une requête HTTP à intervalle régulier et crée une issue si le service ne répond pas dans le délai configuré.\n\n**Alertes webhook vers Slack ou ntfy.** Depuis Paramètres → Alertes, ajoutez une destination de type « Webhook ». Pour Slack, collez l'URL de votre Incoming Webhook (`https:\u002F\u002Fhooks.slack.com\u002Fservices\u002F…`) ; pour ntfy, utilisez `https:\u002F\u002Fntfy.sh\u002F\u003Cvotre-topic>` avec la méthode POST. GlitchTip envoie un JSON structuré à chaque nouvelle issue ou dépassement de seuil.\n\n**Intégration SDK — Python.** Remplacez uniquement la valeur du DSN ; le reste du code reste identique :\n\n`import sentry_sdk` puis `sentry_sdk.init(dsn=\"https:\u002F\u002F\u003Cclé>@glitchtip.votre-domaine.com\u002F\u003Cid>\", traces_sample_rate=1.0)`\n\n**Intégration SDK — React.** Même logique côté front :\n\n`import * as Sentry from \"@sentry\u002Freact\"` puis `Sentry.init({ dsn: \"https:\u002F\u002F\u003Cclé>@glitchtip.votre-domaine.com\u002F\u003Cid>\", tracesSampleRate: 1.0 })`\n\nGlitchTip reçoit à la fois les exceptions Python\u002FNode et les erreurs JavaScript capturées dans le navigateur, toutes regroupées dans la même interface.\n\n**Rétention des données.** La variable `GLITCHTIP_MAX_EVENT_LIFE_DAYS` (non borné par défaut) contrôle l'âge maximal des événements conservés. Sur un VPS à 60 Go de SSD, une rétention de 90 jours pour un volume de quelques centaines d'erreurs par jour consomme rarement plus de 5 Go — à surveiller avec `docker system df`.",{"type":118,"title":119,"body":120},"tip","Durcissement de la stack","Restreignez l'accès au port 8000 avec ufw : `ufw allow 80\u002Ftcp && ufw allow 443\u002Ftcp && ufw deny 8000\u002Ftcp`. Ajoutez `SECURE_SSL_REDIRECT=True` et `SESSION_COOKIE_SECURE=True` dans votre `.env` pour forcer HTTPS au niveau Django. Planifiez un `pg_dump` quotidien vers un emplacement distant — le volume `pg_data` contient l'intégralité de vos données d'erreurs et de configuration. Enfin, consultez le guide de durcissement initial d'un serveur Linux avant d'exposer l'instance à la production.",{"type":38,"title":122,"body":123},"Dépannage des erreurs courantes","**`Error: relation \"glitchtip_*\" does not exist`** — La migration n'a pas été jouée. Exécutez `docker compose run --rm web .\u002Fmanage.py migrate` et vérifiez que le conteneur `db` est en bonne santé avec `docker compose ps`.\n\n**`CSRF verification failed. Request aborted.`** — La variable `GLITCHTIP_DOMAIN` ne correspond pas au domaine depuis lequel vous accédez à l'interface. Vérifiez qu'elle est définie sans barre oblique finale et relancez les conteneurs avec `docker compose restart`.\n\n**`Connection refused` sur le DSN depuis votre application** — Le port 8000 n'est pas accessible depuis l'extérieur (c'est voulu). Vérifiez que nginx transmet correctement le trafic HTTPS vers `127.0.0.1:8000` : `curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\" http:\u002F\u002F127.0.0.1:8000\u002Fapi\u002F0\u002F` doit renvoyer 200.\n\n**Les événements apparaissent dans les logs Celery mais pas dans l'interface** — Le worker Celery a démarré avant que les migrations soient terminées. Relancez-le avec `docker compose restart worker`.\n\n**`No such file or directory: '\u002Fetc\u002Fnginx\u002Fsites-enabled\u002Fglitchtip'`** — Vous avez oublié de créer le lien symbolique. Exécutez `ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fglitchtip \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F` puis `nginx -t && systemctl reload nginx`.\n\n**`celery.exceptions.WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL)`** — Le conteneur worker a été tué par l'OOM killer du noyau. Votre VPS manque de RAM : réduisez `CELERY_WORKER_CONCURRENCY` à `2` dans votre `.env`, ou passez à 4 Go de RAM. Vérifiez avec `docker compose logs worker --tail 50` et `dmesg | grep -i oom`.\n\n**`django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections`** — PostgreSQL a atteint sa limite `max_connections` (défaut : 100). Ajoutez `CONN_MAX_AGE=60` dans votre `.env` pour activer le pooling de connexions côté Django, ou configurez PgBouncer en intermédiaire. Cette erreur survient typiquement quand plusieurs workers Celery s'exécutent simultanément sans pooling.",{"type":38,"title":125,"body":126},"GlitchTip en production sur un VPS","GlitchTip v6, publié en février 2026 sous licence GPL-3.0, repose sur quatre conteneurs. Sa compatibilité avec le SDK Sentry en fait une sortie propre de Sentry self-hosted lorsque celui-ci accumule des régressions difficiles à contourner.\n\nPour aller plus loin, consultez notre guide sur la checklist Docker Compose en production pour sécuriser davantage votre déploiement, et notre article sur la routine de correctifs des apps self-hosted pour maintenir GlitchTip à jour sans interruption de service.\n\nUne instance GlitchTip tient dans 2 Go de RAM : le VPS Solo (2 vCPU, 4 GB de RAM) couvre ce profil avec de la marge, avec accès root et choix de l'OS.","Votre tracker d'erreurs, sur votre propre infrastructure","GlitchTip tient dans 2 Go de RAM : déployez-le sur un VPS avec accès root et choix de l'OS — sans intermédiaire, sans configuration imposée.","Découvrir les solutions développeurs","\u002Fsolutions\u002Fdeveloppeurs",[132,153,174],{"id":133,"slug":134,"slugs":135,"title":139,"excerpt":140,"readTime":141,"views":142,"isPinned":19,"noindex":19,"publishedAt":143,"updatedAt":144,"category":145,"categories":150,"featuredImage":30,"bgImage":31,"posterImage":152,"relatedSolution":30},229,"docker-compose-production-checklist",{"fr":134,"en":136,"ar":137,"es":138},"docker-compose-in-production-10-point-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","checklist-docker-compose-en-produccion","Docker Compose en production : checklist des 10 points","Docker Compose en production : 10 réglages, health checks, secrets, rollback, dépannage et passage de docker-compose v1 à docker compose sur Ubuntu 26.04.",12,1,"2026-08-06T00:00:00+00:00","2026-10-23T13:27:09+00:00",{"id":146,"name":147,"slug":148,"color":149,"icon":148},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[151],{"id":146,"name":147,"slug":148,"color":149,"icon":148},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":154,"slug":155,"slugs":156,"title":160,"excerpt":161,"readTime":23,"views":142,"isPinned":19,"noindex":162,"publishedAt":163,"updatedAt":164,"category":165,"categories":171,"featuredImage":30,"bgImage":31,"posterImage":173,"relatedSolution":30},224,"routine-correctifs-apps-self-hosted",{"fr":155,"en":157,"ar":158,"es":159},"self-hosted-apps-the-patching-routine","التطبيقات-المستضافة-ذاتيا-روتين-التصحيحات","apps-self-hosted-rutina-de-parches","Applications self-hosted : la routine de correctifs","Inventaire, avis de sécurité, fenêtre de correctif, sauvegarde et vérification : la routine qui manque à la plupart des parcs auto-hébergés.",true,"2026-08-05T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":166,"name":167,"slug":168,"color":169,"icon":170},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[172],{"id":166,"name":167,"slug":168,"color":169,"icon":170},"\u002Fblog\u002Fcovers\u002Froutine-correctifs-apps-self-hosted-poster.svg",{"id":175,"slug":176,"slugs":177,"title":181,"excerpt":182,"readTime":166,"views":142,"isPinned":19,"noindex":19,"publishedAt":143,"updatedAt":183,"category":184,"categories":185,"featuredImage":30,"bgImage":31,"posterImage":187,"relatedSolution":30},228,"durcissement-serveur-linux-initial",{"fr":176,"en":178,"ar":179,"es":180},"initial-linux-server-hardening","تصليب-الخادم-linux-الأولي","hardening-inicial-servidor-linux","Durcissement initial d'un serveur Linux","Créez un utilisateur sudo, configurez SSH avec clés, activez UFW et fail2ban sur Ubuntu ou Debian en moins d'une heure.","2026-10-20T23:18:07+00:00",{"id":166,"name":167,"slug":168,"color":169,"icon":170},[186],{"id":166,"name":167,"slug":168,"color":169,"icon":170},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",1794270789217]