Update to FF Admin V1.5.x

This commit is contained in:
Julian Krauser 2025-05-09 11:17:15 +02:00
parent 9024970c38
commit f0de749112
22 changed files with 103 additions and 111 deletions

View file

@ -1,16 +1,8 @@
ff-admin-app:
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/app:<version>
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/app:<version | latest>
container_name: ff_admin
restart: unless-stopped
ports:
- "80:80"
environment:
- SERVERADDRESS=<backend_url>
- APPNAMEOVERWRITE=<appname>
- IMPRINTLINK=<imprint link>
- PRIVACYLINK=<privacy link>
- CUSTOMLOGINMESSAGE=<betrieben von xy>
volumes:
- <volume|local path>/favicon.ico:/usr/share/nginx/html/favicon.ico
- <volume|local path>/favicon.png:/usr/share/nginx/html/favicon.png
- <volume|local path>/Logo.png:/usr/share/nginx/html/Logo.png
- SERVERADDRESS=<backend_url> # optional, bei abweichender URL des Backends

View file

@ -1,5 +1,5 @@
ff-admin-server:
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/server:<version>
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/server:<version | latest>
container_name: ff_admin_server
restart: unless-stopped
ports:
@ -11,20 +11,8 @@ ff-admin-server:
- DB_NAME=<database name>
- DB_USERNAME=<database username>
- DB_PASSWORD=<database password>
- JWT_SECRET=<jwt secret>
- JWT_EXPIRATION=<jwt expiration>
- REFRESH_EXPIRATION=<refresh expiration>
- PWA_REFRESH_EXPIRATION=<pwa refresh expiration>
- MAIL_USERNAME=<mailadress|username>
- MAIL_PASSWORD=<mail password>
- MAIL_HOST=<mail server url>
- MAIL_PORT=<port>
- MAIL_SECURE=<boolean>
- CLUB_NAME=<club name>
- CLUB_WEBSITE=<club website>
- BACKUP_INTERVAL=<backup interval>
- BACKUP_COPIES=<backup parallel copies>
- BACKUP_AUTO_RESTORE=<boolean>
- APPLICATION_SECRET=<jwt secret>
# \/ optional \/
- USE_SECURITY_STRICT_LIMIT=<boolean>
- SECURITY_STRICT_LIMIT_WINDOW=<time window>
- SECURITY_STRICT_LIMIT_REQUEST_COUNT=<strict_request_count>

View file

