Du willst eine App bauen und brauchst ein Backend mit Datenbank, Benutzerverwaltung, Datei-Uploads und Echtzeit-Updates. Normalerweise heißt das: Server aufsetzen, Datenbank installieren, Auth-Dienst anbinden, Storage konfigurieren und alles irgendwie zusammenkleben.
PocketBase macht daraus eine einzige Datei. Du lädst sie herunter, startest sie und hast in wenigen Sekunden ein komplettes Backend mit Admin-Oberfläche. Unter der Haube steckt SQLite, die wohl meistunterschätzte Datenbank der Welt. Deshalb passt der Spitzname so gut: PocketBase ist SQLite on Steroids.
Was ist PocketBase?
PocketBase ist ein quelloffenes Backend, geschrieben in Go und unter der MIT-Lizenz veröffentlicht. Es bündelt alles, was eine typische Web- oder Mobile-App braucht, in einem einzigen ausführbaren Programm:
- Eingebettete SQLite-Datenbank im WAL-Modus für schnelle, parallele Lesezugriffe
- REST-API, die automatisch aus deinen Collections entsteht
- Authentifizierung per E-Mail und Passwort, OTP sowie OAuth2 (z. B. Google, GitHub, Apple)
- Realtime-Subscriptions, mit denen dein Frontend Änderungen sofort mitbekommt
- Datei-Speicher lokal oder in einem S3-kompatiblen Storage, inklusive Thumbnails
- Admin-Dashboard im Browser, mit dem du Daten, Regeln und Einstellungen verwaltest
Du brauchst keinen separaten Datenbankserver, keinen Docker-Stack und keine Cloud-Konsole. Das Programm legt neben sich einen Ordner pb_data an, und darin liegt alles: Datenbank, Uploads, Logs.
Warum SQLite die richtige Basis ist
Viele Entwickler halten SQLite für eine Spielzeug-Datenbank, gut genug für Prototypen und Smartphone-Apps. Das ist ein Missverständnis. SQLite ist eine der am besten getesteten Softwarekomponenten überhaupt und läuft auf Milliarden Geräten. Für die allermeisten Webanwendungen ist sie schneller als ein Client-Server-System wie PostgreSQL, weil jede Abfrage ohne Netzwerk-Roundtrip direkt im selben Prozess passiert.
Die Grenze von SQLite liegt bei parallelen Schreibzugriffen: Es kann immer nur ein Schreibvorgang gleichzeitig laufen. Im WAL-Modus blockieren Lesezugriffe die Schreibzugriffe aber nicht mehr, und einzelne Writes dauern meist nur Bruchteile einer Millisekunde. Solange deine App nicht tausende Schreibvorgänge pro Sekunde erzeugt, merkst du davon nichts.
Was SQLite fehlt, ist alles rund um die Datenbank: eine API, Benutzerkonten, Zugriffsregeln, Echtzeit-Events. Genau diese Lücke schließt PocketBase. Du bekommst die Einfachheit von SQLite und gleichzeitig die Features, die du sonst von Firebase oder Supabase kennst.
In fünf Minuten zum eigenen Backend
Der Einstieg ist fast schon unverschämt einfach. Lade das passende Archiv für dein Betriebssystem von der offiziellen Seite herunter, entpacke es und starte den Server:
|
1 |
./pocketbase serve |
Danach läuft die API unter http://127.0.0.1:8090/api/ und das Admin-Dashboard unter http://127.0.0.1:8090/_/. Beim ersten Aufruf legst du einen Superuser an. Alternativ geht das direkt im Terminal:
|
1 |
./pocketbase superuser upsert du@example.com DeinSicheresPasswort |
Im Dashboard erstellst du dann eine Collection, zum Beispiel posts mit den Feldern title, content und published. Sobald du speicherst, stehen die passenden Endpunkte zum Lesen, Anlegen, Ändern und Löschen bereit.
Auf welchen Plattformen läuft PocketBase?
Weil PocketBase in reinem Go geschrieben ist und ohne C-Abhängigkeiten auskommt, gibt es fertige Binaries für die drei großen Betriebssysteme und gleich mehrere Prozessorarchitekturen. Auf der Release-Seite bei GitHub findest du aktuell (Stand: Version 0.40.6) neun Downloads:
- Linux: amd64, arm64, armv7, ppc64le und s390x. Damit läuft PocketBase auf normalen x86-Servern, auf ARM-VPS wie Hetzner CAX oder AWS Graviton, auf dem Raspberry Pi und sogar auf IBM-Power- und Mainframe-Systemen.
- macOS: amd64 für Intel-Macs und arm64 für Apple Silicon (M1 und neuer).
- Windows: amd64 sowie arm64 für Geräte mit ARM-Prozessor, etwa Snapdragon-Laptops.
Die Mindestversionen der Betriebssysteme gibt nicht PocketBase selbst vor, sondern die Go-Version, mit der die Binaries gebaut werden. Die aktuellen Releases entstehen mit Go 1.27, und dafür gelten laut den offiziellen Go-Mindestanforderungen diese Grenzen:
Ein paar Hinweise für die Praxis:
- Ältere Macs: Läuft dein Mac noch mit macOS 12 Monterey oder älter, starten die aktuellen Binaries nicht mehr. Dann bleibt dir eine ältere PocketBase-Version oder ein eigener Build mit einer älteren Go-Version, sofern die PocketBase-Version das zulässt.
- Windows 7 und 8.1 werden von Go schon seit Längerem nicht mehr unterstützt und sind damit auch für PocketBase raus.
- Linux-Kernel 3.2 ist uralt. Praktisch jede noch gepflegte Distribution erfüllt diese Anforderung, vom Debian-Server bis zum Raspberry Pi OS.
- Eigene Builds: Da PocketBase kein CGO braucht, kannst du es mit
GOOSundGOARCHfür weitere von Go unterstützte Systeme wie FreeBSD oder OpenBSD kompilieren. Offiziell getestet sind diese Builds aber nicht. - Docker: Ein offizielles Image gibt es nicht. Ein schlankes Dockerfile, das das Linux-Binary herunterlädt, ist aber in wenigen Zeilen geschrieben.
Auf der Client-Seite bist du noch freier:
Über die REST-API spricht jedes Gerät mit Netzwerkzugang mit PocketBase. Mit dem JavaScript-SDK bedienst du Browser, Node.js, Deno oder Bun, mit dem Dart-SDK baust du Flutter-Apps für iOS, Android, Web und Desktop.
Collections und API-Regeln
Collections sind in PocketBase das, was in klassischen Datenbanken Tabellen sind. Es gibt drei Typen:
- Base Collections für normale Daten wie Artikel, Produkte oder Aufgaben
- Auth Collections für Benutzer, mit eingebautem Login, Passwort-Reset und E-Mail-Verifizierung
- View Collections, die auf einer SQL-Abfrage basieren und nur gelesen werden können
Der eigentliche Clou sind die API-Regeln. Für jede Aktion (List, View, Create, Update, Delete) legst du einen Filterausdruck fest, der entscheidet, wer zugreifen darf. Ein paar Beispiele:
|
1 2 3 4 5 6 7 8 |
// Jeder darf veröffentlichte Beiträge lesen published = true // Nur der Autor darf seinen Beitrag bearbeiten @request.auth.id != "" && author = @request.auth.id // Nur Benutzer mit der Rolle "editor" @request.auth.role = "editor" |
Damit sparst du dir in vielen Projekten eine eigene Middleware-Schicht. Die Sicherheitslogik liegt direkt an den Daten, und du siehst sie im Dashboard auf einen Blick.
PocketBase im Frontend nutzen
Für JavaScript und Dart gibt es offizielle SDKs. Mit dem JS-SDK sieht ein typischer Ablauf so aus:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import PocketBase from 'pocketbase'; const pb = new PocketBase('http://127.0.0.1:8090'); // Einloggen await pb.collection('users').authWithPassword('du@example.com', 'geheim'); // Beiträge abfragen const result = await pb.collection('posts').getList(1, 20, { filter: 'published = true', sort: '-created', }); // Änderungen in Echtzeit verfolgen pb.collection('posts').subscribe('*', (e) => { console.log(e.action, e.record); }); |
Die Realtime-Funktion arbeitet mit Server-Sent Events. Legt jemand einen neuen Beitrag an, bekommt jeder verbundene Client das Event, sofern die API-Regeln ihm das Lesen erlauben. Für Chats, Dashboards oder kollaborative Tools ist das Gold wert.
Erweitern mit JavaScript oder Go
Irgendwann brauchst du Logik, die über reine CRUD-Operationen hinausgeht: eine E-Mail nach der Registrierung, eine Validierung gegen eine externe API oder einen eigenen Endpunkt. Dafür hast du zwei Wege.
JavaScript-Hooks: Lege Dateien mit der Endung .pb.js im Ordner pb_hooks ab. PocketBase lädt sie automatisch, ohne dass du etwas kompilieren musst:
|
1 2 3 4 5 6 7 8 9 |
routerAdd("GET", "/hello/{name}", (e) => { const name = e.request.pathValue("name"); return e.json(200, { message: "Hallo " + name }); }); onRecordCreate((e) => { // Eigene Logik vor dem Speichern e.next(); }, "posts"); |
Go als Framework: Du kannst PocketBase auch als Go-Bibliothek importieren und dein eigenes Binary bauen. Dann hast du Zugriff auf das komplette Go-Ökosystem und bekommst trotzdem am Ende wieder eine einzige ausführbare Datei.
PocketBase, Supabase oder Firebase?
PocketBase wird oft mit Firebase und Supabase verglichen. Alle drei liefern Datenbank, Auth, Storage und Realtime. Die Philosophie unterscheidet sich aber deutlich:
Der größte Vorteil von PocketBase ist die Kontrolle. Deine Daten liegen auf deinem Server, in einer Datei, die du jederzeit kopieren kannst. Das macht es auch aus Datenschutzsicht interessant: Ein kleiner VPS bei einem europäischen Hoster reicht völlig aus, und du musst dir keine Gedanken über Datentransfers in Drittländer machen.
Die Grenzen kennen
So begeistert ich von PocketBase bin, es ist kein Werkzeug für jeden Fall. Diese Punkte solltest du kennen:
- Nur ein Server: PocketBase skaliert vertikal. Horizontales Skalieren über mehrere Instanzen ist nicht vorgesehen. Ein ordentlicher Server trägt aber erstaunlich viel Last.
- Schreiblast: Bei sehr vielen gleichzeitigen Schreibvorgängen stößt SQLite an seine Grenzen. Für Analytics mit Millionen Events pro Stunde ist es die falsche Wahl.
- Noch vor Version 1.0: Das Projekt entwickelt sich schnell weiter, und zwischen Versionen kann es Breaking Changes geben. Lies vor jedem Update das Changelog.
- Kleines Kernteam: PocketBase wird im Wesentlichen von einem Entwickler vorangetrieben. Die Community ist aktiv, aber hinter dem Projekt steht kein großes Unternehmen.
Tipps für den Produktivbetrieb
Wenn du PocketBase live bringen willst, helfen dir ein paar einfache Regeln:
- Reverse Proxy davorschalten: Caddy oder Nginx kümmern sich um HTTPS. Alternativ kann PocketBase mit
serve deinedomain.deselbst ein Let’s-Encrypt-Zertifikat holen. - Backups automatisieren: Im Dashboard kannst du regelmäßige Backups einrichten und sie direkt in einen S3-kompatiblen Speicher schieben.
- Als Dienst laufen lassen: Mit einer systemd-Unit startet PocketBase nach einem Neustart automatisch.
- Versionen festhalten: Aktualisiere bewusst und teste Updates zuerst lokal mit einer Kopie von
pb_data. - SMTP konfigurieren: Für Passwort-Reset und Verifizierungsmails brauchst du einen funktionierenden Mailversand.
Fazit: Klein, schnell und erstaunlich vollständig
PocketBase zeigt, wie viel in einer einzigen Datei stecken kann. Du bekommst Datenbank, Auth, Realtime, Datei-Uploads und ein komfortables Admin-Panel, ohne dich durch Konfigurationsdateien zu kämpfen. Für Prototypen, interne Tools, Side-Projects und viele produktive Apps mit überschaubarer Last ist es eine der elegantesten Lösungen, die es derzeit gibt. Probier es aus: Fünf Minuten reichen, um zu sehen, ob es zu deinem Projekt passt. Alles Weitere findest du in der offiziellen PocketBase-Dokumentation und im GitHub-Repository.
Häufige Fragen zu PocketBase
Ja. PocketBase ist Open Source unter der MIT-Lizenz. Du kannst es kostenlos nutzen, verändern und auch in kommerziellen Projekten einsetzen. Kosten entstehen nur für den Server, auf dem du es betreibst. Ja, viele Projekte tun das bereits erfolgreich. Beachte aber, dass PocketBase noch vor Version 1.0 steht. Halte die Version fest, lies vor Updates das Changelog und richte regelmäßige Backups ein. Das hängt stark von deiner App ab. Lesezugriffe sind dank SQLite extrem schnell, und schon ein günstiger VPS kann tausende gleichzeitige Realtime-Verbindungen halten. Kritisch wird es erst bei sehr hoher Schreiblast. Nein. Für die meisten Projekte reichen das Admin-Dashboard und das JavaScript-SDK. Eigene Logik schreibst du bei Bedarf als JavaScript-Hook. Go brauchst du nur, wenn du PocketBase als Framework erweitern willst. Ja. Für Linux gibt es fertige Binaries für arm64 und armv7. Auf einem Raspberry Pi 4 oder 5 mit 64-Bit-System nimmst du die arm64-Variante, auf älteren Modellen mit 32-Bit-System die armv7-Variante. Voraussetzung ist nur ein Linux-Kernel ab Version 3.2. Deine Daten liegen in einer normalen SQLite-Datei. Die kannst du mit Standardwerkzeugen auslesen und zum Beispiel nach PostgreSQL migrieren. Einen Lock-in wie bei proprietären Cloud-Diensten gibt es nicht.
Ist PocketBase kostenlos?
Kann ich PocketBase in Produktion einsetzen?
Wie viele Benutzer schafft PocketBase?
Brauche ich Go-Kenntnisse?
Läuft PocketBase auf einem Raspberry Pi?
Kann ich von PocketBase später zu einer anderen Datenbank wechseln?
