Files
immorechner/docs/installation.md
2025-11-09 11:27:21 +01:00

6.3 KiB

Installation & Setup

← Zurück zur Hauptseite

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:

  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

# 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

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

# 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:

← Zurück zur Hauptseite