
In un contesto in cui la gestione documentale digitale è sempre più centrale per aziende e professionisti, Papermerge DMS si distingue come una soluzione open source potente e flessibile per archiviare, organizzare e ricercare documenti in formato digitale (PDF, TIFF, JPEG, ecc.), grazie anche all’integrazione nativa con l’OCR (riconoscimento ottico dei caratteri).
In questo articolo vedremo, passo dopo passo, come installare e configurare la versione più recente di Papermerge su Ubuntu Server 24.04, utilizzando Docker e Docker Compose — il metodo ufficialmente raccomandato dal progetto.
Questa configurazione semplifica notevolmente l’installazione, garantisce facilità di aggiornamento, isolamento dei servizi e una gestione più sicura dei dati tramite container.
Al termine della guida, disporrai di un’istanza completamente funzionante di Papermerge con PostgreSQL come database, Redis per la gestione delle code di lavoro e un worker OCR configurato per il riconoscimento in lingua italiana e inglese.
PREREQUISITI
In sintesi, per installare Papermerge su Ubuntu è necessario:
- Un server Ubuntu 22.04 o 24.04 LTS aggiornato.
- Almeno due core CPU, due gigabyte di RAM e venti gigabyte di spazio su disco (meglio se SSD).
- Docker e Docker Compose correttamente installati e funzionanti.
- Connessione Internet stabile.
- Un account con privilegi sudo.
- Le credenziali e la secret key configurate.
- Volumi persistenti per il database e i documenti.
- (Facoltativo) Un proxy HTTPS e un sistema di backup automatico.
AGGIORNAMENTO DEL SISTEMA
Aggiornare il sistema con il comando:
|
0 |
sudo apt update && sudo apt -y upgrade
|
INSTALLAZIONE DI DOCKER ENGINE + COMPOSE
Installare Docker Engine + Compose dal repository ufficiale seguendo gli steps elencati di seguito.
Prima di procedere con l’installazione rimuovere eventuali versioni vecchie con il comando:
|
0 |
sudo apt remove -y docker docker-engine docker.io containerd runc || true
|
Quindi aggiornare e installare i certificati con i comandi:
|
0
1
|
sudo apt update
sudo apt install -y ca-certificates curl gnupg
|
Installare quindi la chiave e il repo docker con il comando:
|
0
1
2
3
4
5
6
|
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
Installare engine + compose plugin con i seguenti comandi:
|
0
1
2
|
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
Quindi avviare e abilitare Docker con il comando:
|
0 |
sudo systemctl enable --now docker
|
Permettere al tuo utente di usare docker senza sudo (opzionale) con il comando:
|
0 |
sudo usermod -aG docker $USER
|
Applicare subito senza fare logout con il comando:
|
0
1
2
|
newgrp docker <<'EOF'
echo "Gruppo docker applicato"
EOF
|
Verificare le versioni di docker e compose installate con i seguenti comandi:
|
0
1
|
docker --version
docker compose version
|
Creare le cartelle e il file docker-compose.yml con i seguenti comandi:
|
0
1
2
|
sudo mkdir -p /opt/papermerge/{db,media,solr}
sudo chown -R $USER:$USER /opt/papermerge
cd /opt/papermerge
|
Creare il file docker-compose.yml (include WebApp, PostgreSQL, Redis, worker OCR) con il seguente comando:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
cat > docker-compose.yml <<'YAML'
services:
webapp:
image: papermerge/papermerge:3.5.3
restart: unless-stopped
ports:
- "12000:80"
environment:
# cambia questa chiave con una stringa lunga e segreta
PAPERMERGE__SECURITY__SECRET_KEY: "CAMBIA-QUESTA-CHIAVE-LUNGA"
# credenziali admin iniziali
PAPERMERGE__AUTH__USERNAME: "admin"
PAPERMERGE__AUTH__PASSWORD: "PASSWORD-WEB-GUI"
# database
PAPERMERGE__DATABASE__URL: "postgresql://pmg:pmgpass@db:5432/pmgdb"
# storage (persistente su volume)
PAPERMERGE__MAIN__MEDIA_ROOT: "/var/media/pmg"
# redis e OCR
PAPERMERGE__REDIS__URL: "redis://redis:6379/0"
PAPERMERGE__OCR__LANG_CODES: "ita,eng"
PAPERMERGE__OCR__DEFAULT_LANG_CODE: "ita"
depends_on:
- db
- redis
volumes:
- media_root:/var/media/pmg
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: pmg
POSTGRES_PASSWORD: PASSWORD-POSTGRES
POSTGRES_DB: pmgdb
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7
restart: unless-stopped
ocr_worker:
image: papermerge/ocrworker:0.3.1
restart: unless-stopped
command: worker
environment:
PAPERMERGE__DATABASE__URL: "postgresql://pmg:pmgpass@db:5432/pmgdb"
PAPERMERGE__REDIS__URL: "redis://redis:6379/0"
PAPERMERGE__MAIN__MEDIA_ROOT: "/var/media/pmg"
# numero di processi OCR (aumenta se hai più CPU)
OCR_WORKER_ARGS: "-Q ocr -c 2"
depends_on:
- db
- redis
volumes:
- media_root:/var/media/pmg
volumes:
pgdata:
driver: local
media_root:
driver: local
YAML
|
ATTENZIONE: all’interno del seguente listato modificare le seguenti viariabili:
PAPERMERGE__AUTH__PASSWORD: “PASSWORD-WEB-GUI”
POSTGRES_PASSWORD: PASSWORD-POSTGRES
AVVIO DI PAPERMERGE
Avviare Papermerge con i seguenti comandi:
|
0
1
2
3
|
cd /opt/papermerge
docker compose pull
docker compose up -d
docker compose ps
|
CONFIGURAZIONE FIREWALL
Aprire la porta HTTP 12000 sul firewall utilizzando i seguenti comandi:
|
0
1
2
3
|
sudo ufw allow OpenSSH
sudo ufw allow 12000/tcp
sudo ufw enable
sudo ufw status
|
ACCESSO A PAPERMERGE DA WEBGUI
Da un qualsiasi browser richiamare il seguente link:
http://IP_DEL_TUO_SERVER:12000
Per accedere inserire le credenziali create in precedenza
PAPERMERGE__AUTH__USERNAME: “admin”
PAPERMERGE__AUTH__PASSWORD: “PASSWORD-WEB-GUI”
Inserire le credenziali quindi cliccare Sign In
Dovremmo visualizzare la Home di Papermerge
VERIFICA DEI SERVZI E LOG
Utile per il troubleshooting è verificare lo stato dei container con il comando:
|
0 |
docker compose ps
|
Dovremmo visualizzare un output simile al seguente se è tutto ok:
|
0
1
2
3
4
|
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
papermerge-db-1 postgres:16 "docker-entrypoint.s…" db 35 minutes ago Up 35 minutes 5432/tcp
papermerge-ocr_worker-1 papermerge/ocrworker:0.3.1 "/entrypoint.sh work…" ocr_worker 35 minutes ago Up 35 minutes
papermerge-redis-1 redis:7 "docker-entrypoint.s…" redis 35 minutes ago Up 35 minutes 6379/tcp
papermerge-webapp-1 papermerge/papermerge:3.5.3 "/entrypoint.sh serv…" webapp 35 minutes ago Up 35 minutes 0.0.0.0:12000->80/tcp, [::]:12000->80/tcp
|
E’ anche possibile visualizzare i log dell’applicazione web con il comando:
|
0 |
docker compose logs -f webapp
|
I log worker OCR con il comando:
|
0 |
docker compose logs -f ocr_worker
|
I log del database con il comando:
|
0 |
docker compose logs -f db
|
AGGIORNAMENTO E RIAVVIO DI PAPERMERGE
Per aggiornare Papermerge all’ultima immagine eseguire i comandi:
|
0
1
2
|
cd /opt/papermerge
docker compose pull
docker compose up -d
|
Per riavviare i servizi eseguire il comando:
|
0 |
docker compose restart
|
ESEGUIRE IL BACKUP DEI VOLUMI PERSISTENTI
Per fare il backup eseguire i comandi:
|
0
1
2
3
4
5
6
7
8
|
cd /opt/papermerge
docker compose down
# backup dei volumi (esempio con tar; adatta alla tua strategia)
sudo tar -C /var/lib/docker/volumes -czf /root/backup_papermerge_pgdata.tgz $(docker volume ls -q | grep pgdata)
sudo tar -C /var/lib/docker/volumes -czf /root/backup_papermerge_media.tgz $(docker volume ls -q | grep media_root)
# riavvio
docker compose up -d
|
FUNZIONALITA’ DI PAPERMERGE
1. Gestione documentale (Document Management)
Papermerge è pensato per digitalizzare e organizzare documenti cartacei in modo semplice ma strutturato.
Le funzioni principali:
- Importazione documenti
- Caricamento via interfaccia web (drag & drop).
- Import automatico da cartelle “watch” (montabili su volume Docker).
- Upload multiplo di PDF, TIFF, JPG, PNG, ecc.
- Supporto per documenti multipagina.
- Struttura ad albero (folders & documents)
- Puoi creare cartelle, sottocartelle e organizzare i file in modo gerarchico.
- Ogni documento ha metadati e cronologia.
- Gestione versioni
- Quando un documento viene sostituito, Papermerge conserva le versioni precedenti (versioning).
- Tagging (etichette personalizzate)
- Assegna tag a documenti e cartelle per una ricerca più flessibile.
- Colori e categorie di tag personalizzabili.
- Anteprima documenti
- Visualizzazione direttamente nel browser.
- Zoom, rotazione, scorrimento multipagina.
- Supporto completo per PDF e immagini raster.
2. Ricerca e indicizzazione (Full-text Search)
- Motore di ricerca integrato
- Indicizzazione automatica dei testi riconosciuti via OCR.
- Ricerca full-text su contenuti e metadati.
- Supporto per operatori logici (es. AND, OR, NOT).
- Possibilità di usare Apache Solr per performance elevate e ricerca avanzata (facoltativo ma consigliato).
3. OCR (Optical Character Recognition)
Funzioni OCR integrate:
- OCR automatico su ogni documento importato (scansioni, immagini, PDF).
- Supporta più lingue contemporaneamente (ita, eng, deu, ecc.).
- Usa Tesseract OCR come backend.
- Possibilità di configurare i worker OCR separatamente (scalabilità orizzontale).
- Estrazione testo salvata insieme al documento (ricercabile nel DB).
Funzioni pratiche:
- Puoi aprire un PDF scansionato e copiare testo direttamente.
- L’OCR avviene in background, senza bloccare l’interfaccia.
- Log dettagliati e coda di elaborazione gestita da Redis.
️ 4. Metadati e automazioni
- Campi personalizzati (metadata fields): puoi definire nuovi campi (es. “Numero Fattura”, “Cliente”, “Data Documento”).
- Classificatori automatici (da Papermerge 3.3+):
- Riconoscono pattern testuali (regex o parole chiave) e assegnano automaticamente tag, metadati o cartelle di destinazione.
- Script e automazioni (tramite API o CLI):
- Azioni automatiche al momento dell’upload (es. sposta, tagga, assegna utente).
- API RESTful per integrazione con ERP/CRM esterni.
5. Gestione utenti, ruoli e permessi
- Papermerge ha un sistema di autenticazione e autorizzazione completo.
- Utenti e gruppi: gestione nativa multiutente.
- Ruoli e permessi granulari:
- Accesso in sola lettura, modifica o amministrazione.
- Permessi assegnabili per cartella o documento.
- Login locale o via LDAP (se configurato).
- Reset password e gestione profili direttamente dal pannello.
⚙️ 6. Architettura e backend
Componenti principali:
- WebApp → interfaccia e API (basata su Django).
- Database PostgreSQL → dati e metadati.
- Redis → coda di messaggi (OCR, automazioni).
- OCR Worker → elabora i job di riconoscimento testo.
- Solr (opzionale) → motore di ricerca full-text ad alte prestazioni.
Caratteristiche:
- Configurazione modulare tramite variabili d’ambiente.
- Volumi Docker per storage persistente (/var/media/pmg).
- Supporto a backup e restore semplici (tar dei volumi).
- Log centralizzati e configurabili.
7. Interfaccia Web e UX
- Dashboard con documenti recenti e attività.
- Drag & Drop intuitivo per spostare documenti.
- Anteprima integrata per PDF e immagini.
- Filtro per tag, data, tipo documento, utente, testo.
- Tema chiaro/scuro.
- Localizzazione multilingua (Italiano incluso).
8. API e integrazione esterna
- Papermerge espone una API RESTful completa.
- Endpoint per documenti, cartelle, utenti, tag, metadati, job OCR.
- Possibilità di creare script o connettori esterni (es. per import automatici da ERP, scanner o email).
- Autenticazione via token.
9. Sicurezza e backup
- Autenticazione via HTTPS (usando reverse proxy come Nginx o Traefik).
- Secret key di cifratura per sessioni e password.
- Backup completo tramite snapshot dei volumi Docker:
- pgdata (database)
- media_root (documenti)
- solr_data (indice di ricerca, opzionale)
- Log di accesso e di sistema.
10. Aggiornamenti e scalabilità
- Aggiornamento semplice con: docker compose pull && docker compose up -d
- Possibilità di scalare i worker OCR (aggiungendo più container).
- Configurazione distribuita (più nodi web/worker/solr).
- Supporto per ambienti Kubernetes.
11. Casi d’uso tipici
- Archiviazione digitale fatture e documenti contabili.
- Gestione contratti e documentazione clienti.
- Digitalizzazione archivi cartacei di uffici o studi.
- Portale documentale interno multiutente.
- Ricerca rapida in archivi PDF scansionati.
CONSIDERAZIONI FINALI
Papermerge è un sistema di gestione documentale (DMS – Document Management System) open source, pensato principalmente per l’archiviazione digitale e la ricerca testuale di documenti scansionati.
Si distingue per l’approccio semplice ma solido: è costruito su tecnologie moderne (Python/Django, PostgreSQL, Redis, OCR Tesseract) e progettato per funzionare facilmente in container Docker.
La sua architettura modulare e il focus sull’OCR lo rendono ideale per chi ha molti documenti cartacei da digitalizzare e indicizzare, senza ricorrere a soluzioni proprietarie costose.
Punti di forza (Pro)
1. Open Source e gratuito
- Nessuna licenza a pagamento.
- Codice disponibile su GitHub, facilmente auditabile.
- Attiva community di utenti e sviluppatori.
2. OCR automatico integrato
- Basato su Tesseract, supporta decine di lingue (incluso italiano).
- I testi estratti vengono indicizzati, rendendo ricercabile l’intero archivio.
- Possibilità di scalare i “worker OCR” separatamente → ottimo per grandi volumi.
3. Architettura moderna e modulare
- Basato su container Docker, con servizi separati (WebApp, DB, Redis, OCR Worker).
- Aggiornamenti e backup semplici.
- Facile da integrare in infrastrutture esistenti (NAS, server on-premise, VPS, ecc.).
4. Ricerca full-text potente
- Ricerca su contenuto e metadati.
- Integrazione opzionale con Apache Solr per ricerche istantanee anche su grandi archivi.
5. Gestione multiutente
- Ruoli e permessi granulari.
- Possibilità di creare utenti e gruppi.
- Ideale per piccoli team o uffici.
6. API RESTful ben strutturata
- Permette automazioni (es. import da email, scanner, ERP, ecc.).
- Facilita l’integrazione con altri software gestionali.
7. Interfaccia semplice e moderna
- UI reattiva, accessibile via browser.
- Supporto dark mode, anteprime PDF e immagini.
- Usabilità buona anche per utenti non tecnici.
⚠️ Limiti e punti di attenzione (Contro)
1. Non è un ECM completo
- Papermerge è un document manager, non un enterprise content manager.
- Mancano workflow complessi, firma digitale, protocollazione, scadenziari o gestione documentale avanzata (come Alfresco o LogicalDOC).
2. Nessuna gestione nativa di email o scansione diretta
- Non acquisisce automaticamente documenti da caselle email o scanner (serve script esterno o API).
- Non gestisce nativamente protocolli come SMB o WebDAV (ma può montare volumi Docker).
3. Interfaccia essenziale
- Pulita ma ancora “spoglia”: poche funzioni estetiche, qualche passaggio manuale in più rispetto a software commerciali.
- Limitato supporto per editing dei documenti o annotazioni PDF.
4. Configurazione iniziale tecnica
- L’installazione via Docker è semplice ma richiede un minimo di competenze da sysadmin.
- Necessario configurare correttamente Redis, PostgreSQL e volumi persistenti per evitare perdita dati.
5. Aggiornamenti frequenti ma con breaking changes
- Le versioni 3.x hanno portato modifiche importanti rispetto alle precedenti 2.x.
- Alcune funzionalità cambiano nome o posizione nei menu (serve consultare le note di rilascio).
⚙️ Quando conviene usarlo
✅ Ideale per:
- Studi professionali, commercialisti, architetti, notai.
- Piccole e medie imprese che vogliono archiviare e cercare rapidamente documenti PDF scansionati.
- Pubbliche amministrazioni o associazioni con archivi cartacei da digitalizzare.
- Progetti personali di archiviazione digitale (home server, NAS, ecc.).
❌ Meno adatto per:
- Aziende che necessitano di workflow approvativi complessi, firme digitali, o protocollazione documenti.
- Ambienti con integrazione nativa a sistemi ERP complessi (a meno di sviluppi custom via API).
- Utenti senza alcuna dimestichezza con Docker/Linux.
Considerazioni su sicurezza e affidabilità
- Papermerge utilizza PostgreSQL come database (affidabile e robusto).
- Le password e i token sono cifrati con chiave segreta (SECRET_KEY).
- Può essere facilmente protetto dietro un reverse proxy HTTPS (es. Nginx o Traefik).
- Backup semplice: basta salvare i volumi Docker pgdata e media_root.
- Nessun invio di dati a server esterni: è 100% self-hosted.
Conclusioni
Papermerge DMS è una soluzione eccellente per chi cerca un sistema documentale open source, leggero, scalabile e focalizzato sull’OCR.
Non è pensato per sostituire suite ECM complesse, ma per digitalizzare e rendere ricercabile in modo rapido un archivio di documenti cartacei o PDF scansionati.
Grazie al supporto Docker, si installa in pochi minuti e può crescere con le esigenze dell’azienda.
Con un minimo di configurazione (PostgreSQL, Redis, OCR worker) offre un’esperienza professionale, stabile e senza costi di licenza.

0 commenti