No description
  • Python 96.8%
  • Shell 3.2%
Find a file
2026-05-12 08:20:48 +02:00
.github .github/pull_request_template.md hinzugefügt 2026-04-15 15:37:15 +00:00
.env.example full rewrite with docker2 2026-04-15 11:14:03 +02:00
.gitignore repo cleaning2 2026-04-29 11:50:18 +02:00
60-digiscan-scanner.rules full rewrite with docker2 2026-04-15 11:14:03 +02:00
agent.py pillow-upgrade 2026-05-12 08:20:48 +02:00
CLA.md Init CLA 2026-04-15 15:28:41 +00:00
digiscan-agent.conf.example repo cleaning2 2026-04-29 11:50:18 +02:00
digiscan-agent.service service rewrite 2026-04-15 13:27:48 +02:00
install.sh adf rewrite 2026-04-15 13:09:23 +02:00
license.md init license 2026-04-15 15:27:50 +00:00
README.md repo cleaning2 2026-04-29 11:50:18 +02:00
requirements.txt full rewrite with docker 2026-04-15 08:29:36 +02:00
setup-usb.sh libsane1-fix 2026-04-15 11:35:03 +02:00

digiscan-ng Agent

Scanner-Agent für den Betrieb mit SANE-kompatiblen USB-Scannern (z.B. Panasonic KV-S5076H). Läuft als systemd-Service direkt auf dem Host — kein Docker, kein Container.

Warum kein Docker?

USB-Scanner mit proprietären SANE-Backends (z.B. kvs) funktionieren nicht zuverlässig in Containern da die Host-Treiberbibliotheken nicht portierbar sind. Direktinstallation auf dem Host ist die einzig zuverlässige Lösung.

Voraussetzungen

# SANE + Scanner-Treiber
sudo apt install sane sane-utils

# Testen ob Scanner erkannt wird:
scanimage -L

# Python + System-Abhängigkeiten
sudo apt install python3 python3-venv ocrmypdf

# pyzbar braucht libzbar
sudo apt install libzbar0

Installation

# 1. Repo klonen oder Dateien nach /opt/digiscan-ng-agent kopieren
sudo mkdir -p /opt/digiscan-ng-agent
sudo cp agent.py requirements.txt /opt/digiscan-ng-agent/

# 2. Installationsskript ausführen (legt venv an + systemd-Service)
sudo bash install.sh

# 3. Konfiguration ausfüllen
sudo cp digiscan-agent.conf.example /etc/digiscan-agent.conf
sudo nano /etc/digiscan-agent.conf

Konfiguration (/etc/digiscan-agent.conf)

# Server-URL: direkt zu SvelteKit, NICHT über Caddy/nginx
# (Agent läuft auf demselben Host wie Docker → localhost reicht)
DIGISCAN_SERVER=http://localhost:3000

# Secret muss mit AGENT_SECRET in digiscan-ng/.env übereinstimmen
DIGISCAN_SECRET=...  # openssl rand -hex 32

AGENT_PORT=8089

Wichtig bei Reverse Proxy (Caddy/nginx mit HTTPS): Den Agent trotzdem auf http://localhost:3000 zeigen lassen. Caddy terminiert TLS nur für externe Browser — intern ist HTTP ausreichend und erspart SSL-Zertifikatsprobleme auf dem Host.

Betrieb

# Status
sudo systemctl status digiscan-agent

# Logs live
journalctl -u digiscan-agent -f

# Neustart
sudo systemctl restart digiscan-agent

USB-Berechtigungen

Falls Scanner nur als root erkannt wird:

sudo bash setup-usb.sh
# oder manuell:
sudo cp 60-digiscan-scanner.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

Scanner-Profil

Der Agent nutzt das SANE-Profil panakvs (Panasonic KV-S5076H). Bekannte Eigenheiten:

  • --duplex=yes funktioniert
  • --source=ADF ist readonly — nie setzen
  • Hardware-Stop nach leerem Einzug → normales Verhalten, kein Fehler