# =============================================================================
# Felhom Controller Configuration
# =============================================================================
# Location: /opt/docker/felhom-controller/controller.yaml
#
# This file contains ONLY infrastructure and customer identity config.
# Application-specific configuration (passwords, paths, etc.) is handled
# interactively during first deployment via the dashboard UI and stored
# per-app in /opt/docker/stacks/<app>/app.yaml
#
# Environment variable overrides: FELHOM_<SECTION>_<KEY>
# (e.g., FELHOM_CUSTOMER_DOMAIN=example.hu)
# =============================================================================

# --- Customer identity ---
customer:
  id: "demo-felhom"                    # Unique customer identifier
  name: "Demo Ügyfél"                  # Display name (shown on dashboard)
  domain: "demo-felhom.eu"             # Base domain for all services
  email: ""                            # Customer notification email (optional)
  telegram_chat_id: ""                 # Telegram notifications (optional, future)

# --- Infrastructure secrets ---
infrastructure:
  cf_tunnel_token: ""                  # Cloudflare Tunnel token
  cf_api_token: ""                     # Cloudflare API token (DNS-01 challenge)

# --- Paths (system-level only) ---
paths:
  stacks_dir: "/opt/docker/stacks"     # Where compose files live
  data_dir: "/opt/docker/felhom-controller/data"
  backup_dir: "/srv/backups"
  db_dump_dir: "/srv/backups/db-dumps"
  hdd_path: ""                         # Optional: HDD mount path (e.g., /mnt/hdd)

# --- System ---
system:
  reserved_memory_mb: 384              # Memory reserved for OS (excluded from app budget)

# --- Web UI ---
web:
  listen: ":8080"
  # Bcrypt hash. Empty = first-visit setup prompt.
  password_hash: ""
  session_secret: ""                   # Auto-generated on first start

# --- Git synchronization ---
git:
  repo_url: "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git"
  branch: "main"
  sync_interval: "15m"
  username: ""
  token: ""

# --- Stack management ---
stacks:
  protected:
    - "traefik"
    - "cloudflared"
    - "felhom-controller"
    - "filebrowser"
  update_window: "03:00-05:00"
  compose_command: ""

# --- Backup ---
backup:
  enabled: true
  restic_repo: "/srv/backups/restic-repo"
  restic_password_file: "/opt/docker/felhom-controller/data/restic-password"
  db_dump_schedule: "02:30"
  restic_schedule: "03:00"
  retention:
    keep_daily: 7
    keep_weekly: 4
    keep_monthly: 6
  prune_schedule: "weekly"

# --- Monitoring ---
monitoring:
  enabled: true
  healthchecks_base: "https://status.felhom.eu"
  ping_uuids:
    db_dump: "CHANGEME-uuid-for-db-dump"
    backup: "CHANGEME-uuid-for-backup"
    system_health: "CHANGEME-uuid-for-system-health"
  system_health_interval: "5m"
  health_check_schedule: "06:00"
  thresholds:
    disk_warn_percent: 80
    disk_crit_percent: 90
    backup_max_age_hours: 36
    cpu_warn_percent: 90
    memory_warn_percent: 85
    temperature_warn_celsius: 75

# --- Self-update ---
self_update:
  enabled: true
  check_interval: "6h"
  image: "gitea.dooplex.hu/admin/felhom-controller"
  auto_update: false
  health_timeout_seconds: 60

# --- Notifications ---
notifications:
  customer_events:
    - "disk_warning"
    - "backup_failed"
    - "update_available"
    - "security_update"
  operator_events:
    - "disk_critical"
    - "backup_failed"
    - "self_update_failed"
    - "container_unhealthy"

# --- Logging ---
logging:
  level: "info"
  file: ""
  max_size_mb: 10
  max_files: 3

# --- Assets ---
assets:
  # App logos, screenshots, and descriptions are baked into the container
  # image at build time (from the felhom.eu website assets).
  # Served locally at /static/assets/ — no external dependency.
  # The source URL is only used during image build, not at runtime.
  source_url: "https://felhom.eu"
