de Programmieren Backends Pocketbase

Pocketbase — Installation und Einrichtung

Pocketbase ist ein BaaS (Backend as a Service) Tool um möglichst einfach und schnell ein Backend für eine Anwendung zur Verfügung stellen zu können. Dabei bietet Pocketbase eine Authentifizierung und Authorisierung, File Management, Datenbank mit CRUD Abfragen und die Möglichkeit eigene Endpunkte zu definieren. Das ganze bietet offizielle SDKs für NodeJS und Flutter an.

Pocketbase hat den Vorteil, dass es nur aus einer Datei besteht und mit sqlite3 auch sehr schnell aufgesetzt ist. Es ist also ein ideales Backend um eine Seitenprojekt zu starten ohne hohe kosten oder viel Aufwand beim bereitstellen zu haben.

Das Programm und die komplette Dokumentation und Feature Liste kann auf der Webseite von pocketbase nachgelesen werden: https://pocketbase.io/

Download und Einrichtung

Wir können die Binary von der Dokumentationsseite Downloaden. Nachdem Download wird es entpackt und wäre damit schon fertig zum starten. https://pocketbase.io/docs/. Ein Direktlink füge ich hier nicht ein, da es je nach Betriebssystem und Prozessorarchitektur ein anderen Link benötigt.

Nachdem wir das Programm gedownloadet und entpackt haben sehen wir in dem Verzeichnis drei Dateien

1➜  pocketbase ll
2total 106240
3-rw-r--r--@ 1 root  staff    61K 24 Jul 06:24 CHANGELOG.md
4-rw-r--r--@ 1 root  staff   1,1K 24 Jul 06:24 LICENSE.md
5-rwxr-xr-x@ 1 root  staff    38M 24 Jul 06:26 pocketbase

Wichtig hier ist die Datei pocketbase mit der wir das Programm starten. Die anderen beiden Dateien beinhalten einmal die Lizenz und das Changelog und können ohne Probleme gelöscht werden. Das Programm starten können wir mittels serve Kommando:

1➜  pocketbase ./pocketbase serve
22024/07/24 14:10:42 Server started at http://127.0.0.1:8090
3├─ REST API: http://127.0.0.1:8090/api/
4└─ Admin UI: http://127.0.0.1:8090/_/

Um unser Backend zu erreichen rufen wir die letzte URL (Admin UI) auf. Die Seite sollte nun wie folgt aussehen und benötigt eine Mail und ein Passwort. Diese Anmeldedaten bilden unser Admin Benutzer.

Wir legen einen Admin Account an

Nachdem wir das erledigt haben und auf Create and login geklickt haben werden wir automatisch eingeloggt und gelangen zum Dashboard.

Das Dashboard

Das Dashboard zeigt alle Collections (gleichzusetzen mit Datenbank Tabellen), die Logs und ermöglicht es ein paar Einstellungen vorzunehmen.

Mit dem Dashboard ist es nun sehr einfach neue Tabellen anzulegen oder aber die vorhandenen Daten zu bearbeiten oder neue hinzuzufügen.

Wenn man eine neue Collection erstellt hat man danach die Möglichkeit den Datentyp festzulegen. Hier werden eigentlich alle Unterstützt die man so benötigt und es ist auch Möglich Relationen anzulegen zu anderen Tabellen.

Eine neue Collection wird angelegt

Sicherheit — API Rules

Jede Collection hat direkt nach der Erstellung die Möglichkeit über eine API Änderungen an dieser Collection vorzunehmen. Hier hat man die Möglichkeit Regeln festzulegen welche Daten gesehen werden dürfen und welche nicht. Ich werde hier nur Grundlegend auf die Möglichkeiten eingehen und für eine Gesamtübersicht und eine detailiertere Fassung verweise ich gerne auf meinen anderen Artikel genau über diese API Regeln am ende des Artikels.

Wir können für jede einzelne Abfrage einstellen was genau gesehen werden darf. Man gelangt zu den API-Regeln über das Bearbeiten einer Collection -> API Rules

Mit dem Click auf dem Zahnrad werden die Collections bearbeitet

Die API Regeln sehen nun Standardmäßig wie folgt aus

Leere API Rules

Mit einem Click auf das grüne Schloss wird die Regel “nur für Admins” gelöscht und man kann seine eigene Regel definieren. Definiert man keine Regel und lässt das Feld leer ist die Berechtigung für jeden gültig und jeder kann entsprechend der Regel agieren.

Bei den Filtern sind nun zwei Variablen sehr wichtig. Zum einen ist es die @request Regel, welche es ermöglicht auf die User Collection zugreifen zu können und dort mit einem Attribut oder einer Variable abzugleichen. Hier wäre es z.B. denkbar eine Rollenbeschreibung zu setzen und dann abzufragen welche Rolle der User inne hat. Eine zweie Variable ist die @collection Variable die die Attribute der anzufragenden Collection angibt. So kann man z.B. Filtern, dass man nur auf eigene Inhalte Zugriff bekommt.

Eine Liste was Möglich ist und was nicht gibt es ebenfalls wieder gut dokumentiert in der offiziellen Dokumentation für Beispiele gibt es hier einen weiteren Artikel von mir:

DOKU: HIER

BlogPost HIER