From 32b1941d60c06413547ef784deb299c6cd36794d Mon Sep 17 00:00:00 2001 From: Siddhartha Date: Fri, 7 Oct 2022 19:15:47 +0530 Subject: [PATCH] add posthog - product analytics software --- posthog/docker-compose.yml | 167 +++++++++++++++++++++++++++++++++++++ posthog/posthog.env | 3 + 2 files changed, 170 insertions(+) create mode 100644 posthog/docker-compose.yml create mode 100644 posthog/posthog.env diff --git a/posthog/docker-compose.yml b/posthog/docker-compose.yml new file mode 100644 index 0000000..501204e --- /dev/null +++ b/posthog/docker-compose.yml @@ -0,0 +1,167 @@ +# +# `docker-compose` file used ONLY for hobby deployments. +# +# Please take a look at https://posthog.com/docs/self-host/deploy/hobby +# for more info. +# +version: '3' + +services: + db: + image: postgres:12-alpine + restart: on-failure + environment: + POSTGRES_USER: posthog + POSTGRES_DB: posthog + POSTGRES_PASSWORD: posthog + volumes: + - postgres-data:/var/lib/postgresql/data + networks: + - posthog + redis: + image: redis:6.2.7-alpine + restart: on-failure + command: redis-server --maxmemory-policy allkeys-lru --maxmemory 200mb + networks: + - posthog + - reverseproxy-nw + clickhouse: + # + # Note: please keep the default version in sync across + # `posthog` and the `charts-clickhouse` repos + # + image: ${CLICKHOUSE_SERVER_IMAGE:-clickhouse/clickhouse-server:22.3} + restart: on-failure + depends_on: + - kafka + - zookeeper + volumes: + - ./posthog/posthog/idl:/idl + - ./posthog/docker/clickhouse/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d + - ./posthog/docker/clickhouse/config.xml:/etc/clickhouse-server/config.xml + - ./posthog/docker/clickhouse/users.xml:/etc/clickhouse-server/users.xml + - clickhouse-data:/var/lib/clickhouse + networks: + - posthog + zookeeper: + image: zookeeper:3.7.0 + restart: on-failure + volumes: + - zookeeper-datalog:/datalog + - zookeeper-data:/data + - zookeeper-logs:/logs + networks: + - posthog + kafka: + image: bitnami/kafka:2.8.1-debian-10-r99 + restart: on-failure + depends_on: + - zookeeper + environment: + KAFKA_BROKER_ID: 1001 + KAFKA_CFG_RESERVED_BROKER_MAX_ID: 1001 + KAFKA_CFG_LISTENERS: PLAINTEXT://:9092 + KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 + KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181 + ALLOW_PLAINTEXT_LISTENER: 'true' + networks: + - posthog + + worker: &worker + image: posthog/posthog:$POSTHOG_APP_TAG + command: ./bin/docker-worker-celery --with-scheduler + restart: on-failure + environment: + SENTRY_DSN: $SENTRY_DSN + SITE_URL: https://$DOMAIN + DISABLE_SECURE_SSL_REDIRECT: 'true' + IS_BEHIND_PROXY: 'true' + DATABASE_URL: 'postgres://posthog:posthog@db:5432/posthog' + CLICKHOUSE_HOST: 'clickhouse' + CLICKHOUSE_DATABASE: 'posthog' + CLICKHOUSE_SECURE: 'false' + CLICKHOUSE_VERIFY: 'false' + KAFKA_URL: 'kafka://kafka' + REDIS_URL: 'redis://redis:6379/' + SECRET_KEY: $POSTHOG_SECRET + PGHOST: db + PGUSER: posthog + PGPASSWORD: posthog + DEPLOYMENT: hobby + depends_on: + - db + - redis + - clickhouse + - kafka + - object_storage + networks: + - posthog + - reverseproxy-nw + web: + <<: *worker + command: /compose/start + restart: on-failure + volumes: + - ./compose:/compose + networks: + - posthog + - reverseproxy-nw + # caddy: + # image: caddy:2.6.1 + # restart: unless-stopped + # volumes: + # - ./Caddyfile:/etc/caddy/Caddyfile + # depends_on: + # - web + # networks: + # - posthog + # - reverseproxy-nw + plugins: + image: posthog/posthog:$POSTHOG_APP_TAG + command: ./bin/plugin-server --no-restart-loop + restart: on-failure + environment: + DATABASE_URL: 'postgres://posthog:posthog@db:5432/posthog' + KAFKA_HOSTS: 'kafka:9092' + REDIS_URL: 'redis://redis:6379/' + CLICKHOUSE_HOST: 'clickhouse' + depends_on: + - db + - redis + - clickhouse + - kafka + - object_storage + networks: + - posthog + + object_storage: + image: minio/minio:RELEASE.2022-09-17T00-09-45Z.fips + restart: on-failure + volumes: + - object_storage:/data + environment: + MINIO_ROOT_USER: object_storage_root_user + MINIO_ROOT_PASSWORD: object_storage_root_password + entrypoint: sh + command: -c 'mkdir -p /data/posthog && minio server --address ":19000" --console-address ":19001" /data' # create the 'posthog' bucket before starting the service + networks: + - posthog + + asyncmigrationscheck: + <<: *worker + command: python manage.py run_async_migrations --check + restart: 'no' + scale: 0 + +volumes: + zookeeper-data: + zookeeper-datalog: + zookeeper-logs: + object_storage: + postgres-data: + clickhouse-data: + +networks: + reverseproxy-nw: + external: true + posthog: diff --git a/posthog/posthog.env b/posthog/posthog.env new file mode 100644 index 0000000..df47cd6 --- /dev/null +++ b/posthog/posthog.env @@ -0,0 +1,3 @@ +POSTHOG_SECRET=changeme +SENTRY_DSN='https://public@sentry.example.com/1' +DOMAIN=posthog.example.com