@ -1,4 +1,5 @@
#import "../../typst/utils.typ": *
#import "@preview/wrap-it:0.1.1": *
= Installation
@ -22,32 +23,12 @@ Die Docker-Images sind versioniert. Der `<tag>` des Images kann entweder `latest
) <app-compose>
Die Verwendung der Werte des Typs Environment werden unter dem Punkt Konfiguration (@config) erklärt.
Alle Environment Werte sind Optional und haben Standard-Werte.
Ist ein Wert optional und hat keinen Fallback, so wird in der Anwendung nichts angezeigt.
Die Environment-Variable `SERVERADDRESS` ist optional und kann für eine Abweichende URL des Backends verwendet werden. Ist die Serveradresse nicht angegeben, wird versucht das Backend unter der selben URL mit dem PathPrefix `/api` zu erreichen.
\
\
Die Volumes dienen zur erweiterten Personalisierung der App mit eigenem Logo der Feuerwehr oder des Vereins. Hiervon betroffen ist das Icon im Browser-Tab, jede Anzeige des FF Admin Logos innerhalb der App und das Icon, wenn die WebApp auf einem Gerät installiert wird.
Eine erweiterte Personalisierung der App mit eigenem Logo der Feuerwehr oder des Vereins ist bei der ersten Einrichtung oder unter dem Modul Einstellungen möglich. Hiervon betroffen ist das Icon im Browser-Tab, jede Anzeige des FF Admin Logos innerhalb der App und das Icon, wenn die WebApp auf einem Gerät installiert wird.
\
\
Die Konfiguration der Volumes ist optional, falls Sie die Standard-Logos verwenden wollen.
\
\
Ein Teil der Logos haben eine Anforderung an die Auflösung:
#table(
columns: (1fr, 1fr, 1fr),
inset: 5pt,
table.header(
[*Icon*], [*Auflösung*], [*Anzeigeort*]
),
"favicon.ico", "48x48 px", "Browser-Tab Icon",
"favicon.png", "512x512 px", "WebApp Icon zur Installation",
"Logo.png", "beliebig", "Innerhalb der Anwendung",
)
Die Dateien müssen exakt gleich geschrieben sein. Achten Sie deshalb auf Schreibfehler und Groß-/Kleinschreibung.
#pagebreak()
*Server*
#code_file(
path: "../admin/code/server-compose.yml",
@ -60,12 +41,13 @@ Environment Werte können optional sein oder haben Standard-Werte.
Das Fehlen einer geforderten Variable oder die falsche Angabe eines Variablen-Werts verhindert das Starten des der Anwendung.
\
\
Innerhalb dem Ordner, der dem Volume zugeordnet ist, werden Backups und Ausdrucke der geschriebenen Protokolle und Newsletter abgelegt.
\
\
Innerhalb dem Ordner, der dem Volume zugeordnet ist, werden Backups und Ausdrucke der geschriebenen Protokolle, Newsletter und alle weiteren Dokumente abgelegt, die hochgeladen oder erstellt werden können.
#pagebreak()
*Datenbank*
Als Datenbank können MySQL, Postgres und SQLite verwendet werden. Postgres wird für den Produktiven Einsatz empfohlen.
Als Datenbank können MySQL und Postgres verwendet werden. Postgres wird für den Produktiven Einsatz empfohlen.
\
\
Konfiguration von MySQL:
@ -88,7 +70,7 @@ Konfiguration von Postgres:
\
*Hinweis*
Wenn eine Docker-Compose Datei verwendet wird, kann zusätzliche ein Netzwerk angelegt werden.
Dadurch ist das Veröffentlichen der Datenbank-Port-Exposes nicht mehr notwendig. Das Entfernern der port-Exposes verhindert den direkten Zugriff auf die Ports von außerhalb.
Dadurch ist das Veröffentlichen der Datenbank-Ports nicht mehr notwendig. Das Entfernern der Port-Exposes verhindert den direkten Zugriff auf die Ports von außerhalb.
Ergänzt muss hierfür das `network` und die Teilhabe des Backend-Containers am Netzwerk:
\
@ -111,7 +93,12 @@ depends_on:
- ff-db
```
Hierdurch kann der Server nicht starten, wenn die verwendete Datenbank nicht läuft.
\
\
Wenn die Datenbank über ein Netzwerk in einer Compose-Datei freigegeben wird, kann als Host der Service-Name der Datenbank angegeben werden. In der angegebenen Datenbank-Konfiguration wäre das `ff-db`.
\
\
Damit die App und der Server aus dem Internet erreichbar sind, kann traefik mit labels verwendet werden.
// === Docker-AIO
@ -126,23 +113,19 @@ Hierdurch kann der Server nicht starten, wenn die verwendete Datenbank nicht lä
Eine Alternative zu Docker ist die direkte Ausführung der Anwendungen auf dem Server oder Desktop Gerät.
Hierzu müssen die App und der Server als Quellcode aud das System geladen und dort direkt verwendet werden.
Hierzu müssen die App und der Server als Quellcode auf das ausführende System geladen und dort direkt verwendet werden. Das System muss NodeJs und die bevorzugte Datenbank installiert haben.
\
\
Die Veröffentlichung der App und des Servers, damit diese aus dem Internet erreichbar sind muss gesondert eingerichtet werden.
\
\
Das System muss NodeJs und die bevorzugte Datenbank installiert haben.
\
\
Für das Hosting von statischen Inhalten kann Apache oder Nginx verwendet werden. Eine Konfiguration für Nginx ist im Repo der App enthalten.
Für das Hosting von statischen Inhalten wie der App kann Apache oder Nginx verwendet werden. Eine Konfiguration für Nginx ist im Repo der App enthalten.
Die NodeJs Prozesse können auch durch Tools wie pm2 verwaltet werden.
Damit die App und der Server aus dem Internet erreichbar sind, muss das Routing gesondert eingerichtet werden.
\
\
Um die Konfiguration mittels ENV-Variablen an die Anwendungen weitergeben zu können, müssen `.env` Dateien erstellt werden. Hierzu kann die `.env.example` Datei kopiert und die definierten Werte ausgefüllt werden. Nicht benötigte Einträge sollten entfernt werden.
Die env-Datei im Frontend muss vor dem build-Prozess erstellt sein, da dort die Werte fest in den Code übernommen werden. Weiterhin muss die Datei im Frontend `.env.production` heißen. Die bestehende Datei kann modifiziert werden. Bei einer Änderung muss die App neu gebaut werden.
Die env-Datei im Frontend muss vor dem build-Prozess erstellt sein, da dort die Werte fest in den Code übernommen werden. Weiterhin muss die Datei im Frontend `.env.production` heißen. Die bestehende Datei kann modifiziert werden. Bei einer Änderung muss die App neu gebaut werden. Wird der Server unter der URL der App verwendet, muss in der `.env.production` Datei des Frontends der Wert zum Eintrag von `SERVERADDRESS` auf den leeren String gesetzt werden.
Die env-Datei im Backend muss vor der Ausführung von `npm run start` angelegt sein. Bei einer Änderung der Einträge muss der Server lediglich neu gestartet werden.
\
@ -181,33 +164,16 @@ Folgende Werte können zu einem Container konfiguriert werden:
else { left }
),
table.cell(colspan: 4)[⬇️ App-Variablen],
"SERVERADDRESS", "URL, über welche das Backend erreicht werden kann. Die URL muss mit http:// oder https:// starten und darf keinen Pfad beinhalten. Wenn das Backend auf der gleichen URL wie die App läuft, kann diese Variable weggelassen werden.", "", "✅",
"APPNAMEOVERWRITE", "Anzeige eines anderen Namens als FF Admin.", "FF Admin", "✅",
"IMPRINTLINK", "Link zum Impressum des Betreibers.", "", "✅",
"PRIVACYLINK", "Link zur Datenschutzerklärung des Betreibers.", "", "✅",
"CUSTOMLOGINMESSAGE", "Nachricht auf der Login-Seite.\n(Bsp.: betrieben von xy)", "", "✅",
"SERVERADDRESS", "URL, über welche das Backend erreicht werden kann. Die URL muss mit http:// oder https:// starten und sollte keinen Pfad beinhalten. Die App versucht das Backend unter <SERVERADDRESS>/api zu erreichen. Laufen Backend und App auf der gleichen URL, kann diese Variable weggelassen werden.", "", "✅",
"", "", "", "",
table.cell(colspan: 4)[⬇️ Server-Variablen],
"DB_TYPE", "Folgende Datenbanktypen sind verfügbar: mysql, sqlite, postgres", "mysql", "✅",
"DB_HOST", "URL zur Datenbank oder Dateipfad zur SQLite-Datenbank", "", "💥",
"DB_PORT", "Port der Datenbank", "3306", "🚨",
"DB_NAME", "Name der Datenbank in welcher die Tabellen erstellt werden.", "", "🚨",
"DB_USERNAME", "Nutzername für Zugang zu Datenbank", "", "🚨",
"DB_PASSWORD", "Passwort zum Zugang zur Datenbank", "", "🚨",
"JWT_SECRET", "Zufällige Zeichenkette zur Validierung der Session-Tokens.", "", "💥",
"JWT_EXPIRATION", "Gültigkeitsdauer eines Session-Tokens.\nFormat: [0-9]*(y|d|h|m|s)", "15m", "✅",
"REFRESH_EXPIRATION", "Gültigkeitsdauer eines Logins nach letzter Nutzung der App im Browser \nFormat: [0-9]*(y|d|h|m|s)", "1d", "✅",
"PWA_REFRESH_EXPIRATION", "Gültigkeitsdauer eines Logins nach letzter Nutzung der installierten App\nFormat: [0-9]*(y|d|h|m|s)", "5d", "✅",
"MAIL_USERNAME", "Nutzername oder Mailadresse", "", "💥",
"MAIL_PASSWORD", "Passwort zum Nutzernamen oder der Mailadresse", "", "💥",
"MAIL_HOST", "URL des Mailservers", "", "💥",
"MAIL_PORT", "Port des Mailservers für Versand (SMTP).\n Ports sind 25, 465, 587", "587", "✅",
"MAIL_SECURE", "Soll eine Secure Verbindung aufgebaut werden. Muss true sein bei Port 465.", "false", "✅",
"CLUB_NAME", "Wird für TOTP Titel und Kalender-ICS verwendet.", "FF Admin", "✅",
"CLUB_WEBSITE", "Wird für Kalender-ICS verwendet", "", "✅",
"BACKUP_INTERVAL", "Wie viele Tage Abstand sollen zwischen Backups liegen? (min. 1)", "1", "✅",
"BACKUP_COPIES", "Wie viele parallele Kopien von Backups sollen parallel Verfügbar sein? (min. 1)", "7", "✅",
"BACKUP_AUTO_RESTORE", "Soll das neueste Backup bei Server-Start automatisch geladen werden, wenn die Datenbank als leer erkannt wird?", "true", "✅",
"DB_TYPE", "Folgende Datenbanktypen sind verfügbar: mysql, postgres", "mysql", "✅",
"DB_HOST", "URL zur Datenbank", "", "💥",
"DB_PORT", "Port der Datenbank", "3306", "💥",
"DB_NAME", "Name der Datenbank", "", "💥",
"DB_USERNAME", "Nutzername für Zugang zu Datenbank", "", "💥",
"DB_PASSWORD", "Passwort zum Zugang zur Datenbank", "", "💥",
"APPLICATION_SECRET", "Zufällige Zeichenkette zur Validierung der Session-Tokens.", "", "💥",
"USE_SECURITY_STRICT_LIMIT","Soll ein Anfrage-Limit für Login, Reset und Co gesetzt werden? \nIn diesem Fall ist der Nutzer nicht angemeldet, sondern versucht es.","true","✅",
"SECURITY_STRICT_LIMIT _WINDOW","Über welches Zeitfenster soll das Limit angewandt werden? \nFormat: [0-9]*(y|d|h|m|s)","15m","✅",
"SECURITY_STRICT_LIMIT _REQUEST_COUNT","Wie viele fehlerhafte Anfragen müssen gesendet werden, bis das Limit aktiviert ist?","15","✅",
@ -238,13 +204,13 @@ Folgende Werte können zu einem Container konfiguriert werden:
)
💥: Ein Fehlen dieser Variable verhindert das Starten der Anwendung!
🚨: Bei Verwendung von SQLite sind diese Variablen nicht notwendig!
\
\
*Hinweis:* Eine fehlerhafte Konfiguration der optionalen oder geforderten Variable verhindert das Starten der Anwendung.
*Hinweis:* Eine Änderung der Datenbank übernimmt die Daten nur automatisch in die neue Datenbank, wenn `BACKUP_AUTO_RESTORE` aktiviert ist und ein Backup angelegt ist. Es werden dann die Daten des gefundenen Backups in die neue Datenbank eingefügt.
*Hinweis:* Ist eine Datenbank leer, werden Backups automatisch wiederhergestellt, sollte ein solches existieren.
#pagebreak()
== Update der Version
@ -262,7 +228,7 @@ Bei Verwendung mittels Git, müssen die Repos neu bezogen werden. Anschließend
== Wechsel des Datenbanksystems
Eine Funktion, die mit den Backups eingeführt wurde, ist `AUTO RESTORE`. `AUTO RESTORE` ist standardmäßig aktiviert und ermöglicht die automatische Wiederherstellung des letzten Backups - sofern vorhanden - wenn die Datenbank beim Start des Servers leer ist.
Eine Funktion, die mit den Backups eingeführt wurde, ist `AUTO RESTORE`. `AUTO RESTORE` ermöglicht die automatische Wiederherstellung des letzten Backups - sofern vorhanden - wenn die Datenbank beim Start des Servers leer ist.
Dies vereinfacht auch den Wechsel zwischen Datenbanken, da nur eine neue Verbindung zu einer anderen Datenbank aufgebaut werden muss und die Daten nach dem Neustart des Servers automatisch in die neue leere Datenbank übertragen werden.
@ -270,12 +236,39 @@ Dies vereinfacht auch den Wechsel zwischen Datenbanken, da nur eine neue Verbind
FF Admin ist als WebApp verfügbar. Dadurch lässt sich die Anwendung auf einem Smartphone oder Desktop über den Browser installieren.
#pagebreak()
== Einrichtung
Um die Anwendung nutzen zu können, kann ein erster Administrator-Account wie folgt erstellt werden:
1. *Admin Benutzer erstellen*: Erstellen Sie einen Admin Benutzer unter dem Pfad /setup, um auf die Mitgliederverwaltung Zugriff zu erhalten. Nach der Erstellung des ersten Benutzers wird der Pfad automatisch geblockt.
#wrap-content(
figure(
image("../images/setup_step1.png", width: 5cm),
),
align: right
)[
*Admin Benutzer erstellen*: Um einen ersten Benutzer mit Administrator-Berechtigungen zu erstellen, muss der Einrichtungs-Assistent unter dem Pfad `/setup` aufgerufen werden. Nach der initialen Einrichtung wird der Pfad automatisch geblockt.
Der Einrichtungs-Assistent ermöglicht das Setzen erster Einstellungen wie Vereinsdaten und Logos. Auch ermöglicht der Assistent das Einrichten der Mail-Adresse, die von FF-Admin verwendet werden soll. Über diese Mailadresse können andere Nutzer eingeladen, Zugänge zurückgesetzt oder Newsletter versendet werden.
]
#grid(
columns: (1fr, 1fr, 1fr),
align: center,
figure(
image("../images/setup_step2.png", width: 5cm),
),
figure(
image("../images/setup_step4.png", width: 5cm),
),
figure(
image("../images/setup_step5.png", width: 5cm),
)
)
*Rollen und Berechtigungen*: Unter `Verwaltung > Rollen` können die Rollen und Berechtigungen für die Benutzer erstellt und angepasst werden.
*Nutzer einladen*: Unter `Verwaltung > Benutzer` können weitere Nutzer eingeladen werden. Diese erhalten dann eine E-Mail mit einem Link. Über diesen Link können die Nutzer einen Account mit Zugangsdaten erstellen. Für den Zugang können entweder TOTP oder Passwörter verwendet werden.
2. *Rollen und Berechtigungen*: Unter `Benutzer > Rollen` können die Rollen und Berechtigungen für die Benutzer erstellt und angepasst werden.
3. *Nutzer einladen*: Unter `Benutzer > Benutzer` können weitere Nutzer eingeladen werden. Diese erhalten dann eine E-Mail mit einem Link, um ein TOTP zu erhalten.

