6.2 KiB
title: Kinto created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, cloud-storage, python, json, sync, mozilla, api, minimal] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Self-hosted+Cloud, https://github.com/Kinto/kinto]
🗄️ Kinto
Stockage JSON synchronisable et versionné : un service HTTP minimaliste pour stocker, synchroniser et partager des données structurées entre clients, conçu par Mozilla pour offrir un « Parse Server open source » ou un « Firebase-like self-hosted ».
📋 Informations Générales
| Métadonnée | Valeur |
|---|---|
| Site web | kinto.readthedocs.io |
| GitHub | Kinto/kinto |
| License | Apache-2.0 |
| Langage | Python (Pyramid) |
| Étoiles | 4 300 ⭐ |
| Dernière MAJ | 2026-05-08 |
| Catégorie | cat-cloud-storage |
📝 Description
Kinto est un projet de la fondation Mozilla (initialement par Mozilla Services puis piloté par la communauté) qui propose un magasin de données JSON exposé via une API REST simple, conçu pour être répliqué et synchronisé entre plusieurs clients ou instances. L'idée est proche de CouchDB ou Firebase, mais avec une approche plus stricte (validation de schéma, permissions fines, journal d'événements intégré).
Chaque ressource Kinto est un document JSON identifié par un ID et un numéro de version : last_modified est incrémenté à chaque écriture, ce qui permet la synchronisation optimiste entre clients sans conflit majeur. Les « buckets » et « collections » organisent les données à la manière de buckets S3 ou de collections MongoDB. Les permissions (read/write/collection:create) sont déclarables par utilisateur ou groupe.
Bien que moins connu que app-nextcloud dans le grand public, Kinto brille dans les contextes où l'on veut stocker des données structurées (préférences utilisateur, bookmarks, contacts, notes) avec une API propre, plutôt que des fichiers. Il sert typiquement de backend à des applications mobiles/web (Kinto.js côté client gère la synchronisation offline-first) ou de brique interne pour des produits B2B.
Le projet n'a pas vocation à être un clone de Dropbox : il n'y a pas d'UI web riche pour visualiser des fichiers. Sa force est dans la couche de persistance et de synchronisation — un peu comme un Firebase auto-hébergé en Python.
🚀 Installation
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
postgresql:
image: postgres:16-alpine
container_name: kinto-db
restart: unless-stopped
environment:
POSTGRES_USER: kinto
POSTGRES_PASSWORD: ${DB_PASS}
POSTGRES_DB: kinto
volumes:
- db_data:/var/lib/postgresql/data
kinto:
image: kinto/kinto-server:17.1.0
container_name: kinto
restart: unless-stopped
depends_on:
- postgresql
ports:
- "8888:8888"
environment:
KINTO_INI: /etc/kinto/kinto.ini
volumes:
- ./kinto.ini:/etc/kinto/kinto.ini:ro
volumes:
db_data:
# kinto.ini
[app:main]
use = egg:kinto
kinto.storage_backend = kinto.core.storage.postgresql
kinto.storage_url = postgresql://kinto:${DB_PASS}@postgresql:5432/kinto
kinto.cache_backend = kinto.core.cache.postgresql
kinto.permission_backend = kinto.core.permission.postgresql
kinto.user_hmac_secret = change-me-in-production
kinto.project_name = Kinto
kinto.project_version = 17.1.0
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 8888
Option 2 : Installation pip
pip install kinto
kinto init
kinto migrate
pserve kinto.ini
⚙️ Configuration
- Authentification : support natif des basicauth, hmac, OpenID Connect (via plugin
kinto-oidc). - Plugins :
kinto-signer(signature crypto des collections),kinto-attachment(stockage binaire),kinto-emailer. - Validation de schéma : plugin
kinto-schemapermet de typer fortement les records. - Quota : configurable par bucket.
- Soft-delete : les records sont marqués
deleted=truepuis purgés par un cron configurable. - Réplication : plusieurs instances Kinto peuvent répliquer entre elles via le mécanisme de pull/refresh.
🔄 Alternatives
Open Source
- app-nextcloud — Plus généraliste (fichiers + agenda + contacts)
- app-cloudreve — Cloud storage pur, multi-backend
- app-opencloud — Go, fork d'OCIS
- app-oxicloud — Rust
- app-sync-in — Node.js
- app-mydrive — Node.js
- CouchDB — Document store avec sync native, en Erlang
- PouchDB + CouchDB — Combo historique pour le offline-first
- Parse Server — Plateforme BaaS auto-hébergeable
- Strapi — CMS headless JSON
Propriétaires (ce que cette app remplace)
- Firebase Realtime Database / Firestore — backend BaaS de Google
- Supabase — alternative open-source à Firebase (PG + API auto)
- AWS AppSync — GraphQL managé
- Pusher — sync temps réel
🔐 Sécurité
- Permissions fines : lecture/écriture par utilisateur, groupe, ou anonyme.
- CORS : configurable finement pour autoriser uniquement vos frontends.
- HMAC : signature des requêtes possible via le plugin officiel.
- Headers : forcez HSTS, X-Content-Type-Options via votre reverse-proxy.
- Backups : un simple
pg_dumpsuffit pour sauvegarder l'état complet. - Mises à jour : le rythme a ralenti depuis 2020 mais reste sous maintenance active (versions mineures régulières sur l'upstream communautaire).
- Attention :
confidence: mediumreflète l'activité ralentie du dépôt principal.
📚 Ressources
Pages Liées
- cat-cloud-storage — Catégorie Cloud Storage
- recettes-docker-compose — Templates Docker
- app-nextcloud — Plus généraliste
- securisation-home-lab — Sécurité
- Catalogue-Self-Hosted — Hub