Guida
DocWeb gira su un NAS Synology o su un normale server web. Scegli la via adatta al tuo ambiente – i passaggi per gli strumenti OCR e la configurazione dopo l'installazione valgono per entrambe.
DocWeb è volutamente parco: nessuna dipendenza da framework, niente Node.js, nessuna fase di compilazione. Ti servono essenzialmente un server web con PHP e un database.
pdo_mysql, mbstring, zip, zlib, jsonutf8mb4.env, documents/, inbox/, trash/)pdftotext, pdftoppm)shell_exec deve essere consentito sul server perché gli strumenti possano essere richiamatizip. Solo i PDF scansionati e le immagini restano quindi senza full-text – nome del file, categoria e tag restano comunque ricercabili. Via A
La via consigliata se DocWeb deve girare sulla tua rete, su un Synology. L'accesso è allora tipicamente possibile solo sulla rete locale o tramite VPN.
Nel Centro pacchetti del Synology installare i pacchetti Web Station, PHP 8.x e MariaDB 10. Poi, sotto Web Station → Server web, creare un server web con PHP 8 se non ne esiste ancora uno.
Copiare l'intera cartella del progetto in /volume1/web/docweb – quindi la cartella che contiene public/, src/ e sql/. Le cartelle documents/, inbox/ e trash/ vengono create automaticamente durante l'installazione.
Tramite phpMyAdmin (o via SSH) creare un database con il relativo utente:
CREATE DATABASE docweb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'docweb'@'localhost' IDENTIFIED BY 'DEIN_PASSWORT';
GRANT ALL PRIVILEGES ON docweb.* TO 'docweb'@'localhost';
FLUSH PRIVILEGES;
.env
Nella cartella del progetto (un livello sopra public/) creare un file .env:
DB_HOST=localhost
DB_PORT=3307
DB_NAME=docweb
DB_USER=docweb
DB_PASSWORD=DEIN_PASSWORT
3307, non sulla 3306. Per un database esterno adattare di conseguenza.
Aprire http://NAS-ADRESSE/docweb/install.php nel browser e compilare il modulo. L'assistente crea tutte le tabelle, scrive le credenziali in .env, crea le cartelle e imposta il primo account amministratore.
In alternativa, via SSH nella cartella del progetto: php install.php. Senza --admin-pass viene generata una password casuale e mostrata una sola volta.
install.php.
L'assistente si rifiuta di funzionare non appena esiste un account utente – ciò nonostante non ha motivo di restare a lungo sul server. Sotto Web Station → Linguaggi di script → PHP 8.x → Configurazione:
shell_exec non deve essere elencata in disable_functions (altrimenti niente OCR)pdo_mysql, mbstring, zip, zlib, jsonPer i documenti scansionati configurare Tesseract e Poppler – le istruzioni sono nella Configurare gli strumenti OCR. Senza questo passaggio DocWeb funziona, ma senza full-text nelle scansioni.
Accedere sotto http://NAS-ADRESSE/docweb/ e fare clic su Sync nella barra superiore. Poi eseguire una volta Reindex se gli strumenti OCR sono stati configurati – così vengono rilevate anche le scansioni già presenti.
Via B
Per un server noleggiato, una macchina propria o una macchina virtuale. Così DocWeb diventa raggiungibile anche dall'esterno – presta quindi particolare attenzione alle note di sicurezza alla fine di questa sezione.
Su Debian o Ubuntu bastano pochi pacchetti:
sudo apt install apache2 mariadb-server php php-mysql php-mbstring \
php-zip php-gd php-curl libapache2-mod-php
sudo mysql_secure_installation
Per nginx al posto di Apache installare gli stessi pacchetti PHP con php-fpm.
Copiare l'intera cartella del progetto sul server. Collocala all'esterno della directory accessibile pubblicamente e fai puntare il dominio alla sottocartella public/:
/var/www/docweb/ <- cartella del progetto (non pubblica)├── public/ <- qui punta il dominio├── src/
├── sql/
├── documents/
├── inbox/
└── trash/
Per Apache, per esempio:
<VirtualHost *:443>
ServerName docweb.example.ch
DocumentRoot /var/www/docweb/public
<Directory /var/www/docweb/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
In alternativa la cartella del progetto stessa può essere la directory web – l'applicazione si trova allora sotto /public/ ed è raggiungibile per esempio via https://example.ch/public/. Anche questa configurazione è supportata; la prima variante è però più pulita.
sudo mysql -e "CREATE DATABASE docweb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'docweb'@'localhost' IDENTIFIED BY 'DEIN_PASSWORT';"
sudo mysql -e "GRANT ALL PRIVILEGES ON docweb.* TO 'docweb'@'localhost'; FLUSH PRIVILEGES;"
.env
Nella cartella del progetto (un livello sopra public/):
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=docweb
DB_USER=docweb
DB_PASSWORD=DEIN_PASSWORT
L'utente del server web (su Debian/Ubuntu www-data) deve poter scrivere nella cartella del progetto – per .env e le cartelle documents/, inbox/ e trash/:
sudo chown -R www-data:www-data /var/www/docweb
sudo find /var/www/docweb -type d -exec chmod 750 {} \;
sudo find /var/www/docweb -type f -exec chmod 640 {} \;
Aprire https://docweb.example.ch/install.php nel browser e compilare il modulo. Poi eliminare install.php.
Dopo l'accesso fare clic su Sync nella barra superiore. Come procede la sincronizzazione dipende dalla possibilità di avviare un PHP da riga di comando sul server:
.env: PHP_CLI=/usr/bin/phpshell_exec o popen sono bloccati): DocWeb passa automaticamente alla variante web e svolge la sincronizzazione a piccoli passi tramite il server web. La barra di stato mostra allora l'avviso di lasciare aperta la finestra – l'operazione continua finché la pagina resta aperta. Se viene chiusa, la visita successiva riprende dall'ultimo stato..env un valore più piccolo, per esempio WEB_WORKER_BUDGET=10 (secondi per passo). public/ (vedi passo 2), così che src/, documents/ e .env non siano raggiungibili dal webDOCS_ROOT in .env, per esempio DOCS_ROOT=/srv/documentiFull-text nelle scansioni
Questi strumenti sono opzionali. Senza di essi la ricerca non trova testo nelle pagine scansionate e nelle immagini. Con essi il contenuto viene riconosciuto e diventa ricercabile.
Tesseract e Poppler arrivano dal gestore di pacchetti, insieme ai dati linguistici:
sudo apt install tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng \
tesseract-ocr-fra tesseract-ocr-ita poppler-utils
Poi verificare che gli strumenti vengano trovati:
which pdftotext pdftoppm tesseract
tesseract --list-langs
I vecchi pacchetti per Tesseract e Poppler non sono più disponibili per le versioni recenti di DSM. Due vie funzionano: Entware (binari direttamente sul file system, consigliato) oppure un Docker-Container che mette a disposizione i binari tramite una cartella.
Prima accedere via SSH come admin e diventare root con sudo -i. Attivare SSH in precedenza sotto Pannello di controllo → Terminale e SNMP.
# Creare una directory persistente (sopravvive agli aggiornamenti DSM)
mkdir -p /volume1/@Entware/opt
mount -o bind /volume1/@Entware/opt /opt
# Installare Entware – scegliere l'URL adatto all'architettura della CPU
# x86_64 (p. es. RS1221RP):
wget -O - https://bin.entware.net/x64-k3.2/installer/generic.sh | /bin/sh
# ARMv8 (p. es. DS920+):
# wget -O - https://bin.entware.net/aarch64-k3.10/installer/generic.sh | /bin/sh
Poi installare i pacchetti:
/opt/bin/opkg update
/opt/bin/opkg install tesseract tesseract-data-eng poppler-utils
poppler-utils, non poppler. In Entware non esiste un pacchetto di lingua tedesca – deu va installato a mano. cd /opt/share/tessdata
wget -O deu.traineddata https://raw.githubusercontent.com/tesseract-ocr/tessdata/main/deu.traineddata
/opt/bin/tesseract --list-langs # "deu" deve comparire
I binari si trovano poi sotto /opt/bin/. Se non vengono trovati automaticamente, indicarli in .env:
PDFTOTEXT_PATH=/opt/bin/pdftotext
PDFTOPPM_PATH=/opt/bin/pdftoppm
TESSERACT_PATH=/opt/bin/tesseract
Perché gli strumenti sopravvivano a un riavvio del NAS, inserire lo script fornito nel Utilità di pianificazione (Pannello di controllo → Utilità di pianificazione → Attività attivate, trigger «All'avvio», utente root):
/bin/sh /volume1/web/docweb/scripts/entware_boot.sh
Lo script rimonta /opt, reinstalla Entware e i pacchetti se necessario e si occupa dei dati linguistici OCR.
Un container mette a disposizione i binari tramite una cartella condivisa:
docker run -d --name ocr-tools \
-v /volume1/web/docweb/tools:/tools \
debian:bookworm-slim \
bash -c "apt-get update && apt-get install -y tesseract-ocr tesseract-ocr-deu \
tesseract-ocr-eng poppler-utils && \
cp /usr/bin/tesseract /usr/bin/pdftotext /usr/bin/pdftoppm /tools/ && sleep infinity"
Poiché i file non sono nel percorso di ricerca, impostare i percorsi in .env:
PDFTOTEXT_PATH=/volume1/web/docweb/tools/pdftotext
PDFTOPPM_PATH=/volume1/web/docweb/tools/pdftoppm
TESSERACT_PATH=/volume1/web/docweb/tools/tesseract
Dopo l'accesso il menu utente in alto a destra indica se i tre strumenti sono stati trovati: pdftotext (testo dei PDF), pdftoppm (rendering delle pagine) e tesseract (OCR).
https://docweb.gregus.ch/.
DocWeb crea un backup di database e documenti come ZIP. Poiché i documenti esistono comunque come file ordinari, per l'archivio basta anche un salvataggio della cartella dei documenti con i mezzi abituali – per una migrazione completa servono anche il database e .env.
Il più delle volte manca un'estensione PHP oppure il database non è raggiungibile. Controllare l'output degli errori PHP del server (Apache: error.log, nginx: /var/log/nginx/error.log). Cause frequenti: pdo_mysql mancante, porta sbagliata, password errata in .env.
src/config.php
Allora install.php non si trova nella cartella del progetto oppure il livello superiore non contiene src/. Carica la cartella di progetto completa – non solo il contenuto di public/. L'installer riconosce da sé entrambe le disposizioni (cartella del progetto e public/).
L'utente del server web non può scrivere nella cartella del progetto. Impostare i permessi come al passo 5 (via B). Su un Synology verificare che la cartella condivisa sia scrivibile per l'utente di Web Station.
Gli strumenti OCR mancano o non sono richiamabili. Il menu utente mostra lo stato dei tre strumenti. Se mancano tutti e tre, di solito shell_exec è bloccato in disable_functions – oppure i percorsi vanno impostati in .env. Dopo la correzione eseguire una volta Reindex.
Per questo serve l'estensione PHP zip. Attivarla e avviare di nuovo il reindex.
Sui server senza PHP da riga di comando avviabile subentra automaticamente la variante web (vedi passo 7 della via B). Se il messaggio compare comunque, verificare:
.env un valore più piccolo per WEB_WORKER_BUDGET (p. es. 10)..env? PHP_CLI=/usr/bin/phpIn modalità web è il browser a eseguire i passi di lavoro. Se la pagina viene chiusa, l'operazione si mette in pausa – non si perde nulla. La visita successiva riprende dall'ultimo stato.
L'installer non crea un secondo account quando ne esiste già uno – è voluto. Reimposta la password direttamente nel database oppure crea un nuovo utente con ruolo amministratore tramite phpMyAdmin.