View file

@ -10,7 +10,7 @@ Stammdaten sind grundlegende Basisdaten, die als Grundlage für weitere Einträg
Diese Daten sind frei definierbar, so dass die Benutzer ihre eigene Namensgebung festlegen und sicherstellen können, dass alle benötigten Einträge zur Verfügung stehen.
\
\
Damit Einträge angelegt oder verwendet werden können, müssen *zuvor* die entsprechenden Stammdaten angelegt worden sein.
Damit Einträge wie Mitglieder oder Termine angelegt oder verwendet werden können, müssen *zuvor* die entsprechenden Stammdaten angelegt worden sein.
== Berechtigungen
@ -19,6 +19,8 @@ Das Berechtigungssystem ist tief in FF Admin integriert und steuert den Zugriff
\
Berechtigungen werden immer summiert:\
Ein Benutzer erhält alle Berechtigungen, die ihm direkt oder indirekt über Rollen zugewiesen wurden.
Ein Beispiel: Erhält ein Nutzer Leserechte zu den Mitgliedern über eine Rolle aber auch Rechte zum Erstellen direkt zugewiesen, so kann der Benutzer letztendlich Mitglieder erstellen. Die höhere Berechtigung zählt in dem Fall.
\
\
Der Berechtigungseditor ist in Sektionen und Module unterteilt. Wenn ein Benutzer eine Berechtigung für einen Abschnitt erhält, gilt diese automatisch auch für alle untergeordneten Module.

