Installation

JF-Manager installieren oder erst ausprobieren.

Für den echten Betrieb führt ein Assistent durch die Installation. Er fragt zuerst alle Angaben ab, prüft den Server und zeigt eine Zusammenfassung. Erst wenn ihr bestätigt, wird etwas verändert. Wer erst schauen möchte, startet die Demo mit fiktiven Daten auf dem eigenen Rechner.

Aktuelle Version 3.2.0Release-Hinweise

Für den Serverbetrieb braucht ihr

  • Linux-Server, amd64

    Debian 13 nativ, Proxmox-LXC oder Docker Compose V2 auf einem Linux-System mit systemd.

  • 2 GB RAM, 5 GB Speicher

    Mindestens 2 GB Arbeitsspeicher und 5 GB freier Platz im Datenverzeichnis.

  • Eigene Domain

    Ein DNS-Eintrag zeigt auf den Server. Für das eingebaute HTTPS sind die Ports 80 und 443 frei.

  • Root-Zugang

    Per SSH als root oder mit sudo. Der Assistent prüft alles, bevor er etwas verändert.

Für die Demo reicht ein normaler Rechner mit Linux, macOS oder Windows mit WSL.

Anleitung nach Installationsweg

Debian 13 nativ

Läuft direkt auf dem Server, ohne Docker. Der Assistent installiert PostgreSQL, Redis, die Anwendung und Caddy für HTTPS selbst.

  1. 1

    Werkzeuge installieren

    Auf einem frischen Debian 13 die Pakete installieren, die Git und der Assistent vorab brauchen.

    Terminal
    sudo apt-get update
    sudo apt-get install -y git jq curl openssl ca-certificates

    Arbeitet ihr direkt als root, lasst sudo einfach weg.

  2. 2

    Quellcode holen

    Den Release-Tag v3.2.0 auschecken. Installierbar sind nur veröffentlichte Versionen, keine Branches.

    Terminal
    git clone --depth 1 --branch v3.2.0 https://github.com/Jugendfeuerwehr-Manager/JF-Manager.git
    cd JF-Manager
  3. 3

    Assistent starten

    Er lädt das Releasepaket 3.2.0 von GitHub und prüft Prüfsummen und Manifest, bevor er etwas installiert.

    Terminal
    sudo ./ops/jfctl install --version 3.2.0 --mode native

    Weiter mit den Fragen des Assistenten und den Schritten danach.

Docker Compose

JF-Manager läuft in Containern aus vorgebauten Release-Images. jfctl legt die Compose-Konfiguration an und verwaltet sie; ihr bearbeitet keine Compose-Datei von Hand.

  1. 1

    Docker installieren

    Docker Engine mit Compose V2 nach der offiziellen Anleitung für euer System einrichten. Danach prüfen und die übrigen Werkzeuge installieren (Debian oder Ubuntu):

    Terminal
    docker compose version
    sudo apt-get install -y git jq curl openssl ca-certificates

    Docker Desktop unter Windows oder macOS ist kein unterstützter Produktionsweg, weil jfctl systemd für Sicherungen und Wartung braucht. Zum Testen unter Windows nehmt ihr die Demo in WSL.

  2. 2

    Quellcode holen

    Terminal
    git clone --depth 1 --branch v3.2.0 https://github.com/Jugendfeuerwehr-Manager/JF-Manager.git
    cd JF-Manager
  3. 3

    Assistent starten

    Er lädt die Release-Images und prüft das Paket, bevor er etwas startet.

    Terminal
    sudo ./ops/jfctl install --version 3.2.0 --mode compose

    Läuft auf dem Host schon eine ältere JF-Manager-Installation mit Compose, wählt mit --expert einen eigenen Projektnamen und folgt der Migrationsanleitung.

    Weiter mit den Fragen des Assistenten und den Schritten danach.

Proxmox-LXC

Für Proxmox VE 9. Ein Skript auf dem Proxmox-Host legt einen unprivilegierten Debian-13-Container an und installiert JF-Manager darin. Auf dem Host selbst werden keine Anwendungsdienste installiert.

  1. 1

    Auf dem Proxmox-Host: Quellcode holen

    In der Shell des Proxmox-Hosts als root, nicht in einem Container:

    Terminal
    apt-get install -y git
    git clone --depth 1 --branch v3.2.0 https://github.com/Jugendfeuerwehr-Manager/JF-Manager.git
  2. 2

    Container anlegen und installieren

    Terminal
    ./JF-Manager/ops/proxmox/jf-lxc.sh --version 3.2.0

    Das Skript fragt CT-ID, Hostname, Storage, CPU, RAM, Plattengröße (mindestens 8 GB), Netzwerkbrücke, IP-Adresse (DHCP oder statisch) und DNS ab, danach die Angaben des Assistenten. Es prüft Proxmox-Version, Storage und Debian-13-Vorlage sowie das Release, bevor es etwas anlegt.

  3. 3

    Im Container weiterarbeiten

    Alle weiteren jfctl-Befehle laufen im Container:

    Terminal
    pct enter <CT-ID>
    jfctl status

    Weiter mit den Schritten nach der Installation.

