đŸ Portabase : centraliser les sauvegardes de ses bases de donnĂ©es

đ Introduction
La sauvegarde, câest le sujet quâon repousse. Un pg_dump dans un cron, un mysqldump qui pousse vers un bucket, un script Bash hĂ©ritĂ© dâun ancien projet et recopiĂ© depuis trois ans. Ăa tourne. Enfin, on le suppose : personne nâa relu le log depuis des mois, et personne nâa jamais tentĂ© de restaurer.
Le jour oĂč il faut restaurer, les dĂ©tails remontent tous en mĂȘme temps. Le dump sâarrĂȘtait Ă 2 Go, disque plein. La rotation gardait sept jours quand le client en attendait trente. Le fichier existe, mais il est tronquĂ© au milieu dâun INSERT. Et comme les bases sont rĂ©parties sur cinq machines chez trois hĂ©bergeurs, chaque serveur a sa version du script et ses approximations Ă lui.
Portabase attaque le problĂšme par le milieu : une interface unique qui pilote les sauvegardes de toutes vos bases, oĂč quâelles tournent, avec restauration depuis le navigateur. Licence Apache 2.0, auto-hĂ©bergement complet, projet portĂ© par une organisation Ă but non lucratif. La version 1.30.1 date du 14 septembre 2026.
đ Pourquoi pas simplement un cron et un mysqldump ?
Parce quâun cron ne vous dit rien de ce quâil fait. MAILTO existe, et rien nâempĂȘche un script dâappeler un webhook en cas dâĂ©chec. Encore faut-il lâĂ©crire sur chaque machine, puis le maintenir. Ce qui manque nâa jamais Ă©tĂ© la possibilitĂ© technique dâalerter : câest le suivi centralisĂ©, une rotation plus fine que « supprime ce qui dĂ©passe N jours », et une restauration praticable Ă 3 h du matin.
Portabase ajoute la couche qui manque au-dessus des outils de dump natifs, quâil continue dâappeler en dessous. La planification se dĂ©crit en cron. La rĂ©tention se choisit parmi trois stratĂ©gies : garder les N derniĂšres copies (de 1 Ă 100), garder tout ce qui a moins de N jours, ou une rotation GFS â grand-pĂšre, pĂšre, fils â qui conserve un reprĂ©sentant par pĂ©riode pour couvrir plusieurs annĂ©es sans exploser le volume. Une mĂȘme sauvegarde part vers toutes les destinations actives Ă la fois, et les Ă©checs dĂ©clenchent des alertes.

Les trois stratégies de rétention, telles que le dashboard les propose. Capture issue de la documentation officielle.
Dix moteurs sont gĂ©rĂ©s, tous marquĂ©s stables : PostgreSQL 12 Ă 18, MySQL 5.7 Ă 9, MariaDB 10 et 11, MongoDB 4 Ă 8, SQLite 3.x, Redis 2.8+, Valkey 7.2+, Firebird 3.0 Ă 5.0, Microsoft SQL Server 2017, 2019 et 2022 ainsi quâAzure SQL, plus les volumes Docker depuis lâEngine 20.10. La restauration couvre tout sauf Redis et Valkey.
𧱠Un dashboard, des agents, zéro port ouvert
Portabase se dĂ©ploie en deux morceaux. Le dashboard est le plan de contrĂŽle, une application Next.js installĂ©e une seule fois : on y dĂ©clare les agents, on y configure sauvegardes, stockages et intĂ©grations, et il ne parle jamais Ă vos bases. Lâagent est un binaire Rust posĂ© sur chaque serveur hĂ©bergeant des bases. Câest lui qui exĂ©cute les dumps et les restaurations, et il chiffre les archives en AES-GCM avant que la moindre donnĂ©e quitte la machine.
Le sens de la communication fait tout lâintĂ©rĂȘt. La documentation est explicite : « le serveur central ne contacte jamais les agents directement. Il nây a donc pas besoin dâouvrir de ports entrants dans les environnements oĂč rĂ©sident les bases de donnĂ©es. Ce sont les agents qui contactent pĂ©riodiquement le serveur central. » Le sondage tourne toutes les cinq secondes par dĂ©faut.
Vos serveurs de bases nâexposent donc rien de neuf. Sur un parc Ă©clatĂ© entre un VPS, un homelab Proxmox et deux hĂ©bergeurs managĂ©s, ça change la conversation avec lâĂ©quipe rĂ©seau.
Une nuance sâimpose au passage, parce quâelle est facile Ă sur-interprĂ©ter. Ce que cette architecture supprime, câest le chemin rĂ©seau entrant, pas le lien dâautoritĂ© : lâagent interroge le dashboard prĂ©cisĂ©ment pour y prendre ses ordres, restaurations comprises. Quelquâun qui prend le contrĂŽle du dashboard peut donc toujours faire dĂ©clencher des dumps ou des restaurations par vos agents. La documentation ne dit dâailleurs pas autre chose : lâapproche « limite les consĂ©quences dâune compromission du serveur central ». Elle les limite, elle ne les annule pas. Le dashboard reste Ă traiter comme un actif sensible.
Lâagent transporte son identitĂ© dans une Edge Key : une chaĂźne encodĂ©e contenant son identifiant, sa clĂ© de chiffrement et lâURL du dashboard Ă joindre. Câest le seul Ă©lĂ©ment Ă transporter dâun bout Ă lâautre de lâinstallation.
đ Installer le dashboard et un premier agent
Le CLI est la voie la plus courte : il gĂ©nĂšre le secret de chiffrement et dĂ©marre les conteneurs Ă votre place. Il lui faut Docker avec le plugin Compose, et il rĂ©gĂ©nĂšre le docker-compose.yml Ă chaque changement de configuration â vos ajustements maison vont dans un docker-compose.override.yml, pas dans le fichier gĂ©nĂ©rĂ©.
curl -sL https://portabase.io/install | bash
portabase --versionLe binaire couvre Linux (amd64, arm64), macOS et Windows. On crée le dashboard, puis on le démarre :
portabase dashboard create mon-dashboard
portabase start mon-dashboardLâassistant demande le port web (8887 par dĂ©faut), le mode de base et le fuseau horaire. Lâinterface rĂ©pond sur http://localhost:8887.