View file

@ -20,4 +20,6 @@ FF Admin nutzt verschiedenste Module, um Daten zu organisieren, die Verwaltung z
#include "./4-modules/9-user-roles.typ"
#include "./4-modules/10-webapi.typ"
#include "./4-modules/10-setting.typ"
#include "./4-modules/11-webapi.typ"

View file

@ -43,4 +43,4 @@ Im Feuerwehrkontext kann bei einer Telefonnummer angegeben werden, ob diese für
*Vereinsämter* können ebenfalls mit den Zeiträumen der Ausübung angelegt werden. Auch hier besteht die Möglichkeit, eine Notiz hinzuzufügen.
\
\
*Anmerkung:* In jeder erfassbaren Datenkategorie können Einträge mehrfach vorkommen. Eine Überprüfung auf sich überschneidende Zeiträume oder Doppelerfassungen muss derzeit durch den Anwender erfolgen.
*Anmerkung:* In jeder erfassbaren Datenkategorie können Einträge mehrfach vorkommen. Eine Überprüfung auf sich überschneidende Zeiträume oder Doppelerfassungen muss durch den Anwender erfolgen.

View file

@ -0,0 +1,18 @@
#import "@preview/wrap-it:0.1.1": *
== Einstellungen
#figure(
image("../../images/settings.png", width: 100%),
)
Das Modul Einstellungen ermöglicht eine flexible Konfiguration der Anwendung - ohne Neustart des Systems. Alle Anpassungen können direkt zur Laufzeit vorgenommen werden. Dadurch lassen sich beispielsweise Vereinslogos, Icons oder Texte im Login-Bereich individuell anpassen, ohne in den laufenden Betrieb einzugreifen.
\
\
Neben dem optischen Vereinsauftritt können auch grundlegende Informationen wie Links zum Impressum, zur Datenschutzerklärung oder zur Vereinswebseite hinterlegt werden. Diese Daten fließen dann automatisiert an verschiedenen Stellen im System ein.
\
\
Darüber hinaus ersetzt das Einstellungsmodul Teile der früheren, fest codierten Umgebungsvariablen (ENV). Werte wie etwa das Backup-Intervall oder E-Mail-Konten für den Versand können direkt in der Oberfläche geändert werden.
\
\
Insgesamt erlaubt das Modul eine Anpassung des Systems ohne Serverzugriff und Neustarts.

