From f016c4dbc89ca71b3a68bb5b119de71489a7cf02 Mon Sep 17 00:00:00 2001 From: Peter Achberger Date: Fri, 7 Oct 2022 01:33:05 +0200 Subject: [PATCH] added GlitchTip (#749) * added GlitchTip * make prettier --- public/v4/apps/glitchtip.yml | 114 ++++++++++++++++++++++++++++++++++ public/v4/logos/glitchtip.png | Bin 0 -> 18358 bytes 2 files changed, 114 insertions(+) create mode 100644 public/v4/apps/glitchtip.yml create mode 100644 public/v4/logos/glitchtip.png diff --git a/public/v4/apps/glitchtip.yml b/public/v4/apps/glitchtip.yml new file mode 100644 index 0000000..5324ff8 --- /dev/null +++ b/public/v4/apps/glitchtip.yml @@ -0,0 +1,114 @@ +captainVersion: 4 +services: + $$cap_appname-postgres: + image: postgres:$$cap_POSTGRES_VERSION + environment: + POSTGRES_USER: glitchtip + POSTGRES_PASSWORD: $$cap_POSTGRES_PASSWORD + volumes: + - $$cap_appname-postgres-data:/var/lib/postgresql/data + caproverExtra: + notExposeAsWebApp: 'true' + $$cap_appname-redis: + environment: + REDIS_PASSWORD: $$cap_REDIS_PASSWORD + caproverExtra: + dockerfileLines: + - FROM redis:$$cap_REDIS_VERSION + - CMD exec redis-server --requirepass "$$cap_REDIS_PASSWORD" + notExposeAsWebApp: 'true' + $$cap_appname: + depends_on: + - $$cap_appname-postgres + - $$cap_appname-redis + environment: + DATABASE_URL: postgres://glitchtip:$$cap_POSTGRES_PASSWORD@srv-captain--$$cap_appname-postgres:5432/glitchtip + REDIS_URL: redis://:$$cap_REDIS_PASSWORD@srv-captain--$$cap_appname-redis:6379 + SECRET_KEY: $$cap_SECRET + PORT: 8000 + EMAIL_URL: $$cap_SMTP + GLITCHTIP_DOMAIN: http://$$cap_appname.$$cap_root_domain + DEFAULT_FROM_EMAIL: $$cap_FROM_EMAIL + CELERY_WORKER_CONCURRENCY: $$cap_CELERY_WORKER_CONCURRENCY + caproverExtra: + containerHttpPort: '8000' + dockerfileLines: + - FROM glitchtip/glitchtip:$$cap_GLITCHTIP_VERSION + - CMD ./manage.py migrate && ./bin/start.sh + $$cap_appname-worker: + depends_on: + - $$cap_appname-postgres + - $$cap_appname-redis + environment: + DATABASE_URL: postgres://glitchtip:$$cap_POSTGRES_PASSWORD@srv-captain--$$cap_appname-postgres:5432/glitchtip + REDIS_URL: redis://:$$cap_REDIS_PASSWORD@srv-captain--$$cap_appname-redis:6379 + SECRET_KEY: $$cap_SECRET + PORT: 8000 + EMAIL_URL: $$cap_SMTP + GLITCHTIP_DOMAIN: http://$$cap_appname.$$cap_root_domain + DEFAULT_FROM_EMAIL: $$cap_FROM_EMAIL + CELERY_WORKER_CONCURRENCY: $$cap_CELERY_WORKER_CONCURRENCY + caproverExtra: + dockerfileLines: + - FROM glitchtip/glitchtip:$$cap_GLITCHTIP_VERSION + - CMD ./bin/run-celery-with-beat.sh + notExposeAsWebApp: 'true' +caproverOneClickApp: + variables: + - id: $$cap_GLITCHTIP_VERSION + label: GlitchTip Version + defaultValue: 'v2.0.5' + description: Check out their Docker page for the valid tags https://hub.docker.com/r/glitchtip/glitchtip/tags + validRegex: /^([^\s^\/])+$/ + - id: $$cap_POSTGRES_VERSION + label: Postgres Version + defaultValue: '14' + description: Check out their Docker page for the valid tags https://hub.docker.com/_/postgres/tags + validRegex: /^([^\s^\/])+$/ + - id: $$cap_REDIS_VERSION + label: Redis Version + defaultValue: '7.0.5-alpine' + description: Check out their docker page for the valid tags https://hub.docker.com/_/redis?tab=tags + validRegex: /^([^\s^\/])+$/ + - id: $$cap_CELERY_WORKER_CONCURRENCY + defaultValue: '2' + description: Number of concurrent celery workers. Defaults to number of CPU cores. Highly recommended to change. Our sample docker compose file defaults this to 2, to avoid unwanted and unnecessary scaling. + label: Celery Worker Concurrency + - id: $$cap_SMTP + defaultValue: smtp://email:password@smtp_url:port + description: See https://glitchtip.com/documentation/install#configuration. + label: SMTP Configuration + - id: $$cap_FROM_EMAIL + defaultValue: info@example.com + description: Default from email address. + label: Email Address + - id: $$cap_POSTGRES_PASSWORD + defaultValue: $$cap_gen_random_hex(24) + description: This is the PostgreSQL password for user 'glitchtip'. + label: PostgreSQL Password + validRegex: /^([^\s^\/])+$/ + - id: $$cap_REDIS_PASSWORD + defaultValue: $$cap_gen_random_hex(24) + description: This is the PostgreSQL password for user 'glitchtip'. + label: Redis Password + validRegex: /^([^\s^\/])+$/ + - id: $$cap_SECRET + label: Secret Key + defaultValue: $$cap_gen_random_hex(32) + description: Secret key used by glitchtip. + validRegex: /^([^\s^\/])+$/ + instructions: + start: |- + GlitchTip makes monitoring software easy. Track errors, monitor performance, and check site uptime all in one place. Our app is compatible with Sentry client SDKs, but easier to run. + + Recommended system requirements: 1GB RAM, x86 or arm64 CPU + + Documentation: https://glitchtip.com/documentation + end: |- + GlitchTip instance successfully deployed. It will allow you to register an account, afterwards registrations will be closed by default. + If you want to use a different domain change the `GLITCHTIP_DOMAIN` variable. + See https://glitchtip.com/documentation/install for additional environment variables available. + displayName: GlitchTip + isOfficial: true + description: Simple, open source error tracking. + documentation: This docker-compose is taken from https://glitchtip.com/assets/docker-compose.sample.yml diff --git a/public/v4/logos/glitchtip.png b/public/v4/logos/glitchtip.png new file mode 100644 index 0000000000000000000000000000000000000000..17bb7614c68d75b793b50863c452cf3855747df3 GIT binary patch literal 18358 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 literal 0 HcmV?d00001