Features: - Multi-channel notifications (Email + Telegram) - User-configurable notification settings per channel - Telegram bot integration with rich messages, location pins, and inline buttons - QR code generation for easy bot access (@myidbot support) - Admin UI for notification settings management - Test functionality for Telegram connection - Comprehensive documentation Implementation: - lib/telegram-service.ts: Telegram API integration - lib/notification-settings-db.ts: Database layer for user notification preferences - lib/geofence-notifications.ts: Extended for parallel multi-channel delivery - API routes for settings management and testing - Admin UI with QR code display and step-by-step instructions - Database table: UserNotificationSettings Documentation: - docs/telegram.md: Technical implementation guide - docs/telegram-anleitung.md: User guide with @myidbot instructions - docs/telegram-setup.md: Admin setup guide - README.md: Updated NPM scripts section Docker: - Updated Dockerfile to copy public directory - Added TELEGRAM_BOT_TOKEN environment variable - Integrated notification settings initialization in db:init 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
61 lines
2.1 KiB
YAML
61 lines
2.1 KiB
YAML
services:
|
|
# Location Tracker App (Next.js)
|
|
app:
|
|
build: .
|
|
container_name: location-tracker
|
|
env_file:
|
|
- .env
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- NODE_ENV=production
|
|
- AUTH_SECRET=${AUTH_SECRET}
|
|
- NEXTAUTH_URL=${NEXTAUTH_URL:-http://localhost:3000}
|
|
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
|
|
- MQTT_BROKER_URL=${MQTT_BROKER_URL:-mqtt://mosquitto:1883}
|
|
- MQTT_PUBLIC_BROKER_URL=${MQTT_PUBLIC_BROKER_URL}
|
|
- MQTT_USERNAME=${MQTT_ADMIN_USERNAME:-admin}
|
|
- MQTT_PASSWORD=${MQTT_ADMIN_PASSWORD:-admin}
|
|
- MOSQUITTO_PASSWORD_FILE=/mosquitto/config/password.txt
|
|
- MOSQUITTO_ACL_FILE=/mosquitto/config/acl.txt
|
|
- MOSQUITTO_CONTAINER_NAME=mosquitto
|
|
- MOSQUITTO_ADMIN_USERNAME=${MQTT_ADMIN_USERNAME:-admin}
|
|
- MOSQUITTO_ADMIN_PASSWORD=${MQTT_ADMIN_PASSWORD:-admin}
|
|
# SMTP Configuration
|
|
- SMTP_HOST=${SMTP_HOST}
|
|
- SMTP_PORT=${SMTP_PORT:-587}
|
|
- SMTP_SECURE=${SMTP_SECURE:-false}
|
|
- SMTP_USER=${SMTP_USER}
|
|
- SMTP_PASS=${SMTP_PASS}
|
|
- SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL}
|
|
- SMTP_FROM_NAME=${SMTP_FROM_NAME:-Location Tracker}
|
|
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
|
# Telegram Configuration
|
|
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./public:/app/public # Mount public directory for static files
|
|
- ./mosquitto/config:/mosquitto/config # Lokaler Ordner statt Docker Volume
|
|
- /var/run/docker.sock:/var/run/docker.sock # Für Mosquitto Reload
|
|
depends_on:
|
|
- mosquitto
|
|
restart: unless-stopped
|
|
|
|
# Eclipse Mosquitto MQTT Broker
|
|
mosquitto:
|
|
image: eclipse-mosquitto:2
|
|
container_name: mosquitto
|
|
ports:
|
|
- "1883:1883" # MQTT
|
|
- "9001:9001" # WebSocket
|
|
volumes:
|
|
- ./mosquitto/config:/mosquitto/config # Lokaler Ordner mit mosquitto.conf
|
|
- ./mosquitto/logs:/mosquitto/log # Lokaler Ordner für Logs
|
|
- mosquitto_data:/mosquitto/data
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
# mosquitto_config und mosquitto_logs werden als bind mounts verwendet
|
|
mosquitto_data:
|
|
name: mosquitto_data
|