Pourquoi auto-héberger PocketBase sur un VPS
PocketBase est un backend-as-a-service open source distribué sous forme d'un seul binaire : pas de Postgres séparé, pas de Redis, pas de pile complexe à orchestrer. Tout repose sur SQLite, ce qui le rend parfaitement adapté à un VPS d'entrée de gamme. En l'auto-hébergeant, vous gardez la maîtrise totale de vos données utilisateurs et de vos fichiers, sans dépendre d'un Firebase ou d'un Supabase managé dont les quotas et la latence depuis le Maroc peuvent poser problème. Un VPS vous donne une IP fixe, un domaine personnalisé et des sauvegardes que vous contrôlez. Comme PocketBase écrit dans un dossier pb_data unique, la stratégie de backup se résume à copier ce répertoire, ce qui simplifie énormément l'exploitation par rapport à un cluster de base de données classique.
Les bénéfices concrets du self-hosting de PocketBase
- Un seul binaire à déployer : démarrage en quelques secondes, empreinte mémoire minime (souvent moins de 100 Mo de RAM).
- Base SQLite embarquée : zéro service de base de données à administrer, sauvegarde par simple copie du dossier
pb_data. - Authentification, règles d'accès, gestion de fichiers et API temps réel via WebSocket inclus d'origine.
- Interface d'admin web complète pour gérer collections, utilisateurs et permissions sans écrire de SQL.
- Souveraineté des données : vos utilisateurs et leurs fichiers restent sur votre infrastructure, derrière votre domaine.
- Coût prévisible : un VPS modeste suffit pour des dizaines de milliers de requêtes par jour.
Prérequis matériels et logiciels
PocketBase est extrêmement frugal. Un VPS avec 1 vCPU et 1 Go de RAM gère sans difficulté un projet en production de taille modeste à moyenne ; 2 Go offrent une marge confortable pour le cache SQLite et les pics de trafic temps réel. Côté stockage, prévoyez 20 à 40 Go SSD selon le volume de fichiers uploadés par vos utilisateurs. Vous aurez besoin de Docker et Docker Compose (ou simplement du binaire et de systemd), d'un nom de domaine ou sous-domaine pointant vers l'IP du VPS via un enregistrement A, et d'un reverse proxy (Caddy, Nginx ou Traefik) pour gérer le TLS. SQLite étant mono-fichier, privilégiez un disque SSD NVMe pour de bonnes performances en écriture concurrente.
Déployer PocketBase étape par étape
Préparer le VPS et le DNS
Connectez-vous en SSH, mettez à jour le système avec apt update && apt upgrade -y, puis installez Docker via curl -fsSL https://get.docker.com | sh. Créez un enregistrement DNS de type A faisant pointer app.mondomaine.ma vers l'IP publique de votre VPS et attendez la propagation.
Écrire le docker-compose.yml
Utilisez une image PocketBase (ex : ghcr.io/muchobien/pocketbase), exposez le port 8090 en interne et montez un volume nommé sur /pb_data pour persister la base et les fichiers : volumes: - ./pb_data:/pb_data. Ne publiez PAS le port directement sur Internet, laissez le reverse proxy s'en charger.
Lancer le conteneur
Exécutez docker compose up -d puis docker compose logs -f pour vérifier que PocketBase démarre et affiche l'URL de l'admin. Le service écoute en interne sur 0.0.0.0:8090.
Configurer le reverse proxy et le SSL
Avec Caddy, un Caddyfile de trois lignes suffit : app.mondomaine.ma { reverse_proxy localhost:8090 }. Caddy obtient et renouvelle automatiquement le certificat Let's Encrypt. Pensez à autoriser le passage des WebSockets pour les abonnements temps réel (Caddy le fait par défaut, sous Nginx ajoutez les en-têtes Upgrade et Connection).
Créer le compte admin et les collections
Ouvrez https://app.mondomaine.ma/_/, créez le premier compte super-admin, puis définissez vos collections, vos règles d'API (@request.auth.id != "") et vos providers d'authentification OAuth si besoin.
Automatiser les sauvegardes
Planifiez un cron qui archive le dossier pb_data (tar czf backup-$(date +%F).tar.gz pb_data) vers un stockage externe. PocketBase propose aussi des backups intégrés déclenchables depuis l'admin ou l'API.
Activez le mode WAL de SQLite (PocketBase le fait par défaut depuis les versions récentes) pour autoriser des lectures concurrentes pendant les écritures : c'est le levier numéro un de performance. Pour un trafic élevé, placez le dossier pb_data sur un volume NVMe et évitez NFS ou tout système de fichiers réseau, qui dégrade fortement les performances de SQLite et peut corrompre la base en cas de verrous mal gérés.
La documentation officielle
Pour la configuration avancée et les options propres à l'outil, référez-vous à la documentation officielle de PocketBase. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins, les mises à jour majeures et les cas d'usage spécifiques.