[{"data":1,"prerenderedAt":145},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-glitchtip-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":26,"intro":29,"sections":30,"ctaTitle":90,"ctaBody":91,"ctaButton":92,"ctaUrl":93,"relatedPosts":94},250,"self-host-glitchtip-vps",{"fr":8,"en":10,"ar":11},"self-host-glitchtip-on-a-vps-a-sovereign-error-tracker","تثبيت-glitchtip-على-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, il tient dans 2 Go de RAM et se branche en remplaçant un DSN.",7,0,false,"2026-08-13T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},4,"Développement","developpement","bg-warning\u002F10 text-warning","dev",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-glitchtip-vps-poster.svg","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.",[31,35,46,49,77,80,84,87],{"type":32,"title":33,"body":34},"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":36,"title":37,"items":38},"ul","Ce que vous obtenez avec GlitchTip v6 auto-hébergé",[39,40,41,42,43,44,45],"**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":32,"title":47,"body":48},"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é. Les offres à partir de 2 vCPU et 2 Go de RAM couvrent exactement ce profil de charge.",{"type":50,"title":51,"steps":52},"steps","Déployer GlitchTip avec Docker Compose",[53,56,59,62,65,68,71,74],{"title":54,"body":55},"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":57,"body":58},"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":60,"body":61},"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```yaml\nversion: \"3.8\"\nx-environment: &default-environment\n  env_file: .env\nservices:\n  db:\n    image: postgres:16\n    environment:\n      POSTGRES_DB: glitchtip\n      POSTGRES_USER: glitchtip\n      POSTGRES_PASSWORD: motdepasse\n    volumes:\n      - pg_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n  redis:\n    image: redis:7\n    volumes:\n      - redis_data:\u002Fdata\n  web:\n    image: glitchtip\u002Fglitchtip:latest\n    depends_on: [db, redis]\n    ports:\n      - \"127.0.0.1:8000:8080\"\n    \u003C\u003C: *default-environment\n  worker:\n    image: glitchtip\u002Fglitchtip:latest\n    command: .\u002Fbin\u002Frun-celery-with-beat.sh\n    depends_on: [db, redis]\n    \u003C\u003C: *default-environment\nvolumes:\n  pg_data:\n  redis_data:\n```\n\nNotez que le port 8000 est lié à `127.0.0.1` uniquement : le service ne sera jamais exposé directement, mais via un proxy inverse.",{"title":63,"body":64},"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":66,"body":67},"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":69,"body":70},"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":72,"body":73},"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":75,"body":76},"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":32,"title":78,"body":79},"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é.",{"type":81,"title":82,"body":83},"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":32,"title":85,"body":86},"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`.",{"type":32,"title":88,"body":89},"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 : un VPS à 2 vCPU et 2 Go de RAM couvre exactement ce profil, avec accès root et choix de l'OS.","Votre tracker d'erreurs, sur votre propre infrastructure","GlitchTip tient dans 2 Go de RAM : le VPS Power (2 vCPU, 2 Go RAM, 60 Go SSD) couvre exactement ce profil de charge, avec accès root et choix d'OS — sans intermédiaire, sans configuration imposée.","Déployer un VPS","\u002Fvps-cloud",[95,113,132],{"id":96,"slug":97,"slugs":98,"title":101,"excerpt":102,"readTime":103,"views":15,"isPinned":16,"publishedAt":104,"category":105,"categories":110,"featuredImage":26,"bgImage":27,"posterImage":112,"relatedSolution":26},229,"docker-compose-production-checklist",{"fr":97,"en":99,"ar":100},"docker-compose-in-production-10-point-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose en production : checklist des 10 points","Checklist Docker Compose en production : 10 paramètres essentiels, gestion des secrets sans downtime, sauvegarde volumes sans corruption, CVE-2026-17106.",14,"2026-08-06T00:00:00+00:00",{"id":106,"name":107,"slug":108,"color":109,"icon":108},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[111],{"id":106,"name":107,"slug":108,"color":109,"icon":108},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":114,"slug":115,"slugs":116,"title":119,"excerpt":120,"readTime":19,"views":121,"isPinned":16,"publishedAt":122,"category":123,"categories":129,"featuredImage":26,"bgImage":27,"posterImage":131,"relatedSolution":26},224,"routine-correctifs-apps-self-hosted",{"fr":115,"en":117,"ar":118},"self-hosted-apps-the-patching-routine","التطبيقات-المستضافة-ذاتيا-روتين-التصحيحات","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.",1,"2026-08-05T00:00:00+00:00",{"id":124,"name":125,"slug":126,"color":127,"icon":128},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[130],{"id":124,"name":125,"slug":126,"color":127,"icon":128},"\u002Fblog\u002Fcovers\u002Froutine-correctifs-apps-self-hosted-poster.svg",{"id":133,"slug":134,"slugs":135,"title":138,"excerpt":139,"readTime":140,"views":15,"isPinned":16,"publishedAt":104,"category":141,"categories":142,"featuredImage":26,"bgImage":27,"posterImage":144,"relatedSolution":26},228,"durcissement-serveur-linux-initial",{"fr":134,"en":136,"ar":137},"initial-linux-server-hardening","تصليب-الخادم-linux-الأولي","Durcissement initial d'un serveur Linux","Créez un utilisateur sudo, configurez SSH avec clés, activez UFW et fail2ban sur Ubuntu 22.04 ou Debian 12 en moins d'une heure.",10,{"id":124,"name":125,"slug":126,"color":127,"icon":128},[143],{"id":124,"name":125,"slug":126,"color":127,"icon":128},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",1787580988010]