Files
caddy-proxy-manager/drizzle/meta/_journal.json
fuomag9 8be69d2774 feat: add analytics dashboard with traffic monitoring
- Parse Caddy access logs every 30s into traffic_events SQLite table
- GeoIP country lookup via maxmind (GeoLite2-Country.mmdb)
- 90-day retention with automatic purge
- Analytics page with interval (24h/7d/30d) and per-host filtering:
  - Stats cards: total requests, unique IPs, blocked count, block rate
  - Requests-over-time area chart (ApexCharts)
  - SVG world choropleth map (d3-geo + topojson-client, React 19 compatible)
  - Top countries table with flag emojis
  - HTTP protocol donut chart
  - Top user agents horizontal bar chart
  - Recent blocked requests table with pagination
- Traffic (24h) summary card on Overview page linking to analytics
- 7 authenticated API routes under /api/analytics/
- Share caddy-logs volume with web container (read-only)
- group_add caddy GID to web container for log file read access

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 20:43:23 +01:00

76 lines
1.5 KiB
JSON

{
"version": "5",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "6",
"when": 1762515724134,
"tag": "0000_initial",
"breakpoints": true
},
{
"idx": 1,
"version": "6",
"when": 1766854292252,
"tag": "0001_adorable_sally_floyd",
"breakpoints": true
},
{
"idx": 2,
"version": "6",
"when": 1766880443160,
"tag": "0002_perfect_hedge_knight",
"breakpoints": true
},
{
"idx": 3,
"version": "6",
"when": 1769262874211,
"tag": "0003_instances",
"breakpoints": true
},
{
"idx": 4,
"version": "6",
"when": 1770395358533,
"tag": "0004_slimy_grim_reaper",
"breakpoints": true
},
{
"idx": 5,
"version": "6",
"when": 1770395358534,
"tag": "0005_remove_static_response",
"breakpoints": true
},
{
"idx": 6,
"version": "6",
"when": 1770395358535,
"tag": "0006_remove_redirects",
"breakpoints": true
},
{
"idx": 7,
"version": "6",
"when": 1740441600000,
"tag": "0007_linking_tokens",
"breakpoints": true
},
{
"idx": 8,
"version": "6",
"when": 1740960000000,
"tag": "0008_unique_provider_subject",
"breakpoints": true
},
{
"idx": 9,
"version": "6",
"when": 1772129593846,
"tag": "0009_watery_bill_hollister",
"breakpoints": true
}
]
}