mirror of
https://github.com/umami-software/umami.git
synced 2026-02-05 13:17:19 +01:00
Enhanced Umami Analytics with First8 Marketing integration for hyper-personalized recommendation engine. Database Enhancements: - PostgreSQL 17 with Apache AGE 1.6.0 (graph database) - TimescaleDB 2.23.0 (time-series optimization) - Extended schema for WooCommerce event tracking - Custom tables for recommendation engine integration Features Added: - Real-time ETL pipeline to recommendation engine - Extended event tracking (WordPress + WooCommerce) - Graph database for relationship mapping - Time-series optimization for analytics queries - Custom migrations for hyper-personalization Documentation: - Updated README with integration details - Added system architecture documentation - Documented data flow and components - Preserved original Umami Software credits Integration Components: - First8 Marketing Track plugin (event tracking) - Recommendation Engine (ML backend) - First8 Marketing Recommendation Engine plugin (presentation) Status: Production-ready Version: Based on Umami latest + First8 Marketing enhancements
140 lines
3.4 KiB
Markdown
140 lines
3.4 KiB
Markdown
# PostgreSQL 17 + Apache AGE + TimescaleDB Docker Image
|
|
|
|
This directory contains the Dockerfile and initialization scripts for building a custom PostgreSQL 17 image with Apache AGE 1.6.0 and TimescaleDB 2.23.0 extensions.
|
|
|
|
## What's Included
|
|
|
|
- **PostgreSQL 17** - Latest PostgreSQL version
|
|
- **Apache AGE 1.6.0** - Graph database extension for user journey tracking
|
|
- **TimescaleDB 2.23.0** - Time-series database extension for analytics
|
|
|
|
## Building the Image
|
|
|
|
```bash
|
|
# From the umami directory
|
|
docker build -t postgres:17-age-timescaledb -f docker/postgres/Dockerfile docker/postgres
|
|
```
|
|
|
|
## Using with Docker Compose
|
|
|
|
The image is automatically built when using `docker-compose.upgraded.yml`:
|
|
|
|
```bash
|
|
# Start the upgraded stack
|
|
docker-compose -f docker-compose.upgraded.yml up -d
|
|
|
|
# View logs
|
|
docker-compose -f docker-compose.upgraded.yml logs -f
|
|
|
|
# Stop the stack
|
|
docker-compose -f docker-compose.upgraded.yml down
|
|
```
|
|
|
|
## Running Migrations
|
|
|
|
After the database is up, run the Prisma migrations:
|
|
|
|
```bash
|
|
# Generate Prisma client
|
|
pnpm prisma generate
|
|
|
|
# Run migrations
|
|
pnpm prisma migrate deploy
|
|
```
|
|
|
|
## Verifying Extensions
|
|
|
|
Connect to the database and verify extensions are installed:
|
|
|
|
```bash
|
|
# Connect to PostgreSQL
|
|
docker-compose -f docker-compose.upgraded.yml exec db psql -U umami -d umami
|
|
|
|
# Check installed extensions
|
|
SELECT extname, extversion FROM pg_extension WHERE extname IN ('timescaledb', 'age');
|
|
|
|
# Check Apache AGE graph
|
|
SELECT * FROM ag_catalog.ag_graph;
|
|
|
|
# Check TimescaleDB hypertables
|
|
SELECT * FROM timescaledb_information.hypertables;
|
|
```
|
|
|
|
## Configuration
|
|
|
|
The PostgreSQL instance is configured with optimized settings for performance:
|
|
|
|
- `shared_buffers = 256MB`
|
|
- `effective_cache_size = 1GB`
|
|
- `maintenance_work_mem = 128MB`
|
|
- `max_connections = 200`
|
|
|
|
Adjust these in `docker-compose.upgraded.yml` based on your server resources.
|
|
|
|
## Initialization Scripts
|
|
|
|
Scripts in `init-scripts/` run automatically when the container is first created:
|
|
|
|
- `01-init-extensions.sh` - Installs TimescaleDB and Apache AGE extensions
|
|
|
|
## Troubleshooting
|
|
|
|
### Extensions not loading
|
|
|
|
If extensions fail to load, check the logs:
|
|
|
|
```bash
|
|
docker-compose -f docker-compose.upgraded.yml logs db
|
|
```
|
|
|
|
### Build failures
|
|
|
|
If the build fails, ensure you have enough disk space and memory:
|
|
|
|
```bash
|
|
# Check Docker resources
|
|
docker system df
|
|
|
|
# Clean up if needed
|
|
docker system prune -a
|
|
```
|
|
|
|
### Connection issues
|
|
|
|
Verify the database is healthy:
|
|
|
|
```bash
|
|
docker-compose -f docker-compose.upgraded.yml ps
|
|
docker-compose -f docker-compose.upgraded.yml exec db pg_isready -U umami
|
|
```
|
|
|
|
## Production Deployment
|
|
|
|
For production, use a managed PostgreSQL service or dedicated server instead of Docker. See the main [DEPLOYMENT.md](../../recommendation-engine/docs/DEPLOYMENT.md) for details.
|
|
|
|
## Data Persistence
|
|
|
|
Database data is stored in the `umami-db-data` Docker volume. To backup:
|
|
|
|
```bash
|
|
# Backup
|
|
docker-compose -f docker-compose.upgraded.yml exec db pg_dump -U umami umami > backup.sql
|
|
|
|
# Restore
|
|
docker-compose -f docker-compose.upgraded.yml exec -T db psql -U umami umami < backup.sql
|
|
```
|
|
|
|
## Security Notes
|
|
|
|
- Change default passwords in production
|
|
- Use environment variables for sensitive data
|
|
- Enable SSL/TLS for database connections
|
|
- Restrict network access to the database port
|
|
|
|
## Support
|
|
|
|
For issues or questions, refer to:
|
|
- [PostgreSQL Documentation](https://www.postgresql.org/docs/17/)
|
|
- [Apache AGE Documentation](https://age.apache.org/docs/)
|
|
- [TimescaleDB Documentation](https://docs.timescale.com/)
|
|
|