Перейти к содержанию

GlitchTip

Описание

Не жирная замена Sentry. Можно запустить на небольшой тачке, так как содержит в себе только 4 обязательных сервиса - воркер, веб-апи с фронтом, бекенд и redis.

Установка и конфигурация

Все актуальные способы лежат здесь.

docker-compose

Актуальный всегда лежит здесь.

docker-compose.yml
x-environment: &default-environment
DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
SECRET_KEY: change_me_to_something_random # запускаем openssl rand -hex 32 и вставляем то что получилось
PORT: 8000 # если сменили порт - меняем
EMAIL_URL: consolemail:// # Пример smtp://email:password@smtp_url:port https://glitchtip.com/documentation/install#configuration
GLITCHTIP_DOMAIN: https://glitchtip.example.com # Меняем на свой адрес
DEFAULT_FROM_EMAIL: email@example.com # Меняем на свое мыло
CELERY_WORKER_AUTOSCALE: "1,3" # Скалирование воркера
ENABLE_USER_REGISTRATION: "True" # включаем ли регистрацию юзеров?
ENABLE_ORGANIZATION_CREATION: "True" # могут ли юзеры создавать организации?

x-depends_on: &default-depends_on
- postgres
- redis

services:
postgres:
    image: postgres:17
    environment:
    POSTGRES_HOST_AUTH_METHOD: "trust" # Consider removing this and setting a password
    restart: unless-stopped
    volumes:
    - pg-data:/var/lib/postgresql/data
redis:
    image: valkey/valkey
    restart: unless-stopped
web:
    image: glitchtip/glitchtip
    depends_on: *default-depends_on
    ports:
    - "8000:8000"
    environment: *default-environment
    restart: unless-stopped
    volumes:
    - uploads:/code/uploads
worker:
    image: glitchtip/glitchtip
    command: ./bin/run-celery-with-beat.sh
    depends_on: *default-depends_on
    environment: *default-environment
    restart: unless-stopped
    volumes:
    - uploads:/code/uploads
migrate:
    image: glitchtip/glitchtip
    depends_on: *default-depends_on
    command: ./bin/run-migrate.sh
    environment: *default-environment

volumes:
pg-data:
uploads:

Решение проблем

Отключении регистрации при включении входа через SSO

Если мы установим ENABLE_USER_REGISTRATION в False, в логах можем увидеть ошибку, что юзеры которые входят по SSO не могут быть зарегистрированы, так как регистрация отключена.

Нормального решения нет, а единственный нормальный PR разработчик завернул, поэтому будем патчить и радоваться жизни.

Адаптация вот треда.

Скачивание бекенда и фронтенда

1) Создайте каталог glitchtip для удобства:

mkdir glitchtip

2) Склонируйте репозиторий бекенда и фронтенда:

git clone https://gitlab.com/glitchtip/glitchtip-backend
git clone https://gitlab.com/glitchtip/glitchtip-frontend

Патчинг бекенда

1) Перейдите в каталог glitchtip-backend:

cd glitchtip-backend
2) Создайте файл add_oauth_only_registration.patch или скачайте его отсюда:

add_oauth_only_registration.patch
Subject: [PATCH] add oauth only registration
---
Index: apps/users/utils.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/apps/users/utils.py b/apps/users/utils.py
--- a/apps/users/utils.py  (revision cf67212dd3615df561218cea29e5da819b6efa10)
+++ b/apps/users/utils.py  (date 1748889499011)
@@ -2,6 +2,8 @@

from apps.users.models import User

+def is_socialapp_user_registration_open() -> bool:
+    return settings.ENABLE_SOCIAL_APP_USER_REGISTRATION or not User.objects.exists()

def is_user_registration_open() -> bool:
    return settings.ENABLE_USER_REGISTRATION or not User.objects.exists()
Index: glitchtip/settings.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/glitchtip/settings.py b/glitchtip/settings.py
--- a/glitchtip/settings.py  (revision cf67212dd3615df561218cea29e5da819b6efa10)
+++ b/glitchtip/settings.py  (date 1748889577219)
@@ -718,6 +718,7 @@
    SOCIALACCOUNT_PROVIDERS["microsoft"] = {"TENANT": MICROSOFT_TENANT}

ENABLE_USER_REGISTRATION = env.bool("ENABLE_USER_REGISTRATION", True)
+ENABLE_SOCIAL_APP_USER_REGISTRATION = env.bool("ENABLE_SOCIAL_APP_USER_REGISTRATION", True)
ENABLE_ORGANIZATION_CREATION = env.bool(
    "ENABLE_OPEN_USER_REGISTRATION", env.bool("ENABLE_ORGANIZATION_CREATION", False)
)
Index: glitchtip/adapters.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/glitchtip/adapters.py b/glitchtip/adapters.py
--- a/glitchtip/adapters.py  (revision cf67212dd3615df561218cea29e5da819b6efa10)
+++ b/glitchtip/adapters.py  (date 1748889566750)
@@ -2,12 +2,12 @@
from allauth.account.internal.flows.login import record_authentication
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter

-from apps.users.utils import is_user_registration_open
+from apps.users.utils import is_user_registration_open, is_socialapp_user_registration_open


class CustomSocialAccountAdapter(DefaultSocialAccountAdapter):
    def is_open_for_signup(self, request, sociallogin):
-        return is_user_registration_open()
+        return is_user_registration_open() or is_socialapp_user_registration_open()


class CustomDefaultAccountAdapter(DefaultAccountAdapter):

3) Примените патч:

patch -p1 < add_oauth_only_registration.patch

Сборка бекенда

Теперь нам нужно собрать бекенд. Я использую docker, поэтому моя команда будет следующей:

docker build -t glitchtip-backend:patched .

Этот образ в дальнейшем нам понадобится для конечной сборки.

Изменение Dockerfile.prod в фронтенде

Оригинальный Dockerfile.prod не содержит в себе возможности сборку фронтенда, он собирается в CI. Исправим этот момент.

1) Переходим в каталог с фронтендом (мы сейчас в каталоге с бекендом):

cd ../glitchtip-frontend/

2) Изменяем файл Dockerfile.prod на этот:

# добавляем сборку фронта и собираем фронт
FROM node:22 as frontend-build
WORKDIR /src
COPY . .
RUN npm install
RUN npm run build-prod

# используем наш 
FROM glitchtip-backend:patched
# можем поменять версию, если есть желание
ARG FRONTEND_GLITCHTIP_VERSION=local
ENV GLITCHTIP_VERSION ${FRONTEND_GLITCHTIP_VERSION}
# забираем наш фронт в итоговый образ
COPY --from=frontend-build /src/dist/glitchtip-frontend/browser /code/dist
RUN ./manage.py collectstatic --noinput

3) Собираем итоговый образ

docker build -f Dockerfile.prod -t glitchtip:patched .

Готово! Образ будет собран на вашей машине под именем glitchtip:patched, можете его использовать как вам вздумается.

Для включения регистрации через SSO нужно будет передать переменную среды ENABLE_SOCIAL_APP_USER_REGISTRATION с флагом "True".