Files
2026-06-09 18:40:21 +02:00

133 lines
6.3 KiB
Markdown

---
title: SheetAble
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, document-management, spreadsheet, typescript, nodejs, excel, csv]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=document-management, https://github.com/SheetAble/SheetAble, https://sheetable.net/]
---
# SheetAble 📊
> **Gestionnaire de feuilles de calcul** (Excel/CSV/ODS) auto-hébergeable : déposez vos fichiers, SheetAble les rend lisibles dans le navigateur via un tableur web, sans Excel ni LibreOffice local.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://sheetable.net/ |
| **GitHub** | https://github.com/SheetAble/SheetAble |
| **License** | AGPL-3.0 |
| **Langage** | TypeScript / Node.js (frontend Vue.js) |
| **Étoiles** | ⭐91 |
| **Dernière MAJ** | 2026-04-15 |
| **Catégorie** | [[cat-document-management]] |
## Description
SheetAble est un **tableur web** léger et self-hosted, conçu pour **visualiser et éditer** des fichiers `.xlsx`, `.xlsm`, `.csv`, `.ods` depuis n'importe quel navigateur, sans dépendre d'Excel ou de LibreOffice. Le moteur de rendu est **Univer** (fork communautaire de Luckysheet, basé sur Canvas), offrant une expérience proche d'Excel : formules, multi-feuilles, mise en forme conditionnelle, charts, frozen rows/columns, etc.
L'**architecture** est simple : un backend Node.js (Fastify) qui parse les fichiers avec **SheetJS (xlsx)**, un frontend Vue.js + Univer, et un système de fichiers plat pour le stockage. Pas de base de données externe (SQLite pour les métadonnées seulement). L'**auth** est basique (email/password local, pas de SSO natif), avec partage de fichiers par lien.
L'usage typique est un **partage familial ou associatif** d'un classeur comptable, d'un tableau de bord, d'un budget mensuel, d'un inventaire, etc. SheetAble n'est pas un concurrent de Google Sheets (pas de collaboration temps réel), mais c'est un excellent **visualiseur/éditeur solo** auto-hébergé pour qui veut éviter Google Drive. Léger (peut tourner sur Raspberry Pi 4), simple à déployer, et l'UI est **jolie et moderne** (sombre/clair).
## Installation
### Via Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
sheetable:
image: ghcr.io/sheetable/sheetable:latest
container_name: sheetable
restart: unless-stopped
ports:
- "8083:80"
environment:
- JWT_SECRET=ChangeMeWithOpensslRandHex50
- DATABASE_URL=file:/data/sheetable.db
- STORAGE_PATH=/data/uploads
- MAX_UPLOAD_SIZE_MB=50
- APP_URL=https://sheets.example.com
volumes:
- sheetable-data:/data
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/"]
interval: 30s
timeout: 10s
retries: 3
volumes:
sheetable-data:
```
> **Note** : l'image officielle est `ghcr.io/sheetable/sheetable` (à vérifier — peut être `sheetable/sheetable` sur Docker Hub).
### Installation manuelle
1. **Pré-requis** : Node.js 18+, npm 9+, SQLite (inclus).
2. **Clone & install** : `git clone https://github.com/SheetAble/SheetAble && cd SheetAble && npm install`.
3. **Build** : `npm run build` (build frontend Vue + backend Fastify).
4. **Config** : copier `.env.example` vers `.env` et renseigner `JWT_SECRET`, `STORAGE_PATH`.
5. **Lancer** : `npm start` (port 80 par défaut ou `PORT=8083 npm start`).
6. **Premier admin** : créer via l'UI au premier lancement (signup ouvert désactivable).
## Configuration
- **Premier user** : créer le compte admin via l'UI (Settings → Users), puis désactiver l'inscription ouverte (`ALLOW_SIGNUP=false`).
- **Storage** : filesystem local par défaut, S3-compatible possible en v2+.
- **Formats supportés** : `.xlsx`, `.xlsm`, `.csv`, `.ods`, `.xls` (ancien format) — import et export.
- **Thème** : clair/sombre, persistant par user.
- **HTTPS** : obligatoire via reverse proxy.
- **Backups** : copier `/data` (DB SQLite + fichiers uploadés).
- **Reverse proxy** : `client_max_body_size` à 100M pour les gros classeurs.
- **Performance** : gros classeurs (>10 Mo) peuvent ramer dans le navigateur, limiter la taille d'upload.
## Alternatives
### Open Source
- [[app-pdfding]] — gestionnaire PDF léger (même esprit « viewer web »)
- [[app-papra]] — GED minimaliste TypeScript
- [[app-stirling-pdf]] — boîte à outils PDF (complémentaire)
- **Grist** — tableur hybride Excel/Airtable (Python) — bien plus puissant
- **NocoDB** — Airtable-like (Node.js) — pas vraiment tableur
- **Baserow** — Airtable-like (Python) — pas vraiment tableur
- **EtherCalc** — tableur collaboratif temps réel (Node.js, vieux)
- **OnlyOffice** — suite office complète (beaucoup plus lourd)
- **Collabora Online** — LibreOffice en mode serveur (lourd)
### Propriétaires
- **Microsoft Excel Online** — gratuit avec compte Microsoft, freemium
- **Google Sheets** — référence, gratuit, collaboratif temps réel
- **Apple Numbers** — iCloud, freemium
- **Zoho Sheet** — freemium, Zoho Office
- **Airtable** — pas vraiment tableur mais cousin (freemium)
- **WPS Office** — suite office freemium
## Sécurité
- **HTTPS obligatoire** + HSTS via reverse proxy.
- **JWT** : `JWT_SECRET` doit être long et aléatoire (`openssl rand -hex 64`).
- **Pas de 2FA natif** : compter sur Authelia/Authentik via reverse proxy.
- **Permissions** : isolation par utilisateur (un user ne voit pas les classeurs d'un autre).
- **Partage par lien** : tokens signés avec expiration, révocables.
- **Mises à jour** : suivre les releases GitHub, Univer/SheetJS sont à jour régulièrement.
- **CSP** : configurer les Content-Security-Policy headers via reverse proxy (Univer charge des libs tierces).
- **Backups** : tester la restauration (DB + fichiers).
- **Isolation** : ne pas exposer SheetAble en direct, passer par reverse proxy authentifié.
## Ressources
- Site officiel : https://sheetable.net/
- Documentation : https://docs.sheetable.net/
- GitHub : https://github.com/SheetAble/SheetAble
- Discord communautaire : https://discord.gg/sheetable (à confirmer)
- selfh.st : https://selfh.st/apps/?tag=document-management
## Pages Liées
- [[cat-document-management]] — catégorie parente
- [[app-pdfding]] — cousin « viewer web » pour PDF
- [[app-papra]] — GED TS minimaliste
- [[recettes-docker-compose]] — templates de déploiement
- [[securisation-home-lab]] — bonnes pratiques sécurité