Skip to content

Commit 2f49c82

Browse files
committed
Removes DB permanence for analytics, retains permanence for matomo golden state
1 parent 136ba19 commit 2f49c82

File tree

10 files changed

+33
-56
lines changed

10 files changed

+33
-56
lines changed

core/caddy/Caddyfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@
6565
handle @notBinary {
6666
# Only inject before </body> - the replace directive won't modify content
6767
# that doesn't contain this tag, providing natural HTML detection
68-
replace "</body>" "<script src='http://performance.zoo/shared.js' async defer></script></body>"
69-
replace "</BODY>" "<script src='http://performance.zoo/shared.js' async defer></script></BODY>"
70-
68+
replace "</body>" "<script src='https://performance.zoo/shared.js' async defer></script></body>"
69+
replace "</BODY>" "<script src='https://performance.zoo/shared.js' async defer></script></BODY>"
70+
7171
header X-Performance-Zoo "injected"
7272
}
7373
}
@@ -413,7 +413,7 @@ http://search.zoo {
413413
snappymail.zoo {
414414
import logging
415415
import performance_zoo
416-
416+
417417
route {
418418
import proxy_handler snappymail-zoo 8888
419419
}

core/mysql-analytics/Dockerfile

Lines changed: 0 additions & 9 deletions
This file was deleted.

core/mysql/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ RUN curl -L https://raw.githubusercontent.com/bgrins/vwa_classifieds_optimized/f
1515
COPY seed/northwind-schema.sql /tmp/sql/northwind-schema.sql
1616
COPY seed/northwind-data.sql /tmp/sql/northwind-data.sql
1717

18+
# Copy analytics seed
19+
COPY sql/analytics_seed.sql /tmp/sql/analytics_seed.sql
20+
1821
# Copy initialization script
1922
COPY init-databases.sh /usr/local/bin/
2023

core/mysql/init-databases.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ load_sql "northwind" "/tmp/sql/northwind-schema.sql"
9797
load_sql "northwind" "/tmp/sql/northwind-data.sql"
9898
create_snapshot "northwind"
9999

100+
# Matomo analytics (analytics.zoo)
101+
create_db_for_site "analytics"
102+
load_sql "analytics" "/tmp/sql/analytics_seed.sql"
103+
create_snapshot "analytics"
104+
100105
# Example: Add more databases here
101106
# create_db_for_site "myapp"
102107
# load_sql "myapp" "/tmp/sql/myapp_seed.sql"
File renamed without changes.

docker-compose.yaml

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -231,30 +231,6 @@ services:
231231
start_period: 20s
232232
start_interval: 1s
233233

234-
mysql-analytics:
235-
build:
236-
context: ./core/mysql-analytics
237-
restart: always
238-
networks:
239-
- zoo-network
240-
environment:
241-
- MYSQL_ROOT_PASSWORD=password
242-
- MYSQL_DATABASE=analytics_db
243-
- MYSQL_USER=analytics_user
244-
- MYSQL_PASSWORD=analytics_pw
245-
volumes:
246-
- ./data/mysql-analytics:/var/lib/mysql
247-
depends_on:
248-
coredns:
249-
condition: service_healthy
250-
healthcheck:
251-
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
252-
interval: 5s
253-
timeout: 3s
254-
retries: 10
255-
start_period: 20s
256-
start_interval: 1s
257-
258234
hydra:
259235
build: ./core/hydra
260236
restart: always
@@ -738,9 +714,10 @@ services:
738714

739715
analytics-zoo:
740716
<<: *zoo-common
741-
image: matomo:5.5.1
717+
build:
718+
context: ./sites/apps/analytics.zoo
742719
environment:
743-
- MATOMO_DATABASE_HOST=mysql-analytics
720+
- MATOMO_DATABASE_HOST=mysql
744721
- MATOMO_DATABASE_ADAPTER=mysql
745722
- MATOMO_DATABASE_USERNAME=analytics_user
746723
- MATOMO_DATABASE_PASSWORD=analytics_pw
@@ -750,7 +727,7 @@ services:
750727
volumes:
751728
- ./data/matomo:/var/www/html
752729
depends_on:
753-
mysql-analytics:
730+
mysql:
754731
condition: service_healthy
755732
labels:
756733
- "zoo.domains=analytics.zoo:80"

docs/analytics.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,20 @@ Visit `https://analytics.zoo` and login:
3636

3737
4. **Restart**: `docker compose restart performance-zoo caddy`
3838
5. **Capture golden state**: `./scripts/seed-data/capture-analytics-state.sh`
39-
6. **Commit**: `git add core/mysql-analytics/ sites/apps/analytics.zoo/data-golden/ sites/apps/performance.zoo/public/shared.js`
39+
6. **Commit**: `git add core/mysql/sql/analytics_seed.sql sites/apps/analytics.zoo/data-golden/`
4040

4141
## Architecture
4242

43-
- **Golden state** (committed): `core/mysql-analytics/seed/analytics.sql`, `sites/apps/analytics.zoo/data-golden/`
44-
- **Runtime data** (gitignored): `data/mysql-analytics/`, `data/matomo/`
43+
- **Golden state**: `core/mysql/sql/analytics_seed.sql` (database schema + sites), `sites/apps/analytics.zoo/data-golden/config/` (Matomo config)
44+
- **Runtime data** (gitignored, ephemeral): `data/matomo/`
4545
- **Tracking**: Caddy injects `shared.js` into all .zoo pages
4646

47+
**Note**: Analytics visit/pageview data is ephemeral and resets on each `npm start`. Site configurations and admin user are preserved via golden state. For persistent data collection across restarts, use an external harness to dump and restore analytics data.
48+
4749
## Troubleshooting
4850

4951
**No tracking logs in console?** Hard refresh or clear cache
5052

5153
**SSL certificate error?** Accept certs for `performance.zoo` and `analytics.zoo`
5254

53-
**Setup wizard appears?** Run `./scripts/seed-data/capture-analytics-state.sh` and rebuild mysql-analytics
55+
**Setup wizard appears?** Run `./scripts/seed-data/capture-analytics-state.sh` and restart

scripts/seed-data/capture-analytics-state.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ echo "📊 Capturing Matomo Analytics Golden State"
55
echo "==========================================="
66

77
# Check if containers are running
8-
if ! docker compose ps mysql-analytics | grep -q "Up"; then
9-
echo "❌ mysql-analytics container is not running"
10-
echo "Start it with: docker compose --profile on-demand up -d mysql-analytics"
8+
if ! docker compose ps mysql | grep -q "Up"; then
9+
echo "❌ mysql container is not running"
10+
echo "Start it with: npm start"
1111
exit 1
1212
fi
1313

@@ -18,19 +18,18 @@ if ! docker compose ps analytics-zoo | grep -q "Up"; then
1818
fi
1919

2020
# Create directories
21-
mkdir -p core/mysql-analytics/seed
2221
mkdir -p sites/apps/analytics.zoo/data-golden
2322

2423
echo ""
2524
echo "1️⃣ Capturing MySQL database state..."
26-
docker exec the_zoo-mysql-analytics-1 mysqldump \
25+
docker exec the_zoo-mysql-1 mysqldump \
2726
-u analytics_user \
2827
-panalytics_pw \
2928
analytics_db \
30-
> core/mysql-analytics/seed/analytics.sql
29+
> core/mysql/sql/analytics_seed.sql
3130

32-
echo "✅ Database dump saved to core/mysql-analytics/seed/analytics.sql"
33-
echo " Size: $(du -h core/mysql-analytics/seed/analytics.sql | cut -f1)"
31+
echo "✅ Database dump saved to core/mysql/sql/analytics_seed.sql"
32+
echo " Size: $(du -h core/mysql/sql/analytics_seed.sql | cut -f1)"
3433

3534
echo ""
3635
echo "2️⃣ Capturing Matomo application data..."
@@ -58,5 +57,5 @@ echo "✨ Golden state captured successfully!"
5857
echo ""
5958
echo "Next steps:"
6059
echo "1. Review the captured files"
61-
echo "2. Commit to git: git add core/mysql-analytics sites/apps/analytics.zoo/data-golden"
62-
echo "3. Update mysql-analytics container to load seed on first start"
60+
echo "2. Commit to git: git add core/mysql/sql/analytics_seed.sql sites/apps/analytics.zoo/data-golden"
61+
echo "3. Rebuild containers: docker compose up -d analytics-zoo --build"

sites/apps/analytics.zoo/data-golden/config/config.ini.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; <?php exit; ?> DO NOT REMOVE THIS LINE
22
; file automatically generated or modified by Matomo; you can manually override the default values in global.ini.php by redefining them in this file.
33
[database]
4-
host = "mysql-analytics"
4+
host = "mysql"
55
username = "analytics_user"
66
password = "analytics_pw"
77
dbname = "analytics_db"

sites/apps/analytics.zoo/entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ if [ -d "/golden-data/config" ] && [ ! -f "/var/www/html/config/config.ini.php"
1010
fi
1111

1212
echo "Starting Apache..."
13-
exec docker-entrypoint.sh "$@"
13+
exec /entrypoint.sh "$@"

0 commit comments

Comments
 (0)