# Automatische Subdomain-Hosts-Synchronisation

## Problem
Nach jedem Neustart waren die Subdomains nicht mehr im `/etc/hosts` eingetragen, was zu Verbindungsproblemen führte. Das musste manuell mit `sync_dev_hosts.sh` behoben werden.

## Lösung

Diese Lösung bietet drei Ebenen der Automatisierung:

Hinweis für neue Systeme: `sudo ./setup-first-install.sh` richtet den Hosts-Sync-Service zusammen mit dem restlichen Basis-Setup automatisch ein.

### 1. Automatische Sync bei Container-Start
Dateien: `Website/launch_prod.sh` und `Website/launch_dev.sh`

- Nach `docker compose up` wird `sync_dev_hosts.sh` automatisch aufgerufen
- Ein Background-Daemon sorgt für regelmäßige Synchronisation
- **Development:** Alle 30 Sekunden (konfigurierbar via `DEV_HOSTS_REFRESH_INTERVAL`)
- **Production:** Alle 3600 Sekunden/1 Stunde (konfigurierbar via `PROD_HOSTS_REFRESH_INTERVAL`)

### 2. systemd Service für permanente Automatisierung
Dateien: `invario-hosts-sync.service`, `setup-hosts-sync.sh`

Der systemd-Service stellt sicher, dass die Hosts-Synchronisation auch nach System-Reboots aktiviert bleibt.

#### Installation:
```bash
cd /home/max/Dokumente/repos/Key-service-Server
sudo ./setup-hosts-sync.sh
```

#### Status überprüfen:
```bash
sudo systemctl status invario-hosts-sync
```

#### Logs anschauen:
```bash
sudo journalctl -u invario-hosts-sync -f
```

#### Deinstallation:
```bash
sudo systemctl disable invario-hosts-sync
sudo systemctl stop invario-hosts-sync
sudo rm /etc/systemd/system/invario-hosts-sync.service
sudo systemctl daemon-reload
```

### 3. Manuelle Synchronisation
Jederzeit manuell möglich:
```bash
cd /home/max/Dokumente/repos/Key-service-Server/Website
./sync_dev_hosts.sh
```

## Wie es funktioniert

1. **sync_dev_hosts.sh** liest alle Subdomains aus der MongoDB-Datenbank
2. Aktualisiert `/etc/hosts` mit den gültigen Subdomains
3. Läuft auf verschiedenen Ebenen:
   - Beim Container-Start (launch_prod.sh/launch_dev.sh)
   - Im Hintergrund als regelmäßiger Job
   - Als systemd-Service für permanente Überwachung

## Konfiguration

### Environment-Variablen:

**Für Development:**
```bash
DEV_HOSTS_IP=192.168.1.100      # Optionale IP (Standard: auto-detect)
DEV_HOSTS_REFRESH_INTERVAL=30   # Sekunden zwischen Syncs (0 = deaktiviert)
```

**Für Production:**
```bash
PROD_HOSTS_REFRESH_INTERVAL=3600  # Sekunden zwischen Syncs (0 = deaktiviert)
```

## Troubleshooting

### Service startet nicht
```bash
# Logs prüfen
sudo journalctl -u invario-hosts-sync --no-pager

# Service neu laden
sudo systemctl daemon-reload
sudo systemctl restart invario-hosts-sync
```

### Hosts werden nicht aktualisiert
```bash
# Manuell testen
./Website/sync_dev_hosts.sh

# MongoDB-Verbindung prüfen
docker compose ps mongodb
docker compose logs mongodb
```

### Berechtigungen
Das Skript benötigt Zugriff auf `/etc/hosts`. Normalerweise wird es als `root` ausgeführt:
```bash
# Wenn nötig mit sudo
sudo ./Website/sync_dev_hosts.sh
```