View file

@ -9,12 +9,7 @@
WebApi-Tokens ermöglichen externen Clients oder anderen Anwendungen des FF Ecosystems die Kommunikation mit dem FF Admin. Dabei haben WebApis Zugriff auf fast alle Daten des FF Admin, sofern die Berechtigungen gesetzt sind.
\
\
Kategorisch ausgeschlossen ist der Zugriff auf Accountdaten und Serverinformationen wie z.B. die Version. Weiterhin hat eine WebApi keinen Zugriff auf die Endpunkte für Setup, Reset, Invite und Auth. Eine WebApi kann auch nicht auf andere WebApis und Backupds zugreifen.
\
\
Zur einfacheren Verwendung der WebApi in eigenen Anwendungen kann das NPM-Paket `@ff-admin/webapi-client` verwendet werden.
Dieses ist unter #link("https://npm.registry.jk-effects.cloud/-/web/detail/@ff-admin/webapi-client") verfügbar.
Kategorisch ausgeschlossen ist der Zugriff auf Accountdaten und Serverinformationen wie z.B. die Version. Weiterhin hat eine WebApi keinen Zugriff auf die Endpunkte für Setup, Reset, Invite und Auth. Eine WebApi kann auch nicht auf andere WebApis und Backups zugreifen.
\
\
#wrap-content(
@ -43,3 +38,8 @@ Die WebApi bezieht den Zugang wie folgt:
#figure(
image("../../images/webapi.png", width: 100%),
)
\
\
Zur einfacheren Verwendung der WebApi in eigenen Anwendungen kann das NPM-Paket \ `@ff-admin/webapi-client` verwendet werden.
Dieses ist unter #link("https://npm.registry.jk-effects.cloud/-/web/detail/@ff-admin/webapi-client") verfügbar.

