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

134 lines
6.3 KiB
Markdown

---
title: Papra
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, document-management, ged, typescript, nodejs, moderne, minimaliste]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=document-management, https://github.com/papra-app/papra]
---
# Papra 🪶
> **Gestion documentaire moderne et minimaliste** écrite en TypeScript : déposez vos fichiers, Papra les indexe et les rend recherchables. UI épurée, pensée pour un usage personnel simple, sans la complexité de Paperless.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://www.papra.app/ |
| **GitHub** | https://github.com/papra-app/papra |
| **License** | MIT (à vérifier) |
| **Langage** | TypeScript / Node.js (Fastify + React) |
| **Étoiles** | ⭐231 |
| **Dernière MAJ** | 2026-05-15 |
| **Catégorie** | [[cat-document-management]] |
## Description
Papra est un projet **récent** (2024+) qui se positionne comme une **alternative moderne et légère** à Paperless-ngx. La promesse : « déposez vos documents, on s'occupe du reste ». L'UI est volontairement **minimaliste** (type « Notion / Linear »), sans la densité fonctionnelle d'un Paperless. L'objectif n'est pas de tout faire (workflows, signatures, OCR distribué) mais de **bien faire l'essentiel** : déposer, classer, retrouver.
L'**architecture** est moderne : backend **Fastify** (Node.js 20+), frontend **React + Vite**, base de données **SQLite** par défaut (PostgreSQL possible), **stockage** filesystem local ou S3-compatible. Le **tagging** est libre, sans hiérarchie imposée, avec autocomplétion. La **recherche** est full-text (SQLite FTS5 ou Postgres tsvector) sur les métadonnées + nom de fichier. Pas d'OCR natif pour l'instant, c'est un choix assumé de « v1 ».
L'**embarquement mobile** est une priorité (PWA + API responsive), ce qui le rend utilisable depuis un téléphone pour scanner/déposer en mobilité. Le projet est **early-stage** (semver 0.x), l'API n'est pas encore figée, mais le rythme de release est soutenu (plusieurs releases/semaine). Idéal pour un homelab qui veut une GED « simple qui marche » sans 4 services Docker à maintenir. À surveiller de près, le potentiel est là.
## Installation
### Via Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
papra:
image: papra/papra:latest
container_name: papra
restart: unless-stopped
ports:
- "8082:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=file:/data/papra.db
- STORAGE_DIR=/data/storage
- JWT_SECRET=*** - APP_URL=https://papra.example.com
- MAX_UPLOAD_SIZE_MB=100
volumes:
- papra-data:/data
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
papra-data:
```
> **Astuce** : passer à PostgreSQL en définissant `DATABASE_URL=postgres://user:pass@host:5432/papra` (nécessite un service `db` additionnel).
### Installation manuelle
1. **Pré-requis** : Node.js 20+, npm 10+, SQLite (inclus dans Node) ou PostgreSQL 14+.
2. **Clone & install** : `git clone https://github.com/papra-app/papra && cd papra && npm install`.
3. **Build** : `npm run build` (build frontend + backend).
4. **Config** : copier `.env.example` vers `.env` et renseigner `JWT_SECRET`, `DATABASE_URL`.
5. **Lancer** : `npm start` (port 3000 par défaut).
6. **Premier user** : inscription via l'UI au premier lancement (mode « invitation ouverte » ou non, configurable).
## Configuration
- **Premier admin** : premier compte créé devient admin (configurable via `ADMIN_EMAIL`).
- **Stockage** : filesystem local (par défaut) ou S3-compatible (MinIO, Garage, Backblaze) via `STORAGE_BACKEND=s3` + variables S3_*.
- **Tags** : créer librement depuis l'UI, autocomplete sur les nouveaux documents.
- **Recherche** : FTS5 SQLite par défaut, performant jusqu'à ~100k documents.
- **Auth** : email + mot de passe (bcrypt), JWT côté API.
- **HTTPS** : obligatoire via reverse proxy.
- **Backups** : copier le dossier `/data` (DB SQLite + fichiers) est suffisant.
- **PWA** : accessible en mobile via « Ajouter à l'écran d'accueil ».
## Alternatives
### Open Source
- [[app-paperless-ngx]] — GED la plus populaire, plus mature mais plus complexe
- [[app-mayan-edms]] — EDMS enterprise Python
- [[app-papermerge]] — concurrent direct, UI moderne Django + Vue
- [[app-docspell]] — EDMS Scala axé OCR
- [[app-pdfding]] — gestionnaire PDF simple (Python)
- [[app-i-librarian]] — bibliothèque de PDFs (PHP)
- **TagSpaces** — GED desktop multi-plateforme
- **Alexandria** — bookmark manager pour PDF
### Propriétaires
- **Notion** — pas vraiment GED mais populaire pour le classement
- **Google Drive** — cloud Google, freemium
- **Dropbox** — cloud freemium
- **DEVONthink** — référence Mac/iOS
- **Evernote** — freemium, OCR de qualité
- **OneDrive** — Microsoft, intégré Office
- **Apple Notes** — basique iCloud
## Sécurité
- **JWT signé** : `JWT_SECRET` doit être long et aléatoire (utiliser `openssl rand -hex 64`).
- **HTTPS obligatoire** via reverse proxy.
- **Mots de passe** : hashés en bcrypt (cost factor par défaut).
- **Pas de 2FA natif** : compter sur l'auth reverse proxy (Authelia/Authentik) — à confirmer en v1.0.
- **Chiffrement at-rest** : monter le volume sur stockage chiffré.
- **CORS** : configurer `ALLOWED_ORIGINS` si API consommée par d'autres frontends.
- **Mises à jour** : le projet est jeune, les CVE sont traitées rapidement mais rester vigilant.
- **Backups** : Papra étant SQLite-based, un simple `cp` du `.db` suffit pour la DB.
- **Isolation** : ne pas exposer Papra en direct, passer par un reverse proxy.
## Ressources
- Site officiel : https://www.papra.app/
- Documentation : https://docs.papra.app/
- GitHub : https://github.com/papra-app/papra
- Discord communautaire : https://discord.gg/papra (à confirmer)
- selfh.st : https://selfh.st/apps/?tag=document-management
## Pages Liées
- [[cat-document-management]] — catégorie parente
- [[app-paperless-ngx]] — alternative mature
- [[app-papermerge]] — concurrent UI moderne
- [[app-mayan-edms]] — alternative enterprise
- [[recettes-docker-compose]] — templates de déploiement
- [[securisation-home-lab]] — bonnes pratiques sécurité