# Debug Version Display - Remote Server Checklist

## 1. Überprüfe Git-Tags auf dem Remote-Server

```bash
# Im Projekt-Verzeichnis auf dem Remote-Server
cd /path/to/hoerdle

# Zeige alle Tags
git tag -l

# Zeige aktuellen Tag/Version
git describe --tags --always

# Wenn keine Tags angezeigt werden:
git fetch --tags
git describe --tags --always
```

**Erwartetes Ergebnis:** Sollte `v0.1.0.2` oder ähnlich zeigen

---

## 2. Überprüfe die version.txt im Container

```bash
# Zeige den Inhalt der Version-Datei im laufenden Container
docker exec hoerdle cat /app/version.txt

# Sollte die Version zeigen, z.B. "v0.1.0.2"
```

**Erwartetes Ergebnis:** Die aktuelle Version, nicht "unknown" oder "dev"

---

## 3. Überprüfe die Umgebungsvariable im Container

```bash
# Zeige alle Umgebungsvariablen
docker exec hoerdle env | grep APP_VERSION

# Sollte APP_VERSION=v0.1.0.2 oder ähnlich zeigen
```

**Erwartetes Ergebnis:** `APP_VERSION=v0.1.0.2`

---

## 4. Überprüfe die Container-Logs beim Start

```bash
# Zeige die letzten Logs beim Container-Start
docker logs hoerdle | head -20

# Suche speziell nach Version-Ausgaben
docker logs hoerdle | grep -i version
```

**Erwartetes Ergebnis:** Eine Zeile wie "App version: v0.1.0.2"

---

## 5. Teste die API direkt

```bash
# Rufe die Version-API auf
curl http://localhost:3010/api/version

# Sollte JSON zurückgeben: {"version":"v0.1.0.2"}
```

**Erwartetes Ergebnis:** `{"version":"v0.1.0.2"}`

---

## 6. Überprüfe wann der Container gebaut wurde

```bash
# Zeige Image-Informationen
docker images | grep hoerdle

# Zeige detaillierte Container-Informationen
docker inspect hoerdle | grep -i created
```

**Wichtig:** Wenn das Image vor deinem letzten Deployment erstellt wurde, wurde es noch nicht neu gebaut!

---

## 7. Überprüfe Build-Logs

```bash
# Baue das Image neu und beobachte die Ausgabe
docker compose build --no-cache 2>&1 | tee build.log

# Suche nach der Version-Ausgabe im Build
grep -i "Building version" build.log
```

**Erwartetes Ergebnis:** Eine Zeile wie "Building version: v0.1.0.2"

---

## Häufige Probleme und Lösungen

### Problem 1: Tags nicht auf dem Server
```bash
git fetch --tags
git describe --tags --always
```

### Problem 2: Container wurde nicht neu gebaut
```bash
docker compose build --no-cache
docker compose up -d
```

### Problem 3: Alte version.txt im Container
```bash
# Stoppe Container, lösche Image, baue neu
docker compose down
docker rmi $(docker images | grep hoerdle | awk '{print $3}')
docker compose build --no-cache
docker compose up -d
```

### Problem 4: .git Verzeichnis nicht im Build-Context
```bash
# Überprüfe ob .git existiert
ls -la .git

# Überprüfe .dockerignore (sollte .git NICHT ausschließen)
cat .dockerignore 2>/dev/null || echo "Keine .dockerignore Datei"
```

---

## Vollständiger Neustart (wenn nichts anderes hilft)

```bash
# 1. Stoppe alles
docker compose down

# 2. Lösche alte Images
docker rmi $(docker images | grep hoerdle | awk '{print $3}')

# 3. Hole neueste Änderungen und Tags
git pull
git fetch --tags

# 4. Überprüfe Version lokal
git describe --tags --always

# 5. Baue komplett neu
docker compose build --no-cache

# 6. Starte Container
docker compose up -d

# 7. Überprüfe Logs
docker logs hoerdle | grep -i version

# 8. Teste API
curl http://localhost:3010/api/version
```

---

## Debugging-Befehl für alle Checks auf einmal

```bash
echo "=== Git Tags ===" && \
git describe --tags --always && \
echo -e "\n=== version.txt im Container ===" && \
docker exec hoerdle cat /app/version.txt 2>/dev/null || echo "Container läuft nicht oder Datei fehlt" && \
echo -e "\n=== APP_VERSION Env ===" && \
docker exec hoerdle env | grep APP_VERSION || echo "Variable nicht gesetzt" && \
echo -e "\n=== API Response ===" && \
curl -s http://localhost:3010/api/version && \
echo -e "\n\n=== Container Created ===" && \
docker inspect hoerdle | grep -i created | head -1
```

Kopiere diesen Befehl und führe ihn auf dem Remote-Server aus. Schicke mir die Ausgabe!