Lâaccueil du dashboard, servi sur le port 8887. Les compteurs donnent lâĂ©tat du parc dâun coup dâĆil ; la barre latĂ©rale rassemble agents, stockages, notifications et gestion des accĂšs.
CĂŽtĂ© serveur de bases, lâagent se crĂ©e aussi simplement, lâEdge Key se rĂ©cupĂ©rant sous Organisation > Settings > Agents :
portabase agent create mon-agent --key "<edge-key>" --tz "Europe/Paris" --startLes autres options utiles sont --polling (frĂ©quence de sondage, en secondes), --log-level parmi debug, info, warn et error, et --yes. Une fois lâagent en ligne, les bases quâil dĂ©tecte remontent toutes seules dans lâinterface. Pour celles quâil ne devine pas, un fichier montĂ© sur /config/config.json les dĂ©clare en JSON ou en TOML.
Pour garder la main sur le Compose, lâimage portabase/portabase:latest sâutilise directement :
docker run -d \
--name portabase-app-prod \
-p 8887:80 \
--restart unless-stopped \
-e TZ="Europe/Paris" \
--env-file .env \
-v ./portabase-data:/data \
portabase/portabase:latestLa commande est reprise telle quelle de la documentation, latest compris ; en production, remplacez-le par le tag que vous avez vĂ©rifiĂ© (1.30.1 au moment oĂč jâĂ©cris), pour la raison donnĂ©e plus bas. Trois variables comptent : PROJECT_URL, PROJECT_SECRET (un openssl rand -hex 32 fait lâaffaire) et DATABASE_URL. La documentation rĂ©serve ce docker run aux essais, sa base embarquĂ©e nâĂ©tant pas prĂ©vue pour la production : la forme recommandĂ©e reste un Compose avec un PostgreSQL dĂ©diĂ©. Kubernetes via Helm, Unraid, Dokploy et Coolify sont documentĂ©s aussi.
đïž OĂč atterrissent les archives
Le stockage local dĂ©panne pour un premier essai, le temps de vĂ©rifier que la chaĂźne fonctionne. Au-delĂ , la sauvegarde partage le sort de la machine quâelle protĂšge. Portabase sait viser du S3-compatible (MinIO, AWS, Scaleway), Google Drive, Google Cloud Storage, Azure Blob Storage, SFTP, et tout backend atteignable par Rclone.
Plusieurs destinations restent actives en mĂȘme temps sur une base, et la sauvegarde part vers toutes simultanĂ©ment. De quoi tendre vers la rĂšgle 3-2-1, Ă condition de choisir des cibles vraiment indĂ©pendantes. Deux buckets du mĂȘme fournisseur, sous le mĂȘme compte, disparaissent ensemble le jour oĂč ce compte est suspendu. Une copie chez lâhĂ©bergeur, une copie chez un tiers, des identifiants distincts : câest le minimum qui tienne. Le stockage se configure comme un canal, au mĂȘme titre que les connecteurs de notification qui vous prĂ©viennent dâun Ă©chec.