View file

@ -10,10 +10,7 @@ Backups sind automatisch gesicherte Datenstände des FF Admin, die jederzeit wie
Backups werden in einem festgelegten Intervall erstellt. Das kleinste Intervall beträgt täglich. Zusätzlich kann konfiguriert werden, wie viele Backups parallel zur Verfügung stehen sollen. Standardmäßig ist eine Anzahl von 7 eingestellt, d.h. die gespeicherten Backups reichen immer eine Woche in die Vergangenheit.
Eine Funktion, die mit den Backups eingeführt wurde, ist `AUTO RESTORE`. `AUTO RESTORE` ist standardmäßig aktiviert und ermöglicht die automatische Wiederherstellung des letzten Backups - sofern vorhanden - wenn die Datenbank beim Start des Servers leer ist. Dies vereinfacht auch den Wechsel zwischen Datenbanken, da nur eine neue Verbindung zu einer anderen Datenbank aufgebaut werden muss und die Daten nach dem Neustart des Servers automatisch in die neue leere Datenbank übertragen werden.
\
\
Weitere Konfigurationsmöglichkeiten befinden sich in der Entwicklung.
Eine Funktion, die mit den Backups eingeführt wurde, ist `AUTO RESTORE`. `AUTO RESTORE` ermöglicht die automatische Wiederherstellung des letzten Backups - sofern vorhanden - wenn die Datenbank beim Start des Servers leer ist. Dies vereinfacht auch den Wechsel zwischen Datenbanken, da nur eine neue Verbindung zu einer anderen Datenbank aufgebaut werden muss und die Daten nach dem Neustart des Servers automatisch in die neue leere Datenbank übertragen werden.
\
\
#wrap-content(
@ -23,7 +20,7 @@ Weitere Konfigurationsmöglichkeiten befinden sich in der Entwicklung.
)[
Derzeit können Backups nur vollständig wiederhergestellt werden. Dabei werden alle vorhandenen Daten gelöscht und durch die Daten des Backups ersetzt. Dadurch wird automatisch ein früherer Zustand wiederhergestellt. Neuere Einträge gehen dabei verloren.
Ein teilweises Wiederherstellen oder nur Ersetzen von Einträgen unter Beibehaltung der neu hinzugekommenen Einträge ist derzeit nicht möglich, da dies derzeit noch zu Datenverlusten führen kann.
Ein teilweises Wiederherstellen oder nur Ersetzen von Einträgen unter Beibehaltung der neu hinzugekommenen Einträge ist derzeit nicht möglich, da dies derzeit noch zu Datenverlusten führen kann. Weitere Konfigurationsmöglichkeiten befinden sich in der Entwicklung.
]
#wrap-content(

