-
Notifications
You must be signed in to change notification settings - Fork 0
CONFIGURATION
Version: 0.2.0
Letzte Aktualisierung: 11.02.2026
Dieses Dokument beschreibt alle Konfigurationsoptionen für das OpenCloudTouch-Backend.
OpenCloudTouch unterstützt 3 Konfigurationsmethoden (in Reihenfolge der Priorität):
- Umgebungsvariablen (höchste Priorität)
-
Konfigurationsdatei (
config.yaml) - Eingebaute Standardwerte (Fallback)
Die Konfiguration wird von Pydantic Settings mit automatischer Validierung verarbeitet.
Alle Umgebungsvariablen verwenden das Präfix OCT_, um Konflikte zu vermeiden.
| Variable | Typ | Standard | Beschreibung |
|---|---|---|---|
OCT_HOST |
string | 0.0.0.0 |
API-Bindungsadresse (0.0.0.0 für Docker verwenden) |
OCT_PORT |
int | 7777 |
API-Port |
OCT_LOG_LEVEL |
enum | INFO |
Log-Level: DEBUG, INFO, WARNING, ERROR, CRITICAL
|
OCT_DB_PATH |
path | /data/oct.db |
Pfad zur SQLite-Datenbankdatei |
| Variable | Typ | Standard | Beschreibung |
|---|---|---|---|
OCT_DISCOVERY_ENABLED |
bool | true |
SSDP/UPnP-Automatischerkennung aktivieren |
OCT_DISCOVERY_TIMEOUT |
int | 10 |
SSDP-Erkennungs-Timeout in Sekunden |
OCT_MANUAL_DEVICE_IPS |
list | [] |
Kommagetrennte Geräte-IPs (Fallback) |
Beispiel:
export OCT_MANUAL_DEVICE_IPS="192.168.178.78,192.168.178.79"| Variable | Typ | Standard | Beschreibung |
|---|---|---|---|
OCT_MOCK_MODE |
bool | false |
Mock-Geräte zum Testen verwenden (keine echte Hardware nötig) |
OCT_CORS_ORIGINS |
list | ["*"] |
Erlaubte CORS-Origins (kommagetrennt) |
OCT_MAX_DEVICE_POLL_INTERVAL |
int | 30 |
Gerätestatus-Abfrageintervall (Sekunden) |
OpenCloudTouch kann die Konfiguration aus einer YAML-Datei laden.
Konfigurationsdatei als Volume einbinden:
docker run -d \
--name opencloudtouch \
--network host \
-v /path/to/config.yaml:/app/config.yaml:ro \
-v oct-data:/data \
opencloudtouch:latestEinbindung über Docker Compose:
# docker-compose.yml
services:
opencloudtouch:
image: opencloudtouch:latest
network_mode: host
volumes:
- ./config.yaml:/app/config.yaml:ro # Read-only
- oct-data:/data# config.yaml - OpenCloudTouch Konfiguration
# Umgebungsvariablen haben Vorrang vor dieser Datei
# Grundeinstellungen
host: "0.0.0.0"
port: 7777
log_level: "INFO"
db_path: "/data/oct.db"
# Erkennungseinstellungen
discovery:
enabled: true
timeout: 10
manual_ips:
- "192.168.178.78"
- "192.168.178.79"
# CORS-Einstellungen
cors:
origins:
- "http://localhost:5173" # Vite Dev-Server
- "https://myapp.example.com"
# Mock-Modus (zum Testen ohne Hardware)
mock_mode: false
# Geräte-Abfrage
max_device_poll_interval: 30Ladepriorität:
-
OCT_PORT=8080(Umgebungsvariable) überschreibtport: 7777(config.yaml) -
port: 7777(config.yaml) überschreibt den eingebauten Standardwert7777
# .env.development
OCT_LOG_LEVEL=DEBUG
OCT_MOCK_MODE=true
OCT_DISCOVERY_ENABLED=false
OCT_MANUAL_DEVICE_IPS=192.168.1.100,192.168.1.101# docker-compose.yml
environment:
OCT_LOG_LEVEL: INFO
OCT_DISCOVERY_ENABLED: true
OCT_DB_PATH: /data/oct.db# GitHub Actions / CI
export OCT_MOCK_MODE=true
export OCT_DB_PATH=:memory:
export OCT_LOG_LEVEL=WARNINGOpenCloudTouch validiert die Konfiguration beim Start mithilfe von Pydantic.
docker logs opencloudtouch
# [INFO] Environment validation passed
# [INFO] Data directory OK
# [INFO] Database exists
# [INFO] Starting application on 0.0.0.0:7777docker run -e OCT_PORT=invalid opencloudtouch:latest
# [ERROR] OCT_PORT must be numeric (got: invalid)
# Exit code: 1Umgebungsvariable:
docker run -e OCT_PORT=8080 -p 8080:8080 opencloudtouch:latestKonfigurationsdatei:
# config.yaml
port: 8080docker run \
-e OCT_DISCOVERY_ENABLED=false \
-e OCT_MANUAL_DEVICE_IPS="192.168.1.10,192.168.1.20" \
opencloudtouch:latestdocker run -e OCT_LOG_LEVEL=DEBUG opencloudtouch:latestdocker run \
-e OCT_DB_PATH=/data/custom.db \
-v /my/data:/data \
opencloudtouch:latestdocker run -e OCT_MOCK_MODE=true opencloudtouch:latestÜber Logs:
docker logs opencloudtouch | grep "Starting application"
# [INFO] Starting application on 0.0.0.0:7777
# [INFO] Database: /data/oct.db
# [INFO] Discovery: trueÜber die API:
curl http://localhost:7777/health
# {"status":"healthy","version":"0.2.0"}Problem: „Data directory is not writable"
# Berechtigungen korrigieren:
docker exec opencloudtouch ls -ld /data
# drwxr-xr-x 2 oct oct 4096 ...Problem: „OCT_LOG_LEVEL must be one of: DEBUG, INFO, ..."
# Nur gültige Werte verwenden:
export OCT_LOG_LEVEL=INFO # ✅
export OCT_LOG_LEVEL=info # ❌ (Groß-/Kleinschreibung beachten!)Problem: Geräte werden nicht gefunden
# Debug-Protokollierung aktivieren:
docker run -e OCT_LOG_LEVEL=DEBUG opencloudtouch:latest
# Logs auf SSDP-Erkennungsdetails prüfenDie Konfiguration ist definiert in: apps/backend/src/opencloudtouch/core/config.py
from pydantic_settings import BaseSettings, SettingsConfigDict
class AppConfig(BaseSettings):
"""Application configuration with environment variable support."""
model_config = SettingsConfigDict(
env_prefix="OCT_",
case_sensitive=False,
env_file=".env",
env_file_encoding="utf-8"
)
# Core
host: str = "0.0.0.0"
port: int = 7777
log_level: str = "INFO"
db_path: str = "/data/oct.db"
# Discovery
discovery_enabled: bool = True
discovery_timeout: int = 10
manual_device_ips: list[str] = []
# Mock mode
mock_mode: bool = False- Umgebungsvariablen in Docker verwenden – Einfacher pro Deployment zu überschreiben
- Konfigurationsdatei für die Entwicklung verwenden – In Git versionieren, im Team teilen
-
Niemals Geheimnisse committen –
.env.localverwenden (in.gitignore) - Beim Start validieren – Die Anwendung bricht bei ungültiger Konfiguration sofort ab
- Standardwerte dokumentieren – Benutzer sollten wissen, was ohne Konfiguration passiert
🇩🇪 Benutzerhandbuch
🇬🇧 User Guide
Development
API & Architecture
- REST API
- ADR 001 Clean Architecture
- ADR 002 FastAPI App State
- ADR 003 SSDP Discovery
- ADR 004 React/TS/Vite
Technical Reference
Legal