# Polaris Learning Infrastructure Setup
Die Polaris Learning Infrastructure ist eine moderne, skalierbare Plattform zur Unterstützung digitaler Lernumgebungen. Sie ermöglicht die nahtlose Integration verschiedener Lernressourcen, Benutzerverwaltung und Analysefunktionen für ein effektives Lernmanagement.

## Systemvoraussetzungen
Bevor Sie mit der Installation der Polaris Learning Infrastructure beginnen, stellen Sie sicher, dass Ihr System die folgenden Anforderungen erfüllt:

### Empfohlene Systemanforderungen:
- Betriebssystem: Linux (Debian 11+, Ubuntu 20.04+ empfohlen)
- Prozessor: Mindestens 4 CPU-Kerne (8 empfohlen für größere Installationen)
- Arbeitsspeicher: Mindestens 8 GB RAM (16 GB oder mehr für größere Benutzerzahlen empfohlen)
- Festplattenspeicher: Mindestens 50 GB freier Speicherplatz (je nach Datenvolumen erweiterbar)
- Netzwerk: Stabile Internetverbindung für Updates und Container-Downloads

### Softwarevoraussetzungen:
- Docker (mindestens Version 20.10)
- Docker Compose (mindestens Version 1.29)
- Git (für das Herunterladen der Konfigurationsdateien)
- cURL oder Wget (für das Abrufen externer Abhängigkeiten)

## Installation von Docker und Docker Compose
Falls Docker noch nicht installiert ist, können Sie es auf Debian oder Ubuntu mit folgenden Befehlen einrichten:

```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```

Installieren von Docker und Docker Compose:

```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

Überprüfen, ob Docker installiert ist:

```bash
docker --version
docker-compose --version
sudo docker run hello-world
```

### Clonen des Repositories 
Zunächst muss dieses Repository gecloned werden

```bash
git clone https://git.rwth-aachen.de/polaris/deployment.git polaris
cd polaris
```

### Erstellung von privaten/öffentlichen Schlüsseln und .env-Datei

Zuerst müssen wir ein neues Schlüsselpaar für die Authentifizierung erstellen. Die Passphrase wird leer gelassen, und alle Passwörter in der Konfigurationsdatei müssen geändert werden.
Dies wird genutzt, um Token zu signieren (JWT).

```bash
ssh-keygen -b 4096 -f id_rsa
cp .env.sample .env
```

Wichtig: Ändern Sie alle Passwörter in der .env-Datei, um die Sicherheit zu gewährleisten. Passen Sie dabei auf, dass die Passwörter, die übereinstimmen müssen, richtig gesetzt sind. 

### Container starten
Um die Anwendung zu starten, verwenden Sie Docker Compose, das alle benötigten Dienste im Hintergrund hochfährt:

```bash
docker compose up -d
```

#### Überprüfung des Container-Status
Nach dem Start der Container sollten Sie überprüfen, ob alle Dienste erfolgreich ausgeführt werden:

```bash
docker compose ps
```
Wenn alle Container erfolgreich gestartet wurden, können Sie die Anwendung im Browser aufrufen:

URL: http://localhost:8004/

Hier sollte die Rights Engine sichtbar sein.

### Erstellen eines Administrations-Accounts
In der Rights Engine läuft Django, und um sich als Administrator anzumelden, muss ein Superuser erstellt werden. Dies ermöglicht Zugriff auf das Django-Admin-Interface.
Dafür nutzen wir docker compose exec:

```bash
docker compose exec rights-engine bash
```

Nachdem Sie sich im Django-Container befinden, führen Sie den folgenden Befehl aus, um einen Superuser zu erstellen:

```bash
python3 manage.py createsuperuser
```


## Aktualisieren von Polaris
Falls Sie eine neuere Version von Polaris installieren möchten, folgen Sie diesen Schritten. Stellen Sie sicher, dass Sie sich im Verzeichnis befinden, in dem sich Ihre docker-compose.yml-Datei befindet.
In der .env-Datei ist die Version von Polaris eingetragen. Bitte die auf die entsprechende Version aktualisieren.

```.env
POLARIS_VERSION=v1.0.1-rc11
```
Per Docker das Image laden:

```bash
docker compose down
docker compose pull
docker compose up -d
```

Prüfen Sie, ob die neuen Container laufen:

```bash
docker compose ps
```

Falls Polaris nicht wie erwartet startet, können Sie die Logs anzeigen:

```bash
docker compose logs -f
```

### Upgrade Guide
Detailierte Hinweise zum Upgrade von einzelenen Versionen von Polaris findet man im Upgrade-Guide: http://git.rwth-aachen.de/polaris/deployment/-/blob/main/UPGRADE_GUIDE.md?ref_type=heads

## Mehr Informationen

https://polaris.pages.rwth-aachen.de/rights-engine/