🚧 Work in Progress 🚧
This configuration is currently under development and is not yet working. Please check back later for updates.🏗️ ARM64 Deployment Target 🏗️
This setup is specifically designed for ARM64 architecture deployment environments. Once the service is stable and working on ARM64, we plan to migrate and add support for AMD64 architecture.🤝 Open to Collaboration 🤝
This project welcomes contributions! Feel free to submit pull requests, report issues, or suggest improvements.
This repository contains a Docker Compose configuration for running the Highlight application stack, which includes a full observability and monitoring platform with OpenTelemetry collection, error tracking, and performance monitoring capabilities.
Highlight is an open-source observability platform that provides:
- Full OpenTelemetry (OTEL) support for traces, metrics, and logs
- Error tracking and monitoring
- Performance monitoring and metrics
- Real-time debugging capabilities
- Multiple log ingestion protocols (Fluent Forward, Syslog, AWS Firehose)
The stack consists of the following services:
- highlight-frontend: React-based web interface (port 3000)
- highlight-backend: Backend API service (port 8082)
- highlight-collector: OpenTelemetry Collector for ingesting observability data
- postgres: PostgreSQL database with pgvector extension (ankane/pgvector:v0.5.1)
- clickhouse: ClickHouse database for analytics and time-series data (clickhouse-server:24.12-alpine)
- kafka: Apache Kafka for message streaming (confluentinc/cp-kafka:7.7.0)
- zookeeper: Apache Zookeeper for Kafka coordination (confluentinc/cp-zookeeper:7.7.0)
- redis: Redis for caching and session storage (redis:7-alpine)
- Docker and Docker Compose installed
- At least 4GB of available RAM
- The following environment variables configured in your deployment platform (e.g., Coolify):
SERVICE_FQDN_BACKEND
: Backend API domainSERVICE_FQDN_FRONTEND
: Frontend domainADMIN_PASSWORD
(optional, defaults to "highlightadmin")ENVIRONMENT
(optional, defaults to "dev")AUTH_MODE
(optional, defaults to "Simple")
-
Create a new service in Coolify:
- In your Coolify dashboard, create a new "Docker Compose" service
- Copy the contents of
docker-compose.yml
from this repository into the empty Docker Compose configuration
-
Configure required environment variables in Coolify:
SERVICE_FQDN_FRONTEND
: Your frontend domain (e.g.,highlight.yourdomain.com
)SERVICE_FQDN_BACKEND
: Your backend API domain (e.g.,highlight-api.yourdomain.com
)ADMIN_PASSWORD
: Admin password (optional, defaults to "highlightadmin")ENVIRONMENT
: Environment name (optional, defaults to "dev")AUTH_MODE
: Authentication mode (optional, defaults to "Simple")
Coolify will automatically create volumes for persistent data storage
-
Deploy the stack:
- Click "Deploy" in Coolify to start all services
- Wait for all health checks to pass (especially PostgreSQL)
-
Access the application:
- Frontend: Your configured frontend FQDN
- Backend API: Your configured backend FQDN
The stack includes the following key environment configurations:
- Database Configuration:
- PostgreSQL:
postgres:5432
with pgvector extension - ClickHouse:
clickhouse:9000
for time-series data
- PostgreSQL:
- Message Queue:
- Kafka:
kafka:9092
with Zookeeper coordination
- Kafka:
- Cache:
- Redis:
redis:6379
with persistence enabled
- Redis:
- OpenTelemetry Collection:
- OTLP endpoints for traces, metrics, and logs
- Multiple ingestion protocols supported
-
PostgreSQL:
- Username:
postgres
- Password:
postgres
- Database:
postgres
- Username:
-
Admin Access:
- Default admin password:
highlightadmin
(configurable viaADMIN_PASSWORD
)
- Default admin password:
The stack includes comprehensive health checks for:
- PostgreSQL: Database readiness check with pg_isready
- ClickHouse: HTTP ping endpoint check
- Kafka: Broker API version check
- Redis: Redis CLI ping check
- Backend: HTTP health endpoint check
- Frontend: HTTP root endpoint check
All services have proper dependency management to ensure correct startup order
The following volumes are used for persistent data:
postgres-data
: PostgreSQL dataclickhouse-data
: ClickHouse dataclickhouse-logs
: ClickHouse logskafka-data
: Kafka datazookeeper-data
: Zookeeper datazookeeper-log
: Zookeeper logsredis-data
: Redis datahighlight-data
: Highlight application data
All services communicate through a custom bridge network named highlight
.
Once running, you can:
- Access the Highlight dashboard through the frontend URL
- Configure your applications to send telemetry data via:
- OpenTelemetry Protocol (OTLP) on ports 4317 (gRPC) and 4318 (HTTP)
- Fluent Forward protocol on port 24224
- Syslog (RFC5424) on ports 6513 (UDP) and 6514 (TCP)
- AWS Firehose for CloudWatch metrics (port 4433) and logs (port 8433)
- TCP log ingestion on port 34302
- Monitor application performance, errors, and logs
- Set up alerts and notifications
-
Services not starting:
- Check that all environment variables are properly set
- Ensure Docker has sufficient resources allocated
- Verify volume paths are accessible
-
Database connection issues:
- Wait for PostgreSQL health check to pass
- Check network connectivity between services
-
Frontend not loading:
- Verify backend service is running and healthy
- Check that FQDN variables are correctly configured
- Ensure all health checks are passing
-
OpenTelemetry data not appearing:
- Verify the collector service is running
- Check that your application is configured to send data to the correct OTLP endpoints
- Review collector logs for any ingestion errors
In Coolify:
- View logs for individual services through the Coolify dashboard
- Use the "Logs" tab for each service to monitor real-time output
We welcome contributions to this project! Here's how you can help:
- Fork the repository and create your feature branch from
main
- Create a feature branch with a descriptive name (e.g.,
feature/fix-clickhouse-startup
) - Make your changes following the existing code style and conventions
- Test your changes thoroughly with the Docker Compose stack
- Document your changes in the commit messages and update relevant documentation
- Submit a pull request with a clear description of what you've changed and why
- 🐛 Bug fixes - Help us identify and resolve issues
- 📚 Documentation improvements - Better explanations, examples, or corrections
- ⚡ Performance optimizations - Make the stack run more efficiently
- 🔧 Configuration improvements - Better default settings or new options
- 🏗️ Architecture enhancements - Improvements to the overall setup
- 📦 AMD64 support - Help us prepare for multi-architecture deployment
- Keep PRs focused and atomic (one feature/fix per PR)
- Include clear commit messages explaining the changes
- Test your changes in both development and production-like environments
- Update documentation if your changes affect user-facing functionality
- Be responsive to feedback and ready to make adjustments
If you're new to the project, check out the Issues page for good first issues or areas where help is needed.
This project follows the licensing terms of the Highlight application. Please refer to the official Highlight repository for license details.
For issues related to:
- Highlight application: Visit the official Highlight repository
- This Docker setup: Create an issue in this repository
- Deployment questions: Check the Coolify or your deployment platform documentation