Pocketbase est l’un des projets backend open-source les plus séduisants en 2026. Un seul binaire de ~30 Mo qui contient une base SQLite, une API REST auto-générée, un système d’authentification (email/password, OAuth), un dashboard d’admin web, des subscriptions temps réel via WebSockets, et un système de fichiers/uploads. Pour les freelances, indie hackers et PME africaines qui veulent un backend pour app mobile ou web sans s’embêter avec une infrastructure complexe, Pocketbase est imbattable. Voici le guide complet 2026.
Ce guide général couvre l’ensemble : pourquoi Pocketbase, installation, schéma, auth, API, hooks Go, déploiement. Les articles connexes approfondissent : déployer Pocketbase sur Coolify, auth Pocketbase avec OAuth Google, extensibilité avec hooks Go, Pocketbase vs Firebase vs Supabase.
Pourquoi Pocketbase en 2026
- Un binaire unique : pas de Docker, pas de containers, pas de dépendances. Vous téléchargez, vous lancez, c’est en ligne.
- Open source MIT, code Go, ~30 000 étoiles GitHub mi-2026
- SQLite intégré : robuste, simple à backuper, parfait pour des projets jusqu’à plusieurs millions de lignes
- Auth complète : email/password, OAuth (Google, GitHub, etc.), email verification, password reset, gestion sessions
- API REST auto-générée : pour chaque collection, endpoints CRUD avec filtrage, tri, pagination
- Realtime via WebSocket : subscriptions sur changements de données
- Dashboard admin web moderne et clair, sans configuration
- Fichiers et uploads : gestion native, intégration S3 possible
- SDK officiels JS, Dart (Flutter), Swift, Kotlin
Pour qui c’est fait
- App mobile (Flutter, React Native, Swift, Kotlin) qui a besoin d’un backend rapide
- SaaS B2C ou B2B en early stage
- Outils internes PME (CRM léger, gestion stock, formulaires)
- Prototypes qui doivent évoluer en prod sans réécriture
- Sites statiques qui ont besoin de quelques routes dynamiques (newsletter, contact, commentaires)
Limites à connaître
- SQLite single-server : pas de cluster horizontal natif. Pour une charge supérieure à ~1000 RPS, regarder vers Postgres + framework custom ou Supabase.
- Pas de migrations versionnées sophistiquées : les changements de schéma se font via le dashboard ou via fichiers de migration Go.
- Customisation = Go : les hooks et extensions custom demandent de connaître Go (mais reste lisible)
- Stockage local par défaut : pour scaler, configurer S3 (étape simple)
Étape 1 — Installer Pocketbase
# Télécharger le binaire (Linux x86_64)
wget https://github.com/pocketbase/pocketbase/releases/download/v0.22.x/pocketbase_0.22.x_linux_amd64.zip
unzip pocketbase_*.zip
chmod +x pocketbase
# Lancer
./pocketbase serve --http=0.0.0.0:8090
# Accéder au dashboard d'admin
# Navigateur : http://VOTRE_IP:8090/_/
# Premier accès : créer le compte super-admin
C’est tout. Pocketbase tourne, l’API est disponible sur /api/*, le dashboard sur /_/, et la base de données est dans ./pb_data/.
Étape 2 — Créer une collection
Dans le dashboard admin → Collections → New collection. Choisissez le type (Base, Auth, View). Pour une app classique, créez une collection posts de type Base avec :
title: text, required, min 3 max 200content: editor (rich text)author: relation versusers, required, singlepublished: bool, default falsecover: file (single, image)
Configurez les API rules : qui peut lire, créer, modifier, supprimer. Exemples :
- List/View :
published = true || @request.auth.id != "" - Create :
@request.auth.id != ""(user authentifié) - Update/Delete :
@request.auth.id = author.id(auteur uniquement)
Étape 3 — Utiliser depuis JS / TS
import PocketBase from "pocketbase";
const pb = new PocketBase("https://api.exemple.sn");
// Auth
const authData = await pb.collection("users").authWithPassword(
"user@exemple.sn",
"secret123",
);
// Lister posts publiés
const posts = await pb.collection("posts").getList(1, 20, {
filter: 'published = true',
sort: '-created',
expand: 'author',
});
// Créer un post
const created = await pb.collection("posts").create({
title: "Hello",
content: "World",
author: pb.authStore.model.id,
published: true,
});
// Subscribe realtime
pb.collection("posts").subscribe("*", (e) => {
console.log(e.action, e.record);
});
Étape 4 — Authentification
Pocketbase gère nativement plusieurs flows d’auth :
- Email/password classique
- Email verification (envoi d’un lien)
- Password reset
- OAuth providers (Google, GitHub, GitLab, Apple, Facebook, etc.) — voir notre guide OAuth Pocketbase
- Sessions JWT, refresh automatique
- Multi-collection auth (users + admins + autre)
Étape 5 — Hooks Go pour personnalisation
Pour ajouter de la logique métier custom (validation, notifications, agrégations), utilisez les hooks Go. Pocketbase est lui-même un framework Go que vous pouvez compiler avec votre code custom :
// main.go
package main
import (
"log"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/core"
)
func main() {
app := pocketbase.New()
app.OnRecordCreateRequest("posts").BindFunc(func(e *core.RecordRequestEvent) error {
log.Println("Nouveau post :", e.Record.GetString("title"))
return e.Next()
})
if err := app.Start(); err != nil {
log.Fatal(err)
}
}
Voir notre guide hooks Go Pocketbase pour des cas concrets : envoi email Mobile Money, intégration WhatsApp Business, calculs personnalisés.
Étape 6 — Déployer en production
- Coolify : déploiement en un clic, voir notre tutoriel
- systemd : un service Linux simple sur VPS Hetzner — voir guide systemd (similaire approche)
- Docker : image officielle non maintenue, mais Dockerfile facile à écrire
- fly.io ou Railway : hébergement managé qui simplifie
Pour HTTPS, mettez Caddy ou Traefik devant Pocketbase. Pocketbase écoute en HTTP en interne, le reverse proxy fait HTTPS.
Étape 7 — Backups
SQLite = un fichier ./pb_data/data.db. Backup = copier ce fichier (idéalement via sqlite3 .backup pour éviter les corruptions). Automatisation cron quotidien :
#!/bin/bash
# /etc/cron.daily/pb-backup
DATE=$(date +%Y%m%d-%H%M%S)
sqlite3 /opt/pocketbase/pb_data/data.db ".backup /tmp/pb-$DATE.db"
gzip /tmp/pb-$DATE.db
aws s3 cp /tmp/pb-$DATE.db.gz s3://backups/pocketbase/
rm /tmp/pb-$DATE.db.gz
Adaptation Afrique de l’Ouest
Pocketbase est particulièrement adapté pour les projets ouest-africains : un seul VPS Hetzner CX22 à 4 €/mois suffit pour une app qui sert 1000-10 000 utilisateurs actifs quotidiens. La base SQLite est performante et facile à sauvegarder. L’absence de complexité opérationnelle libère du temps pour bâtir le produit.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| « database is locked » | Trop d’écritures concurrentes | Activer WAL : sqlite3 ./pb_data/data.db « PRAGMA journal_mode=WAL » |
| API rules trop ouvertes | Pas de filtre auth | Toujours @request.auth.id != « » |
| Email verification ne marche pas | SMTP pas configuré | Settings → Mail Settings (Brevo, Mailtrap) |
| Uploads volumineux refusés | Limite 5 Mo par défaut | Augmenter dans collection schema |