ITSkillsCenter
Développement Web

Pocketbase 2026 : guide complet (backend SQLite tout-en-un open source)

6 min de lecture

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 200
  • content : editor (rich text)
  • author : relation vers users, required, single
  • published : bool, default false
  • cover : 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

ErreurCauseSolution
« database is locked »Trop d’écritures concurrentesActiver WAL : sqlite3 ./pb_data/data.db « PRAGMA journal_mode=WAL »
API rules trop ouvertesPas de filtre authToujours @request.auth.id != «  »
Email verification ne marche pasSMTP pas configuréSettings → Mail Settings (Brevo, Mailtrap)
Uploads volumineux refusésLimite 5 Mo par défautAugmenter dans collection schema

Pour aller plus loin

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité