---
title: "Installation"
description: "Klonen Sie Nibiru, installieren Sie Abhängigkeiten, setzen Sie Berechtigungen und führen Sie Ihre erste Migration aus."
---

## Anforderungen

- **PHP** ≥ 8.2 mit diesen Erweiterungen: `pdo`, `gd`, `memcached`, `curl`.
- **Composer** für PHP-Abhängigkeiten.
- **Eine Datenbank**: MariaDB / MySQL ≥ 10.4 oder PostgreSQL ≥ 13. ODBC, wenn Sie eine nicht-native Quelle verbinden.
- **Smarty** (installiert über Composer).
- Ein Webserver mit **mod_rewrite** (Apache) oder Äquivalent (`vhost.conf` ist für nginx-artige DocumentRoots enthalten).

## Klonen und Installieren
```bash
git clone https://github.com/alllinux/Nibiru my-app
cd my-app
composer install
```
Composer installiert in `core/l/` (Nibiru verwendet ein ungewöhnliches `vendor-dir`, um sämtlichen Framework-Code unter `core/` zu halten).

## Konfigurieren

Kopieren Sie die Beispiel-INI-Datei und bearbeiten Sie Ihre Umgebung:
```bash
cp application/settings/config/settings.development.ini.example \
   application/settings/config/settings.development.ini
```
Die minimalen Abschnitte, die Sie einrichten müssen:
```ini
[ENGINE]
templates    = "/../../application/view/templates/"
templates_c  = "/../../application/view/templates_c/"
cache        = "/../../application/view/cache/"
caching      = false
debug        = true
error.controller = "error"

[SETTINGS]
page.url = "https://my-app.local"
navigation = "/../../application/settings/config/navigation/main.json"
modules.path = "/../../application/module/"
entries.per.page = 25
smarty.css[] = "/public/css/app.css"
smarty.js[]  = "/public/js/app.js"
timezone = "Europe/Vienna"

[DATABASE]
driver   = "pdo"           ; one of: mysql, pdo, postgres, psql, postgresql
hostname = "localhost"
port     = 3306
username = "nibiru"
password = "secret"
basename = "nibiru_dev"
encoding = "utf8mb4"
is.active = true

[SECURITY]
password_hash = "change-me-at-once"

[GENERATOR]
database = true            ; auto-generate models from DB tables
```
`APPLICATION_ENV` wählt aus, welche Datei geladen wird — standardmäßig `settings.development.ini`.
```bash
export APPLICATION_ENV=production   # picks settings.production.ini
```
## Bootstrap-Ordner und Berechtigungen
```bash
./nibiru -s
```
Dies erstellt/berechtigt `/application/view/templates_c/`, `/application/view/cache/` und Protokolldirektorien usw.

## Führen Sie Ihre erste Migration durch

Migrationsdateien befinden sich im Verzeichnis `application/settings/config/database/` als nummerierte SQL-Dateien (`001-acl.sql`, `002-account.sql`, …). Führen Sie alle aus mit:
```bash
./nibiru -mi local
```
Der Migrator notiert, was er angewendet hat, sodass ein Neuausführen sicher ist. Um gegen Staging oder Produktion anzuwenden, ändern Sie die Umgebung:
```bash
APPLICATION_ENV=production ./nibiru -mi production
```
:::caution[Zurücksetzbefehle sind zerstörend]
`./nibiru -mi-reset {env}` löscht die Migrations-Tabelle und vergisst, welche Dateien angewendet wurden. Verwenden Sie es nur auf einer neu erstellten Datenbank, bei der es Ihnen egal ist, sie erneut zu befüllen.
:::

## Erster Start

Zeigen Sie Ihren Webserver auf das Projektstammverzeichnis (das Verzeichnis, das `index.php` enthält). Für nginx verwenden Sie die enthaltene `vhost.conf` als Ausgangspunkt. Für Apache ist die standardmäßige `.htaccess`-Umleitung in `index.php` ausreichend.

Navigieren Sie zu `/`, und Sie sollten die Index-Vorlage sehen. Von dort führt [der Schnellstart](/start/quick-start/) Sie durch Ihren ersten Controller und Ihre erste Ansicht.
