[{"data":1,"prerenderedAt":197},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-pocketbase-vps-ma-fr":6,"promo-bar-likely":196},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-heberger-pocketbase-vps-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":137,"ctaBody":138,"ctaButton":139,"ctaUrl":140,"relatedPosts":141},62,"heberger-pocketbase-vps",{"fr":10,"en":12,"ar":13,"es":14},"hosting-pocketbase-on-a-vps","استضافة-pocketbase-على-خادم-vps","alojar-pocketbase-en-un-vps","Héberger PocketBase sur un VPS : guide complet","Déployez PocketBase sur votre VPS avec Docker, HTTPS, OAuth, sauvegardes automatiques et dépannage. Guide pas à pas, 2026.",10,3,false,"2026-04-19T00:00:00+00:00","2026-09-08T22:00:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},6,"Bases de données","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-pocketbase-vps-poster.svg",{"categorySlug":25,"appSlug":34},"pocketbase","PocketBase tient dans un unique exécutable Go : base SQLite embarquée, authentification, stockage de fichiers, API REST et abonnements temps réel, le tout avec une interface d'admin intégrée. C'est le backend idéal à auto-héberger sur un VPS léger pour vos applications web et mobiles. Ce guide complet vous emmène de l'installation Docker jusqu'à la configuration HTTPS, l'authentification OAuth, les sauvegardes automatiques et les ajustements avancés.",[37,41,52,55,74,77,80,84,87,90,132,135],{"type":38,"title":39,"body":40},"h2","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.\n\nEn 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 peuvent poser problème selon votre région. Un VPS vous donne une IP fixe, un domaine personnalisé et des sauvegardes que vous contrôlez entièrement.\n\nComme 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. Vous pouvez migrer votre backend en déplaçant un seul dossier.",{"type":42,"title":43,"items":44},"ul","Les bénéfices concrets du self-hosting de PocketBase",[45,46,47,48,49,50,51],"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 complète (email\u002Fmot de passe, OAuth2, OTP, LDAP) et règles d'accès granulaires par collection.","API temps réel via Server-Sent Events pour synchroniser automatiquement vos clients sans WebSocket supplémentaire.","Interface d'admin web complète pour gérer collections, utilisateurs, permissions et fichiers 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 : le prix du VPS ne bouge pas avec le trafic, contrairement à une facturation à la requête.",{"type":38,"title":53,"body":54},"Prérequis chiffrés : VPS, système et logiciels","PocketBase est extrêmement frugal. Voici ce dont vous avez besoin selon votre charge :\n\n**Minimum absolu** : 1 vCPU, 512 Mo de RAM. Suffisant pour un projet en développement ou une petite application avec moins de 1 000 utilisateurs actifs.\n\n**Recommandé en production** : 1 vCPU, 1 Go de RAM. PocketBase gère sans difficulté un projet de taille modeste à moyenne avec cette configuration ; le cache SQLite et les pics de trafic temps réel sont absorbés confortablement.\n\n**Pour des volumes élevés** : 2 vCPU, 2 Go de RAM. La limite de PocketBase est généralement l'écriture concurrente sur SQLite, pas le CPU.\n\nCôté stockage, prévoyez 20 à 40 Go SSD NVMe selon le volume de fichiers uploadés par vos utilisateurs. SQLite étant mono-fichier, un disque NVMe améliore sensiblement les performances en écriture concurrente — évitez les disques réseau (NFS, CIFS) qui peuvent corrompre la base en cas de verrous mal gérés.\n\nLogiciels requis : Docker 24+ et Docker Compose v2 (ou le binaire PocketBase seul avec `systemd`), un nom de domaine ou sous-domaine pointant vers l'IP du VPS via un enregistrement A, un reverse proxy (Caddy, Nginx ou Traefik) pour gérer le TLS.",{"type":56,"title":57,"steps":58},"steps","Déployer PocketBase sur VPS étape par étape",[59,62,65,68,71],{"title":60,"body":61},"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 le script officiel : `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Ajoutez votre utilisateur au groupe Docker avec `usermod -aG docker $USER` pour éviter le `sudo` à chaque commande.\n\nCréez ensuite un enregistrement DNS de type A faisant pointer `app.your-domain.com` vers l'IP publique de votre VPS. La propagation prend de quelques minutes à 24 heures — vérifiez avec `dig app.your-domain.com`.",{"title":63,"body":64},"Créer la structure de fichiers","Créez un répertoire dédié et le fichier de composition :\n\n```bash\nmkdir -p \u002Fopt\u002Fpocketbase && cd \u002Fopt\u002Fpocketbase\n```\n\nCréez le fichier `docker-compose.yml` avec le contenu suivant :\n\n```yaml\nservices:\n  pocketbase:\n    image: ghcr.io\u002Fmuchobien\u002Fpocketbase:latest\n    restart: unless-stopped\n    volumes:\n      - .\u002Fpb_data:\u002Fpb_data\n    expose:\n      - \"8090\"\n```\n\nNe publiez **pas** le port `8090` directement sur Internet (pas de `ports:`) — laissez le reverse proxy s'en charger.",{"title":66,"body":67},"Configurer HTTPS avec Caddy (reverse proxy recommandé)","Caddy obtient et renouvelle automatiquement les certificats Let's Encrypt. Créez `\u002Fopt\u002Fpocketbase\u002FCaddyfile` :\n\n```\napp.your-domain.com {\n    reverse_proxy pocketbase:8090\n}\n```\n\nAjoutez le service Caddy dans `docker-compose.yml` :\n\n```yaml\n  caddy:\n    image: caddy:2-alpine\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile\n      - caddy_data:\u002Fdata\n    depends_on:\n      - pocketbase\n\nvolumes:\n  caddy_data:\n```\n\nCaddy active les WebSockets (utilisés par les abonnements temps réel PocketBase) par défaut. **Si vous préférez Nginx**, ajoutez les en-têtes `Upgrade` et `Connection` dans votre `location \u002F` pour que les connexions SSE passent correctement.",{"title":69,"body":70},"Lancer et vérifier le démarrage","Démarrez la pile avec `docker compose up -d` puis suivez les logs :\n\n```bash\ndocker compose logs -f pocketbase\n```\n\nVous devriez voir une ligne indiquant que PocketBase écoute sur `0.0.0.0:8090` et l'URL `\u002F_\u002F` pour l'interface d'administration. Vérifiez que HTTPS fonctionne : `curl -I https:\u002F\u002Fapp.your-domain.com\u002F_\u002F` doit retourner `HTTP\u002F2 200`.",{"title":72,"body":73},"Créer le compte super-admin","Ouvrez `https:\u002F\u002Fapp.your-domain.com\u002F_\u002F` dans votre navigateur. Lors du premier accès, PocketBase vous invite à créer un compte super-admin (email + mot de passe). **Faites-le immédiatement** après le démarrage — avant de rendre l'URL publique — car toute personne atteignant `\u002F_\u002F` peut créer ce premier compte sur une instance vierge.\n\nUne fois connecté, explorez l'interface : Collections, Utilisateurs, Logs et Paramètres.",{"type":38,"title":75,"body":76},"Configurer l'authentification OAuth (Google, GitHub, GitLab)","PocketBase supporte nativement OAuth2 avec plusieurs fournisseurs : Google, GitHub, GitLab, Discord, Twitter\u002FX, Microsoft, Apple et d'autres. La configuration se fait entièrement depuis l'interface d'admin, sans toucher au code.\n\n**Pour Google OAuth** :\n1. Ouvrez la \u003Ca href=\"https:\u002F\u002Fconsole.cloud.google.com\u002F\">Google Cloud Console\u003C\u002Fa>, créez un projet et activez l'API « OAuth consent screen ».\n2. Dans « Credentials », créez un « OAuth 2.0 Client ID » de type « Web application ».\n3. Ajoutez `https:\u002F\u002Fapp.your-domain.com\u002Fapi\u002Foauth2-redirect` comme URI de redirection autorisée.\n4. Copiez le `Client ID` et le `Client secret`.\n5. Dans PocketBase `\u002F_\u002F`, allez dans **Settings → Auth providers → Google**, activez-le et collez vos identifiants.\n\n**Pour GitHub OAuth** :\n1. Sur GitHub, allez dans **Settings → Developer settings → OAuth Apps → New OAuth App**.\n2. Renseignez `https:\u002F\u002Fapp.your-domain.com` comme Homepage URL et `https:\u002F\u002Fapp.your-domain.com\u002Fapi\u002Foauth2-redirect` comme Authorization callback URL.\n3. Copiez le `Client ID` et générez un `Client Secret`.\n4. Activez GitHub dans **Settings → Auth providers** de PocketBase.\n\nChaque fournisseur actif apparaîtra automatiquement sur la page de connexion générée par PocketBase. Votre frontend n'a qu'à appeler `pb.collection('users').authWithOAuth2({ provider: 'google' })` via le SDK JavaScript.",{"type":38,"title":78,"body":79},"Sauvegardes automatiques : SQLite et fichiers","PocketBase stocke tout dans le dossier `pb_data` : la base SQLite (`pb_data\u002Fdata.db`), les fichiers uploadés (`pb_data\u002Fstorage\u002F`) et les logs. Une sauvegarde complète se résume à archiver ce dossier.\n\n**Méthode 1 — cron simple** : ajoutez cette ligne à votre crontab (`crontab -e`) pour une archive quotidienne à 3h du matin :\n\n```bash\n0 3 * * * tar czf \u002Fvar\u002Fbackups\u002Fpocketbase-$(date +\\%F).tar.gz \u002Fopt\u002Fpocketbase\u002Fpb_data && find \u002Fvar\u002Fbackups -name 'pocketbase-*.tar.gz' -mtime +7 -delete\n```\n\nCette commande crée une archive datée et supprime les sauvegardes de plus de 7 jours.\n\n**Méthode 2 — backups intégrés PocketBase** : depuis l'interface `\u002F_\u002F`, allez dans **Settings → Backups**. PocketBase peut créer des archives de `pb_data` directement depuis l'admin ou via l'API (`POST \u002Fapi\u002Fbackups`). Vous pouvez télécharger ces archives ou les envoyer vers un stockage S3 compatible.\n\n**Méthode 3 — rclone vers S3** : pour une copie hors-site automatique, utilisez `rclone` :\n\n```bash\n0 4 * * * rclone sync \u002Fopt\u002Fpocketbase\u002Fpb_data your-remote:pocketbase-backup\u002F\n```\n\n`your-remote` est un profil rclone configuré vers Backblaze B2, AWS S3 ou tout stockage objet compatible. Conservez toujours une copie hors du serveur — si le disque tombe, le seul backup local ne sert à rien.",{"type":81,"title":82,"body":83},"tip","Mode WAL SQLite et performances","PocketBase active le mode WAL (Write-Ahead Logging) de SQLite par défaut depuis les versions récentes. Ce mode autorise des lectures concurrentes pendant les écritures, ce qui évite qu'une insertion bloque toutes les lectures. Si vous constatez des timeouts sous forte charge, vérifiez avec `PRAGMA journal_mode;` dans l'admin SQL de PocketBase — la réponse doit être `wal`, pas `delete`.\n\nPour un trafic élevé, placez `pb_data` sur un volume NVMe et évitez tout système de fichiers réseau. SQLite sur NFS peut corrompre la base en cas de verrous mal gérés.",{"type":38,"title":85,"body":86},"Dépannage : erreurs courantes","**Port déjà utilisé** : si `docker compose up` échoue avec `bind: address already in use` sur le port 80 ou 443, vérifiez avec `ss -tlnp | grep ':80'` quel service occupe le port. Un nginx ou Apache installé sur l'hôte entre en conflit avec Caddy. Arrêtez-le (`systemctl stop nginx`) ou changez ses ports.\n\n**Permissions sur `pb_data`** : PocketBase tourne avec l'utilisateur `nobody` (UID 65534) dans le conteneur officiel. Si vous montez un dossier créé par root, le processus ne peut pas écrire. Corrigez avec `chown -R 65534:65534 \u002Fopt\u002Fpocketbase\u002Fpb_data`.\n\n**`\u002F_\u002F` inaccessible après démarrage** : vérifiez que le reverse proxy pointe bien vers le nom de service Docker (`pocketbase:8090`) et non `localhost:8090`. Dans un réseau Docker Compose, les services se joignent par leur nom, pas par `localhost`.\n\n**Mettre à jour PocketBase** : changez le tag de l'image dans `docker-compose.yml` (ex. `ghcr.io\u002Fmuchobien\u002Fpocketbase:0.23`) puis `docker compose pull && docker compose up -d`. PocketBase effectue les migrations de schéma automatiquement au démarrage. Sauvegardez `pb_data` avant toute mise à jour majeure.\n\n**Certificat Let's Encrypt non obtenu** : Caddy a besoin que les ports 80 et 443 soient accessibles depuis Internet pour le challenge HTTP-01. Vérifiez votre pare-feu (`ufw status`) et les règles de groupe de sécurité de votre hébergeur.",{"type":38,"title":88,"body":89},"Pour aller plus loin : CLI admin, collections et hooks","**CLI d'administration** : PocketBase expose une CLI pour les opérations courantes sans passer par l'interface web. Depuis le conteneur : `docker exec -it pocketbase_pocketbase_1 \u002Fpb\u002Fpocketbase --help`. Vous pouvez créer un super-admin en ligne de commande, exécuter des migrations ou vérifier la santé de la base.\n\n**Collections personnalisées** : dans `\u002F_\u002F`, créez vos collections (équivalentes aux tables) en définissant les champs typés (text, number, bool, date, file, relation, select, JSON). Les règles d'API s'expriment en syntaxe PocketBase (`@request.auth.id != \"\"` pour restreindre aux utilisateurs connectés, `@request.auth.id = id` pour limiter à son propre enregistrement).\n\n**Hooks (JavaScript côté serveur)** : depuis PocketBase v0.17, vous pouvez étendre le backend avec des scripts JavaScript exécutés côté serveur (`pb_hooks\u002F*.pb.js`). Exemples d'usage : envoyer un email à la création d'un utilisateur, valider des données complexes avant insertion, déclencher un webhook vers Slack. Ces hooks sont des fichiers montés dans le conteneur :\n\n```yaml\nvolumes:\n  - .\u002Fpb_data:\u002Fpb_data\n  - .\u002Fpb_hooks:\u002Fpb_hooks\n```\n\n**SDK JavaScript** : le SDK officiel (`npm install pocketbase`) simplifie les appels depuis votre frontend React, Vue ou mobile. Il gère l'authentification, le refresh de token et les abonnements temps réel (`pb.collection('tasks').subscribe('*', callback)`).",{"type":91,"title":92,"headers":93,"rows":98},"comparison","PocketBase vs alternatives self-hosted",[94,95,96,97],"Critère","PocketBase","Supabase self-hosted","Appwrite",[99,104,109,114,118,123,127],[100,101,102,103],"Complexité d'installation","Très faible (1 binaire ou 1 conteneur)","Élevée (docker-compose de 10+ services)","Moyenne (docker-compose de 6 services)",[105,106,107,108],"RAM minimale","512 Mo","4 Go+","2 Go+",[110,111,112,113],"Base de données","SQLite embarqué","PostgreSQL","MariaDB",[115,116,117,116],"Authentification OAuth","Oui (natif)","Oui (GoTrue)",[119,120,121,122],"Temps réel","Server-Sent Events","WebSocket (Realtime server)","WebSocket",[124,125,126,125],"Stockage de fichiers","Oui (local + S3)","Oui (S3 compatible)",[128,129,130,131],"Mise à l'échelle horizontale","Non (SQLite mono-fichier)","Oui (PostgreSQL)","Limitée",{"type":81,"title":133,"body":134},"La documentation officielle","Pour la configuration avancée et les options propres à l'outil, référez-vous à la \u003Ca href=\"https:\u002F\u002Fpocketbase.io\u002Fdocs\u002F\">documentation officielle de PocketBase\u003C\u002Fa>. 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.",{"type":81,"body":136},"Si vous voulez tester PocketBase sans Docker, téléchargez le binaire Linux depuis \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpocketbase\u002Fpocketbase\u002Freleases\">github.com\u002Fpocketbase\u002Fpocketbase\u002Freleases\u003C\u002Fa>, lancez `.\u002Fpocketbase serve --http=0.0.0.0:8090` et créez un service systemd pour qu'il redémarre automatiquement. Cette approche est encore plus légère que Docker sur de petits VPS.","Lancez votre backend PocketBase en quelques minutes","Le VPS Cloud ServOrbit vous donne un environnement Docker prêt à l'emploi, une IP fixe et des disques SSD rapides pour héberger PocketBase avec SSL automatique et sauvegardes simplifiées.","Déployer sur VPS Cloud","\u002Fvps-cloud",[142,161,179],{"id":143,"slug":144,"slugs":145,"title":149,"excerpt":150,"readTime":151,"views":152,"isPinned":19,"noindex":19,"publishedAt":153,"updatedAt":154,"category":155,"categories":156,"featuredImage":30,"bgImage":31,"posterImage":158,"relatedSolution":159},56,"heberger-postgresql-vps",{"fr":144,"en":146,"ar":147,"es":148},"postgresql-on-a-vps-a-reliable-and-controlled-database","postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها","alojar-postgresql-en-un-vps","PostgreSQL sur VPS : base fiable et contrôlée","Hébergez PostgreSQL sur VPS : configuration prod, sauvegardes pgBackRest, haute disponibilité streaming, comparatif RDS\u002FSupabase\u002FNeon et dépannage OOM.",9,1,"2026-04-25T00:00:00+00:00","2026-10-21T15:21:37+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[157],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":25,"appSlug":160},"postgresql-stack",{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":151,"views":170,"isPinned":19,"noindex":19,"publishedAt":171,"updatedAt":172,"category":173,"categories":174,"featuredImage":30,"bgImage":31,"posterImage":176,"relatedSolution":177},57,"heberger-mysql-vps",{"fr":163,"en":165,"ar":166,"es":167},"hosting-mysql-on-a-vps","استضافة-mysql-على-خادم-vps","alojar-mysql-en-un-vps","Héberger MySQL sur un VPS : guide complet","Installez MySQL 8.4 LTS sur un VPS : prérequis, sécurisation, performances InnoDB, accès distant sécurisé, sauvegardes automatisées et dépannage.",0,"2026-04-24T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[175],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-mysql-vps-poster.svg",{"categorySlug":25,"appSlug":178},"mysql-stack",{"id":180,"slug":181,"slugs":182,"title":186,"excerpt":187,"readTime":17,"views":170,"isPinned":19,"noindex":19,"publishedAt":188,"updatedAt":189,"category":190,"categories":191,"featuredImage":30,"bgImage":31,"posterImage":193,"relatedSolution":194},58,"heberger-redis-vps",{"fr":181,"en":183,"ar":184,"es":185},"hosting-redis-on-a-vps","استضافة-redis-على-خادم-vps","alojar-redis-en-un-vps","Héberger Redis sur un VPS : guide complet","Déployez Redis sur votre VPS Cloud : prérequis RAM\u002FCPU, sécurité (ACL, TLS), persistance RDB\u002FAOF, dépannage et haute disponibilité.","2026-04-23T00:00:00+00:00","2026-09-08T21:59:59+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[192],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-redis-vps-poster.svg",{"categorySlug":25,"appSlug":195},"redis-stack",true,1794270729717]