From 685b43fbb706e64b81b78f7a5f489cdbebab90b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Tue, 23 Sep 2025 11:53:40 +0000 Subject: [PATCH] Alles jetzt OHNE 'Klaus' --- .env | 65 +++++++------------ .env.build.example | 4 +- .env.docker | 8 +-- .env.external-db.example | 6 +- .env.production.example | 2 +- .env.registry.example | 16 ++--- .env.traefik.example | 4 +- .github/workflows/docker-build.yml | 4 +- CITYSENSOR_SETUP.md | 4 +- DEPLOYMENT.md | 22 +++---- DOCKER_REGISTRY.md | 38 +++++------ DOCKER_SETUP.md | 6 +- EXTERNAL_MYSQL_SETUP.md | 16 ++--- PHPMYADMIN_SETUP.md | 2 +- PORTAINER_TRAEFIK_SETUP.md | 6 +- README.md | 4 +- REMOTE_DEVELOPMENT.md | 8 +-- SERVER_DEPLOYMENT_PACKAGE.md | 12 ++-- TRAEFIK_DEPLOYMENT.md | 16 ++--- backup.sh | 4 +- build-and-push.sh | 8 +-- db_connection.php | 2 +- db_connection_docker.php | 2 +- db_connection_local.php | 2 +- deploy-external-db.sh | 26 ++++---- deploy-production.sh | 2 +- deploy-registry.sh | 6 +- deploy-traefik.sh | 6 +- docker-compose.development.yml | 4 +- docker-compose.local-network.yml | 4 +- docker-compose.modern.yml | 6 +- docker-compose.production.yml | 4 +- docker-compose.registry.yml | 8 +-- docker-compose.traefik-external-db.yml | 6 +- docker-compose.traefik.yml | 8 +-- docker-compose.yml | 4 +- docker-deploy.sh | 2 +- docker-stop.sh | 2 +- ...x-rezepte-klaus.conf => nginx-rezepte.conf | 10 +-- nodejs-version/backend/.env | 2 +- nodejs-version/backend/.env.example | 2 +- nodejs-version/backend/dist/config/config.js | 2 +- nodejs-version/backend/dist/routes/health.js | 2 +- nodejs-version/backend/package.json | 4 +- nodejs-version/backend/src/config/config.ts | 2 +- nodejs-version/backend/src/routes/health.ts | 2 +- .../frontend/src/components/Header.tsx | 2 +- setup-citysensor.sh | 4 +- setup-dev.sh | 2 +- setup-development.sh | 8 +-- start-development.sh | 2 +- start-local-network.sh | 2 +- 52 files changed, 189 insertions(+), 206 deletions(-) rename nginx-rezepte-klaus.conf => nginx-rezepte.conf (93%) diff --git a/.env b/.env index 8239c71..c8fcdc9 100644 --- a/.env +++ b/.env @@ -1,46 +1,29 @@ -# Docker Environment Configuration für Rezepte Klaus +# Development Environment - Linux Server +# Generated on Mon Sep 22 05:45:27 PM UTC 2025 -# Database Configuration -DB_HOST=mysql -DB_PORT=3306 -DB_USER=recipes_user -DB_PASSWORD=recipes_password_2024 -DB_NAME=rezepte_klaus -DB_ROOT_PASSWORD=root_password_2024 +# Server Configuration +HOST_IP=192.168.178.94 +DEVELOPMENT_MODE=true -# Database URL für Prisma -DATABASE_URL=mysql://recipes_user:recipes_password_2024@mysql:3306/rezepte_klaus +# Database Configuration (local development DB) +MYSQL_PASSWORD=dev_password_123 +MYSQL_ROOT_PASSWORD=dev_root_password_123 -# Backend Configuration -BACKEND_PORT=3001 -NODE_ENV=production - -# Upload Configuration -UPLOAD_DIR=/app/uploads -MAX_FILE_SIZE=10485760 -ALLOWED_EXTENSIONS=jpg,jpeg,png,webp - -# Frontend Configuration -FRONTEND_PORT=80 -VITE_API_URL=http://localhost:3001 - -# phpMyAdmin Configuration (optional) -PMA_HOST=mysql -PMA_PORT=3306 -PHPMYADMIN_PORT=8080 - -# Legacy PHP Configuration (optional) -LEGACY_PHP_PORT=8090 -LEGACY_MYSQL_HOST=mysql -LEGACY_MYSQL_DATABASE=rezepte_klaus -LEGACY_MYSQL_USER=recipes_user -LEGACY_MYSQL_PASSWORD=recipes_password_2024 - -# Security -JWT_SECRET=your_jwt_secret_here_change_in_production +# CORS Configuration for remote access CORS_ORIGIN=* -# Volume Paths -MYSQL_DATA_PATH=./docker-data/mysql -UPLOADS_PATH=./docker-data/uploads -LEGACY_UPLOADS_PATH=./upload \ No newline at end of file +# Development URLs: +# - Frontend: http://192.168.178.94:3000 +# - Backend API: http://192.168.178.94:3001/api +# - phpMyAdmin: http://192.168.178.94:8080 +# - MySQL: 192.168.178.94:3307 + +# Registry Configuration (for image pulls) +DOCKER_REGISTRY=docker.citysensor.de +# DOCKER_USERNAME=your_username +# DOCKER_PASSWORD=your_password + +# Development Notes: +# - Use this for testing Linux-specific behavior +# - Access from Mac via: http://192.168.178.94:3000 +# - SSH tunnel for secure access: ssh -L 3000:192.168.178.94:3000 user@server diff --git a/.env.build.example b/.env.build.example index 4fb8334..12ffbe3 100644 --- a/.env.build.example +++ b/.env.build.example @@ -19,5 +19,5 @@ DOCKER_NAMESPACE= IMAGE_TAG=latest # Generated Image Names (automatically set by build script) -# BACKEND_IMAGE=docker.citysensor.de/rezepte-klaus-backend:latest -# FRONTEND_IMAGE=docker.citysensor.de/rezepte-klaus-frontend:latest \ No newline at end of file +# BACKEND_IMAGE=docker.citysensor.de/rezepte-backend:latest +# FRONTEND_IMAGE=docker.citysensor.de/rezepte-frontend:latest \ No newline at end of file diff --git a/.env.docker b/.env.docker index fab8a02..aeeb992 100644 --- a/.env.docker +++ b/.env.docker @@ -1,15 +1,15 @@ -# Docker Environment Configuration für Rezepte Klaus +# Docker Environment Configuration für Rezepte # Database Configuration DB_HOST=mysql DB_PORT=3306 DB_USER=recipes_user DB_PASSWORD=recipes_password_2024 -DB_NAME=rezepte_klaus +DB_NAME=rezepte DB_ROOT_PASSWORD=root_password_2024 # Database URL für Prisma -DATABASE_URL=mysql://recipes_user:recipes_password_2024@mysql:3306/rezepte_klaus +DATABASE_URL=mysql://recipes_user:recipes_password_2024@mysql:3306/rezepte # Backend Configuration BACKEND_PORT=3001 @@ -32,7 +32,7 @@ PHPMYADMIN_PORT=8080 # Legacy PHP Configuration (optional) LEGACY_PHP_PORT=8090 LEGACY_MYSQL_HOST=mysql -LEGACY_MYSQL_DATABASE=rezepte_klaus +LEGACY_MYSQL_DATABASE=rezepte LEGACY_MYSQL_USER=recipes_user LEGACY_MYSQL_PASSWORD=recipes_password_2024 diff --git a/.env.external-db.example b/.env.external-db.example index 3ba144d..40ee82a 100644 --- a/.env.external-db.example +++ b/.env.external-db.example @@ -29,12 +29,12 @@ DOCKER_USERNAME=your_username_here DOCKER_PASSWORD=your_password_here # Docker Registry Images (CitySensor) -BACKEND_IMAGE=docker.citysensor.de/rezepte-klaus-backend:latest -FRONTEND_IMAGE=docker.citysensor.de/rezepte-klaus-frontend:latest +BACKEND_IMAGE=docker.citysensor.de/rezepte-backend:latest +FRONTEND_IMAGE=docker.citysensor.de/rezepte-frontend:latest # Setup Instructions: # 1. Find your Gitea MySQL container name: docker ps | grep mysql # 2. Find your Gitea network: docker network ls | grep gitea # 3. Update MYSQL_HOST with the correct container name # 4. Update EXTERNAL_MYSQL_NETWORK with the correct network name -# 5. Create rezepte_klaus database and user (see setup script) \ No newline at end of file +# 5. Create rezepte database and user (see setup script) \ No newline at end of file diff --git a/.env.production.example b/.env.production.example index f460b47..92fa7a7 100644 --- a/.env.production.example +++ b/.env.production.example @@ -15,4 +15,4 @@ API_BASE_URL=https://yourdomain.com/api # JWT_SECRET=your_super_secure_jwt_secret_minimum_32_characters_long # Optional: Database URL override -# DATABASE_URL=mysql://rezepte_user:password@mysql:3306/rezepte_klaus \ No newline at end of file +# DATABASE_URL=mysql://rezepte_user:password@mysql:3306/rezepte \ No newline at end of file diff --git a/.env.registry.example b/.env.registry.example index bf4a64f..50676fe 100644 --- a/.env.registry.example +++ b/.env.registry.example @@ -14,17 +14,17 @@ DOCKER_USERNAME=your_username_here DOCKER_PASSWORD=your_password_here # Docker Registry Images -BACKEND_IMAGE=docker.citysensor.de/rezepte-klaus-backend:latest -FRONTEND_IMAGE=docker.citysensor.de/rezepte-klaus-frontend:latest +BACKEND_IMAGE=docker.citysensor.de/rezepte-backend:latest +FRONTEND_IMAGE=docker.citysensor.de/rezepte-frontend:latest # Alternative: Docker Hub -# BACKEND_IMAGE=your-username/rezepte-klaus-backend:latest -# FRONTEND_IMAGE=your-username/rezepte-klaus-frontend:latest +# BACKEND_IMAGE=your-username/rezepte-backend:latest +# FRONTEND_IMAGE=your-username/rezepte-frontend:latest # Alternative: AWS ECR -# BACKEND_IMAGE=123456789.dkr.ecr.eu-central-1.amazonaws.com/rezepte-klaus-backend:latest -# FRONTEND_IMAGE=123456789.dkr.ecr.eu-central-1.amazonaws.com/rezepte-klaus-frontend:latest +# BACKEND_IMAGE=123456789.dkr.ecr.eu-central-1.amazonaws.com/rezepte-backend:latest +# FRONTEND_IMAGE=123456789.dkr.ecr.eu-central-1.amazonaws.com/rezepte-frontend:latest # Alternative: Azure Container Registry -# BACKEND_IMAGE=yourregistry.azurecr.io/rezepte-klaus-backend:latest -# FRONTEND_IMAGE=yourregistry.azurecr.io/rezepte-klaus-frontend:latest \ No newline at end of file +# BACKEND_IMAGE=yourregistry.azurecr.io/rezepte-backend:latest +# FRONTEND_IMAGE=yourregistry.azurecr.io/rezepte-frontend:latest \ No newline at end of file diff --git a/.env.traefik.example b/.env.traefik.example index 2d264f7..58a3724 100644 --- a/.env.traefik.example +++ b/.env.traefik.example @@ -21,8 +21,8 @@ DOCKER_USERNAME=your_username_here DOCKER_PASSWORD=your_password_here # Docker Registry Images (CitySensor) -BACKEND_IMAGE=docker.citysensor.de/rezepte-klaus-backend:latest -FRONTEND_IMAGE=docker.citysensor.de/rezepte-klaus-frontend:latest +BACKEND_IMAGE=docker.citysensor.de/rezepte-backend:latest +FRONTEND_IMAGE=docker.citysensor.de/rezepte-frontend:latest # Optional: JWT Secret (currently not used, but prepared for future authentication) # JWT_SECRET=your_super_secure_jwt_secret_minimum_32_characters_long \ No newline at end of file diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index a658174..413c0a7 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -9,8 +9,8 @@ on: env: REGISTRY: ${{ vars.DOCKER_REGISTRY || 'docker.citysensor.de' }} - IMAGE_NAME_BACKEND: rezepte-klaus-backend - IMAGE_NAME_FRONTEND: rezepte-klaus-frontend + IMAGE_NAME_BACKEND: rezepte-backend + IMAGE_NAME_FRONTEND: rezepte-frontend jobs: build-and-push: diff --git a/CITYSENSOR_SETUP.md b/CITYSENSOR_SETUP.md index 6601250..7d1a4c1 100644 --- a/CITYSENSOR_SETUP.md +++ b/CITYSENSOR_SETUP.md @@ -59,8 +59,8 @@ MYSQL_ROOT_PASSWORD=super_secure_root_password DOCKER_REGISTRY=docker.citysensor.de DOCKER_USERNAME=your_username DOCKER_PASSWORD=your_password -BACKEND_IMAGE=docker.citysensor.de/rezepte-klaus-backend:latest -FRONTEND_IMAGE=docker.citysensor.de/rezepte-klaus-frontend:latest +BACKEND_IMAGE=docker.citysensor.de/rezepte-backend:latest +FRONTEND_IMAGE=docker.citysensor.de/rezepte-frontend:latest ``` ## 🔧 Registry-Authentifizierung diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 1e135c6..c904670 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -8,8 +8,8 @@ ## 1. Repository auf Server klonen ```bash -git clone /opt/rezepte-klaus -cd /opt/rezepte-klaus +git clone /opt/rezepte +cd /opt/rezepte ``` ## 2. Produktions-Umgebung konfigurieren @@ -22,7 +22,7 @@ cp .env.example .env.production ### .env.production anpassen: ```env # Database -DATABASE_URL="mysql://rezepte_user:secure_password_here@mysql:3306/rezepte_klaus" +DATABASE_URL="mysql://rezepte_user:secure_password_here@mysql:3306/rezepte" # Security JWT_SECRET="your-super-secure-jwt-secret-min-32-chars" @@ -53,7 +53,7 @@ services: container_name: rezepte-mysql-prod restart: unless-stopped environment: - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: secure_password_here MYSQL_ROOT_PASSWORD: super_secure_root_password @@ -78,7 +78,7 @@ services: restart: unless-stopped environment: - NODE_ENV=production - - DATABASE_URL=mysql://rezepte_user:secure_password_here@mysql:3306/rezepte_klaus + - DATABASE_URL=mysql://rezepte_user:secure_password_here@mysql:3306/rezepte - JWT_SECRET=your-super-secure-jwt-secret-min-32-chars - CORS_ORIGIN=https://yourdomain.com - PORT=3001 @@ -148,7 +148,7 @@ sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ./ssl/ ### Option B: Reverse Proxy (empfohlen) ```nginx -# /etc/nginx/sites-available/rezepte-klaus +# /etc/nginx/sites-available/rezepte server { listen 80; server_name yourdomain.com; @@ -193,7 +193,7 @@ server { #!/bin/bash set -e -echo "🚀 Deploying Rezepte Klaus..." +echo "🚀 Deploying Rezepte..." # Git pull latest changes git pull origin main @@ -221,12 +221,12 @@ fi ```bash #!/bin/bash DATE=$(date +%Y%m%d_%H%M%S) -BACKUP_DIR="/opt/backups/rezepte-klaus" +BACKUP_DIR="/opt/backups/rezepte" mkdir -p $BACKUP_DIR # Database backup -docker exec rezepte-mysql-prod mysqldump -u root -psuper_secure_root_password rezepte_klaus > $BACKUP_DIR/database_$DATE.sql +docker exec rezepte-mysql-prod mysqldump -u root -psuper_secure_root_password rezepte > $BACKUP_DIR/database_$DATE.sql # Uploads backup docker cp rezepte-backend-prod:/app/uploads $BACKUP_DIR/uploads_$DATE @@ -262,7 +262,7 @@ docker-compose -f docker-compose.production.yml ps ### Crontab für automatische Backups: ```bash # Täglich um 2 Uhr -0 2 * * * /opt/rezepte-klaus/backup.sh +0 2 * * * /opt/rezepte/backup.sh # Wöchentlich SSL-Zertifikat erneuern 0 3 * * 0 certbot renew --quiet && systemctl reload nginx @@ -290,7 +290,7 @@ docker exec -it rezepte-mysql-prod mysql -u root -p # Database-Status prüfen SHOW DATABASES; -USE rezepte_klaus; +USE rezepte; SHOW TABLES; ``` diff --git a/DOCKER_REGISTRY.md b/DOCKER_REGISTRY.md index 1e0a7d9..e2a8138 100644 --- a/DOCKER_REGISTRY.md +++ b/DOCKER_REGISTRY.md @@ -10,11 +10,11 @@ echo $GITHUB_TOKEN | docker login ghcr.io -u YOUR_USERNAME --password-stdin # Images taggen und pushen -docker build -t ghcr.io/YOUR_USERNAME/rezepte-klaus-backend:latest ./nodejs-version/backend -docker build -t ghcr.io/YOUR_USERNAME/rezepte-klaus-frontend:latest ./nodejs-version/frontend +docker build -t ghcr.io/YOUR_USERNAME/rezepte-backend:latest ./nodejs-version/backend +docker build -t ghcr.io/YOUR_USERNAME/rezepte-frontend:latest ./nodejs-version/frontend -docker push ghcr.io/YOUR_USERNAME/rezepte-klaus-backend:latest -docker push ghcr.io/YOUR_USERNAME/rezepte-klaus-frontend:latest +docker push ghcr.io/YOUR_USERNAME/rezepte-backend:latest +docker push ghcr.io/YOUR_USERNAME/rezepte-frontend:latest ``` #### Docker Hub @@ -23,11 +23,11 @@ docker push ghcr.io/YOUR_USERNAME/rezepte-klaus-frontend:latest docker login # Images taggen und pushen -docker build -t YOUR_USERNAME/rezepte-klaus-backend:latest ./nodejs-version/backend -docker build -t YOUR_USERNAME/rezepte-klaus-frontend:latest ./nodejs-version/frontend +docker build -t YOUR_USERNAME/rezepte-backend:latest ./nodejs-version/backend +docker build -t YOUR_USERNAME/rezepte-frontend:latest ./nodejs-version/frontend -docker push YOUR_USERNAME/rezepte-klaus-backend:latest -docker push YOUR_USERNAME/rezepte-klaus-frontend:latest +docker push YOUR_USERNAME/rezepte-backend:latest +docker push YOUR_USERNAME/rezepte-frontend:latest ``` #### Private Registry (AWS ECR, Azure ACR, etc.) @@ -36,11 +36,11 @@ docker push YOUR_USERNAME/rezepte-klaus-frontend:latest aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com # Images taggen und pushen -docker build -t YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-klaus-backend:latest ./nodejs-version/backend -docker build -t YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-klaus-frontend:latest ./nodejs-version/frontend +docker build -t YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-backend:latest ./nodejs-version/backend +docker build -t YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-frontend:latest ./nodejs-version/frontend -docker push YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-klaus-backend:latest -docker push YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-klaus-frontend:latest +docker push YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-backend:latest +docker push YOUR_ACCOUNT.dkr.ecr.eu-central-1.amazonaws.com/rezepte-frontend:latest ``` ### 2. Server-Deployment (nur Docker Compose) @@ -53,14 +53,14 @@ Auf dem Server benötigen Sie nur diese Dateien: ```bash # Minimales Setup auf Server -mkdir -p /opt/rezepte-klaus -cd /opt/rezepte-klaus +mkdir -p /opt/rezepte +cd /opt/rezepte # Nur diese Dateien kopieren: -scp docker-compose.registry.yml user@server:/opt/rezepte-klaus/ -scp .env.production user@server:/opt/rezepte-klaus/ -scp *.sql user@server:/opt/rezepte-klaus/ -scp deploy-registry.sh user@server:/opt/rezepte-klaus/ +scp docker-compose.registry.yml user@server:/opt/rezepte/ +scp .env.production user@server:/opt/rezepte/ +scp *.sql user@server:/opt/rezepte/ +scp deploy-registry.sh user@server:/opt/rezepte/ ``` ## Option 2: CI/CD Pipeline (Automatisiert) @@ -108,7 +108,7 @@ jobs: username: ${{ secrets.USERNAME }} key: ${{ secrets.SSH_KEY }} script: | - cd /opt/rezepte-klaus + cd /opt/rezepte docker-compose -f docker-compose.registry.yml pull docker-compose -f docker-compose.registry.yml up -d ``` diff --git a/DOCKER_SETUP.md b/DOCKER_SETUP.md index 4f936da..5f8fa0a 100644 --- a/DOCKER_SETUP.md +++ b/DOCKER_SETUP.md @@ -1,4 +1,4 @@ -# Rezepte Klaus - Docker Deployment +# Rezepte - Docker Deployment Dieses Projekt kann komplett über Docker containerisiert betrieben werden. @@ -178,7 +178,7 @@ docker-compose -f docker-compose.modern.yml down -v ### Database Backup ```bash -docker-compose -f docker-compose.modern.yml exec mysql mysqldump -u recipes_user -p rezepte_klaus > backup.sql +docker-compose -f docker-compose.modern.yml exec mysql mysqldump -u recipes_user -p rezepte > backup.sql ``` ### Upload Backup @@ -189,7 +189,7 @@ tar -czf uploads-backup.tar.gz docker-data/uploads/ ### Restore ```bash # Database -docker-compose -f docker-compose.modern.yml exec -T mysql mysql -u recipes_user -p rezepte_klaus < backup.sql +docker-compose -f docker-compose.modern.yml exec -T mysql mysql -u recipes_user -p rezepte < backup.sql # Uploads tar -xzf uploads-backup.tar.gz diff --git a/EXTERNAL_MYSQL_SETUP.md b/EXTERNAL_MYSQL_SETUP.md index 85b1a55..55cb5ed 100644 --- a/EXTERNAL_MYSQL_SETUP.md +++ b/EXTERNAL_MYSQL_SETUP.md @@ -1,4 +1,4 @@ -# Externe MySQL-Datenbank Integration - Rezepte Klaus +# Externe MySQL-Datenbank Integration - Rezepte ## 🗄️ Bestehende MySQL-Datenbank nutzen (Gitea) @@ -72,7 +72,7 @@ EXTERNAL_MYSQL_NETWORK=gitea_default 1. ✅ **Container-Erkennung**: Findet Gitea MySQL-Container 2. ✅ **Netzwerk-Validierung**: Prüft Docker-Netzwerk 3. ✅ **Verbindungstest**: Testet MySQL-Zugriff -4. ✅ **Datenbank-Setup**: Erstellt `rezepte_klaus` DB +4. ✅ **Datenbank-Setup**: Erstellt `rezepte` DB 5. ✅ **User-Erstellung**: Legt `rezepte_user` an 6. ✅ **Daten-Import**: Importiert SQL-Dateien 7. ✅ **Service-Start**: Startet alle Services @@ -97,7 +97,7 @@ EXTERNAL_MYSQL_NETWORK=gitea_default │ Shared MySQL │ │ ┌─────────────────────────────┐│ │ │ ┌──────────┐ ┌────────────┐││ -│ │ │ gitea │ │rezepte_klaus│││ +│ │ │ gitea │ │rezepte│││ │ │ └──────────┘ └────────────┘││ │ └─────────────────────────────┘│ └─────────────────────────────────┘ @@ -127,7 +127,7 @@ networks: ```yaml backend: environment: - - DATABASE_URL=mysql://rezepte_user:${MYSQL_REZEPTE_PASSWORD}@${MYSQL_HOST}:3306/rezepte_klaus + - DATABASE_URL=mysql://rezepte_user:${MYSQL_REZEPTE_PASSWORD}@${MYSQL_HOST}:3306/rezepte networks: - traefik-network - gitea_default # Zugriff auf Gitea MySQL @@ -143,10 +143,10 @@ backend: ### **Getrennte Benutzer:** ```sql -- Gitea nutzt eigenen User (meist 'gitea') --- Rezepte Klaus bekommt eigenen User ('rezepte_user') +-- Rezepte bekommt eigenen User ('rezepte_user') -- Keine gegenseitigen Zugriffe -GRANT ALL PRIVILEGES ON rezepte_klaus.* TO 'rezepte_user'@'%'; +GRANT ALL PRIVILEGES ON rezepte.* TO 'rezepte_user'@'%'; -- Kein Zugriff auf 'gitea' Datenbank ``` @@ -229,10 +229,10 @@ docker-compose -f docker-compose.traefik-external-db.yml logs -f backend docker exec -it gitea-mysql-1 mysql -uroot -p # Als Rezepte-User (nur Rezepte) -docker exec -it gitea-mysql-1 mysql -urezepte_user -p rezepte_klaus +docker exec -it gitea-mysql-1 mysql -urezepte_user -p rezepte # Backup erstellen -docker exec gitea-mysql-1 mysqldump -uroot -p rezepte_klaus > backup.sql +docker exec gitea-mysql-1 mysqldump -uroot -p rezepte > backup.sql ``` ## 🎯 Fazit diff --git a/PHPMYADMIN_SETUP.md b/PHPMYADMIN_SETUP.md index f952eb7..ec82436 100644 --- a/PHPMYADMIN_SETUP.md +++ b/PHPMYADMIN_SETUP.md @@ -1,4 +1,4 @@ -# phpMyAdmin Integration - Rezepte Klaus +# phpMyAdmin Integration - Rezepte ## 🗄️ Datenbank-Verwaltung über Web-Interface diff --git a/PORTAINER_TRAEFIK_SETUP.md b/PORTAINER_TRAEFIK_SETUP.md index 1d23ba2..6917cca 100644 --- a/PORTAINER_TRAEFIK_SETUP.md +++ b/PORTAINER_TRAEFIK_SETUP.md @@ -1,4 +1,4 @@ -# Portainer Integration mit Traefik - Rezepte Klaus +# Portainer Integration mit Traefik - Rezepte ## 🐳 Container-Management über Web-Interface @@ -80,7 +80,7 @@ volumes: - /var/run/docker.sock:/var/run/docker.sock:ro ``` -## 🛠️ Portainer Features für Rezepte-Klaus +## 🛠️ Portainer Features für Rezepte ### Container-Management: - ✅ **Stack-Verwaltung**: docker-compose.yml direkt bearbeiten @@ -121,7 +121,7 @@ watchtower: ## 🔄 Stack-Management -### 1. **Rezepte-Klaus als Stack**: +### 1. **Rezepte als Stack**: ```yaml # In Portainer: "Stacks" → "Add Stack" # Repository: Git-Integration möglich diff --git a/README.md b/README.md index 3e27bc8..a3b4314 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Rezepte Klaus - Docker Setup +# Rezepte - Docker Setup Eine dockerisierte Version der Rezepte-Verwaltungsanwendung mit PHP, MySQL und phpMyAdmin. @@ -28,7 +28,7 @@ Eine dockerisierte Version der Rezepte-Verwaltungsanwendung mit PHP, MySQL und p ### Für die Anwendung: - Host: mysql -- Database: rezepte_klaus +- Database: rezepte - User: rezepte_user - Password: rezepte_pass diff --git a/REMOTE_DEVELOPMENT.md b/REMOTE_DEVELOPMENT.md index 74c99f8..7396075 100644 --- a/REMOTE_DEVELOPMENT.md +++ b/REMOTE_DEVELOPMENT.md @@ -9,8 +9,8 @@ Optimaler Workflow für Entwicklung auf Mac mit Testing auf Linux-Server, der de ### **Auf dem Linux-Server (via SSH):** ```bash # 1. Repository klonen (falls nicht geschehen) -git clone https://github.com/your-repo/rezepte-klaus.git -cd rezepte-klaus +git clone https://github.com/your-repo/rezepte.git +cd rezepte # 2. Development-Umgebung einrichten ./setup-development.sh @@ -79,13 +79,13 @@ docker-compose -f docker-compose.development.yml restart frontend ```bash # VS Code Extension installieren: "Remote - SSH" # Direkt auf Server entwickeln -code --remote ssh-remote+user@server /path/to/rezepte-klaus +code --remote ssh-remote+user@server /path/to/rezepte ``` #### **C) rsync-Sync:** ```bash # Automatischer Sync von Mac zu Server -rsync -avz --exclude 'node_modules' ./ user@server:/path/to/rezepte-klaus/ +rsync -avz --exclude 'node_modules' ./ user@server:/path/to/rezepte/ ``` ### **2. Container-Rebuild-Workflows:** diff --git a/SERVER_DEPLOYMENT_PACKAGE.md b/SERVER_DEPLOYMENT_PACKAGE.md index ebf82e2..71b2eda 100644 --- a/SERVER_DEPLOYMENT_PACKAGE.md +++ b/SERVER_DEPLOYMENT_PACKAGE.md @@ -24,14 +24,14 @@ ```bash # 1. Create deployment directory -mkdir -p /opt/rezepte-klaus -cd /opt/rezepte-klaus +mkdir -p /opt/rezepte +cd /opt/rezepte # 2. Copy required files to server -scp docker-compose.registry.yml user@server:/opt/rezepte-klaus/ -scp .env.production user@server:/opt/rezepte-klaus/ -scp *.sql user@server:/opt/rezepte-klaus/ -scp deploy-registry.sh user@server:/opt/rezepte-klaus/ +scp docker-compose.registry.yml user@server:/opt/rezepte/ +scp .env.production user@server:/opt/rezepte/ +scp *.sql user@server:/opt/rezepte/ +scp deploy-registry.sh user@server:/opt/rezepte/ # 3. Make deployment script executable chmod +x deploy-registry.sh diff --git a/TRAEFIK_DEPLOYMENT.md b/TRAEFIK_DEPLOYMENT.md index 1ebd9b5..a3c3350 100644 --- a/TRAEFIK_DEPLOYMENT.md +++ b/TRAEFIK_DEPLOYMENT.md @@ -38,8 +38,8 @@ DOMAIN=my.domain.com ACME_EMAIL=admin@my.domain.com MYSQL_PASSWORD=super_secure_password_123 MYSQL_ROOT_PASSWORD=even_more_secure_root_password_456 -BACKEND_IMAGE=ghcr.io/username/rezepte-klaus-backend:latest -FRONTEND_IMAGE=ghcr.io/username/rezepte-klaus-frontend:latest +BACKEND_IMAGE=ghcr.io/username/rezepte-backend:latest +FRONTEND_IMAGE=ghcr.io/username/rezepte-frontend:latest ``` ## 🔧 Server-Deployment @@ -47,7 +47,7 @@ FRONTEND_IMAGE=ghcr.io/username/rezepte-klaus-frontend:latest ### Minimale Dateien auf Server: ```bash # Server-Struktur -/opt/rezepte-klaus/ +/opt/rezepte/ ├── docker-compose.traefik.yml ├── .env.production ├── deploy-traefik.sh @@ -60,14 +60,14 @@ FRONTEND_IMAGE=ghcr.io/username/rezepte-klaus-frontend:latest ### Deployment-Schritte: ```bash # 1. Dateien auf Server kopieren -scp docker-compose.traefik.yml user@server:/opt/rezepte-klaus/ -scp .env.production user@server:/opt/rezepte-klaus/ -scp *.sql user@server:/opt/rezepte-klaus/ -scp deploy-traefik.sh user@server:/opt/rezepte-klaus/ +scp docker-compose.traefik.yml user@server:/opt/rezepte/ +scp .env.production user@server:/opt/rezepte/ +scp *.sql user@server:/opt/rezepte/ +scp deploy-traefik.sh user@server:/opt/rezepte/ # 2. Auf Server einloggen und deployen ssh user@server -cd /opt/rezepte-klaus +cd /opt/rezepte chmod +x deploy-traefik.sh ./deploy-traefik.sh ``` diff --git a/backup.sh b/backup.sh index ec4b35e..ae3c9ec 100755 --- a/backup.sh +++ b/backup.sh @@ -1,7 +1,7 @@ #!/bin/bash DATE=$(date +%Y%m%d_%H%M%S) -BACKUP_DIR="/opt/backups/rezepte-klaus" +BACKUP_DIR="/opt/backups/rezepte" # Create backup directory mkdir -p $BACKUP_DIR @@ -19,7 +19,7 @@ if docker ps | grep -q rezepte-mysql-prod; then docker exec rezepte-mysql-prod mysqldump \ -u rezepte_user \ -p${MYSQL_PASSWORD:-change_this_password} \ - rezepte_klaus > $BACKUP_DIR/database_$DATE.sql + rezepte > $BACKUP_DIR/database_$DATE.sql if [ $? -eq 0 ]; then echo "✅ Database backup completed: database_$DATE.sql" diff --git a/build-and-push.sh b/build-and-push.sh index bea4e02..5df7dc2 100755 --- a/build-and-push.sh +++ b/build-and-push.sh @@ -15,11 +15,11 @@ TAG=${IMAGE_TAG:-"latest"} # Image names (with optional namespace) if [ -n "$NAMESPACE" ]; then - BACKEND_IMAGE="$REGISTRY/$NAMESPACE/rezepte-klaus-backend:$TAG" - FRONTEND_IMAGE="$REGISTRY/$NAMESPACE/rezepte-klaus-frontend:$TAG" + BACKEND_IMAGE="$REGISTRY/$NAMESPACE/rezepte-backend:$TAG" + FRONTEND_IMAGE="$REGISTRY/$NAMESPACE/rezepte-frontend:$TAG" else - BACKEND_IMAGE="$REGISTRY/rezepte-klaus-backend:$TAG" - FRONTEND_IMAGE="$REGISTRY/rezepte-klaus-frontend:$TAG" + BACKEND_IMAGE="$REGISTRY/rezepte-backend:$TAG" + FRONTEND_IMAGE="$REGISTRY/rezepte-frontend:$TAG" fi echo "📦 Building images..." diff --git a/db_connection.php b/db_connection.php index ff988e6..acf693c 100644 --- a/db_connection.php +++ b/db_connection.php @@ -8,7 +8,7 @@ if (session_status() === PHP_SESSION_NONE) { // Docker environment variables with fallbacks for local development $host_name = $_ENV['DB_HOST'] ?? 'localhost'; -$database = $_ENV['DB_NAME'] ?? 'rezepte_klaus'; +$database = $_ENV['DB_NAME'] ?? 'rezepte'; $user_name = $_ENV['DB_USER'] ?? 'root'; $password = $_ENV['DB_PASS'] ?? ''; diff --git a/db_connection_docker.php b/db_connection_docker.php index 47e0f8a..7b8b3b6 100644 --- a/db_connection_docker.php +++ b/db_connection_docker.php @@ -8,7 +8,7 @@ if (session_status() === PHP_SESSION_NONE) { // Docker environment variables with fallbacks for local development $host_name = $_ENV['DB_HOST'] ?? 'localhost'; -$database = $_ENV['DB_NAME'] ?? 'rezepte_klaus'; +$database = $_ENV['DB_NAME'] ?? 'rezepte'; $user_name = $_ENV['DB_USER'] ?? 'root'; $password = $_ENV['DB_PASS'] ?? ''; diff --git a/db_connection_local.php b/db_connection_local.php index 83a83af..f31730e 100644 --- a/db_connection_local.php +++ b/db_connection_local.php @@ -6,7 +6,7 @@ if (session_status() === PHP_SESSION_NONE) { session_start(); } $host_name = 'localhost'; - $database = 'rezepte_klaus'; + $database = 'rezepte'; $user_name = 'root'; $password = ''; diff --git a/deploy-external-db.sh b/deploy-external-db.sh index 023ecb4..63de4c9 100755 --- a/deploy-external-db.sh +++ b/deploy-external-db.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -echo "🗄️ Setting up Rezepte Klaus with external MySQL (Gitea)" +echo "🗄️ Setting up Rezepte with external MySQL (Gitea)" echo "======================================================" # Check if .env.external-db exists @@ -63,33 +63,33 @@ else fi # Create database and user -echo "🏗️ Setting up Rezepte Klaus database..." +echo "🏗️ Setting up Rezepte database..." # SQL commands for database setup DATABASE_SETUP_SQL=" --- Create Rezepte Klaus database -CREATE DATABASE IF NOT EXISTS rezepte_klaus +-- Create Rezepte database +CREATE DATABASE IF NOT EXISTS rezepte CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; --- Create dedicated user for Rezepte Klaus +-- Create dedicated user for Rezepte CREATE USER IF NOT EXISTS 'rezepte_user'@'%' IDENTIFIED BY '${MYSQL_REZEPTE_PASSWORD}'; -- Grant permissions -GRANT ALL PRIVILEGES ON rezepte_klaus.* TO 'rezepte_user'@'%'; +GRANT ALL PRIVILEGES ON rezepte.* TO 'rezepte_user'@'%'; -- Refresh privileges FLUSH PRIVILEGES; -- Show created database -SHOW DATABASES LIKE 'rezepte_klaus'; +SHOW DATABASES LIKE 'rezepte'; " # Execute database setup echo "$DATABASE_SETUP_SQL" | docker exec -i "$MYSQL_HOST" mysql -u"${MYSQL_ADMIN_USER:-root}" -p"${MYSQL_ADMIN_PASSWORD}" if [ $? -eq 0 ]; then - echo "✅ Database 'rezepte_klaus' and user 'rezepte_user' created successfully" + echo "✅ Database 'rezepte' and user 'rezepte_user' created successfully" else echo "❌ Error creating database or user" exit 1 @@ -102,7 +102,7 @@ REQUIRED_FILES=("Rezepte.sql" "ingredients.sql" "Zubereitung.sql" "rezepte_bilde for file in "${REQUIRED_FILES[@]}"; do if [ -f "$file" ]; then echo " Importing $file..." - docker exec -i "$MYSQL_HOST" mysql -u"${MYSQL_ADMIN_USER:-root}" -p"${MYSQL_ADMIN_PASSWORD}" rezepte_klaus < "$file" + docker exec -i "$MYSQL_HOST" mysql -u"${MYSQL_ADMIN_USER:-root}" -p"${MYSQL_ADMIN_PASSWORD}" rezepte < "$file" if [ $? -eq 0 ]; then echo " ✅ $file imported successfully" else @@ -124,7 +124,7 @@ echo "📥 Pulling latest images..." docker compose -f docker compose.traefik-external-db.yml pull # Start services -echo "🚀 Starting Rezepte Klaus services with external MySQL..." +echo "🚀 Starting Rezepte services with external MySQL..." docker compose -f docker compose.traefik-external-db.yml up -d # Wait for services to be healthy @@ -145,13 +145,13 @@ if [ "$HEALTHY_SERVICES" -ge 4 ]; then echo "" echo "🗄️ Database Information:" echo " MySQL Host: $MYSQL_HOST (shared with Gitea)" - echo " Rezepte Database: rezepte_klaus" + echo " Rezepte Database: rezepte" echo " Rezepte User: rezepte_user" echo "" echo "📊 Service Status:" docker compose -f docker compose.traefik-external-db.yml ps echo "" - echo "💡 phpMyAdmin now shows both Gitea and Rezepte Klaus databases!" + echo "💡 phpMyAdmin now shows both Gitea and Rezepte databases!" else echo "❌ Deployment failed! Check logs:" docker compose -f docker compose.traefik-external-db.yml logs --tail=50 @@ -163,4 +163,4 @@ echo "📋 Useful commands:" echo " View logs: docker compose -f docker compose.traefik-external-db.yml logs -f" echo " Update: docker compose -f docker compose.traefik-external-db.yml pull && docker compose -f docker compose.traefik-external-db.yml up -d" echo " Stop: docker compose -f docker compose.traefik-external-db.yml down" -echo " Database access: docker exec -it $MYSQL_HOST mysql -urezepte_user -p rezepte_klaus" \ No newline at end of file +echo " Database access: docker exec -it $MYSQL_HOST mysql -urezepte_user -p rezepte" \ No newline at end of file diff --git a/deploy-production.sh b/deploy-production.sh index 8f1f0e4..9cd939c 100755 --- a/deploy-production.sh +++ b/deploy-production.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -echo "🚀 Deploying Rezepte Klaus to production..." +echo "🚀 Deploying Rezepte to production..." # Check if .env.production exists if [ ! -f .env.production ]; then diff --git a/deploy-registry.sh b/deploy-registry.sh index e9b1e2b..c6393b9 100755 --- a/deploy-registry.sh +++ b/deploy-registry.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -echo "🚀 Deploying Rezepte Klaus from Docker Registry..." +echo "🚀 Deploying Rezepte from Docker Registry..." # Check if .env.production exists if [ ! -f .env.production ]; then @@ -59,8 +59,8 @@ if [ "$HEALTHY_SERVICES" -ge 3 ]; then docker-compose -f docker-compose.registry.yml ps echo "" echo "🏷️ Image Information:" - echo "Backend: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-backend:latest}" - echo "Frontend: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-frontend:latest}" + echo "Backend: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-backend:latest}" + echo "Frontend: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-frontend:latest}" else echo "❌ Deployment failed! Check logs:" docker-compose -f docker-compose.registry.yml logs --tail=50 diff --git a/deploy-traefik.sh b/deploy-traefik.sh index 45fe005..aa05294 100755 --- a/deploy-traefik.sh +++ b/deploy-traefik.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -echo "🚀 Deploying Rezepte Klaus with Traefik Proxy..." +echo "🚀 Deploying Rezepte with Traefik Proxy..." # Check if .env.production exists if [ ! -f .env.production ]; then @@ -71,8 +71,8 @@ if [ "$HEALTHY_SERVICES" -ge 6 ]; then docker compose -f docker compose.traefik.yml ps echo "" echo "🏷️ Image Information:" - echo "Backend: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-backend:latest}" - echo "Frontend: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-frontend:latest}" + echo "Backend: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-backend:latest}" + echo "Frontend: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-frontend:latest}" echo "" echo "🔒 SSL Certificates:" echo "Traefik will automatically request Let's Encrypt certificates." diff --git a/docker-compose.development.yml b/docker-compose.development.yml index ae3e130..f25f99b 100644 --- a/docker-compose.development.yml +++ b/docker-compose.development.yml @@ -4,7 +4,7 @@ services: container_name: rezepte-mysql-dev restart: unless-stopped environment: - - MYSQL_DATABASE=rezepte_klaus + - MYSQL_DATABASE=rezepte - MYSQL_USER=rezepte - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} @@ -33,7 +33,7 @@ services: restart: unless-stopped environment: - NODE_ENV=development - - DATABASE_URL=mysql://rezepte:${MYSQL_PASSWORD}@mysql:3306/rezepte_klaus + - DATABASE_URL=mysql://rezepte:${MYSQL_PASSWORD}@mysql:3306/rezepte - CORS_ORIGIN=${CORS_ORIGIN:-*} - PORT=3001 ports: diff --git a/docker-compose.local-network.yml b/docker-compose.local-network.yml index 23267b3..6658f06 100644 --- a/docker-compose.local-network.yml +++ b/docker-compose.local-network.yml @@ -5,7 +5,7 @@ services: container_name: rezepte-mysql environment: MYSQL_ROOT_PASSWORD: rootpassword - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: rezepte_pass ports: @@ -30,7 +30,7 @@ services: environment: NODE_ENV: production PORT: 3001 - DATABASE_URL: mysql://rezepte_user:rezepte_pass@mysql:3306/rezepte_klaus + DATABASE_URL: mysql://rezepte_user:rezepte_pass@mysql:3306/rezepte JWT_SECRET: your-super-secret-jwt-key-change-in-production UPLOAD_PATH: /app/uploads MAX_FILE_SIZE: 5242880 diff --git a/docker-compose.modern.yml b/docker-compose.modern.yml index d0c73e6..b0c8f74 100644 --- a/docker-compose.modern.yml +++ b/docker-compose.modern.yml @@ -5,7 +5,7 @@ services: container_name: rezepte-mysql environment: MYSQL_ROOT_PASSWORD: rootpassword - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: rezepte_pass ports: @@ -30,7 +30,7 @@ services: environment: NODE_ENV: production PORT: 3001 - DATABASE_URL: mysql://rezepte_user:rezepte_pass@mysql:3306/rezepte_klaus + DATABASE_URL: mysql://rezepte_user:rezepte_pass@mysql:3306/rezepte JWT_SECRET: your-super-secret-jwt-key-change-in-production UPLOAD_PATH: /app/uploads MAX_FILE_SIZE: 5242880 @@ -87,7 +87,7 @@ services: - rezepte-network environment: DB_HOST: mysql - DB_NAME: rezepte_klaus + DB_NAME: rezepte DB_USER: rezepte_user DB_PASS: rezepte_pass profiles: diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 0834788..d8064be 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -4,7 +4,7 @@ services: container_name: rezepte-mysql-prod restart: unless-stopped environment: - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: ${MYSQL_PASSWORD:-change_this_password} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-change_this_root_password} @@ -32,7 +32,7 @@ services: restart: unless-stopped environment: - NODE_ENV=production - - DATABASE_URL=mysql://rezepte_user:${MYSQL_PASSWORD:-change_this_password}@mysql:3306/rezepte_klaus + - DATABASE_URL=mysql://rezepte_user:${MYSQL_PASSWORD:-change_this_password}@mysql:3306/rezepte - JWT_SECRET=${JWT_SECRET:-change_this_jwt_secret_min_32_characters} - CORS_ORIGIN=${CORS_ORIGIN:-http://localhost} - PORT=3001 diff --git a/docker-compose.registry.yml b/docker-compose.registry.yml index 28f41ab..7feaeb6 100644 --- a/docker-compose.registry.yml +++ b/docker-compose.registry.yml @@ -4,7 +4,7 @@ services: container_name: rezepte-mysql-prod restart: unless-stopped environment: - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: ${MYSQL_PASSWORD:-change_this_password} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-change_this_root_password} @@ -24,12 +24,12 @@ services: backend: # Use pre-built image from registry instead of building - image: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-backend:latest} + image: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-backend:latest} container_name: rezepte-backend-prod restart: unless-stopped environment: - NODE_ENV=production - - DATABASE_URL=mysql://rezepte_user:${MYSQL_PASSWORD:-change_this_password}@mysql:3306/rezepte_klaus + - DATABASE_URL=mysql://rezepte_user:${MYSQL_PASSWORD:-change_this_password}@mysql:3306/rezepte - JWT_SECRET=${JWT_SECRET:-change_this_jwt_secret_min_32_characters} - CORS_ORIGIN=${CORS_ORIGIN:-http://localhost} - PORT=3001 @@ -52,7 +52,7 @@ services: frontend: # Use pre-built image from registry instead of building - image: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-frontend:latest} + image: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-frontend:latest} container_name: rezepte-frontend-prod restart: unless-stopped ports: diff --git a/docker-compose.traefik-external-db.yml b/docker-compose.traefik-external-db.yml index 1b1ddb1..2fca3d6 100644 --- a/docker-compose.traefik-external-db.yml +++ b/docker-compose.traefik-external-db.yml @@ -47,12 +47,12 @@ services: backend: # Use pre-built image from registry instead of building - image: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-backend:latest} + image: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-backend:latest} container_name: rezepte-backend-prod restart: unless-stopped environment: - NODE_ENV=production - - DATABASE_URL=mysql://rezepte_user:${MYSQL_REZEPTE_PASSWORD}@${MYSQL_HOST:-mysql}:${MYSQL_PORT:-3306}/rezepte_klaus + - DATABASE_URL=mysql://rezepte_user:${MYSQL_REZEPTE_PASSWORD}@${MYSQL_HOST:-mysql}:${MYSQL_PORT:-3306}/rezepte - CORS_ORIGIN=https://rezepte.${DOMAIN} - PORT=3001 volumes: @@ -83,7 +83,7 @@ services: frontend: # Use pre-built image from registry instead of building - image: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-frontend:latest} + image: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-frontend:latest} container_name: rezepte-frontend-prod restart: unless-stopped depends_on: diff --git a/docker-compose.traefik.yml b/docker-compose.traefik.yml index d9bbe5b..307d782 100644 --- a/docker-compose.traefik.yml +++ b/docker-compose.traefik.yml @@ -49,7 +49,7 @@ services: container_name: rezepte-mysql-prod restart: unless-stopped environment: - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: ${MYSQL_PASSWORD:-change_this_password} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-change_this_root_password} @@ -69,12 +69,12 @@ services: backend: # Use pre-built image from registry instead of building - image: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-backend:latest} + image: ${BACKEND_IMAGE:-ghcr.io/your-username/rezepte-backend:latest} container_name: rezepte-backend-prod restart: unless-stopped environment: - NODE_ENV=production - - DATABASE_URL=mysql://rezepte_user:${MYSQL_PASSWORD:-change_this_password}@mysql:3306/rezepte_klaus + - DATABASE_URL=mysql://rezepte_user:${MYSQL_PASSWORD:-change_this_password}@mysql:3306/rezepte - CORS_ORIGIN=https://rezepte.${DOMAIN} - PORT=3001 volumes: @@ -107,7 +107,7 @@ services: frontend: # Use pre-built image from registry instead of building - image: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-klaus-frontend:latest} + image: ${FRONTEND_IMAGE:-ghcr.io/your-username/rezepte-frontend:latest} container_name: rezepte-frontend-prod restart: unless-stopped depends_on: diff --git a/docker-compose.yml b/docker-compose.yml index a148ed8..2b94826 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,7 @@ services: restart: always environment: MYSQL_ROOT_PASSWORD: rezepte123 - MYSQL_DATABASE: rezepte_klaus + MYSQL_DATABASE: rezepte MYSQL_USER: rezepte_user MYSQL_PASSWORD: rezepte_pass ports: @@ -32,7 +32,7 @@ services: - rezepte_network environment: DB_HOST: mysql - DB_NAME: rezepte_klaus + DB_NAME: rezepte DB_USER: rezepte_user DB_PASS: rezepte_pass diff --git a/docker-deploy.sh b/docker-deploy.sh index fc15735..f7655d0 100755 --- a/docker-deploy.sh +++ b/docker-deploy.sh @@ -6,7 +6,7 @@ YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color -echo -e "${GREEN}Rezepte Klaus - Docker Build & Deploy Script${NC}" +echo -e "${GREEN}Rezepte - Docker Build & Deploy Script${NC}" echo "==================================================" # Überprüfe ob Docker läuft diff --git a/docker-stop.sh b/docker-stop.sh index ad555ee..ead7b1b 100755 --- a/docker-stop.sh +++ b/docker-stop.sh @@ -6,7 +6,7 @@ YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color -echo -e "${GREEN}Rezepte Klaus - Docker Stop Script${NC}" +echo -e "${GREEN}Rezepte - Docker Stop Script${NC}" echo "===========================================" # Stoppe alle Services diff --git a/nginx-rezepte-klaus.conf b/nginx-rezepte.conf similarity index 93% rename from nginx-rezepte-klaus.conf rename to nginx-rezepte.conf index 8912ded..1b79811 100644 --- a/nginx-rezepte-klaus.conf +++ b/nginx-rezepte.conf @@ -1,6 +1,6 @@ -# Nginx Configuration for Rezepte Klaus -# Place this in /etc/nginx/sites-available/rezepte-klaus -# Then: sudo ln -s /etc/nginx/sites-available/rezepte-klaus /etc/nginx/sites-enabled/ +# Nginx Configuration for Rezepte +# Place this in /etc/nginx/sites-available/rezepte +# Then: sudo ln -s /etc/nginx/sites-available/rezepte /etc/nginx/sites-enabled/ # Redirect HTTP to HTTPS server { @@ -132,6 +132,6 @@ server { } # Logging - access_log /var/log/nginx/rezepte-klaus.access.log; - error_log /var/log/nginx/rezepte-klaus.error.log; + access_log /var/log/nginx/rezepte.access.log; + error_log /var/log/nginx/rezepte.error.log; } \ No newline at end of file diff --git a/nodejs-version/backend/.env b/nodejs-version/backend/.env index 7fc39fb..9230475 100644 --- a/nodejs-version/backend/.env +++ b/nodejs-version/backend/.env @@ -1,5 +1,5 @@ # Database -DATABASE_URL="mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte_klaus" +DATABASE_URL="mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte" # Server PORT=3001 diff --git a/nodejs-version/backend/.env.example b/nodejs-version/backend/.env.example index d09bfa8..236586d 100644 --- a/nodejs-version/backend/.env.example +++ b/nodejs-version/backend/.env.example @@ -3,7 +3,7 @@ NODE_ENV=development PORT=3001 # Database -DATABASE_URL="mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte_klaus" +DATABASE_URL="mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte" # JWT Secret (change in production!) JWT_SECRET=your-super-secret-jwt-key-change-in-production diff --git a/nodejs-version/backend/dist/config/config.js b/nodejs-version/backend/dist/config/config.js index 518a901..8d72726 100644 --- a/nodejs-version/backend/dist/config/config.js +++ b/nodejs-version/backend/dist/config/config.js @@ -10,7 +10,7 @@ exports.config = { port: process.env.PORT || 3001, nodeEnv: process.env.NODE_ENV || 'development', database: { - url: process.env.DATABASE_URL || 'mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte_klaus', + url: process.env.DATABASE_URL || 'mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte', }, jwt: { secret: process.env.JWT_SECRET || 'your-super-secret-jwt-key', diff --git a/nodejs-version/backend/dist/routes/health.js b/nodejs-version/backend/dist/routes/health.js index 04cdff6..c7f342d 100644 --- a/nodejs-version/backend/dist/routes/health.js +++ b/nodejs-version/backend/dist/routes/health.js @@ -5,7 +5,7 @@ const router = (0, express_1.Router)(); router.get('/', (req, res) => { res.json({ success: true, - message: 'Rezepte Klaus API is running!', + message: 'Rezepte API is running!', timestamp: new Date().toISOString(), environment: process.env.NODE_ENV, }); diff --git a/nodejs-version/backend/package.json b/nodejs-version/backend/package.json index 81ad3b0..5d6d007 100644 --- a/nodejs-version/backend/package.json +++ b/nodejs-version/backend/package.json @@ -1,7 +1,7 @@ { "name": "rezepte-backend", "version": "1.0.0", - "description": "Rezepte Klaus - Node.js Backend", + "description": "Rezepte - Node.js Backend", "main": "dist/app.js", "scripts": { "dev": "tsx watch src/app.ts", @@ -53,6 +53,6 @@ "typescript", "express" ], - "author": "Klaus", + "author": "Recipe Admin", "license": "MIT" } diff --git a/nodejs-version/backend/src/config/config.ts b/nodejs-version/backend/src/config/config.ts index 923882b..39d6320 100644 --- a/nodejs-version/backend/src/config/config.ts +++ b/nodejs-version/backend/src/config/config.ts @@ -7,7 +7,7 @@ export const config = { nodeEnv: process.env.NODE_ENV || 'development', database: { - url: process.env.DATABASE_URL || 'mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte_klaus', + url: process.env.DATABASE_URL || 'mysql://rezepte_user:rezepte_pass@localhost:3307/rezepte', }, jwt: { diff --git a/nodejs-version/backend/src/routes/health.ts b/nodejs-version/backend/src/routes/health.ts index 89f08e6..2ea0a40 100644 --- a/nodejs-version/backend/src/routes/health.ts +++ b/nodejs-version/backend/src/routes/health.ts @@ -6,7 +6,7 @@ const router = Router(); router.get('/', (req: Request, res: Response) => { res.json({ success: true, - message: 'Rezepte Klaus API is running!', + message: 'Rezepte API is running!', timestamp: new Date().toISOString(), environment: process.env.NODE_ENV, }); diff --git a/nodejs-version/frontend/src/components/Header.tsx b/nodejs-version/frontend/src/components/Header.tsx index d4124cc..bf7d61b 100644 --- a/nodejs-version/frontend/src/components/Header.tsx +++ b/nodejs-version/frontend/src/components/Header.tsx @@ -8,7 +8,7 @@ const Header: React.FC = () => {
-

🍳 Rezepte Klaus

+

🍳 Rezepte