Security / Dependency vulnerabilities (push) Successful in 44s
Security / Static analysis (push) Successful in 9s
CI / Format & lint (push) Successful in 10s
CI / Test suite (push) Successful in 26s
Security / License report (push) Successful in 50s
Docs / Validate documentation (push) Successful in 16s
The reverse proxy is a separate VPS on the tailnet, so a loopback-only ntfy was unreachable from it. install_ntfy.sh now binds the host's Tailscale IP (NTFY_LISTEN overrides). New NTFY_PUBLISH_URL: where the monitor POSTs, separate from the public NTFY_SERVER subscribers see, so an alert never waits on DNS or the proxy (first cycle logged 502s from Cloudflare while the domain was not yet proxied).
114 lines
3.1 KiB
Bash
114 lines
3.1 KiB
Bash
# Northern Thailand Ping River Monitor Configuration
|
|
# Copy this file to .env and customize for your environment
|
|
|
|
# Database Configuration
|
|
DB_TYPE=postgresql
|
|
# Options: sqlite, mysql, postgresql, influxdb, victoriametrics
|
|
|
|
# SQLite Configuration (default)
|
|
WATER_DB_PATH=water_levels.db
|
|
|
|
# VictoriaMetrics Configuration
|
|
VM_HOST=localhost
|
|
VM_PORT=8428
|
|
VM_URL=
|
|
|
|
# InfluxDB Configuration
|
|
INFLUX_HOST=localhost
|
|
INFLUX_PORT=8086
|
|
INFLUX_DATABASE=ping_river_monitoring
|
|
INFLUX_USERNAME=
|
|
INFLUX_PASSWORD=
|
|
|
|
# PostgreSQL Configuration (Remote Server)
|
|
# Option 1: Full connection string (URL encode special characters in password)
|
|
POSTGRES_CONNECTION_STRING=postgresql://username:url_encoded_password@your-postgres-host:5432/water_monitoring
|
|
|
|
# Option 2: Individual components (password will be automatically URL encoded)
|
|
POSTGRES_HOST=your-postgres-host
|
|
POSTGRES_PORT=5432
|
|
POSTGRES_DB=water_monitoring
|
|
POSTGRES_USER=username
|
|
POSTGRES_PASSWORD=your:password@with!special#chars
|
|
|
|
# Examples for connection string:
|
|
# - Local: postgresql://postgres:password@localhost:5432/water_monitoring
|
|
# - Remote: postgresql://user:pass@192.168.1.100:5432/water_monitoring
|
|
# - With special chars: postgresql://user:my%3Apass%40word@host:5432/db
|
|
# - With SSL: postgresql://user:pass@host:port/db?sslmode=require
|
|
# - Connection pooling: postgresql://user:pass@host:port/db?pool_size=20&max_overflow=0
|
|
|
|
# Special character URL encoding:
|
|
# : → %3A @ → %40 # → %23 ? → %3F & → %26 / → %2F % → %25
|
|
|
|
# MySQL Configuration
|
|
MYSQL_CONNECTION_STRING=mysql://user:password@localhost:3306/ping_river_monitoring
|
|
|
|
# API Configuration
|
|
API_HOST=0.0.0.0
|
|
API_PORT=8000
|
|
API_WORKERS=1
|
|
# Public ThaiWater API key used to add Ping-basin water-level sensors.
|
|
THAIWATER_API_KEY=
|
|
|
|
# Data Collection Settings
|
|
SCRAPING_INTERVAL_HOURS=1
|
|
REQUEST_TIMEOUT=30
|
|
MAX_RETRIES=3
|
|
RETRY_DELAY_SECONDS=60
|
|
|
|
# Data Retention
|
|
DATA_RETENTION_DAYS=365
|
|
|
|
# Logging Configuration
|
|
LOG_LEVEL=INFO
|
|
LOG_FILE=water_monitor.log
|
|
|
|
# Security (for production)
|
|
SECRET_KEY=your-secret-key-here
|
|
API_KEY=your-api-key-here
|
|
|
|
# Monitoring
|
|
ENABLE_METRICS=true
|
|
ENABLE_HEALTH_CHECKS=true
|
|
|
|
# Geographic Settings
|
|
TIMEZONE=Asia/Bangkok
|
|
DEFAULT_LATITUDE=18.7875
|
|
DEFAULT_LONGITUDE=99.0045
|
|
|
|
# External Services
|
|
NOTIFICATION_EMAIL=
|
|
SMTP_SERVER=
|
|
SMTP_PORT=587
|
|
SMTP_USERNAME=
|
|
SMTP_PASSWORD=
|
|
|
|
# Public push notifications via self-hosted ntfy (https://ntfy.sh, single binary).
|
|
# Leave NTFY_SERVER empty to disable. Topics published: <prefix>-<station>-warning,
|
|
# <prefix>-<station>-danger, <prefix>-warning, <prefix>-danger, <prefix>-p1-outlook,
|
|
# <prefix>-status. See docs/NOTIFICATIONS.md.
|
|
NTFY_SERVER=
|
|
# Where the monitor POSTs (defaults to NTFY_SERVER). Use the local ntfy
|
|
# address (loopback or Tailscale IP) so publishing does not depend on
|
|
# DNS / the reverse proxy being up.
|
|
NTFY_PUBLISH_URL=
|
|
NTFY_TOPIC_PREFIX=ping
|
|
NTFY_TOKEN=
|
|
PUBLIC_URL=https://water.buildfor.life/
|
|
|
|
# Matrix Alerting Configuration
|
|
MATRIX_HOMESERVER=https://matrix.org
|
|
MATRIX_ACCESS_TOKEN=
|
|
MATRIX_ROOM_ID=
|
|
|
|
# Grafana Integration
|
|
GRAFANA_URL=http://localhost:3000
|
|
|
|
# Alert Configuration
|
|
ALERT_MAX_AGE_HOURS=2
|
|
ALERT_CHECK_INTERVAL_MINUTES=15
|
|
|
|
# Development Settings
|
|
DEBUG=false
|
|
DEVELOPMENT_MODE=false |