185 lines
7.7 KiB
Markdown
185 lines
7.7 KiB
Markdown
---
|
|
title: Teable
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, database, low-code, no-code, postgres, airtable, typescript, sql, apache]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Database, https://github.com/teableio/teable]
|
|
---
|
|
|
|
# 🗄️ Teable
|
|
|
|
> **L'alternative Airtable-like ultra-performante basée sur PostgreSQL** : expérience proche d'Airtable, architecture de grille instantanée, vues multiples, API SQL et REST automatique. Le choix moderne et rapide.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [teable.io](https://teable.io/) |
|
|
| **GitHub** | [teableio/teable](https://github.com/teableio/teable) |
|
|
| **License** | Apache-2.0 |
|
|
| **Langage** | TypeScript |
|
|
| **Étoiles GitHub** | 21k ⭐ |
|
|
| **Dernière MAJ** | 2026-06-06 |
|
|
| **Catégorie** | [[cat-database\|Database]] |
|
|
|
|
## 📝 Description
|
|
|
|
**Teable** est une **plateforme no-code low-code** qui vise à être **l'alternative open source à Airtable** la plus fidèle et la plus rapide, en s'appuyant directement sur **PostgreSQL** comme moteur de stockage. Le pari de Teable est de pousser la **vitesse d'une grille Airtable** (filtres, tris, calculs à la volée) tout en gardant la **puissance SQL de Postgres** sous le capot.
|
|
|
|
### 🏗️ Architecture : le secret de la vitesse
|
|
|
|
Là où NocoDB enveloppe une BDD avec une couche d'abstraction, Teable utilise un **schéma interne malin** : chaque table, chaque champ est stocké dans Postgres de manière à ce que les **index existants couvrent 90% des requêtes de grille** (filtres, tris, groupements). Résultat : la grille reste **fluide même avec 100 000+ lignes** par table, là où NocoDB commence à ralentir.
|
|
|
|
### 📦 Fonctionnalités
|
|
|
|
- ✅ **Vues** : Grid, Kanban, Calendar, Gallery, Form, **Gantt** (bêta)
|
|
- ✅ **Formules** : langage de formules compatible Airtable (~80 fonctions : `IF`, `CONCAT`, `SUM`, `LOOKUP`, `DATETIME_DIFF`…)
|
|
- ✅ **Champs** : text, number, date, select, multi-select, link, formula, rollup, attachment, user, autocomplete, rating…
|
|
- ✅ **Permissions** : rôles et partage de bases/vues
|
|
- ✅ **API auto** : REST (compatible Airtable en partie) + SQL direct
|
|
- ✅ **Webhooks** + **automations** (à venir)
|
|
- ✅ **Import Airtable** (CSV natif, base Airtable complète via migration tool)
|
|
- ✅ **Plugins** et **custom fields**
|
|
- ✅ **Single Sign-On** (OIDC)
|
|
- ✅ **i18n** : interface en plusieurs langues
|
|
|
|
### 🆚 Teable vs NocoDB vs Airtable
|
|
|
|
| Critère | Teable | NocoDB | Airtable |
|
|
| :--- | :--- | :--- | :--- |
|
|
| Licence | Apache-2.0 | AGPL-3.0 | Propriétaire |
|
|
| BDD sous-jacente | Postgres obligatoire | Multi (PG, MySQL, SQLite) | Propriétaire |
|
|
| Performance grille | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
| Compatibilité Airtable | Très haute | Haute | Native |
|
|
| Formules | ~80 fonctions | ~30 fonctions | ~200+ fonctions |
|
|
| Maturité | Récent mais très actif | Très mature | Standard |
|
|
| Limite lignes | Pas de limite théorique | Pas de limite | Variable selon plan |
|
|
|
|
**Public cible** : homelabs qui veulent **la sensation Airtable** sans les restrictions (limites, prix, dépendance cloud) ; équipes qui ont besoin d'un backend Airtable-like rapide ; projets de prototypage.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
teable:
|
|
image: teable/tee:latest
|
|
container_name: teable
|
|
restart: unless-stopped
|
|
environment:
|
|
PRISMA_DATABASE_URL: "postgresql://teable:changez_moi@teable-db:5432/teable?schema=public"
|
|
PUBLIC_ORIGIN: "https://teable.example.com"
|
|
SECRET_KEY: "CHANGEZ_CE_SECRET_LONG_ET_ALEATOIRE"
|
|
ports:
|
|
- "3000:3000"
|
|
volumes:
|
|
- teable-uploads:/app/uploads
|
|
depends_on:
|
|
- teable-db
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.teable.rule=Host(`teable.example.com`)"
|
|
- "traefik.http.routers.teable.entrypoints=websecure"
|
|
- "traefik.http.routers.teable.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.teable.loadbalancer.server.port=3000"
|
|
|
|
teable-db:
|
|
image: postgres:16-alpine
|
|
container_name: teable-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: teable
|
|
POSTGRES_USER: teable
|
|
POSTGRES_PASSWORD: "changez_moi"
|
|
volumes:
|
|
- teable-db:/var/lib/postgresql/data
|
|
|
|
volumes:
|
|
teable-uploads:
|
|
teable-db:
|
|
```
|
|
|
|
### Option 2 : Cloud (sans installation)
|
|
|
|
[app.teable.io](https://app.teable.io) — offre gratuite avec limitations.
|
|
|
|
### Option 3 : Développement local
|
|
|
|
```bash
|
|
git clone https://github.com/teableio/teable.git
|
|
cd teable
|
|
docker compose -f docker-compose.dev.yml up
|
|
```
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Premier accès** : `https://teable.example.com` → créer le compte admin (premier compte créé = admin)
|
|
2. **Créer un espace** : Sidebar → + New Space
|
|
3. **Créer la première table** : dans l'espace → + New Table → ajouter les champs
|
|
4. **Importer un CSV** : menu table → Import → drag-and-drop
|
|
5. **Migrer depuis Airtable** : menu → Migrate from Airtable → fournir le token API Airtable → l'outil importe les bases
|
|
6. **Tester l'API** : Account → API Tokens → générer un token → requêter `https://teable.example.com/api/...`
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
- **NocoDB** — Concurrent principal, plus mature, plus de connecteurs BDD
|
|
- **Baserow** — Plus simple, plus jeune, MIT
|
|
- **Airtable-like Grid in Payload** — quand on a déjà Payload
|
|
- **Directus** — Plus orienté CMS/dev que grille
|
|
- **Grist** — Tableur relationnel plus orienté calculs scientifiques
|
|
- **Mathesar** — Tableur brut, orienté data teams
|
|
|
|
### Propriétaires
|
|
- **Airtable** — Le standard, freemium, cloud uniquement
|
|
- **Notion** — Bases + wiki, plus grand public
|
|
- **ClickUp** — Project management avec tables intégrées
|
|
- **Retool Tables** — Plus dev-oriented
|
|
- **Softr** — Connecté à Airtable pour publier des apps
|
|
|
|
### Comparaison
|
|
|
|
| Critère | Teable | NocoDB | Baserow | Airtable |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| Licence | Apache-2.0 | AGPL-3.0 | MIT | Propriétaire |
|
|
| BDD | Postgres | Multi | Postgres | Propriétaire |
|
|
| Performance 100k+ rows | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
| Formules | ~80 | ~30 | ~20 | ~200 |
|
|
| Import Airtable | ✅ Outil dédié | Manuel | Manuel | Native |
|
|
| Self-hosted | ✅ | ✅ | ✅ | ❌ |
|
|
| Cloud gratuit | ✅ Limité | ✅ Limité | ✅ Limité | ✅ Très limité |
|
|
| Vues | 5+ (Gantt bêta) | 6 | 5 | 8 |
|
|
|
|
**Verdict** : Teable est **le choix le plus moderne** pour un homelab qui veut la **sensation Airtable** avec la **performance Postgres**. Pour un écosystème plus large de connecteurs BDD, **NocoDB** reste devant. Pour la simplicité, **Baserow**.
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- **Authentification** : email/password, **OIDC** pour SSO
|
|
- **HTTPS obligatoire** via [[app-traefik]] — Teable expose l'API sur le même domaine
|
|
- **RBAC** par espace/base
|
|
- **Secrets** : `SECRET_KEY` et `PRISMA_DATABASE_URL` à stocker hors de l'image
|
|
- **Backups** : [[app-backup]] (restic) sur le volume `teable-uploads` + `pg_dump` régulier de `teable-db` (la BDD Postgres contient TOUTE votre data)
|
|
- **Uploads** : le volume `teable-uploads` peut grossir vite (pièces jointes, avatars)
|
|
|
|
## 📚 Ressources
|
|
|
|
- [Site officiel](https://teable.io/)
|
|
- [GitHub teableio/teable](https://github.com/teableio/teable)
|
|
- [Documentation](https://docs.teable.io/)
|
|
- [Démo en ligne](https://demo.teable.io/)
|
|
|
|
## Pages Liées
|
|
- [[cat-database]] — Catégorie Database
|
|
- [[app-postgres]] — BDD moteur de Teable
|
|
- [[app-backup]] (restic) — Sauvegardes critiques
|
|
- [[app-traefik]] — Reverse-proxy HTTPS
|
|
- [[recettes-docker-compose]] — Recettes
|
|
- [[securisation-home-lab]] — Bonnes pratiques
|
|
- [[glossaire-homelab]] — Glossaire
|