Get Started
Voraussetzungen
Bevor du beginnst, stelle sicher, dass dein System die folgenden Anforderungen erfüllt.
Systemanforderungen
Uni-Verein läuft auch auf sehr kleiner Hardware. Die Mindestanforderung ist ein Raspberry Pi 3, für den täglichen Betrieb empfehlen wir etwas mehr Leistung.
| Mindestens | Empfohlen | |
|---|---|---|
| Hardware | Raspberry Pi 3 | Aktueller Mini-PC, Server oder VPS |
| RAM | 1 GB | 2 GB oder mehr |
| CPU | 4 Kerne (Raspberry Pi 3) | 2 oder mehr Kerne eines aktuellen Prozessors |
ℹ️ Auf einem Raspberry Pi 3 ist die Software gut nutzbar. Lediglich der Login dauert dort spürbar länger, danach reagiert die Anwendung flüssig. Wenn dich das stört oder viele Personen gleichzeitig arbeiten, nimm die empfohlene Ausstattung.
Benötigte Software
- Docker & Docker Compose – zum Starten der Anwendung
- Docker installieren
- Docker Compose ist ab Docker Desktop bereits enthalten
- curl – zum Herunterladen der Konfigurationsdateien (auf den meisten Systemen vorinstalliert)
Für den Betrieb mit HTTPS (empfohlen)
- Eine Domain, deren DNS-A/AAAA-Eintrag auf die öffentliche IP-Adresse deines Servers zeigt
- Die Ports 80 und 443 müssen aus dem Internet erreichbar sein (Firewall, Cloud-Sicherheitsgruppe und Router-Portweiterleitung prüfen). Port 80 wird auch bei HTTPS benötigt, da darüber das Zertifikat ausgestellt wird und normale HTTP-Aufrufe auf HTTPS umgeleitet werden
Schritt 1: Docker installieren
Falls Docker noch nicht installiert ist, lade es von der offiziellen Seite herunter und installiere es:
👉 https://docs.docker.com/get-docker/
Überprüfe nach der Installation, ob Docker korrekt funktioniert:
docker --version
docker compose version
Schritt 2: Projekt installieren und ausführen
Wähle eine der beiden Varianten. Entscheidend ist, ob bereits etwas vor Uni-Verein die HTTPS-Verschlüsselung übernimmt (z. B. ein Load Balancer deines Hosters, ein Cloudflare Tunnel oder ein bestehender Reverse Proxy).
Variante A: Mit HTTPS (empfohlen)
Nutze diese Variante, solange du die Verschlüsselung nicht bereits vor Uni-Verein erledigst. Es wird automatisch ein kostenloses Zertifikat von Let's Encrypt besorgt und erneuert, dafür ist Caddy im Paket enthalten.
- Herunterladen der Konfigurations- & Installationsdateien
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/nginx.conf
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/Caddyfile
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/docker-compose-ini.yml
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/docker-compose-tls.yml
- Erzeugen der Umgebungsvariablen in der .env-Datei
touch .env && mkdir backup && docker compose -f docker-compose-ini.yml up
Bearbeite die .env-Datei, ändere die Datenbank-Passwörter und trage deine Domain ein:
DB_ROOT_PASSWORD=rootUserPassword
DB_NAME=uni-verein
DB_USER=databaseUserName
DB_PASSWORD=databaseUserPassword
DOMAIN=verein.example.org
ACME_EMAIL=admin@example.org
DOMAIN ist die Adresse, unter der Uni-Verein erreichbar sein soll. ACME_EMAIL wird bei Let's Encrypt für Hinweise zum Zertifikat hinterlegt.
- Starten der Anwendung
docker compose -f docker-compose-tls.yml up -d
Die Anwendung ist anschließend unter https://<deine-domain> erreichbar. 🎉 Das Zertifikat wird beim ersten Start automatisch angefordert, das kann bis zu einer Minute dauern. Voraussetzung sind der DNS-Eintrag und die geöffneten Ports 80/443. Wenn die Seite nicht erscheint, hilft ein Blick in die Logs von Caddy:
docker compose -f docker-compose-tls.yml logs caddy
Variante B: HTTPS wird bereits vor Uni-Verein übernommen
⚠️ Nutze diese Variante nur, wenn die Verschlüsselung wirklich schon vor Uni-Verein eingerichtet ist. Hier wird reines HTTP ohne eigene Verschlüsselung ausgeliefert. Wer das direkt ins Internet stellt, überträgt Zugangsdaten, Sitzungstoken und Mitgliederdaten (inklusive IBANs) unverschlüsselt.
- Herunterladen der Konfigurations- & Installationsdateien
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/nginx.conf
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/docker-compose-ini.yml
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/docker-compose-prod-image.yml
- Erzeugen der Umgebungsvariablen in der .env-Datei
touch .env && mkdir backup && docker compose -f docker-compose-ini.yml up
Bearbeite die .env-Datei und ändere die Datenbank-Passwörter:
DB_ROOT_PASSWORD=rootUserPassword
DB_NAME=uni-verein
DB_USER=databaseUserName
DB_PASSWORD=databaseUserPassword
- Starten der Anwendung
docker compose -f docker-compose-prod-image.yml up -d
Die Anwendung ist anschließend unter http://localhost:80 erreichbar. 🎉
ℹ️ Seit Version 1.4.0 nutzt Uni-Verein PostgreSQL statt MariaDB als Datenbank-Engine. Bei einer Neuinstallation über die obigen Dateien wird direkt PostgreSQL aufgesetzt, die .env-Variablennamen bleiben dabei unverändert.
Container und Logs prüfen
Um die laufenden Container zu überprüfen (bei Variante A mit -f docker-compose-tls.yml, bei Variante B mit -f docker-compose-prod-image.yml):
docker compose -f docker-compose-tls.yml ps
Um die Logs einzusehen:
docker compose -f docker-compose-tls.yml logs -f
Schritt 3: Erster Login
Nach dem Start kannst du dich mit dem vorbereiteten Administrator-Konto anmelden:
- Benutzer:
Admin - Passwort:
admin123
⚠️ Das ist ein allgemein bekanntes Standardpasswort. Beim Login damit erscheint ein Dialog, der sich erst schließen lässt, nachdem du ein neues Passwort gesetzt hast. Erst danach kannst du die Anwendung nutzen.
Wie es danach weitergeht, erfährst du im Quick Start.
Aktualisierung
Als Administrator siehst du eine Benachrichtigungsglocke in der App, sobald eine neue Version verfügbar ist. Erstelle vor dem Update ein manuelles Backup (Datenbank-Backup und Mitgliederexport, beide verfügbar unter Backup in der App). Führe dann Folgendes aus deinem Installationsverzeichnis aus (dem Verzeichnis, das die .env enthält):
curl -O https://raw.githubusercontent.com/uni-verein/uni-verein/main/docker-compose-update.yml
docker compose -f docker-compose-update.yml run --rm update
Dies prüft GitHub auf die neueste Version und bittet dich zu bestätigen, dass du ein manuelles Backup erstellt hast — das Update wird erst fortgesetzt, wenn du yes eingibst. Anschließend werden die passende nginx.conf und die Compose-Datei deiner Installation heruntergeladen (docker-compose-tls.yml samt Caddyfile bei Variante A, docker-compose-prod-image.yml bei Variante B), VERSION in deiner .env aktualisiert und der Stack mit der neuen Version neu gestartet. Deine bestehenden Secrets und die Datenbank bleiben unverändert.
ℹ️ Das Caddyfile wird bei jedem Update überschrieben, genau wie die nginx.conf. Eigene Änderungen daran gehen dabei verloren. DOMAIN und ACME_EMAIL stehen in der .env und bleiben erhalten.
⚠️ Wichtig beim Update auf 1.8.1 oder neuer: Proxy und Frontend lauschen seit 1.8.1 im Container auf Port 8080 (der Host-Port bleibt 80), und alle Container laufen ohne Root-Rechte. Aktualisiere deshalb immer mit dem Update-Befehl oben, der nginx.conf und Compose-Datei gemeinsam ersetzt und die Verzeichnisse logs/ und receipts/ vorbereitet. Wenn du die Selbstregistrierung nutzt, öffne nach dem Update einmal die allgemeinen Einstellungen und speichere sie, damit die öffentliche URL für die Bestätigungslinks hinterlegt wird. Details stehen im Blogpost zu 1.8.1.
⚠️ Wichtig für Installationen vor 1.4.0: Seit Version 1.4.0 wechselt Uni-Verein die Datenbank-Engine von MariaDB zu PostgreSQL. Installationen, die noch auf MariaDB laufen, werden zunächst automatisch auf 1.3.1 gebracht; der darauffolgende Update-Lauf migriert die Datenbank dann nach PostgreSQL und stellt den gesamten Stack um. Das bringt eine Ausfallzeit mit sich, die proportional zur Datenbankgröße ist — führe den Update-Befehl bei Bedarf mehrfach aus, bis "Already up to date" gemeldet wird. Details zum Ablauf und zum Sicherheitsnetz der Migration findest du im Blogpost zu 1.4.0.