Les destinations se déclarent par base. Ici un bucket CloudFlare R2 actif, avec le stockage local du serveur disponible en second canal.
đ€ Un serveur MCP pour piloter le tout
Le dashboard expose ses opĂ©rations en Model Context Protocol : un assistant peut lister agents, bases et sauvegardes en langage naturel. Deux variables lâactivent, API_ENABLED=true et MCP_ENABLED=true. Lâendpoint /api/v1/mcp sâauthentifie par un en-tĂȘte x-api-key :
{
"mcpServers": {
"portabase": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://your-dashboard.example.com/api/v1/mcp",
"--header",
"x-api-key: YOUR_API_TOKEN"
]
}
}
}Pratique pour interroger lâĂ©tat dâun parc. Tenez-vous-en Ă la lecture le temps dâĂ©prouver la chose : « restaure la base de prod » reste une phrase quâon prĂ©fĂšre taper soi-mĂȘme.
â ïž Quelques prĂ©cautions
Le projet bouge vite. Trois versions sur les deux jours prĂ©cĂ©dant le 1.30.1. La cadence est rassurante sur la vitalitĂ© du projet, et rend latest hasardeux sur une installation quâon oublie : Ă©pinglez un tag et lisez les notes de version avant de monter.
LâEdge Key est un secret complet. Identifiant de lâagent, clĂ© de chiffrement et URL du dashboard tiennent dans une seule chaĂźne. Qui lâobtient enrĂŽle un agent chez vous. Un .env non versionnĂ©, et rien dâautre.
La restauration Ă©crase les donnĂ©es en place. La documentation le dit sans dĂ©tour. Deux modes existent â restaurer depuis une sauvegarde dĂ©jĂ connue du dashboard, ou depuis un fichier repris sur un stockage externe â et aucun des deux ne vous demandera si vous Ă©tiez bien sĂ»r de la base cible.
Une sauvegarde non restaurĂ©e nâest pas une sauvegarde. Lâinterface supprime lâexcuse principale. Programmez un test rĂ©el sur une base jetable, et chronomĂ©trez-le : ce chiffre-lĂ est celui qui alimente vos objectifs de service, pas celui que vous espĂ©rez.
đ Conclusion
Sous le capot, Portabase appelle les mĂȘmes pg_dump, mysqldump et mongodump que votre script. Tout le travail est dans la couche autour : centraliser, planifier, alerter, chiffrer, et rendre la restauration assez simple pour quâon la teste vraiment.
Pour un freelance ou une petite équipe aux bases éparpillées, le rapport effort/tranquillité est difficile à battre : deux commandes pour le dashboard, une par serveur. Commencez par la base dont la perte coûterait le plus cher. Une fois celle-là couverte et restaurée pour de vrai, le reste suit.
đ Liens utiles
/faq
Questions fréquentes
Qu'est-ce que Portabase ?
+
Portabase est un outil open source auto-hébergé, sous licence Apache 2.0, qui centralise la sauvegarde et la restauration de bases de données. Il se compose d'un dashboard central et d'agents installés à cÎté de chaque base.
Quelles bases de données Portabase sait-il sauvegarder ?
+
Dix moteurs : PostgreSQL 12 Ă 18, MySQL 5.7 Ă 9, MariaDB 10 et 11, MongoDB 4 Ă 8, SQLite 3.x, Redis, Valkey, Firebird 3 Ă 5, Microsoft SQL Server et les volumes Docker. La restauration est disponible pour tous sauf Redis et Valkey.
Faut-il ouvrir des ports entrants sur les serveurs de bases de données ?
+
Non. Le dashboard ne contacte jamais les agents : ce sont les agents qui l'interrogent périodiquement en sortie, toutes les cinq secondes par défaut. Aucune rÚgle de pare-feu entrante n'est nécessaire cÎté bases.
Comment installer Portabase ?
+
Le CLI est la voie la plus courte : curl -sL https://portabase.io/install | bash, puis portabase dashboard create mon-dashboard et portabase start mon-dashboard. La création génÚre le secret de chiffrement et écrit le Compose ; l'option --start la fait démarrer dans la foulée. L'interface écoute sur le port 8887.