Files
wiki/Catalogue-Self-Hosted/apps/app-kinto.md
T
2026-06-09 18:40:21 +02:00

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-schema permet de typer fortement les records.
  • Quota : configurable par bucket.
  • Soft-delete : les records sont marqués deleted=true puis 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_dump suffit 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: medium reflète l'activité ralentie du dépôt principal.

📚 Ressources

Pages Liées