Demo zum Ausprobieren

Startet JF-Manager auf eurem Rechner mit einer neuen, temporären Datenbank voller fiktiver Daten: drei Abteilungen, über 50 Mitglieder, Dienste, Übungen, Ausstattung, Eltern- und Mitgliederzugänge. Es werden keine echten E-Mails oder Push-Nachrichten verschickt, und die Demo ist nur auf eurem Rechner erreichbar.

Nur zum Ausprobieren. Die Demo ist keine Installation für echte Daten. Für den Betrieb nehmt ihr Debian, Docker oder Proxmox.

  1. 1

    Werkzeuge installieren

    Gebraucht werden Git, Python 3.12 mit Pipenv und Node.js ab 22.12 (oder 20.19). So geht es unter Ubuntu 24.04, wo Python 3.12 schon dabei ist:

    Terminal
    sudo apt-get update
    sudo apt-get install -y git curl build-essential python3-dev libldap2-dev libsasl2-dev pipenv
    # Node.js 22, die Ubuntu-Pakete sind dafür zu alt
    curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
    sudo -E bash nodesource_setup.sh
    sudo apt-get install -y nodejs

    Debian 13 bringt Python 3.13 mit; die Demo verlangt 3.12. Nehmt dafür Ubuntu 24.04 oder installiert Python 3.12 zusätzlich.

  2. 2

    Quellcode holen und Backend starten

    Terminal
    git clone --depth 1 --branch v3.2.0 https://github.com/Jugendfeuerwehr-Manager/JF-Manager.git
    cd JF-Manager/backend
    pipenv install
    PIPENV_DONT_LOAD_ENV=1 pipenv run python demo.py --port 8011

    Das erste pipenv install dauert einige Minuten. Danach nennt das Terminal die Demo-Konten, ein gemeinsames Passwort und den Befehl für den aktuellen Anmeldecode. Lasst das Terminal offen.

  3. 3

    Oberfläche starten

    In einem zweiten Terminal:

    Terminal
    cd JF-Manager/frontend
    npm ci
    VITE_BACKEND_URL=http://127.0.0.1:8011 npm run dev
  4. 4

    Anmelden

    Öffnet http://localhost:5173 und meldet euch mit einem der angezeigten Konten und dem gemeinsamen Passwort an.

    admin, jugendwart, leitung.…
    Verwaltungskonten mit hinterlegtem Authenticator. Den Code zeigt der Befehl aus dem Demo-Terminal (… manage.py demo_totp admin, im Ordner backend ausführen).
    betreuer.mitte, ausbilder, geraetewart
    Konten mit weniger Rechten, so seht ihr, was Betreuende sehen.
    eltern@demo.example.invalid
    Elternportal mit zwei Kindern; mitglied@demo.example.invalid zeigt das Mitgliederportal.

    Beenden mit Strg+C in beiden Terminals. Jeder Start legt eine neue Demo-Datenbank an.

Unter Windows testen

JF-Manager ist für Linux-Server gebaut. Unter Windows 10 und 11 läuft die Demo im Windows-Subsystem für Linux (WSL), das Microsoft kostenlos mitliefert. Die Oberfläche öffnet ihr ganz normal im Windows-Browser.

  1. 1

    Ubuntu in WSL installieren

    PowerShell als Administrator öffnen und ausführen. Danach den Rechner neu starten, Ubuntu aus dem Startmenü öffnen und einen Benutzernamen mit Passwort festlegen.

    PowerShell
    wsl --install -d Ubuntu-24.04
  2. 2

    Demo im Ubuntu-Fenster starten

    Im Ubuntu-Fenster folgt ihr der Demo-Anleitung ab Schritt 1. Für das zweite Terminal öffnet ihr Ubuntu einfach ein zweites Mal.

    Arbeitet im Linux-Heimatverzeichnis (cd ~) und nicht unter /mnt/c, sonst werden Installation und Start sehr langsam.

  3. 3

    Im Windows-Browser öffnen

    WSL leitet localhost an Windows weiter. Öffnet http://localhost:5173 in Edge, Chrome oder Firefox.

Den echten Installationsassistenten testet ihr unter Windows am besten in einer virtuellen Maschine mit Debian 13, etwa mit Hyper-V oder VirtualBox. Er braucht systemd und wird nur auf Debian 13 und Docker-Hosts unterstützt.

