# Installation & Setup [← Zurück zur Hauptseite](../README.md) ## Voraussetzungen - **Docker Desktop** (Windows/Mac) oder **Docker Engine + Docker Compose** (Linux) - **Git** - Mindestens 2GB freier RAM für Docker - Ports 8080, 8081 und 3306 verfügbar ## Installations-Schritte ### 1. Repository klonen ```bash git clone cd immorechner ``` ### 2. Docker-Container starten ```bash docker-compose up -d --build ``` Dieser Befehl: - Baut das PHP 8.4 Image mit allen benötigten Extensions - Startet MariaDB Container - Startet phpMyAdmin Container - Startet den Apache-Webserver **Hinweis:** Der erste Build kann 5-10 Minuten dauern. ### 3. Dependencies installieren ```bash docker-compose exec web composer install ``` ### 4. Bundle-Assets installieren ```bash docker-compose exec web php bin/console assets:install public --symlink --relative ``` Dieser Schritt ist wichtig für die Swagger UI (CSS, JS, Bilder). ### 5. Datenbank-Schema erstellen ```bash docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction ``` Diese Migration erstellt: - Users-Tabelle mit Passwort- und API-Key-Feldern - Bundesländer-Tabelle (vorbefüllt mit allen 16 deutschen Bundesländern) - Heizungstypen-Tabelle (vorbefüllt mit Ölheizung, Gasheizung, Wärmepumpe, Pelletheizung) - Immobilien-Tabelle mit allen Relationen ### 6. Cache leeren ```bash docker-compose exec web php bin/console cache:clear ``` ## Überprüfung der Installation ### Anwendung testen Öffnen Sie die folgenden URLs in Ihrem Browser: 1. **Frontend (Rechner):** http://localhost:8080 - Sie sollten den Immobilienrechner sehen - Bundesländer-Dropdown sollte befüllt sein - Heizungstypen-Dropdown sollte befüllt sein 2. **API-Dokumentation:** http://localhost:8080/api/docs.html - Swagger UI sollte mit CSS/Styling laden - Alle API-Endpunkte sollten sichtbar sein 3. **phpMyAdmin:** http://localhost:8081 - Server: `db` - Benutzer: `root` - Passwort: `root` - Datenbank `immorechner` sollte existieren ### Datenbank überprüfen ```bash # In Container einloggen docker-compose exec db bash # MariaDB-Client starten mariadb -u root -proot immorechner # Tabellen anzeigen SHOW TABLES; # Bundesländer überprüfen (sollte 16 Einträge haben) SELECT COUNT(*) FROM bundeslaender; # Heizungstypen überprüfen (sollte 4 Einträge haben) SELECT COUNT(*) FROM heizungstypen; # Beenden EXIT; ``` ## Erste Schritte nach der Installation ### 1. Testbenutzer anlegen #### Via Frontend (Empfohlen) 1. Öffnen Sie http://localhost:8080/register 2. Registrieren Sie sich mit: - Name: "Test User" - E-Mail: "test@example.com" - Passwort: "test123" (min. 6 Zeichen) 3. Nach der Registrierung werden Sie zum Login weitergeleitet 4. Melden Sie sich an #### Via API ```bash curl -X POST http://localhost:8080/api/users \ -H "Content-Type: application/json" \ -d '{ "name": "Test User", "email": "test@example.com", "role": "user" }' ``` **Hinweis:** Die API-Response enthält den `apiKey`, den Sie für API-Anfragen benötigen. ### 2. Erste Immobilie berechnen #### Via Frontend 1. Gehen Sie zu http://localhost:8080/ 2. Füllen Sie das Formular aus (mindestens: Adresse, Kaufpreis, Wohnfläche) 3. Sehen Sie die Live-Berechnungen rechts 4. Optional: Klicken Sie auf "Link teilen" zum Teilen 5. Wenn angemeldet: Klicken Sie auf "Speichern" #### Via API ```bash # Ersetzen Sie YOUR_API_KEY mit dem API-Key aus Schritt 1 curl -X POST http://localhost:8080/api/immobilies \ -H "Content-Type: application/json" \ -H "X-API-KEY: YOUR_API_KEY" \ -d '{ "verwalter": "/api/users/1", "adresse": "Teststraße 123, 12345 Teststadt", "wohnflaeche": 85, "nutzflaeche": 15, "zimmer": 3, "typ": "wohnung", "kaufpreis": 300000, "bundesland": "/api/bundeslands/1" }' ``` ## Umgebungsvariablen anpassen Die Datei `.env` enthält alle wichtigen Konfigurationen: ```env # Symfony APP_ENV=dev # Für Produktion: prod APP_SECRET= # Für Produktion: neu generieren # Datenbank DATABASE_URL="mysql://immorechner_user:immorechner_pass@db:3306/immorechner?serverVersion=mariadb-11.7.1&charset=utf8mb4" # CORS (nur für API relevant) CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' ``` ### Für Produktion Erstellen Sie eine `.env.local` Datei (wird von Git ignoriert): ```env APP_ENV=prod APP_SECRET= DATABASE_URL="mysql://prod_user:sichere_passwort@db-host:3306/prod_db?serverVersion=mariadb-11.7.1&charset=utf8mb4" CORS_ALLOW_ORIGIN='^https?://(ihre-domain\.com)(:[0-9]+)?$' ``` ## Ports anpassen Falls die Standard-Ports bereits belegt sind, können Sie diese in `docker-compose.yml` ändern: ```yaml services: web: ports: - "8090:80" # Statt 8080:80 db: ports: - "3307:3306" # Statt 3306:3306 phpmyadmin: ports: - "8091:80" # Statt 8081:80 ``` ## Häufige Probleme bei der Installation ### Container starten nicht ```bash # Container-Logs prüfen docker-compose logs # Spezifischen Container-Log prüfen docker-compose logs web docker-compose logs db # Container-Status prüfen docker ps -a ``` ### "Permission Denied" Fehler ```bash # Container neu bauen und Berechtigungen setzen docker-compose down docker-compose up -d --build # Berechtigungen im Container setzen docker-compose exec web chown -R www-data:www-data /var/www/html/var ``` ### Datenbank-Verbindungsfehler ```bash # Prüfen ob DB-Container läuft docker ps | grep db # DB-Logs prüfen docker-compose logs db # Warten bis DB bereit ist (kann 30-60 Sekunden dauern) docker-compose exec web php bin/console doctrine:query:sql "SELECT 1" ``` ### Composer-Fehler ```bash # Composer Cache leeren docker-compose exec web composer clear-cache # Dependencies neu installieren docker-compose exec web rm -rf vendor docker-compose exec web composer install ``` ## Deinstallation ### Nur Container stoppen ```bash docker-compose down ``` ### Container und Volumes löschen (Datenbank wird gelöscht!) ```bash docker-compose down -v ``` ### Alles entfernen (inkl. Images) ```bash docker-compose down -v --rmi all ``` --- **Nächste Schritte:** - [Features & Funktionalität](features.md) - Übersicht aller Funktionen - [API-Dokumentation](api.md) - REST-API verwenden - [Entwicklung](development.md) - Development-Workflow [← Zurück zur Hauptseite](../README.md)