View file

@ -6,7 +6,7 @@
image("../../images/user-overview.png", width: 100%),
)
Im FF Admin können Daten nur von Benutzern geändert werden. Diese Benutzer melden sich mit einem TOTP an. Ein TOTP (Time-based One-time Password) ist ein zeitbasiertes Passwort, das sich jede Minute ändert. Jeder Benutzer hat Lese-, Bearbeitungs- und Löschrechte. Es können auch Rollen erstellt und Benutzern zugewiesen werden.
Im FF Admin können Daten nur von Benutzern geändert werden. Diese Benutzer melden sich mit einem TOTP oder Passwort an. Ein TOTP (Time-based One-time Password) ist ein zeitbasiertes Passwort, das sich jede Minute ändert. Jeder Benutzer hat Lese-, Bearbeitungs- und Löschrechte. Es können auch Rollen erstellt und Benutzern zugewiesen werden.
#wrap-content(
figure(

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 20 KiB

BIN
admin/images/settings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

View file

@ -4,8 +4,8 @@
#show: template.with(
logo: "../admin/logo.png",
title: "Anleitung",
alttitle: "Anleitung zu FF Admin bis v1.4.x",
subtitle: "bis v1.4.x",
alttitle: "Anleitung zu FF Admin bis v1.5.x",
subtitle: "bis v1.5.x",
details: (
"Open Source Software",
"entwickelt durch JK Effects",

Binary file not shown.