Debian, Docker und Proxmox

Der Assistent und die Schritte danach

Für alle drei Serverwege gleich. Die Demo braucht davon nichts.

  1. A

    Angaben im Assistenten

    Aktion
    install für eine neue Installation, restore zum Wiederherstellen einer Sicherung, import für eine Altinstallation
    Betriebsmodus
    compose, wenn Docker vorhanden ist, sonst native
    Domain und Zeitzone
    eure Adresse, Zeitzone standardmäßig Europe/Berlin
    HTTPS
    caddy holt das Zertifikat selbst; proxy, wenn bereits ein Reverse Proxy wie nginx davor sitzt
    Backup-Ziel und Passwort
    Standard /var/backups/jf-manager/restic, Passwort wird erzeugt (mindestens 12 Zeichen)
    Erstes Administrationskonto
    Standard admin, das Passwort wird erzeugt und einmal angezeigt

    Danach prüft er Betriebssystem, Speicher, Arbeitsspeicher, Ports und DNS und zeigt eine Zusammenfassung. Nach eurer Bestätigung richtet er Pakete bzw. Images, Datenbank, Anwendung, Sicherung und Wartungs-Timer ein und legt das erste Administrationskonto an. Bricht ein Lauf ab, startet ihr denselben Befehl erneut; er setzt beim ersten offenen Schritt fort.

    Wichtig: Am Ende zeigt der Assistent das Einmalpasswort für das Administrationskonto und den Ablageort des Backup-Passworts (/etc/jf-manager/backup.pass). Bewahrt das Backup-Passwort zusätzlich außerhalb des Servers auf, etwa in einem Passwortmanager. Ohne dieses Passwort lässt sich keine Sicherung lesen. Mehr zur Sicherung

  2. B

    Prüfen und erste Sicherung testen

    jfctl ist jetzt fest installiert, den Git-Checkout braucht ihr danach nicht mehr. Prüft die Installation und ob sich die erste Sicherung vollständig lesen lässt:

    Terminal
    sudo jfctl status
    sudo jfctl doctor
    sudo jfctl backup create
    sudo jfctl backup verify latest

    Sicherungen laufen danach täglich automatisch. Legt das Backup-Ziel auf ein anderes Gerät und probt die Wiederherstellung einmal auf einem Testsystem: Sicherung · Wiederherstellung · Regelbetrieb

  3. C

    Im Browser einrichten

    Öffnet eure Domain und meldet euch mit dem Administrationskonto an. Beim ersten Login richtet ihr einen zweiten Faktor ein, per Passkey oder Authenticator-App, und ändert das Einmalpasswort. Organisation, Abteilungen, Rollen, E-Mail und SSO stellt ihr anschließend in der Weboberfläche ein.

    Einrichtung im Handbuch

Updates und Wiederherstellung

Neue Versionen sicher einspielen

Ein Update braucht keinen neuen Checkout. jfctl lädt das Release, prüft es, legt vorher eine vollständige Sicherung an und wechselt erst dann. Scheitert ein Schritt, bevor die Oberfläche wieder freigegeben ist, kehrt es automatisch zur vorherigen Version zurück.

Beispiel
# Version aus den Release-Hinweisen einsetzen
sudo jfctl update --version X.Y.Z
# Sicherungen anzeigen und eine davon wiederherstellen
sudo jfctl backup list
sudo jfctl restore <backup-id>

Für Fortgeschrittene

Ohne Git oder automatisiert

Releasepaket ohne Git

Ihr ladet das Paket direkt herunter und prüft die Prüfsummen selbst.

Releasepakete und Herkunftsnachweis
Terminal
VERSION=3.2.0
BASE=https://github.com/Jugendfeuerwehr-Manager/JF-Manager/releases/download/v$VERSION
curl -fsSLO "$BASE/jf-manager-$VERSION.tar.gz" -O "$BASE/SHA256SUMS" -O "$BASE/release-manifest.json"
sha256sum -c SHA256SUMS && tar -xzf "jf-manager-$VERSION.tar.gz"
sudo "./jf-manager-$VERSION/ops/jfctl" install --version "$VERSION" --release-dir .

Mit Antwortdatei

Für wiederholbare Installationen: alle Angaben in einer Datei, die nur root lesen darf.

Alle Schlüssel der Antwortdatei
Terminal
sudo install -m 600 /dev/null /root/jf-answers.env
sudo editor /root/jf-answers.env
sudo jfctl install --answers /root/jf-answers.env --yes

Hinter einem vorhandenen Reverse Proxy wählt ihr im Assistenten bei HTTPS proxy und gebt Adresse und Port sowie die IP-Adresse des Proxys an. Produktionsvorgaben