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