159 lines
7.3 KiB
Markdown
159 lines
7.3 KiB
Markdown
---
|
|
title: Docspell
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, document-management, edms, scala, ocr, scanner, auto]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=document-management, https://github.com/eikek/docspell, https://docspell.org/]
|
|
---
|
|
|
|
# Docspell 📨
|
|
|
|
> **EDMS auto-organisé** écrit en Scala : « déposez n'importe quoi, Docspell OCR, classe, et range ». Pensé pour minimiser l'effort de l'utilisateur grâce à un machine learning léger et des règles auto.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://docspell.org/ |
|
|
| **GitHub** | https://github.com/eikek/docspell |
|
|
| **License** | AGPL-3.0 |
|
|
| **Langage** | Scala (backend) + React (frontend), JVM |
|
|
| **Étoiles** | ⭐176 |
|
|
| **Dernière MAJ** | 2026-05-10 |
|
|
| **Catégorie** | [[cat-document-management]] |
|
|
|
|
## Description
|
|
|
|
Docspell est un EDMS **développé en Allemagne** dont la philosophie est « le moins d'effort possible pour l'utilisateur ». Inspiré de Paperless et Lexoffice, il se distingue par son **système d'auto-classement** : une fois que vous avez classifié manuellement quelques documents, Docspell apprend de vos choix (tag, correspondant, type de document) et propose automatiquement la bonne classification pour les nouveaux uploads. C'est du **machine learning supervisé** simple (régression logistique / SVM) embarqué dans l'app, pas besoin de service tiers.
|
|
|
|
L'**OCR** est basé sur Tesseract 4/5 avec support multi-langues (fra, eng, deu, etc.). Le **consumer** (service dédié) surveille un dossier (ou IMAP) et ingère automatiquement les nouveaux fichiers, lance l'OCR, applique les règles de classification, et **range** dans l'arborescence. L'interface web (React) est claire, multilingue, et propose une vue « inbox » type Gmail pour les documents à valider, et une vue « archive » pour les documents classifiés.
|
|
|
|
L'**écosystème** comprend un **connecteur IMAP** (très utile : il aspire les pièces jointes depuis votre boîte mail et les ingère), un **watcher** de dossier (partage SMB/NFS), un **client de scan** (TWAIN via SANE sous Linux), et un système de **partage** par lien avec expiration. L'**architecture** est plus simple que Mayan : 2 services principaux (`joex` pour le worker, `restserver` pour l'API), Postgres pour la persistance. La **stack 100 % JVM** est solide mais un peu lourde (≥ 1 Go RAM). Idéal pour un homelab Linux qui veut un EDMS « set-and-forget ».
|
|
|
|
## Installation
|
|
|
|
### Via Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
restserver:
|
|
image: docspell/restserver:latest
|
|
container_name: docspell-rest
|
|
restart: unless-stopped
|
|
ports:
|
|
- "7880:7880"
|
|
environment:
|
|
- DOCSPELL_DB_URL=jdbc:postgresql://db/docspell
|
|
- DOCSPELL_DB_USER=docspell
|
|
- DOCSPELL_DB_PASSWORD=ChangeMeDbPass!
|
|
- DOCSPELL_SERVER_URL=https://docs.example.com
|
|
- DOCSPELL_AUTH_SERVER_SECRET=Change...y!
|
|
volumes:
|
|
- docspell-data:/usr/share/docspell/data
|
|
depends_on:
|
|
- db
|
|
|
|
joex:
|
|
image: docspell/joex:latest
|
|
container_name: docspell-joex
|
|
restart: unless-stopped
|
|
environment:
|
|
- DOCSPELL_DB_URL=jdbc:postgresql://db/docspell
|
|
- DOCSPELL_DB_USER=docspell
|
|
- DOCSPELL_DB_PASSWORD=ChangeMeDbPass!
|
|
- DOCSPELL_OCR_MODE=builtin
|
|
- DOCSPELL_OCR_LANG=fra+eng
|
|
volumes:
|
|
- docspell-data:/usr/share/docspell/data
|
|
- docspell-ocr:/ocr
|
|
depends_on:
|
|
- db
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: docspell-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_DB=docspell
|
|
- POSTGRES_USER=docspell
|
|
- POSTGRES_PASSWORD=ChangeMeDbPass!
|
|
volumes:
|
|
- docspell-db:/var/lib/postgresql/data
|
|
|
|
volumes:
|
|
docspell-data:
|
|
docspell-ocr:
|
|
docspell-db:
|
|
```
|
|
|
|
> **Note** : le `joex` peut être configuré pour utiliser Tesseract externe (hôte) au lieu du mode `builtin` (qui télécharge les modèles au runtime).
|
|
|
|
### Installation manuelle
|
|
|
|
1. **Pré-requis** : Java 17+, PostgreSQL 13+, Tesseract 5 + langues (fra, eng, deu, etc.), 2 Go RAM minimum.
|
|
2. **Téléchargement** : récupérer `restserver.jar` et `joex.jar` depuis les [releases GitHub](https://github.com/eikek/docspell/releases).
|
|
3. **Config** : `docspell.conf` (HOCON) à placer dans `/etc/docspell/`, définir `db`, `server`, `auth-secret`.
|
|
4. **Lancer** : `java -jar restserver.jar` (port 7880) et `java -jar joex.jar` dans des services systemd séparés.
|
|
5. **Premier user** : `docspell-cli admin create` (CLI dédiée).
|
|
|
|
## Configuration
|
|
|
|
- **Premier admin** : créé via la CLI `docspell-cli` ou via l'UI au premier lancement (mode open-registration configurable).
|
|
- **Tessdata** : installer les modèles Tesseract sur l'hôte (`apt install tesseract-ocr-fra tesseract-ocr-eng`).
|
|
- **Correspondants/Tags** : créer la taxonomie AVANT le premier import en masse.
|
|
- **IMAP** : configurer un connecteur IMAP dans Settings → Connectors (host, port, SSL, user, pass, dossier).
|
|
- **ML** : après 20-30 documents classifiés manuellement, activer l'auto-suggestion dans Settings → Learning.
|
|
- **Backups** : `pg_dump` pour la DB, rsync du dossier `data/`.
|
|
- **HTTPS** : obligatoire via reverse proxy.
|
|
- **Reverse proxy** : `client_max_body_size` à augmenter (uploads jusqu'à 100 Mo).
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
- [[app-paperless-ngx]] — GED la plus populaire, plus grande communauté
|
|
- [[app-mayan-edms]] — EDMS enterprise Python
|
|
- [[app-papermerge]] — concurrent moderne, UI Vue.js
|
|
- [[app-papra]] — alternative TS minimaliste
|
|
- [[app-receipt-wrangler]] — spécialisé reçus/tickets de caisse
|
|
- **OpenKM** — EDMS Java enterprise
|
|
- **Teedy** (Sismics Docs) — GED Java simple
|
|
- **SeedDMS** — GED PHP
|
|
|
|
### Propriétaires
|
|
- **Lexoffice** — comptabilité allemande avec archivage cloud (non libre)
|
|
- **sevDesk** — facturation allemande avec GED intégrée
|
|
- **DocuWare** — EDMS enterprise cloud
|
|
- **Google Drive + Gmail** — cloud Google
|
|
- **Evernote** — freemium
|
|
- **DEVONthink** — GED Mac/iOS
|
|
|
|
## Sécurité
|
|
|
|
- **HTTPS obligatoire** + HSTS via reverse proxy.
|
|
- **2FA** : TOTP natif dans les paramètres utilisateur.
|
|
- **SSO OIDC** : intégrable via `docspell.auth.oauth` (provider générique).
|
|
- **Permissions par collectif** : multi-collectifs (ex: « Personnel », « Pro ») avec ACL par document.
|
|
- **Chiffrement at-rest** : monter les volumes sur stockage chiffré (LUKS/ZFS).
|
|
- **Mail credentials** : les IMAP passwords sont chiffrés en DB avec un secret dédié.
|
|
- **Audit log** : actions utilisateurs loggées, consultables en admin.
|
|
- **CVE** : stack JVM, mises à jour fréquentes, suivre les releases GitHub.
|
|
- **Isolation** : Docspell peut être exposé en HTTPS, mais idéalement derrière VPN.
|
|
- **Backups testés** : tester la restauration complète (DB + fichiers).
|
|
|
|
## Ressources
|
|
- Site officiel : https://docspell.org/
|
|
- Documentation : https://docspell.org/docs/
|
|
- GitHub : https://github.com/eikek/docspell
|
|
- Forum communautaire : https://github.com/eikek/docspell/discussions
|
|
- selfh.st : https://selfh.st/apps/?tag=document-management
|
|
|
|
## Pages Liées
|
|
- [[cat-document-management]] — catégorie parente
|
|
- [[app-paperless-ngx]] — concurrent principal
|
|
- [[app-mayan-edms]] — alternative enterprise
|
|
- [[app-receipt-wrangler]] — spécialisé reçus
|
|
- [[recettes-docker-compose]] — templates de déploiement
|
|
- [[securisation-home-lab]] — bonnes pratiques sécurité
|