#!/bin/bash # Fix npm Cache-Berechtigungen für /opt/ypchat set -e TARGET_DIR="/opt/ypchat" USER="www-data" GROUP="www-data" echo "==========================================" echo "npm Cache-Berechtigungen reparieren" echo "==========================================" # Prüfe ob als root ausgeführt if [ "$EUID" -ne 0 ]; then echo "FEHLER: Dieses Skript muss als root ausgeführt werden!" echo "Bitte führe aus: sudo ./fix-npm-cache.sh" exit 1 fi # Erstelle lokales npm Cache-Verzeichnis NPM_CACHE_DIR="$TARGET_DIR/.npm-cache" echo "Erstelle lokales npm Cache-Verzeichnis: $NPM_CACHE_DIR" mkdir -p "$NPM_CACHE_DIR" chown -R $USER:$GROUP "$NPM_CACHE_DIR" echo "✓ Cache-Verzeichnis erstellt" # Setze npm Cache für root (falls nötig) echo "Setze npm Cache-Konfiguration..." npm config set cache "$NPM_CACHE_DIR" --global 2>/dev/null || true # Setze npm Cache für www-data (mit HOME gesetzt, damit npm nicht /var/www/.npmrc verwendet) echo "Setze npm Cache für $USER..." sudo -u $USER bash -c "HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR'" sudo -u $USER bash -c "cd '$TARGET_DIR/client' && HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR'" echo "✓ npm Cache konfiguriert" # Optional: Repariere /var/www/.npm falls vorhanden if [ -d "/var/www/.npm" ]; then echo "Repariere /var/www/.npm Berechtigungen..." chown -R $USER:$GROUP "/var/www/.npm" 2>/dev/null || true echo "✓ /var/www/.npm repariert" else echo "ℹ /var/www/.npm existiert nicht (ok, wird nicht benötigt)" fi # Repariere /var/www/.npmrc falls vorhanden if [ -f "/var/www/.npmrc" ]; then echo "Repariere /var/www/.npmrc Berechtigungen..." chown $USER:$GROUP "/var/www/.npmrc" 2>/dev/null || true chmod 644 "/var/www/.npmrc" 2>/dev/null || true echo "✓ /var/www/.npmrc repariert" else echo "ℹ /var/www/.npmrc existiert nicht (wird erstellt falls nötig)" # Erstelle .npmrc in /var/www mit korrekten Berechtigungen touch "/var/www/.npmrc" 2>/dev/null || true chown $USER:$GROUP "/var/www/.npmrc" 2>/dev/null || true chmod 644 "/var/www/.npmrc" 2>/dev/null || true fi # Erstelle lokale .npmrc im App-Verzeichnis echo "Erstelle lokale .npmrc im App-Verzeichnis..." cat > "$TARGET_DIR/.npmrc" << EOF cache=$NPM_CACHE_DIR EOF chown $USER:$GROUP "$TARGET_DIR/.npmrc" echo "✓ Lokale .npmrc erstellt" echo "" echo "==========================================" echo "npm Cache repariert!" echo "==========================================" echo "" echo "Du kannst jetzt die Installation fortsetzen:" echo " cd $TARGET_DIR" echo " sudo -u $USER bash -c \"HOME='$TARGET_DIR' npm run install:all\"" echo "" echo "Oder verwende das deploy-to-opt.sh Skript erneut." echo ""