ycell
ycell est un tableur souverain, local-first, européen. Les cellules ne sont pas des valeurs mortes dans un fichier — ce sont des projections vivantes de données consolidées (APIs externes + tes propres données). Là où la bureautique classique part du fichier, ycell part de la donnée.
Comment lire cette documentation
- Utilisateur — installer, prendre en main, et tout ce que vous pouvez faire : le tableur, les données vivantes, le partage et la collaboration temps réel, l'enregistrement et la publication cloud, l'assistant IA, les modules et le scripting.
- Administration & déploiement — pour un opérateur : auto-héberger ycell, configurer le stockage cloud, brancher le SSO (OIDC / LDAP / SCIM) et structurer organisations, espaces et rôles.
Les capacités en bref
- Données vivantes : une cellule peut être une projection d'une source externe ou interne qui se rafraîchit toute seule (poll ou flux temps réel).
- Tableur complet : grille, formules, mise en forme, charts, import/export XLSX/CSV/ODS, impression PDF.
- Partage chiffré de bout en bout + collaboration temps réel.
- Cloud : enregistrer, publier en lecture seule, intégrer un document en
<iframe>. - Assistant IA branché sur ta propre clé (Claude / OpenAI / Gemini / Mistral) ou un modèle local (Ollama).
- Souveraineté : local-first, exécutable sur votre machine ou votre NAS.
- Extensibilité : modules WebAssembly signés et sandboxés.
Démarrage rapide
Installer
ycell se distribue de plusieurs façons — toutes font tourner localement sur votre machine, avec la même interface :
- Application de bureau (Linux / Windows) — avec mise à jour intégrée (« mettre à jour / plus tard »).
- Application web — depuis votre navigateur.
- Application installable (PWA) — depuis le navigateur.
- Image pour NAS / serveur — pour une box toujours allumée (Synology, QNAP) : la donnée vit là où le fichier vit déjà.
- Mobile — Android.
Première utilisation
Au premier lancement, un court assistant de configuration vous propose : la
langue (détectée depuis votre système), les conditions d'utilisation, une
télémétrie anonyme optionnelle (sans donnée personnelle) et l'association des
fichiers .ycell.
Le premier document
- Ouvrez un nouveau classeur depuis l'écran d'accueil.
- Saisissez des valeurs et des formules (
=A1*2,=SOMME(...), références inter-feuillesFeuille2!B3). - Branchez une donnée vivante (voir Données vivantes) : une cellule qui se rafraîchit toute seule.
- Enregistrez en
.ycell— un format chiffré par mot de passe.
Et ensuite
- Le tableur — toutes les capacités classiques (et au-delà).
- Partage & collaboration — travailler à plusieurs, en chiffré.
- Modules & scripting — étendre ycell.
Le tableur
Le cœur tableur de ycell couvre les attentes classiques d'un tableur, avec une parité Excel visée sur les usages courants.
Grille & mise en forme
- Grille canvas performante : styles, formats de nombre, bordures, fusion de cellules, freeze panes, multi-feuilles.
- Mise en forme conditionnelle, tableaux (styles), validation de données, recherche / remplacement.
- Styles nommés et thèmes, notes et liens hypertextes dans les cellules.
Formules
- Moteur de formules + recalcul automatique.
- Références cross-feuille (
Feuille!A1). - Plages nommées utilisables dans les formules (
=Prix*2), résolution insensible à la casse, portée classeur. - Autocomplétion des noms et des fonctions dans la barre de formule et l'éditeur en cellule.
Données & visualisation
- Charts (graphiques) et tableaux croisés dynamiques (pivots).
- Import / export XLSX, CSV, ODS.
- Impression / PDF avec aperçu WYSIWYG vectoriel (orientation, zone, marges, en-têtes).
Import des classeurs Excel
À l'ouverture d'un .xlsx, ycell importe la mise en forme, les charts, la mise en
forme conditionnelle, la validation, les notes/liens, les styles et thèmes nommés et
les tableaux croisés dynamiques. Les macros VBA d'un .xlsm sont transpilées
en JavaScript ycell à l'import (jamais exécutées telles quelles) — voir
Modules & scripting.
Édition
- Undo / redo, copier / coller, recopie incrémentale (fill).
Format natif .ycell
Le format natif est chiffré par mot de passe (cryptographie moderne, dérivation de clé robuste). Les sources de données vivantes sont portables : elles persistent et voyagent avec le document, sans jamais embarquer de secret.
Données vivantes
C'est le cœur de ce qui distingue ycell : une cellule peut être une projection vivante d'une source de données externe ou interne, qui se rafraîchit toute seule.
Brancher une source
Depuis le panneau Données, vous choisissez un type de source (voir la liste Sources de données disponibles) et vous renseignez sa configuration. Les secrets (clés d'API, mots de passe) sont stockés dans le trousseau de votre système — jamais en clair dans le document.
Le modèle « feuille-source »
Une source de données est une feuille spéciale (marquée ⚡), gérée automatiquement :
- une zone de configuration,
- pour chaque champ capturé, une valeur horodatée (l'historique qui grandit),
- une cellule « Dernière » (la valeur courante).
Les transformations sont de simples formules ; relier un champ à une cellule est une référence entre feuilles. Vous obtenez ainsi, sans code : l'historique dans le temps, la provenance de chaque valeur et des statistiques.
Rafraîchissement
- Interrogation périodique (intervalle) ou flux temps réel ; le classeur recalcule à chaque nouvelle valeur.
- Par champ : un libellé, le chemin dans la source, l'activation, et une option d'échantillonnage (chaque valeur, sur changement, à intervalle, ou agrégée : dernière / moyenne / min / max / OHLC).
L'explorateur de structure
Le panneau de gauche montre un aperçu brut de la source + les champs cliquables : un clic ajoute une colonne, avec aperçu avant enregistrement.
Plages nommées automatiques
Chaque path capturé expose un nom utilisable en formule :
Binance_prix— la dernière valeur,Binance_prix_hist— l'historique (ex.=AVERAGE(Binance_prix_hist)).
Avec, sans écrire de code : un chip clic-pour-copier, le name box qui navigue vers la feuille-source, un graphique en 1 clic de l'historique (bouton 📈), un bloc de stats temporelles live (bouton 📊 — moyenne/médiane/min/max/ écart-type qui suit l'historique qui grandit), et un gestionnaire de noms (ruban Données → « Noms »).
E-facturation / Peppol
ycell embarque un parser universel de factures électroniques : une facture
structurée Factur-X / UBL / EN 16931 devient une source de données exploitable
(source Facture électronique). Vous pouvez aussi brancher une boîte à factures
(source imap) qui lit votre messagerie et récupère les factures reçues en pièce
jointe, ou un connecteur de plateforme agréée (Sellsy, Billit, Pennylane…) —
voir Sources de données disponibles.
Sources de données disponibles
Les types de sources que tu peux brancher depuis le panneau Données (formulaires rendus depuis ces descripteurs). Le temps réel indique une source capable de pousser des mises à jour live (WebSocket / SSE / change-stream).
Bases de données
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| PG PostgreSQL | postgres | 10 | Base relationnelle via SQL (tunnel SSH optionnel). | |
| MY MariaDB / MySQL | mariadb | 7 | Base relationnelle MariaDB ou MySQL via SQL (lecture seule). | |
| CO CouchDB | couchdb | 4 | Base documents Apache CouchDB via l'API HTTP (lecture seule). |
API & Web
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| RE REST | rest | 4 | API HTTP JSON avec en-têtes et jeton Bearer. | |
| JS JSON | json | 3 | Document JSON via URL, inline ou fichier. | |
| GQ GraphQL | graphql | 3 | Endpoint GraphQL avec en-têtes et jeton Bearer. |
Temps réel
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| ₿ Binance (crypto) | binance | 🟢 | 1 | Cours crypto Binance en temps réel — saisissez une paire (BTCEUR), la valeur tique toute seule. |
| ↻ API temps réel (REST) | poll | 🟢 | 4 | Interroge une API JSON sans clé toutes les N secondes et fait tiquer la valeur en direct (cours, météo, change…). |
| SE SSE | sse | 🟢 | 3 | Flux Server-Sent Events (text/event-stream) en temps réel. |
| WS WebSocket | websocket | 🟢 | 2 | Connexion WebSocket diffusant des messages en temps réel. |
CRM & ventes
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| OD Odoo | odoo | 4 | CRM / ERP Odoo via l'API JSON-RPC. | |
| HS HubSpot | hubspot | 2 | CRM HubSpot via l'API CRM v3 (jeton d'app privée). | |
| PD Pipedrive | pipedrive | 2 | CRM Pipedrive — deals, contacts, organisations (jeton API). | |
| SY Sellsy | sellsy | 2 | CRM + facturation Sellsy (plateforme agréée) — factures émises et reçues (OAuth2 client-credentials). |
IoT
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| HA Home Assistant | homeassistant | 2 | Home Assistant via l'API REST (jeton d'accès longue durée). |
Open data
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| CK CKAN (open data) | ckan | 3 | Portail open-data CKAN (data.gouv.fr, data.europa.eu…) — couche tabulaire DataStore. |
Finance & banque
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| QO Qonto (banque) | qonto | 3 | Compte pro Qonto — soldes et transactions en direct (clé API, sans CSV ni cloud tiers). | |
| GC Banque (GoCardless / DSP2) | gocardless | 4 | N'importe quelle banque EU via GoCardless / open banking (DSP2) — palier gratuit, 2000+ banques. | |
| ST Stripe | stripe | 2 | Paiements Stripe — charges, clients, factures, solde (clé secrète API). |
Compta
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| FE Compta (FEC) | fec | 3 | Fichier des Écritures Comptables (FEC) — le grand livre comptable, base de l'EBITDA, des SIG et de l'analytique. | |
| FX Facture électronique | einvoice | 2 | Facture structurée Factur-X / UBL / EN 16931 — la donnée facture exploitable (le parser, sans réseau). | |
| 📧 Boîte à factures (e-mail) | imap | 6 | Lit votre messagerie (Gmail, O365, OVH…) et récupère les factures reçues en pièce jointe — les structurées sont lues automatiquement. | |
| BI Billit | billit | 3 | Facturation Billit (plateforme agréée Peppol) — factures émises et reçues (clé API). | |
| PL Pennylane | pennylane | 1 | Compta Pennylane (plateforme agréée) — factures de vente et d'achat (jeton API). | |
| SG Sage Accounting | sage | 3 | Compta Sage Business Cloud — factures, contacts, grand livre (OAuth2, consentement navigateur). |
Fichiers
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| FI Fichier importé | file | 5 | Importez un CSV, un export Excel (XLSX) ou un JSON — il devient une source nommée, interrogeable et liable, explorable via le métamodèle. |
Productivité
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| AT Airtable | airtable | 2 | Base Airtable — tables et enregistrements (Personal Access Token). | |
| GR Grist | grist | 4 | Document Grist en direct — tables et enregistrements (clé API). Lecture + écriture. | |
| TR Trello | trello | 3 | Tableaux Trello — boards, cartes, listes (clé + jeton). | |
| JI Jira | jira | 3 | Suivi Jira — issues via JQL, projets (e-mail + jeton API). |
Marketing
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| BR Brevo (Sendinblue) | brevo | 1 | Marketing Brevo — contacts, listes, campagnes e-mail/SMS (clé API). | |
| MC Mailchimp | mailchimp | 2 | Marketing Mailchimp — listes, campagnes, rapports (clé API). |
E-commerce
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| SH Shopify | shopify | 3 | Boutique Shopify — commandes, produits, clients (Admin API token). |
Communication
| Source | kind | Temps réel | Champs | Description |
|---|---|---|---|---|
| AC Aircall | aircall | 2 | Téléphonie Aircall — appels, utilisateurs, contacts (api_id + api_token). |
34 types de sources au total. Source de vérité :
crates/datasource-catalog. Les connecteurs signés (modules WASM du hub) viennent en plus, via le catalogue du hub.
Partage & collaboration
Tout le partage de ycell repose sur un invariant : le serveur ne voit que du chiffré. La confidentialité est garantie par la cryptographie, pas par une politique d'accès.
Pour enregistrer dans le cloud, publier en lecture seule ou intégrer un document en
<iframe>, voir Cloud : enregistrer, publier, intégrer.
Partage chiffré de bout en bout
- La clé qui déchiffre le contenu voyage dans le fragment du lien (jamais envoyée au serveur) ou est chiffrée à l'intention du destinataire — auquel cas aucune clé ne transite dans le lien.
- Sûr pour les secrets : un partage retire les automations sortantes (jetons, webhooks…). La promesse « jamais d'identifiants partagés » est littérale.
Permissions
Un document appartient à un compte. Le partage passe par une demande d'accès → boîte de réception du propriétaire → accorder / refuser / révoquer, avec des rôles (lecteur / éditeur) et une portée (feuille ou plage).
Collaboration temps réel
- Les modifications sont synchronisées en temps réel et chiffrées de bout en bout — le serveur ne déchiffre jamais.
- Bidirectionnel : chacun peut éditer.
- Présence : la liste « qui est en ligne » et les curseurs des autres dessinés sur la grille (une couleur par personne, ★ pour le propriétaire).
Partager la donnée vivante sans la source
Le propriétaire peut diffuser la valeur live d'une cellule liée ; les lecteurs la voient bouger sans avoir ses identifiants. Le lecteur voit la source grisée (« ⚠ secret manquant — compléter ») et peut la renseigner lui-même pour passer en direct.
Partage de secret explicite
- Inclure : le propriétaire peut joindre un secret à un partage (chiffré de bout en bout, avec un avertissement sur le caractère irréversible).
- Demander / accorder : le lecteur demande le secret → le propriétaire approuve ou refuse → le secret est chiffré à l'intention du demandeur et renseigné chez lui.
Dans tous les cas, un secret ne voyage que chiffré de bout en bout ; le cloud ne voit que des données illisibles.
Cloud : enregistrer, publier, intégrer
En plus du fichier .ycell local, un document peut vivre dans le cloud : pour
l'enregistrer hors de votre machine, le publier en lecture seule via un lien, ou
l'intégrer dans une page web. Comme pour le partage, l'invariant tient : le
serveur ne stocke que du chiffré — il ne déchiffre jamais votre document.
Enregistrer dans le cloud
Depuis le panneau Cloud, « Enregistrer dans le cloud » chiffre le classeur sur votre poste puis envoie au serveur des données illisibles. Le serveur lui attribue un identifiant et applique un quota par compte. La clé de déchiffrement ne quitte jamais votre poste.
Comme pour un partage, l'enregistrement cloud retire les automations sortantes et les secrets des définitions de sources : un document publié ne transporte jamais d'identifiant.
Publier en lecture seule
« Publier » produit un lien de consultation vers une vue en lecture seule du document. Le lien a la forme :
https://<app>/embed/<id>#k=<clé>
- l'identifiant (
<id>) voyage dans le chemin : le serveur s'en sert pour renvoyer le chiffré ; - la clé (
#k=…) voyage dans le fragment d'URL, que le navigateur n'envoie jamais au serveur. Le serveur ne sert donc que du chiffré et n'a aucun moyen d'accéder à la clé. Le déchiffrement se fait localement, dans la page.
Quiconque a le lien complet peut consulter le document (pas l'éditer). Sans le
fragment #k=, le contenu reste illisible.
Intégrer en <iframe>
Pour un blog, un intranet ou un tableau de bord, ycell fournit un extrait
<iframe> prêt à coller depuis le panneau Cloud :
<iframe src="https://<app>/embed/<id>#k=<clé>"
width="100%" height="480"
style="border:1px solid #e5e7eb;border-radius:8px"
loading="lazy" title="ycell"></iframe>
La page /embed/<id> est un visualiseur épuré, strictement en lecture seule :
ni ruban, ni édition, juste la grille. Le déchiffrement se fait dans l'iframe, à
partir de la clé du fragment.
Données vivantes dans un document publié
Un document publié est par défaut un instantané (les valeurs au moment de la
publication). Dans les éditions Pro et Entreprise, un document publié peut
voir ses cellules liées se rafraîchir côté serveur, pour que les destinataires
et les intégrations <iframe> voient des valeurs fraîches même quand l'auteur est
hors-ligne.
Lien avec le partage
Le partage chiffré et la collaboration temps réel sont décrits dans Partage & collaboration. La publication cloud en réutilise la mécanique (chiffrement sur votre poste, clé dans le fragment du lien) ; elle ajoute le stockage hébergé et la vue d'intégration.
Assistant IA
ycell embarque un assistant IA agentique : un panneau de discussion latéral où vous demandez en langage naturel, et où l'assistant lit et modifie le classeur en appelant des outils. Il fonctionne avec votre propre clé d'un fournisseur cloud (Claude, OpenAI, Gemini, Mistral) ou avec un modèle local via Ollama — auquel cas rien ne quitte la machine.
Configurer le fournisseur
Ouvrez « Configurer l'IA » (onglet Agent IA) et choisissez un fournisseur :
| Fournisseur | Ce qu'il faut | Confidentialité |
|---|---|---|
| Claude (Anthropic) | une clé API | requêtes envoyées au fournisseur |
| OpenAI | une clé API | requêtes envoyées au fournisseur |
| Gemini (Google) | une clé API | requêtes envoyées au fournisseur |
| Mistral | une clé API | requêtes envoyées au fournisseur |
| Local (Ollama) | un Ollama installé en local | rien ne quitte la machine |
Pour un fournisseur cloud, collez votre clé (BYO key) et choisissez un modèle (la liste propose des modèles courants ; vous pouvez aussi taper le vôtre). La clé est :
- stockée par défaut dans le trousseau de votre système d'exploitation, pas dans le document ;
- traitée localement sur votre machine ;
- jamais réaffichée ni renvoyée dans une réponse.
Le bouton « Tester la connexion » valide la configuration avant de l'enregistrer.
Modèle local (Ollama)
Pour une confidentialité totale, installez Ollama puis choisissez le fournisseur Local (Ollama). ycell parle à Ollama installé sur votre poste — aucune donnée ne sort de votre machine.
Le modèle recommandé pour l'appel d'outils est qwen2.5 (les petits modèles
sont moins fiables pour piloter des outils). Depuis le panneau, vous pouvez
télécharger un modèle directement.
Ce que l'assistant peut faire
L'assistant procède par étapes : il lit le contexte, agit sur le classeur, observe le résultat, puis recommence. Il peut notamment :
- lire le classeur et expliquer une cellule ;
- écrire des cellules et des formules, mettre en forme, effacer une plage ;
- créer / renommer des feuilles, insérer un graphique, créer un tableau croisé dynamique ;
- poser de la validation de données et de la mise en forme conditionnelle, trier / filtrer un tableau ;
- explorer et interroger les sources de données, en ajouter / lier des champs, rechercher parmi les entités d'une source ;
- créer des automations.
Les références de cellules dans ses réponses sont cliquables (elles naviguent vers la cellule citée).
Garde-fou anti-perte de données
Une protection intégrée empêche l'agent d'écraser vos données : les cellules que vous épinglez sont intouchables par l'agent, et une écriture qui viderait des cellules déjà remplies est bloquée. En lecture seule (document partagé en consultation), l'agent ne peut plus modifier le classeur.
Outils externes (MCP)
Si des serveurs MCP sont connectés, leurs outils s'ajoutent à ceux de l'agent. C'est par ce biais que l'on étend l'agent au-delà du classeur — par exemple un accès web fourni par un connecteur MCP.
Note : ycell ne fournit pas de service IA hébergé clé-en-main. L'assistant fonctionne avec votre clé de fournisseur ou votre modèle local.
Modules & scripting
ycell est extensible de deux façons complémentaires : des modules signés depuis un hub, et du code local que vous écrivez et exécutez immédiatement.
Modules signés (le hub)
Le hub est un catalogue de modules WebAssembly signés et sandboxés : connecteurs (sources de données), actions (effets sortants), fonctions personnalisées et scripts (macros). Chaque module :
- est signé par le hub et vérifiable hors-ligne,
- tourne dans un bac à sable à autorité minimale : pas d'accès réseau arbitraire, les accès sortants passent par des permissions explicitement autorisées,
- déclare ses besoins dans une feuille de permissions que vous approuvez à l'installation.
Vous installez / activez un module depuis Modules ; une fonction activée s'utilise
comme une formule (=NS.NAME(...)), un script se lance depuis le gestionnaire.
Hub public, hub privé
Le hub public est ouvert (consommer et publier). Un hub privé (édition entreprise) protège son catalogue interne derrière un jeton d'accès — avec des droits distincts pour installer et pour publier des modules.
Scripting local
Vous pouvez écrire du code et l'exécuter immédiatement sur le classeur vivant, sans serveur ni signature — comme une macro :
- JavaScript ;
- Python (chargé à la demande).
Les deux exposent la même API wb (wb.getCell / wb.setCell / wb.listSheets).
Le même code est ensuite portable vers un module signé.
Du local au signé (publier)
Le même code JavaScript peut devenir un module WebAssembly signé publié sur le hub. Les fonctions personnalisées sont le cas le plus direct ; un script qui modifie le classeur demande encore une adaptation.
Éditions & fonctionnalités
ycell existe en trois éditions. Aucune fonctionnalité du tableur n'est bridée : la grille, les formules, l'import/export, les données vivantes, le partage chiffré, la collaboration temps réel, l'assistant IA (avec votre clé / votre modèle local) et le scripting local fonctionnent sans licence. Les éditions débloquent des fonctionnalités cloud et entreprise supplémentaires.
| Fonctionnalité | Gratuite | Pro | Entreprise |
|---|---|---|---|
| Tableur complet (grille, formules, charts, import/export) | ✓ | ✓ | ✓ |
| Données vivantes (sources, poll / temps réel) | ✓ | ✓ | ✓ |
| Partage chiffré E2E + collaboration temps réel | ✓ | ✓ | ✓ |
| Assistant IA (votre clé / Ollama local) | ✓ | ✓ | ✓ |
| Enregistrement / publication cloud | ✓ | ✓ | ✓ |
| Hub de modules public | ✓ | ✓ | ✓ |
| Scripting local (JavaScript / Python) | ✓ | ✓ | ✓ |
| Connecteurs premium maintenus | ✓ | ✓ | |
| Rafraîchissement des sources côté serveur (runtime always-on) | ✓ | ✓ | |
| Hub privé (catalogue de modules interne, jeton d'accès) | ✓ | ||
| Gouvernance (orgs / espaces / rôles, SSO) | ✓ |
Concrètement :
- Gratuite — aucune licence ; tout le cœur local-first.
- Pro — ajoute le hub de connecteurs premium maintenus et le rafraîchissement des sources côté serveur (runtime toujours actif).
- Entreprise — tout le Pro, plus le hub privé et la gouvernance (orgs / espaces / rôles, SSO).
La licence
Une licence d'édition est signée et vérifiée hors-ligne par l'application — aucun appel réseau n'est nécessaire pour valider une licence. En l'absence de licence, l'application reste en édition gratuite, sans aucune restriction du cœur.
L'état de la licence et les fonctionnalités actives sont visibles dans le panneau « Licence / édition » de l'application.
Ce qui est cloud / entreprise
- Le hub privé et la gouvernance (organisations, espaces, rôles, SSO) sont décrits dans la section Administration & déploiement.
- Le rafraîchissement côté serveur d'un document publié est décrit dans Cloud : enregistrer, publier, intégrer.
Auto-hébergement
ycell est local-first et auto-déployable. Cette section s'adresse à un opérateur qui veut héberger ycell pour soi ou pour une organisation.
Deux briques
| Brique | Rôle |
|---|---|
| Serveur local | Le backend que l'application de bureau exécute, sur votre machine : il sert l'interface, les connecteurs de données, les secrets (localement uniquement), les fonctions / scripts et la licence. |
| Service cloud | Le service optionnel : compte / appareil anonyme, télémétrie optionnelle, signalement de bug, partage, stockage des documents, et la gouvernance entreprise (orgs / espaces / rôles, SSO). |
| Relais de collaboration | Le relais de la collaboration temps réel (transmet des données chiffrées de bout en bout). |
Le serveur local suffit pour un usage individuel : installez l'application de bureau (Linux / Windows), ou lancez le serveur et ouvrez l'application dans votre navigateur. Une application installable (PWA) et des images pour NAS / serveur (Synology, QNAP) sont aussi disponibles, pour faire tourner ycell sur une box toujours allumée.
Le même service : hébergé ou sur site
Le service cloud est conçu pour tourner à l'identique en hébergement mutualisé ou sur site chez un client : le point d'accès est une simple configuration. On déploie le même service et on choisit l'URL, la base de données et les clés via des variables d'environnement.
Variables d'environnement du service
| Variable | Rôle |
|---|---|
YCELL_COLLECTOR_BIND | Adresse d'écoute du service. |
YCELL_COLLECTOR_DATA | Répertoire de données. |
YCELL_COLLECTOR_BASE_URL | URL publique du service (épinglée par les clients). |
YCELL_PUBLIC_APP_URL | Origine publique de l'application (pour bâtir les liens de partage / d'intégration). |
YCELL_DOWNLOAD_URL | Base de téléchargement des binaires (mises à jour). |
DATABASE_URL | Base de données PostgreSQL (sinon stockage local de secours). |
REDIS_URL | Redis (pour un déploiement multi-nœuds de la collaboration). |
YCELL_BLOB_DIR | Répertoire des documents publiés (par défaut <data>/blobs). |
YCELL_BLOB_CAPACITY_BYTES | Capacité totale du stockage de documents. |
YCELL_VAULT_KEK | Clé de chiffrement du coffre de secrets au repos. |
YCELL_ADMIN_TOKEN | Jeton d'opérateur qui active la console d'administration. |
Le stockage peut viser d'autres cibles que le disque local — voir Stockage cloud.
Mise à jour
Les versions sont publiées sous plusieurs formes : image pour serveur, binaires Linux / Windows et application de bureau, avec mise à jour intégrée (l'application détecte une version plus récente et propose « mettre à jour / plus tard ») et application installable (PWA).
Pour aller plus loin
- Console d'administration — l'interface d'administration de l'opérateur.
- Stockage cloud — choisir où sont stockés les documents.
- SSO & annuaire et Organisations, espaces & rôles — la gouvernance entreprise.
Console d'administration
Le service cloud expose une console d'opérateur, protégée par un jeton d'opérateur. Elle sert à superviser l'instance et à configurer la gouvernance.
Activer la console
La console n'est active que si la variable d'environnement YCELL_ADMIN_TOKEN
est définie. Sans elle, la console est désactivée. Au démarrage, le service indique
dans ses journaux si la console est activée ou non.
Une fois le jeton défini, ouvrez la console et connectez-vous avec ce jeton.
Ce que la console permet
- Tableau de bord : activité de l'instance (comptes / appareils, télémétrie optionnelle agrégée, signalements de bug, sessions de collaboration).
- Réglages : configurer le stockage des documents (voir Stockage cloud), les politiques de sources live et les quotas.
- Organisations : créer des organisations et des espaces, enregistrer des membres et leur attribuer leurs rôles (voir Organisations, espaces & rôles).
- SSO / annuaire : configurer les ponts d'identité OIDC / LDAP et activer SCIM par organisation (voir SSO & annuaire).
Toutes ces opérations sont protégées par le même jeton d'opérateur. Les jetons et secrets manipulés (par exemple un secret client OIDC) sont chiffrés au repos et jamais journalisés.
Stockage cloud
Quand un document est enregistré ou publié dans le cloud (voir Cloud : enregistrer, publier, intégrer), son contenu est stocké chiffré par le service cloud. L'opérateur choisit où ces documents sont stockés.
Rappel : le stockage ne voit jamais le contenu en clair. La clé de déchiffrement reste côté client (dans le fragment du lien de partage). Quelle que soit la cible, on n'y trouve que des données chiffrées.
Cibles disponibles
La cible est sélectionnée par configuration (variable d'environnement initiale ou réglage enregistré via la console d'administration).
Type (kind) | Cible | Champs principaux |
|---|---|---|
fs | Système de fichiers local — et donc tout partage réseau monté par l'OS (SMB/CIFS, NFS, SSHFS) | root (le chemin / le point de montage) |
s3 | Tout stockage objet compatible S3 (MinIO, Cloudflare R2, Wasabi, Scaleway…) | endpoint, region, bucket, access_key, secret_key, path_style, prefix |
webdav | WebDAV (Nextcloud, ownCloud, WebDAV Synology) | base_url, username, password, prefix |
azure | Azure Blob Storage (SharedKey ou SAS) | account, container, access_key ou sas, prefix |
Pour MinIO et la plupart des stockages auto-hébergés, activez
path_style(adressageendpoint/bucket/clé).
Configuration par variables d'environnement
Sans configuration explicite, la cible par défaut est fs enracinée sur
YCELL_BLOB_DIR (par défaut <data_dir>/blobs). Une cible configurée dans la
console l'emporte sur la valeur d'environnement.
Pas de changement à chaud. Modifier la cible depuis la console prend effet au redémarrage du service.
Quotas
Une capacité totale de stockage est plafonnée par YCELL_BLOB_CAPACITY_BYTES,
et un quota par compte est appliqué. Un document unique est par ailleurs plafonné
en taille.
SSO & annuaire (OIDC / LDAP / SCIM)
En édition Entreprise, le service cloud peut s'adosser à l'annuaire d'identité de l'organisation. Trois ponts sont disponibles ; tous fonctionnent de la même façon : une identité vérifiée (email + groupes) est transformée en rôles selon une table de correspondance groupe → rôle configurée par l'opérateur (voir Organisations, espaces & rôles).
Principe anti-escalade : le client ne fournit jamais son rôle, son groupe ou son email. L'email et les groupes proviennent uniquement de la vérification faite par le pont ; les rôles proviennent uniquement des groupes mappés par l'opérateur.
OIDC (OpenID Connect)
ycell agit comme client OIDC confidentiel, indépendant du fournisseur via la découverte OIDC : Keycloak, Authentik, Microsoft Entra, Google… fonctionnent de la même façon. L'opérateur fournit, par organisation, l'URL de l'émetteur, un identifiant client et un secret client ; le secret client est chiffré au repos.
À la connexion, l'utilisateur est redirigé vers son fournisseur d'identité ; au retour, le jeton d'identité est vérifié rigoureusement (signature, émetteur, audience, expiration, nonce, algorithmes asymétriques uniquement). L'email vérifié et les groupes déclenchent l'attribution des rôles. La vérification est stricte : tout contrôle qui échoue interdit l'accès.
LDAP / Active Directory
Un utilisateur s'authentifie par l'annuaire LDAP ; son email et ses groupes d'annuaire déterminent ses rôles, via le même mécanisme. Deux modes sont disponibles : une liaison directe (le nom de l'utilisateur est construit depuis un gabarit), ou une recherche via un compte de service qui localise l'utilisateur puis vérifie son mot de passe.
Posture de sécurité : TLS obligatoire (ldaps:// ou StartTLS — une connexion en
clair est refusée à la configuration) ; une liaison anonyme / mot de passe vide
n'est jamais acceptée.
SCIM 2.0 (provisioning entrant)
Le fournisseur d'identité (Entra, Okta…) pousse les utilisateurs et groupes vers ycell, de sorte que les appartenances existent avant toute connexion, avec un cycle de vie complet (désactiver un utilisateur lui retire son accès).
SCIM maintient un annuaire d'identités provisionnées par organisation (email, groupes, état actif). Les rôles sont toujours attribués à la connexion, et lorsque SCIM est activé :
- l'email de la personne qui se connecte doit correspondre à une identité active (sinon aucun accès) ;
- les groupes utilisés pour la correspondance sont ceux provisionnés par SCIM (la source de référence).
Désactiver un utilisateur → sa prochaine connexion ne correspond à aucune identité active → aucun accès n'est accordé.
Authentification SCIM : l'opérateur active SCIM pour une organisation depuis la console ; un jeton est alors généré et affiché une seule fois. Chaque appel SCIM exige ce jeton et n'agit que sur cette organisation.
Organisations, espaces & rôles
En édition Entreprise, ycell offre une hiérarchie multi-organisations : Organisation → Espace → Document. L'autorité n'est pas gérée par un annuaire central : une appartenance enregistrée est transformée en un rôle signé que l'application de l'utilisateur transporte et que chaque accès peut vérifier hors-ligne.
La hiérarchie
- Organisation — le tenant racine (une entreprise, un cabinet).
- Espace — un sous-ensemble dans une organisation (une équipe, un client, un pôle Compta…).
- Document — un classeur, dans un espace.
Les rôles
| Rôle | Lire | Écrire | Gouverner | Portée |
|---|---|---|---|---|
| AdminOrg | ✓ | ✓ | ✓ | Toute l'organisation. |
| AdminEspace | ✓ | ✓ | ✓ | Uniquement son espace. |
| EditorEspace | ✓ | ✓ | Son espace. | |
| EditorDoc | ✓ | ✓ | Un document. | |
| Viewer | ✓ | Lecture seule. |
« Gouverner » = gérer membres, espaces et rôles. La portée d'un rôle est fixée exactement à l'organisation et, le cas échéant, à l'espace de l'appartenance : un AdminEspace reçoit un rôle limité à son espace, qui ne peut pas justifier une action au niveau de l'organisation.
Côté opérateur
Depuis la console d'administration, dans la section Organisations :
- Créer une organisation, puis ses espaces.
- Enregistrer une appartenance (qui est quoi, où).
- ycell délivre un rôle signé par appartenance, limité exactement à sa portée. Ce rôle est remis une seule fois à l'utilisateur.
Anti-escalade
Le rôle est validé contre une liste fermée : un rôle inconnu ou mal orthographié est rejeté, jamais silencieusement élargi. Le client ne fournit jamais le rôle, et il n'existe aucun moyen, depuis l'application, d'élargir un rôle déjà attribué.
Correspondance depuis l'annuaire
Quand l'identité vient d'un pont SSO (voir SSO & annuaire), l'opérateur configure une table groupe → rôle (par organisation et espace) depuis la console. À la connexion, pour chaque groupe vérifié de l'utilisateur ayant une correspondance, une appartenance est enregistrée et le rôle correspondant est attribué à la bonne portée. Un groupe sans correspondance n'accorde rien.