Skip to content

feat: add OpenReplay service template#9000

Closed
bhubadinn wants to merge 1 commit intocoollabsio:nextfrom
bhubadinn:feat/add-openreplay-service-v3
Closed

feat: add OpenReplay service template#9000
bhubadinn wants to merge 1 commit intocoollabsio:nextfrom
bhubadinn:feat/add-openreplay-service-v3

Conversation

@bhubadinn
Copy link

@bhubadinn bhubadinn commented Mar 15, 2026

Changes

screenshot-openreplay-frontend

Adds OpenReplay (open-source session replay and product analytics) as a one-click service template.

Stack: PostgreSQL 17, ClickHouse 25.11, Valkey 8, MinIO — plus 3 idempotent init containers (schema existence check before applying), an nginx reverse proxy routing 8 path prefixes, and 12 application microservices. YAML anchors keep shared env DRY. All secrets auto-generated via SERVICE_PASSWORD_ variables.

Two fixes compared to previous attempts:

  • MinIO healthcheck: curl replaced with mc ready local — the ghcr.io/openreplay/minio:2025 image ships mc but not curl/wget
  • minio-init wait loop: same fix — replaced curl -sf http://minio:9000/minio/health/live with mc alias set which also doubles as the alias setup

Issues

Category

  • Bug fix
  • Improvement
  • New feature
  • Adding new one click service
  • Fixing or updating existing one click service

Preview

AI Assistance

  • AI was NOT used to create this PR
  • AI was used (please describe below)

If AI was used:

  • Tools used: Claude Code
  • How extensively: Used to help structure the compose file. All service images, health checks, init idempotency logic, and nginx routing reviewed manually against OpenReplay v1.26.0 documentation. Docker Compose testing performed to validate infra and init containers.

Testing

Tested with Docker Compose locally.

Infrastructure (all healthy):

  • PostgreSQL (ghcr.io/openreplay/postgres:17): started, healthcheck passed, accepting connections
  • ClickHouse (clickhouse/clickhouse-server:25.11-alpine): started, healthcheck passed
  • Valkey (ghcr.io/openreplay/valkey:8): started, healthcheck passed
  • MinIO (ghcr.io/openreplay/minio:2025): started, healthcheck passed after fixing from curl to mc ready local

Init containers (all exited 0):

  • db-init: PostgreSQL schema applied — CREATE INDEX, COMMIT, "PostgreSQL schema initialized"
  • ch-init: ClickHouse schema applied — "ClickHouse schema initialized"
  • minio-init: All 9 buckets created (mobs, sessions-assets, static, sourcemaps, sessions-mobile-assets, quickwit, vault-data, records, spots), sessions-assets set to public download

nginx: Started successfully, routing requests through the openreplay.conf config.

Idempotency confirmed: re-running db-init and ch-init after schema existed printed "Schema already exists, skipping" and exited 0.

Contributor Agreement

Important

  • I have read and understood the contributor guidelines. If I have failed to follow any guideline, I understand that this PR may be closed without review.
  • I have searched existing issues and pull requests (including closed ones) to ensure this isn't a duplicate.
  • I have tested all the changes thoroughly with a local development instance of Coolify and I am confident that they will work as expected when a maintainer tests them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants