Guide
DocWeb tourne sur un NAS Synology ou sur un serveur web ordinaire. Choisissez la voie qui correspond à votre environnement – les étapes pour les outils OCR et la configuration après l'installation valent pour les deux.
DocWeb est volontairement peu exigeant : aucune dépendance à un framework, pas de Node.js, aucune étape de compilation. Il vous faut essentiellement un serveur web avec PHP et une base de données.
pdo_mysql, mbstring, zip, zlib, jsonutf8mb4.env, documents/, inbox/, trash/)pdftotext, pdftoppm)shell_exec doit être autorisé sur le serveur pour que les outils puissent être appelészip. Seuls les PDF scannés et les images restent alors sans plein texte – le nom de fichier, la catégorie et les étiquettes restent toutefois consultables. Voie A
La voie recommandée si DocWeb doit tourner sur votre propre réseau, sur un Synology. L'accès n'est alors typiquement possible que sur le réseau local ou via un VPN.
Dans le Centre de paquets du Synology, installer les paquets Web Station, PHP 8.x et MariaDB 10. Ensuite, sous Web Station → Serveur web, créer un serveur web avec PHP 8 s'il n'en existe pas encore.
Copier le dossier complet du projet vers /volume1/web/docweb – donc le dossier qui contient public/, src/ et sql/. Les dossiers documents/, inbox/ et trash/ sont créés automatiquement lors de l'installation.
Via phpMyAdmin (ou par SSH), créer une base de données avec son utilisateur :
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
Dans le dossier du projet (un niveau au-dessus de public/), créer un fichier .env :
DB_HOST=localhost
DB_PORT=3307
DB_NAME=docweb
DB_USER=docweb
DB_PASSWORD=DEIN_PASSWORT
3307, pas sur 3306. À adapter en conséquence pour une base de données externe.
Ouvrir http://NAS-ADRESSE/docweb/install.php dans le navigateur et remplir le formulaire. L'assistant crée toutes les tables, écrit les identifiants dans .env, crée les dossiers et met en place le premier compte administrateur.
Autrement, par SSH dans le dossier du projet : php install.php. Sans --admin-pass, un mot de passe aléatoire est généré et affiché une seule fois.
install.php.
L'assistant refuse de fonctionner dès qu'un compte utilisateur existe – il n'a néanmoins pas sa place durablement sur le serveur. Sous Web Station → Langages de script → PHP 8.x → Configuration :
shell_exec ne doit pas figurer dans disable_functions (sinon pas d'OCR)pdo_mysql, mbstring, zip, zlib, jsonPour les documents scannés, mettre en place Tesseract et Poppler – le mode d'emploi se trouve dans la Mettre en place les outils OCR. Sans cette étape, DocWeb fonctionne, mais sans plein texte dans les scans.
Se connecter sous http://NAS-ADRESSE/docweb/ et cliquer sur Sync dans la barre supérieure. Exécuter ensuite une fois Reindex si les outils OCR ont été mis en place – les scans déjà présents sont ainsi pris en compte.
Voie B
Pour un serveur loué, une machine personnelle ou une machine virtuelle. DocWeb devient alors accessible depuis l'extérieur – accordez donc une attention particulière aux conseils de sécurité à la fin de cette section.
Sur Debian ou Ubuntu, quelques paquets suffisent :
sudo apt install apache2 mariadb-server php php-mysql php-mbstring \
php-zip php-gd php-curl libapache2-mod-php
sudo mysql_secure_installation
Pour nginx au lieu d'Apache, installer les mêmes paquets PHP avec php-fpm.
Copier le dossier complet du projet sur le serveur. Placez-le en dehors du répertoire accessible publiquement et faites pointer le domaine vers le sous-dossier public/ :
/var/www/docweb/ <- dossier du projet (non public)├── public/ <- le domaine pointe ici├── src/
├── sql/
├── documents/
├── inbox/
└── trash/
Pour Apache, par exemple :
<VirtualHost *:443>
ServerName docweb.example.ch
DocumentRoot /var/www/docweb/public
<Directory /var/www/docweb/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Le dossier du projet lui-même peut aussi servir de répertoire web – l'application se trouve alors sous /public/ et est accessible par exemple via https://example.ch/public/. Cette disposition est également prise en charge ; la première variante est toutefois plus propre.
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
Dans le dossier du projet (un niveau au-dessus de public/) :
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=docweb
DB_USER=docweb
DB_PASSWORD=DEIN_PASSWORT
L'utilisateur du serveur web (sous Debian/Ubuntu www-data) doit pouvoir écrire dans le dossier du projet – pour .env et les dossiers documents/, inbox/ et 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 {} \;
Ouvrir https://docweb.example.ch/install.php dans le navigateur et remplir le formulaire. Supprimer ensuite install.php.
Après la connexion, cliquer sur Sync dans la barre supérieure. Le déroulement dépend de la possibilité de lancer un PHP en ligne de commande sur le serveur :
.env : PHP_CLI=/usr/bin/phpshell_exec ou popen sont bloqués) : DocWeb bascule automatiquement sur la variante web et traite la synchronisation par petits pas via le serveur web. La barre d'état affiche alors l'indication de laisser la fenêtre ouverte – l'opération continue tant que la page reste ouverte. Si elle est fermée, la prochaine visite reprend au dernier état..env, par exemple WEB_WORKER_BUDGET=10 (secondes par pas). public/ (voir étape 2) pour que src/, documents/ et .env ne soient pas accessibles par le webDOCS_ROOT dans .env, par exemple DOCS_ROOT=/srv/documentsPlein texte dans les scans
Ces outils sont facultatifs. Sans eux, la recherche ne trouve aucun texte dans les pages scannées et les images. Avec eux, le contenu est reconnu et devient consultable.
Tesseract et Poppler viennent du gestionnaire de paquets, avec les données de langue :
sudo apt install tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng \
tesseract-ocr-fra tesseract-ocr-ita poppler-utils
Vérifier ensuite que les outils sont trouvés :
which pdftotext pdftoppm tesseract
tesseract --list-langs
Les anciens paquets pour Tesseract et Poppler ne sont plus disponibles pour les versions récentes de DSM. Deux voies fonctionnent : Entware (binaires directement sur le système de fichiers, recommandé) ou un Docker-Container qui met les binaires à disposition via un répertoire.
Se connecter d'abord par SSH en tant que admin et passer à root avec sudo -i. Activer SSH au préalable sous Panneau de configuration → Terminal & SNMP.
# Créer un répertoire persistant (survit aux mises à jour DSM)
mkdir -p /volume1/@Entware/opt
mount -o bind /volume1/@Entware/opt /opt
# Installer Entware – choisir l'URL correspondant à l'architecture du processeur
# x86_64 (p. ex. RS1221RP) :
wget -O - https://bin.entware.net/x64-k3.2/installer/generic.sh | /bin/sh
# ARMv8 (p. ex. DS920+) :
# wget -O - https://bin.entware.net/aarch64-k3.10/installer/generic.sh | /bin/sh
Installer ensuite les paquets :
/opt/bin/opkg update
/opt/bin/opkg install tesseract tesseract-data-eng poppler-utils
poppler-utils, pas poppler. Entware ne propose pas de paquet de langue allemande – deu doit être installé à la main. cd /opt/share/tessdata
wget -O deu.traineddata https://raw.githubusercontent.com/tesseract-ocr/tessdata/main/deu.traineddata
/opt/bin/tesseract --list-langs # « deu » doit apparaître
Les binaires se trouvent ensuite sous /opt/bin/. S'ils ne sont pas trouvés automatiquement, les indiquer dans .env :
PDFTOTEXT_PATH=/opt/bin/pdftotext
PDFTOPPM_PATH=/opt/bin/pdftoppm
TESSERACT_PATH=/opt/bin/tesseract
Pour que les outils survivent à un redémarrage du NAS, déposer le script fourni dans le Planificateur de tâches (Panneau de configuration → Planificateur de tâches → Tâche déclenchée, déclencheur « Au démarrage », utilisateur root) :
/bin/sh /volume1/web/docweb/scripts/entware_boot.sh
Le script monte à nouveau /opt, réinstalle Entware et les paquets si nécessaire et s'occupe des données de langue OCR.
Un conteneur met les binaires à disposition via un répertoire partagé :
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"
Comme les fichiers ne sont pas dans le chemin de recherche, définir les chemins dans .env :
PDFTOTEXT_PATH=/volume1/web/docweb/tools/pdftotext
PDFTOPPM_PATH=/volume1/web/docweb/tools/pdftoppm
TESSERACT_PATH=/volume1/web/docweb/tools/tesseract
Après la connexion, le menu utilisateur en haut à droite indique si les trois outils ont été trouvés : pdftotext (texte des PDF), pdftoppm (rendu des pages) et tesseract (OCR).
https://docweb.gregus.ch/.
DocWeb crée une sauvegarde de la base de données et des documents sous forme de ZIP. Comme les documents existent de toute façon comme fichiers ordinaires, une sauvegarde du dossier de documents avec les moyens habituels suffit pour le fonds – pour une migration complète, la base de données et .env en font partie.
Il manque le plus souvent une extension PHP ou la base de données est injoignable. Consulter la sortie d'erreurs PHP du serveur (Apache : error.log, nginx : /var/log/nginx/error.log). Causes fréquentes : pdo_mysql manquant, mauvais port, mauvais mot de passe dans .env.
src/config.php est absent
Alors install.php ne se trouve pas dans le dossier du projet, ou le niveau au-dessus ne contient pas de src/. Téléversez le dossier de projet complet – pas seulement le contenu de public/. L'installateur reconnaît lui-même les deux dispositions (dossier du projet et public/).
L'utilisateur du serveur web n'a pas le droit d'écrire dans le dossier du projet. Définir les droits selon l'étape 5 (voie B). Sur un Synology, vérifier que le dossier partagé est accessible en écriture pour l'utilisateur de Web Station.
Les outils OCR manquent ou ne peuvent pas être appelés. Le menu utilisateur montre l'état des trois outils. Si les trois manquent, shell_exec est généralement bloqué dans disable_functions – ou les chemins doivent être définis dans .env. Après correction, exécuter une fois Reindex.
Cela nécessite l'extension PHP zip. L'activer et relancer la réindexation.
Sur les serveurs sans PHP en ligne de commande démarrable, la variante web prend automatiquement le relais (voir étape 7 de la voie B). Si le message apparaît malgré tout, vérifier :
WEB_WORKER_BUDGET dans .env (p. ex. 10)..env ? PHP_CLI=/usr/bin/phpEn mode web, c'est le navigateur qui exécute les étapes de travail. Si la page est fermée, l'opération est suspendue – rien n'est perdu. La prochaine visite reprend au dernier état.
L'installateur ne crée pas de second compte dès qu'un compte existe – c'est voulu. Réinitialisez le mot de passe directement dans la base de données ou créez un nouvel utilisateur avec le rôle administrateur via phpMyAdmin.