diff --git a/scripts/check-db-permissions.sh b/scripts/check-db-permissions.sh new file mode 100755 index 0000000..d882987 --- /dev/null +++ b/scripts/check-db-permissions.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# Script zum Prüfen der Datenbank-Berechtigungen und User-Konfiguration + +echo "🔍 Datenbank-Berechtigungen und User-Check" +echo "==========================================" +echo "" + +# Prüfe User im Container +echo "👤 User im Container:" +docker exec hoerdle whoami +echo "" + +# Prüfe UID/GID +echo "🆔 UID/GID des laufenden Prozesses:" +docker exec hoerdle id +echo "" + +# Prüfe Datenbankdatei +echo "💾 Datenbank-Datei-Informationen (im Container):" +docker exec hoerdle ls -lh /app/data/prod.db +echo "" + +# Prüfe Datenbankverzeichnis +echo "📁 Datenbankverzeichnis-Berechtigungen (im Container):" +docker exec hoerdle ls -ld /app/data +echo "" + +# Prüfe ob Datei schreibbar ist +echo "✍️ Schreibbarkeitstest:" +if docker exec hoerdle sh -c "test -w /app/data/prod.db && echo '✅ Datei ist schreibbar' || echo '❌ Datei ist NICHT schreibbar'"; then + echo " Datei ist schreibbar" +else + echo " ❌ Datei ist NICHT schreibbar!" +fi + +# Prüfe ob Verzeichnis schreibbar ist +if docker exec hoerdle sh -c "test -w /app/data && echo '✅ Verzeichnis ist schreibbar' || echo '❌ Verzeichnis ist NICHT schreibbar'"; then + echo " Verzeichnis ist schreibbar" +else + echo " ❌ Verzeichnis ist NICHT schreibbar!" +fi +echo "" + +# Prüfe Host-Seite +echo "🖥️ Host-Seite Berechtigungen:" +ls -ld ./data +ls -lh ./data/prod.db +echo "" + +# Prüfe Container-User aus docker-compose +echo "🐳 Docker Compose Konfiguration:" +if [ -f "docker-compose.yml" ]; then + grep -E "^[[:space:]]*user:" docker-compose.yml || echo " Keine 'user:' Direktive gefunden" +else + echo " ⚠️ docker-compose.yml nicht gefunden (verwende example?)" +fi +echo "" + +# Empfehlung +echo "💡 Empfehlung:" +echo " Wenn die Datei 'node:node' gehört und Container als 'root' läuft," +echo " sollte es funktionieren. Falls nicht, setze Besitzer auf root:" +echo " sudo chown root:root ./data/prod.db" +echo " Oder entferne 'user: root' aus docker-compose.yml" + diff --git a/scripts/fix-database-permissions.sh b/scripts/fix-database-permissions.sh index e7424b3..080f1ea 100755 --- a/scripts/fix-database-permissions.sh +++ b/scripts/fix-database-permissions.sh @@ -48,14 +48,15 @@ if [ -f "$DB_FILE" ]; then chmod 664 "$DB_DIR"/*.db-journal 2>/dev/null || true fi -# Setze Besitzer (wichtig: Container läuft als root laut docker-compose.yml) -# Aber falls ein bestimmter User benötigt wird: -if [ -n "$SUDO_USER" ]; then - echo "👤 Setze Besitzer auf: $SUDO_USER" - chown -R "$SUDO_USER:$SUDO_USER" "$DB_DIR" -else - echo "ℹ️ Container läuft als root, keine Besitzer-Änderung nötig" -fi +# Setze Besitzer: Container läuft als root, aber Datei kann node:node gehören +# SQLite funktioniert, solange root die Datei lesen/schreiben kann +# Setze Besitzer auf root, damit es definitiv funktioniert +echo "👤 Setze Besitzer auf root (Container läuft als root)" +chown -R root:root "$DB_DIR" 2>/dev/null || { + echo "⚠️ Konnte Besitzer nicht ändern (vielleicht keine sudo-Rechte?)" + echo " Versuche mit sudo..." + sudo chown -R root:root "$DB_DIR" || echo "❌ Besitzer-Änderung fehlgeschlagen" +} # Prüfe aktuelle Berechtigungen echo "" diff --git a/scripts/quick-fix-db.sh b/scripts/quick-fix-db.sh new file mode 100755 index 0000000..ee0566a --- /dev/null +++ b/scripts/quick-fix-db.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# Quick-Fix für Datenbank-Berechtigungen + +set -e + +echo "🔧 Quick-Fix für Datenbank-Berechtigungen..." +echo "" + +cd "$(dirname "$0")/.." || exit 1 + +# Setze Berechtigungen +echo "1️⃣ Setze Berechtigungen..." +chmod 775 ./data +chmod 664 ./data/prod.db 2>/dev/null || echo " ⚠️ Datenbankdatei nicht gefunden" + +# Setze Besitzer auf root (Container läuft als root) +echo "2️⃣ Setze Besitzer auf root..." +sudo chown -R root:root ./data + +# Zeige aktuelle Berechtigungen +echo "" +echo "✅ Berechtigungen gesetzt!" +echo "" +echo "📋 Aktuelle Berechtigungen:" +ls -ld ./data +ls -lh ./data/prod.db 2>/dev/null || echo " (Datei nicht gefunden)" +echo "" + +# Teste im Container +echo "3️⃣ Teste Zugriff im Container..." +if docker ps | grep -q hoerdle; then + echo " Container läuft, teste Zugriff..." + docker exec hoerdle sh -c "test -r /app/data/prod.db && echo '✅ Lesbar' || echo '❌ Nicht lesbar'" + docker exec hoerdle sh -c "test -w /app/data/prod.db && echo '✅ Schreibbar' || echo '❌ Nicht schreibbar'" + docker exec hoerdle sh -c "test -w /app/data && echo '✅ Verzeichnis schreibbar' || echo '❌ Verzeichnis nicht schreibbar'" +else + echo " ⚠️ Container läuft nicht" +fi + +echo "" +echo "🔄 Starte Container neu..." +docker compose restart hoerdle 2>/dev/null || echo " ⚠️ Konnte Container nicht neustarten (vielleicht läuft docker compose nicht?)" + +echo "" +echo "✅ Fertig! Prüfe jetzt die Logs:" +echo " docker logs hoerdle --tail=50" +