133 lines
6.3 KiB
Markdown
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é
|