Zwei-Server-Setup: Server-spezifische Installation mit automatischer Erkennung für Frontend (m040tbaraspi001) und Backend (Raspberry Pi)
This commit is contained in:
parent
3cefb92658
commit
966a3fb22d
Binary file not shown.
Binary file not shown.
671
myp_installer.sh
671
myp_installer.sh
@ -1049,143 +1049,83 @@ install_frontend() {
|
||||
|
||||
# Frontend Produktions-Deployment
|
||||
deploy_frontend_production() {
|
||||
show_header "Frontend Produktions-Deployment"
|
||||
|
||||
echo -e "${BLUE}MYP Frontend für Produktion deployen (Port 80/443 mit SSL)${NC}"
|
||||
echo ""
|
||||
|
||||
# Docker prüfen
|
||||
if ! check_command docker; then
|
||||
echo -e "${RED}✗ Docker nicht gefunden. Bitte installieren Sie Docker${NC}"
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! check_command docker-compose; then
|
||||
echo -e "${RED}✗ Docker Compose nicht gefunden. Bitte installieren Sie Docker Compose${NC}"
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}✓ Docker gefunden${NC}"
|
||||
echo -e "${GREEN}✓ Docker Compose gefunden${NC}"
|
||||
|
||||
# Frontend-Verzeichnis prüfen
|
||||
if [ ! -d "$FRONTEND_DIR" ]; then
|
||||
echo -e "${RED}✗ Frontend-Verzeichnis nicht gefunden: $FRONTEND_DIR${NC}"
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
cd "$FRONTEND_DIR"
|
||||
|
||||
# Produktions-Konfiguration prüfen
|
||||
if [ ! -f "docker-compose.production.yml" ]; then
|
||||
echo -e "${RED}✗ Produktions-Konfiguration nicht gefunden: docker-compose.production.yml${NC}"
|
||||
echo -e "${YELLOW}Bitte stellen Sie sicher, dass die Produktions-Konfiguration vorhanden ist.${NC}"
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}✓ Produktions-Konfiguration gefunden${NC}"
|
||||
|
||||
# SSL-Zertifikate-Verzeichnis erstellen
|
||||
echo -e "${BLUE}1. SSL-Zertifikate-Verzeichnis erstellen...${NC}"
|
||||
mkdir -p "./certs"
|
||||
echo -e "${GREEN}✓ Zertifikate-Verzeichnis erstellt${NC}"
|
||||
|
||||
# Alte Container stoppen
|
||||
echo -e "${BLUE}2. Alte Container stoppen...${NC}"
|
||||
exec_command "docker-compose -f docker-compose.production.yml down" "Alte Container stoppen" "true"
|
||||
|
||||
# Backend-URL konfigurieren
|
||||
echo -e "${BLUE}3. Backend-URL konfigurieren...${NC}"
|
||||
echo -e "${WHITE}Aktuelle Backend-URLs:${NC}"
|
||||
echo -e "${WHITE}1. Raspberry Pi (raspberrypi:443) [Standard]${NC}"
|
||||
echo -e "${WHITE}2. Lokales Backend (localhost:443)${NC}"
|
||||
echo -e "${WHITE}3. Benutzerdefinierte URL${NC}"
|
||||
|
||||
read -p "Wählen Sie eine Option (1-3, Standard: 1): " backend_choice
|
||||
|
||||
backend_url="https://raspberrypi:443"
|
||||
|
||||
case $backend_choice in
|
||||
2)
|
||||
backend_url="https://localhost:443"
|
||||
;;
|
||||
3)
|
||||
read -p "Geben Sie die Backend-URL ein (z.B. https://192.168.1.100:443): " custom_url
|
||||
if [ -n "$custom_url" ]; then
|
||||
backend_url="$custom_url"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
backend_url="https://raspberrypi:443"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo -e "${GREEN}✓ Backend-URL konfiguriert: $backend_url${NC}"
|
||||
|
||||
# Container bauen und starten
|
||||
echo -e "${BLUE}4. Frontend-Container bauen und starten...${NC}"
|
||||
echo -e "${YELLOW}Dies kann einige Minuten dauern...${NC}"
|
||||
|
||||
# Environment-Variablen für Backend-URL setzen
|
||||
export NEXT_PUBLIC_API_URL="$backend_url"
|
||||
export NEXT_PUBLIC_BACKEND_HOST="${backend_url#https://}"
|
||||
|
||||
exec_command "docker-compose -f docker-compose.production.yml up --build -d" "Frontend-Container starten"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
# Kurz warten und Status prüfen
|
||||
echo -e "${BLUE}5. Container-Status prüfen...${NC}"
|
||||
sleep 5
|
||||
show_header "Frontend Produktions-Deployment (m040tbaraspi001)"
|
||||
|
||||
container_status=$(docker-compose -f docker-compose.production.yml ps --services --filter "status=running")
|
||||
echo -e "${BLUE}Starte Frontend-Produktions-Deployment...${NC}"
|
||||
echo -e "${YELLOW}Backend-Verbindung: https://raspberrypi${NC}"
|
||||
echo ""
|
||||
|
||||
if [ -n "$container_status" ]; then
|
||||
echo -e "${GREEN}✓ Container erfolgreich gestartet!${NC}"
|
||||
|
||||
# Container-Details anzeigen
|
||||
echo ""
|
||||
echo -e "${BLUE}Container Status:${NC}"
|
||||
docker-compose -f docker-compose.production.yml ps
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✅ Frontend Produktions-Deployment erfolgreich abgeschlossen!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🌐 Frontend ist verfügbar unter:${NC}"
|
||||
echo -e "${WHITE} - HTTP: http://localhost:80${NC}"
|
||||
echo -e "${WHITE} - HTTPS: https://localhost:443${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🔧 Backend-Verbindung:${NC}"
|
||||
echo -e "${WHITE} - Backend: $backend_url${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}📋 Nützliche Befehle:${NC}"
|
||||
echo -e "${WHITE} - Logs anzeigen: docker-compose -f docker-compose.production.yml logs -f${NC}"
|
||||
echo -e "${WHITE} - Container stoppen: docker-compose -f docker-compose.production.yml down${NC}"
|
||||
echo -e "${WHITE} - Container neustarten: docker-compose -f docker-compose.production.yml restart${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🔒 SSL-Hinweise:${NC}"
|
||||
echo -e "${WHITE} - Caddy generiert automatisch selbstsignierte Zertifikate${NC}"
|
||||
echo -e "${WHITE} - Zertifikate werden in ./certs/ gespeichert${NC}"
|
||||
echo -e "${WHITE} - Für Produktion: Browser-Warnung bei selbstsignierten Zertifikaten acceptieren${NC}"
|
||||
|
||||
else
|
||||
echo -e "${RED}✗ Container konnten nicht gestartet werden${NC}"
|
||||
echo -e "${YELLOW}Logs anzeigen:${NC}"
|
||||
docker-compose -f docker-compose.production.yml logs
|
||||
return 1
|
||||
cd "$FRONTEND_DIR"
|
||||
|
||||
# Docker-Compose prüfen
|
||||
if ! check_command docker-compose; then
|
||||
echo -e "${RED}✗ Docker-Compose nicht gefunden${NC}"
|
||||
echo -e "${BLUE}Installiere Docker-Compose...${NC}"
|
||||
if [ $is_root -eq 1 ]; then
|
||||
curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
chmod +x /usr/local/bin/docker-compose
|
||||
else
|
||||
echo -e "${RED}Root-Rechte erforderlich für Docker-Compose Installation${NC}"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}✗ Fehler beim Starten der Container${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
echo ""
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
|
||||
# Frontend-Konfiguration für Zwei-Server-Setup
|
||||
echo -e "${BLUE}1. Frontend-Konfiguration für Zwei-Server-Setup...${NC}"
|
||||
setup_frontend_config_two_server
|
||||
|
||||
# SSL-Zertifikate prüfen/generieren
|
||||
echo -e "${BLUE}2. SSL-Zertifikate prüfen...${NC}"
|
||||
if [ ! -f "certs/frontend.crt" ] || [ ! -f "certs/frontend.key" ]; then
|
||||
echo -e "${YELLOW}SSL-Zertifikate nicht gefunden. Generiere neue...${NC}"
|
||||
mkdir -p certs
|
||||
|
||||
# Frontend-Zertifikat generieren
|
||||
openssl req -x509 -newkey rsa:2048 -keyout certs/frontend.key -out certs/frontend.crt -days 365 -nodes \
|
||||
-subj "/C=DE/ST=NRW/L=Duesseldorf/O=MYP/OU=Frontend/CN=m040tbaraspi001.de040.corpintra.net"
|
||||
|
||||
echo -e "${GREEN}✓ SSL-Zertifikate generiert${NC}"
|
||||
else
|
||||
echo -e "${GREEN}✓ SSL-Zertifikate vorhanden${NC}"
|
||||
fi
|
||||
|
||||
# Docker-Images bauen
|
||||
echo -e "${BLUE}3. Docker-Images bauen...${NC}"
|
||||
exec_command "docker-compose build --no-cache" "Docker-Images bauen"
|
||||
|
||||
# Frontend-Container starten
|
||||
echo -e "${BLUE}4. Frontend-Container starten...${NC}"
|
||||
exec_command "docker-compose up -d" "Frontend-Container starten"
|
||||
|
||||
# Health-Check
|
||||
echo -e "${BLUE}5. Health-Check...${NC}"
|
||||
sleep 10
|
||||
|
||||
if curl -k -s https://localhost:443 > /dev/null; then
|
||||
echo -e "${GREEN}✓ Frontend läuft erfolgreich${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ Frontend möglicherweise noch nicht bereit${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Frontend Produktions-Deployment abgeschlossen!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🌐 Frontend-URLs:${NC}"
|
||||
echo -e "${WHITE}- Extern: https://m040tbaraspi001.de040.corpintra.net${NC}"
|
||||
echo -e "${WHITE}- Lokal: https://localhost${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🔗 Backend-Verbindung:${NC}"
|
||||
echo -e "${WHITE}- API: https://raspberrypi/api${NC}"
|
||||
echo -e "${WHITE}- Backend Web Interface: https://raspberrypi${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🛠️ Management:${NC}"
|
||||
echo -e "${WHITE}- Container stoppen: docker-compose down${NC}"
|
||||
echo -e "${WHITE}- Logs anzeigen: docker-compose logs -f${NC}"
|
||||
echo -e "${WHITE}- Container neustarten: docker-compose restart${NC}"
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
echo ""
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
}
|
||||
|
||||
# Frontend-Konfiguration erstellen
|
||||
@ -2193,71 +2133,406 @@ show_installation_menu() {
|
||||
|
||||
# Hauptmenü anzeigen
|
||||
show_main_menu() {
|
||||
show_header "Hauptmenü"
|
||||
|
||||
echo -e "${WHITE}🚀 SCHNELLSTART:${NC}"
|
||||
echo -e "${WHITE}1. Vollständige Installation (Alle Komponenten)${NC}"
|
||||
echo -e "${WHITE}2. Backend-Only Installation (mit Kiosk Web Interface)${NC}"
|
||||
echo -e "${WHITE}3. Entwicklungs-Setup (Backend + Frontend)${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}🎯 PRODUKTIONS-INSTALLER (v3.2):${NC}"
|
||||
echo -e "${WHITE}4. Produktions-Installer (install.sh Integration)${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}⚙️ GRANULARE INSTALLATION:${NC}"
|
||||
echo -e "${WHITE}5. Granulare Installation & Konfiguration${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}🔧 SYSTEM & WARTUNG:${NC}"
|
||||
echo -e "${WHITE}6. Systemvoraussetzungen prüfen${NC}"
|
||||
echo -e "${WHITE}7. Anwendung starten${NC}"
|
||||
echo -e "${WHITE}8. Projekt-Informationen${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}0. Beenden${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "Wählen Sie eine Option (0-8): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
install_everything
|
||||
show_main_menu
|
||||
;;
|
||||
2)
|
||||
install_production_setup
|
||||
show_main_menu
|
||||
;;
|
||||
3)
|
||||
install_development_setup
|
||||
show_main_menu
|
||||
;;
|
||||
4)
|
||||
show_production_installer_menu
|
||||
;;
|
||||
5)
|
||||
show_installation_menu
|
||||
;;
|
||||
6)
|
||||
test_dependencies
|
||||
show_main_menu
|
||||
;;
|
||||
7)
|
||||
start_application
|
||||
show_main_menu
|
||||
;;
|
||||
8)
|
||||
show_project_info
|
||||
show_main_menu
|
||||
;;
|
||||
0)
|
||||
echo -e "${GREEN}Auf Wiedersehen!${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Ungültige Option. Bitte versuchen Sie es erneut.${NC}"
|
||||
sleep 2
|
||||
show_main_menu
|
||||
;;
|
||||
esac
|
||||
show_header "🎯 MYP Control Center - Hauptmenü"
|
||||
|
||||
echo -e "${WHITE}🚀 Schnell-Installation:${NC}"
|
||||
echo -e "${WHITE}1. 🖥️ Server-spezifische Installation (Empfohlen)${NC}"
|
||||
echo -e "${WHITE}2. 🔧 Vollständige Installation (Backend + Frontend)${NC}"
|
||||
echo -e "${WHITE}3. 🥧 Backend-Only Installation (mit Kiosk Web Interface)${NC}"
|
||||
echo -e "${WHITE}4. 🌐 Frontend-Only Installation${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}⚙️ Granulare Installation:${NC}"
|
||||
echo -e "${WHITE}5. Backend installieren (Flask API + Web Interface)${NC}"
|
||||
echo -e "${WHITE}6. Frontend installieren (Next.js)${NC}"
|
||||
echo -e "${WHITE}7. Kiosk-Modus installieren (Backend Web Interface + Browser)${NC}"
|
||||
echo -e "${WHITE}8. Produktions-Setup (Backend + Kiosk Web Interface)${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}🛠️ Entwicklung & Wartung:${NC}"
|
||||
echo -e "${WHITE}9. Entwicklungs-Setup${NC}"
|
||||
echo -e "${WHITE}10. System-Abhängigkeiten installieren${NC}"
|
||||
echo -e "${WHITE}11. SSL-Zertifikate generieren${NC}"
|
||||
echo -e "${WHITE}12. Logs anzeigen${NC}"
|
||||
echo -e "${WHITE}13. Services verwalten${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}0. Beenden${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "Wählen Sie eine Option (0-13): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
show_server_specific_menu
|
||||
;;
|
||||
2)
|
||||
install_full_setup
|
||||
;;
|
||||
3)
|
||||
install_backend_only
|
||||
;;
|
||||
4)
|
||||
install_frontend_only
|
||||
;;
|
||||
5)
|
||||
install_backend
|
||||
;;
|
||||
6)
|
||||
install_frontend
|
||||
;;
|
||||
7)
|
||||
install_kiosk_mode
|
||||
;;
|
||||
8)
|
||||
install_production_setup
|
||||
;;
|
||||
9)
|
||||
install_development_setup
|
||||
;;
|
||||
10)
|
||||
install_system_dependencies
|
||||
;;
|
||||
11)
|
||||
generate_ssl_certificates
|
||||
;;
|
||||
12)
|
||||
show_logs
|
||||
;;
|
||||
13)
|
||||
manage_services
|
||||
;;
|
||||
0)
|
||||
echo -e "${GREEN}Auf Wiedersehen!${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Ungültige Option${NC}"
|
||||
sleep 2
|
||||
show_main_menu
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# ========================================================
|
||||
# SERVER-DETECTION & ZWEI-SERVER-SETUP
|
||||
# ========================================================
|
||||
|
||||
# Server-Typ erkennen
|
||||
detect_server_type() {
|
||||
local hostname=$(hostname)
|
||||
local hostname_fqdn=$(hostname -f 2>/dev/null || echo "$hostname")
|
||||
|
||||
echo -e "${BLUE}Erkenne Server-Typ...${NC}"
|
||||
echo -e "${WHITE}Hostname: $hostname${NC}"
|
||||
echo -e "${WHITE}FQDN: $hostname_fqdn${NC}"
|
||||
|
||||
# Frontend-Server erkennen
|
||||
if [[ "$hostname" == *"m040tbaraspi001"* ]] || [[ "$hostname_fqdn" == *"m040tbaraspi001"* ]]; then
|
||||
echo "frontend"
|
||||
return
|
||||
fi
|
||||
|
||||
# Backend-Server (Raspberry Pi) erkennen
|
||||
if [[ "$hostname" == *"raspberrypi"* ]] || [[ "$hostname_fqdn" == *"raspberrypi"* ]]; then
|
||||
echo "backend"
|
||||
return
|
||||
fi
|
||||
|
||||
# Unbekannter Server - Benutzer fragen
|
||||
echo "unknown"
|
||||
}
|
||||
|
||||
# Server-spezifische Installation
|
||||
show_server_specific_menu() {
|
||||
local server_type=$(detect_server_type)
|
||||
|
||||
show_header "🖥️ Server-spezifische Installation"
|
||||
|
||||
case $server_type in
|
||||
"frontend")
|
||||
echo -e "${GREEN}✅ Frontend-Server erkannt: $(hostname)${NC}"
|
||||
echo -e "${BLUE}Dieser Server ist für das MYP Frontend konfiguriert.${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}🎯 Verfügbare Installationen:${NC}"
|
||||
echo -e "${WHITE}1. Frontend installieren (Next.js + Docker)${NC}"
|
||||
echo -e "${WHITE}2. Frontend Produktions-Deployment (Port 443 mit SSL)${NC}"
|
||||
echo -e "${WHITE}3. Nur Docker & Dependencies installieren${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}9. Zurück zum Hauptmenü${NC}"
|
||||
echo -e "${WHITE}0. Beenden${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "Wählen Sie eine Option (0-3, 9): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
install_frontend_only
|
||||
;;
|
||||
2)
|
||||
deploy_frontend_production
|
||||
;;
|
||||
3)
|
||||
install_system_dependencies
|
||||
;;
|
||||
9)
|
||||
show_main_menu
|
||||
;;
|
||||
0)
|
||||
echo -e "${GREEN}Auf Wiedersehen!${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Ungültige Option${NC}"
|
||||
sleep 2
|
||||
show_server_specific_menu
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"backend")
|
||||
echo -e "${GREEN}✅ Backend-Server erkannt: $(hostname)${NC}"
|
||||
echo -e "${BLUE}Dieser Server ist für das MYP Backend + Kiosk konfiguriert.${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}🎯 Verfügbare Installationen:${NC}"
|
||||
echo -e "${WHITE}1. Backend installieren (Flask API + Web Interface)${NC}"
|
||||
echo -e "${WHITE}2. Kiosk-Modus installieren (Touch-Interface)${NC}"
|
||||
echo -e "${WHITE}3. Produktions-Setup (Backend + Kiosk + Services)${NC}"
|
||||
echo -e "${WHITE}4. Nur Python & Dependencies installieren${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}9. Zurück zum Hauptmenü${NC}"
|
||||
echo -e "${WHITE}0. Beenden${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "Wählen Sie eine Option (0-4, 9): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
install_backend_only
|
||||
;;
|
||||
2)
|
||||
install_kiosk_mode
|
||||
;;
|
||||
3)
|
||||
install_production_backend_with_kiosk
|
||||
;;
|
||||
4)
|
||||
install_system_dependencies
|
||||
setup_python_node_environment
|
||||
;;
|
||||
9)
|
||||
show_main_menu
|
||||
;;
|
||||
0)
|
||||
echo -e "${GREEN}Auf Wiedersehen!${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Ungültige Option${NC}"
|
||||
sleep 2
|
||||
show_server_specific_menu
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"unknown")
|
||||
echo -e "${YELLOW}⚠ Unbekannter Server-Typ: $(hostname)${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}Bitte wählen Sie den Server-Typ:${NC}"
|
||||
echo -e "${WHITE}1. 🖥️ Frontend-Server (m040tbaraspi001)${NC}"
|
||||
echo -e "${WHITE}2. 🥧 Backend-Server (Raspberry Pi)${NC}"
|
||||
echo -e "${WHITE}3. 💻 Entwicklungs-Server (Beide Komponenten)${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}9. Zurück zum Hauptmenü${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "Wählen Sie den Server-Typ (1-3, 9): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
echo -e "${BLUE}Frontend-Server-Modus aktiviert${NC}"
|
||||
export MYP_SERVER_TYPE="frontend"
|
||||
install_frontend_only
|
||||
;;
|
||||
2)
|
||||
echo -e "${BLUE}Backend-Server-Modus aktiviert${NC}"
|
||||
export MYP_SERVER_TYPE="backend"
|
||||
install_backend_only
|
||||
;;
|
||||
3)
|
||||
echo -e "${BLUE}Entwicklungs-Modus aktiviert${NC}"
|
||||
export MYP_SERVER_TYPE="development"
|
||||
install_development_setup
|
||||
;;
|
||||
9)
|
||||
show_main_menu
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Ungültige Option${NC}"
|
||||
sleep 2
|
||||
show_server_specific_menu
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Frontend-Only Installation (für m040tbaraspi001)
|
||||
install_frontend_only() {
|
||||
show_header "Frontend-Only Installation (m040tbaraspi001)"
|
||||
|
||||
echo -e "${BLUE}Installiere Frontend für separaten Server...${NC}"
|
||||
echo -e "${YELLOW}Backend-Verbindung: https://raspberrypi (separater Server)${NC}"
|
||||
echo ""
|
||||
|
||||
# Node.js prüfen
|
||||
if ! check_command node; then
|
||||
echo -e "${RED}✗ Node.js nicht gefunden. Bitte installieren Sie Node.js 16+${NC}"
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Docker für Produktion prüfen
|
||||
if ! check_command docker; then
|
||||
echo -e "${YELLOW}⚠ Docker nicht gefunden. Für Produktions-Deployment wird Docker benötigt.${NC}"
|
||||
fi
|
||||
|
||||
cd "$FRONTEND_DIR"
|
||||
|
||||
# Frontend-Dependencies installieren
|
||||
echo -e "${BLUE}1. Frontend-Abhängigkeiten installieren...${NC}"
|
||||
exec_command "npm install" "Frontend-Abhängigkeiten installieren"
|
||||
|
||||
# SSL-Verzeichnis erstellen
|
||||
echo -e "${BLUE}2. SSL-Verzeichnis erstellen...${NC}"
|
||||
mkdir -p certs
|
||||
|
||||
# Frontend-Konfiguration für Zwei-Server-Setup
|
||||
echo -e "${BLUE}3. Frontend-Konfiguration für Zwei-Server-Setup...${NC}"
|
||||
setup_frontend_config_two_server
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Frontend-Only Installation abgeschlossen!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🌐 Frontend-Server (m040tbaraspi001):${NC}"
|
||||
echo -e "${WHITE}- Development: cd $FRONTEND_DIR && npm run dev${NC}"
|
||||
echo -e "${WHITE}- Production: cd $FRONTEND_DIR && docker-compose up -d${NC}"
|
||||
echo -e "${WHITE}- URL: https://m040tbaraspi001.de040.corpintra.net${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🔗 Backend-Verbindung:${NC}"
|
||||
echo -e "${WHITE}- API: https://raspberrypi/api${NC}"
|
||||
echo -e "${WHITE}- Backend muss separat auf Raspberry Pi installiert werden${NC}"
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
echo ""
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
}
|
||||
|
||||
# Backend-Only Installation (für Raspberry Pi)
|
||||
install_backend_only() {
|
||||
show_header "Backend-Only Installation (Raspberry Pi)"
|
||||
|
||||
echo -e "${BLUE}Installiere Backend für separaten Server...${NC}"
|
||||
echo -e "${YELLOW}Frontend läuft auf: https://m040tbaraspi001.de040.corpintra.net${NC}"
|
||||
echo ""
|
||||
|
||||
# Backend-Installation ausführen
|
||||
install_backend
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Backend-Only Installation abgeschlossen!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🥧 Backend-Server (Raspberry Pi):${NC}"
|
||||
echo -e "${WHITE}- API: https://raspberrypi/api${NC}"
|
||||
echo -e "${WHITE}- Web Interface: https://raspberrypi${NC}"
|
||||
echo -e "${WHITE}- Kiosk-Modus verfügbar${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🔗 Frontend-Verbindung:${NC}"
|
||||
echo -e "${WHITE}- Frontend: https://m040tbaraspi001.de040.corpintra.net${NC}"
|
||||
echo -e "${WHITE}- Frontend muss separat auf m040tbaraspi001 installiert werden${NC}"
|
||||
|
||||
echo ""
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
}
|
||||
|
||||
# Frontend-Konfiguration für Zwei-Server-Setup
|
||||
setup_frontend_config_two_server() {
|
||||
echo -e "${BLUE}Konfiguriere Frontend für Zwei-Server-Setup...${NC}"
|
||||
|
||||
# .env.local für Frontend-Server erstellen
|
||||
cat > "$FRONTEND_DIR/.env.local" << EOF
|
||||
# Zwei-Server-Setup Konfiguration
|
||||
# Frontend-Server: m040tbaraspi001.de040.corpintra.net
|
||||
# Backend-Server: raspberrypi
|
||||
|
||||
# Backend API (Raspberry Pi)
|
||||
NEXT_PUBLIC_API_URL=https://raspberrypi
|
||||
NEXT_PUBLIC_BACKEND_HOST=raspberrypi
|
||||
NEXT_PUBLIC_BACKEND_PROTOCOL=https
|
||||
|
||||
# Frontend (aktueller Server)
|
||||
NEXT_PUBLIC_FRONTEND_URL=https://m040tbaraspi001.de040.corpintra.net
|
||||
NEXTAUTH_URL=https://m040tbaraspi001.de040.corpintra.net
|
||||
|
||||
# OAuth Konfiguration
|
||||
NEXT_PUBLIC_OAUTH_CALLBACK_URL=https://m040tbaraspi001.de040.corpintra.net/auth/login/callback
|
||||
|
||||
# GitHub OAuth (hardcodiert)
|
||||
GITHUB_CLIENT_ID=7c5d8bef1a5519ec1fdc
|
||||
GITHUB_CLIENT_SECRET=5f1e586204358fbd53cf5fb7d418b3f06ccab8fd
|
||||
|
||||
# Produktionsumgebung
|
||||
NODE_ENV=production
|
||||
DEBUG=false
|
||||
|
||||
# Zwei-Server-Setup
|
||||
MYP_SERVER_TYPE=frontend
|
||||
MYP_BACKEND_SERVER=raspberrypi
|
||||
MYP_FRONTEND_SERVER=m040tbaraspi001.de040.corpintra.net
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN}✓ Frontend-Konfiguration für Zwei-Server-Setup erstellt${NC}"
|
||||
echo -e "${BLUE}Backend-Verbindung: https://raspberrypi${NC}"
|
||||
echo -e "${BLUE}Frontend-URL: https://m040tbaraspi001.de040.corpintra.net${NC}"
|
||||
}
|
||||
|
||||
# Produktions-Backend mit Kiosk
|
||||
install_production_backend_with_kiosk() {
|
||||
show_header "Produktions-Backend mit Kiosk (Raspberry Pi)"
|
||||
|
||||
echo -e "${BLUE}Installiere komplettes Backend-System mit Kiosk...${NC}"
|
||||
echo ""
|
||||
|
||||
# System-Abhängigkeiten installieren
|
||||
if [ $is_root -eq 1 ]; then
|
||||
install_system_dependencies
|
||||
else
|
||||
echo -e "${YELLOW}System-Abhängigkeiten übersprungen (keine Root-Rechte)${NC}"
|
||||
fi
|
||||
|
||||
# Backend installieren
|
||||
install_backend
|
||||
|
||||
# Kiosk-Modus installieren
|
||||
install_kiosk_mode
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Produktions-Backend mit Kiosk abgeschlossen!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🥧 Raspberry Pi (Backend + Kiosk):${NC}"
|
||||
echo -e "${WHITE}- API: https://raspberrypi/api${NC}"
|
||||
echo -e "${WHITE}- Web Interface: https://raspberrypi${NC}"
|
||||
echo -e "${WHITE}- Kiosk-Modus: Vollbild-Touch-Interface${NC}"
|
||||
echo -e "${WHITE}- Services: myp.service + myp-kiosk-browser.service${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}🖥️ Frontend-Server:${NC}"
|
||||
echo -e "${WHITE}- Frontend muss separat auf m040tbaraspi001 installiert werden${NC}"
|
||||
echo -e "${WHITE}- URL: https://m040tbaraspi001.de040.corpintra.net${NC}"
|
||||
|
||||
echo ""
|
||||
read -p "Drücken Sie ENTER, um fortzufahren..."
|
||||
}
|
||||
|
||||
# ========================================================
|
||||
# ENDE SERVER-DETECTION
|
||||
# ========================================================
|
||||
|
||||
# Skript starten
|
||||
show_main_menu
|
Loading…
x
Reference in New Issue
Block a user