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 для удобства:
2) Склонируйте репозиторий бекенда и фронтенда:
git clone https://gitlab.com/glitchtip/glitchtip-backend
git clone https://gitlab.com/glitchtip/glitchtip-frontend
Патчинг бекенда¶
1) Перейдите в каталог glitchtip-backend
:
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) Примените патч:
Сборка бекенда¶
Теперь нам нужно собрать бекенд. Я использую docker, поэтому моя команда будет следующей:
Этот образ в дальнейшем нам понадобится для конечной сборки.
Изменение Dockerfile.prod в фронтенде¶
Оригинальный Dockerfile.prod не содержит в себе возможности сборку фронтенда, он собирается в CI. Исправим этот момент.
1) Переходим в каталог с фронтендом (мы сейчас в каталоге с бекендом):
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) Собираем итоговый образ
Готово! Образ будет собран на вашей машине под именем glitchtip:patched
, можете его использовать как вам вздумается.
Для включения регистрации через SSO нужно будет передать переменную среды ENABLE_SOCIAL_APP_USER_REGISTRATION
с флагом "True".