6.3 KiB
6.3 KiB
Installation & Setup
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
git clone <repository-url>
cd immorechner
2. Docker-Container starten
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
docker-compose exec web composer install
4. Bundle-Assets installieren
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
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
docker-compose exec web php bin/console cache:clear
Überprüfung der Installation
Anwendung testen
Öffnen Sie die folgenden URLs in Ihrem Browser:
-
Frontend (Rechner): http://localhost:8080
- Sie sollten den Immobilienrechner sehen
- Bundesländer-Dropdown sollte befüllt sein
- Heizungstypen-Dropdown sollte befüllt sein
-
API-Dokumentation: http://localhost:8080/api/docs.html
- Swagger UI sollte mit CSS/Styling laden
- Alle API-Endpunkte sollten sichtbar sein
-
phpMyAdmin: http://localhost:8081
- Server:
db - Benutzer:
root - Passwort:
root - Datenbank
immorechnersollte existieren
- Server:
Datenbank überprüfen
# 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)
- Öffnen Sie http://localhost:8080/register
- Registrieren Sie sich mit:
- Name: "Test User"
- E-Mail: "test@example.com"
- Passwort: "test123" (min. 6 Zeichen)
- Nach der Registrierung werden Sie zum Login weitergeleitet
- Melden Sie sich an
Via API
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
- Gehen Sie zu http://localhost:8080/
- Füllen Sie das Formular aus (mindestens: Adresse, Kaufpreis, Wohnfläche)
- Sehen Sie die Live-Berechnungen rechts
- Optional: Klicken Sie auf "Link teilen" zum Teilen
- Wenn angemeldet: Klicken Sie auf "Speichern"
Via API
# 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:
# Symfony
APP_ENV=dev # Für Produktion: prod
APP_SECRET=<generiert> # 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):
APP_ENV=prod
APP_SECRET=<neue-generierte-secret-hier>
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:
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
# 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
# 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
# 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
# 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
docker-compose down
Container und Volumes löschen (Datenbank wird gelöscht!)
docker-compose down -v
Alles entfernen (inkl. Images)
docker-compose down -v --rmi all
Nächste Schritte:
- Features & Funktionalität - Übersicht aller Funktionen
- API-Dokumentation - REST-API verwenden
- Entwicklung - Development-Workflow