Monitoring: - docker-compose.monitoring.yml — opt-in Loki + Grafana stack - Loki config with 6-year retention (HIPAA compliant) - Grafana auto-provisioned with Loki datasource + PedScribe dashboard (login activity, failed logins, clinical actions, API calls, log viewer) - Logger ships to Loki in parallel with PostgreSQL (fire-and-forget) - Labels: app=pedscribe, type=audit|api_call|access, category, action Usage: docker compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d Grafana at localhost:3003 (admin/pedscribe) Notifications: - ntfy push support (src/utils/notify.js) - Notifications on: login, password change, registration - Self-hosted, no Firebase dependency Mobile: - Biometric auth on app launch (Face ID/Touch ID/fingerprint) - PIN/password fallback, auto-prompt, skip option
38 lines
729 B
YAML
38 lines
729 B
YAML
auth_enabled: false
|
|
|
|
server:
|
|
http_listen_port: 3100
|
|
|
|
common:
|
|
path_prefix: /loki
|
|
storage:
|
|
filesystem:
|
|
chunks_directory: /loki/chunks
|
|
rules_directory: /loki/rules
|
|
replication_factor: 1
|
|
ring:
|
|
kvstore:
|
|
store: inmemory
|
|
|
|
schema_config:
|
|
configs:
|
|
- from: 2024-01-01
|
|
store: tsdb
|
|
object_store: filesystem
|
|
schema: v13
|
|
index:
|
|
prefix: index_
|
|
period: 24h
|
|
|
|
limits_config:
|
|
# Retain logs for 6 years (HIPAA minimum)
|
|
retention_period: 2190d
|
|
ingestion_rate_mb: 10
|
|
ingestion_burst_size_mb: 20
|
|
|
|
compactor:
|
|
working_directory: /loki/compactor
|
|
compaction_interval: 10m
|
|
retention_enabled: true
|
|
retention_delete_delay: 2h
|
|
delete_request_store: filesystem
|