https://github.com/floppy007/signotec-stpadserver-bridge
Docker image that runs signotec signoPAD-API/Web (Windows build) under Wine on Linux — turns any Linux host into a central WSS endpoint for a LAN-connected signotec pad (Sigma/Omega/Gamma/Delta/Alpha/Zeta), no Windows station PC required.
https://github.com/floppy007/signotec-stpadserver-bridge
delta-pad docker linux signature-pad signopad-api signotec signotec-delta stpadserver websocket wine wss
Last synced: 22 days ago
JSON representation
Docker image that runs signotec signoPAD-API/Web (Windows build) under Wine on Linux — turns any Linux host into a central WSS endpoint for a LAN-connected signotec pad (Sigma/Omega/Gamma/Delta/Alpha/Zeta), no Windows station PC required.
- Host: GitHub
- URL: https://github.com/floppy007/signotec-stpadserver-bridge
- Owner: floppy007
- License: mit
- Created: 2026-05-11T13:33:04.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-11T13:59:43.000Z (about 2 months ago)
- Last Synced: 2026-05-11T15:30:45.082Z (about 2 months ago)
- Topics: delta-pad, docker, linux, signature-pad, signopad-api, signotec, signotec-delta, stpadserver, websocket, wine, wss
- Language: Dockerfile
- Size: 6.84 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# signotec-stpadserver-bridge
> Copyright © 2026 Florian Hesse — [comnic IT](https://comnic-it.de) · License: MIT (see [`LICENSE`](LICENSE))
Docker image that runs **signoPAD-API/Web 3.5.0 (Windows build) under Wine**
on a Linux host. Turns any Linux server into a central WSS endpoint for a
LAN-attached signotec pad (Sigma / Omega / Gamma / Delta / Alpha / Zeta).
Browser clients talk HTTPS/WSS to a TLS-terminating reverse proxy of your
choice (Apache, Nginx, Caddy, …), WS traffic gets proxied into the
container, and the container speaks TCP/IP to the pad on the LAN.
## Why not the official Linux build?
signotec does ship `signoPAD-API/Web` for Linux as well
(`signoPAD-API_Web_Linux_3.5.0.zip`), but that build only implements
**Default mode**. Default mode can capture a signature, but **cannot
display a PDF on the pad** — the recipient just sees a bare "please sign"
screen. That defeats the whole reason for buying a large Delta 10.1 in
the first place.
The **Windows build** of `signoPAD-API/Web` implements the full
**API mode**: load PDF onto the pad, scroll, sign directly on the
document. Exactly what most workflows actually need.
The fix: pack the Windows build into an Ubuntu + Wine container and run
it on the Linux server. In hands-on testing, every relevant command
goes through cleanly: `searchForPads(IP=...)`, `Device.open`, `Pdf.load`,
`Display.setPDF`, `Signature.confirm`, `Signature.saveAsStream`.
## Build & run
Only the host needs `docker` — the Dockerfile fetches and extracts the
signotec installer itself.
```bash
docker build -t signotec-stpadserver:wine .
# manual one-shot run (host network so the container can reach the pad LAN)
docker run --rm --network host signotec-stpadserver:wine 0.0.0.0 49494
```
Or in one go, including systemd + Apache reverse proxy:
```bash
sudo bash install.sh
```
## What happens during `docker build`
The Dockerfile is multi-stage:
* **Stage 1 (extract)** — downloads
`signotec_signoPAD-API_Web_3.5.0.exe` from
[downloads.signotec.com](https://downloads.signotec.com/signoPAD-API_Web/),
briefly runs the InstallShield wrapper under Wine to obtain the inner
MSI, then unpacks `MSI → Data1.cab → flat binary list`. **No** signotec
binaries are committed to this repo — they're fetched directly from
the vendor on every build.
* **Stage 2 (runtime)** — Ubuntu 22.04 Jammy + Wine 32/64 + the
extracted binaries. `WINEDLLOVERRIDES` forces Wine to load the native
MSVC runtime DLLs that ship with signotec (their Boost.Asio uses
`?_Throw_Cpp_error@std`, which is missing from Wine's own `msvcp140`
stub).
The container listens on `0.0.0.0:49494` by default and speaks **plain
WS** (no TLS — TLS termination is delegated to Apache/Nginx with your
existing certificate).
## TLS reverse proxy
Example snippet for an Apache 2 SSL vhost (see
[`apache/orbit-ssl-signotec.snippet`](apache/orbit-ssl-signotec.snippet)):
```apache
ProxyPass /signotec-ws/ ws://127.0.0.1:49494/
ProxyPassReverse /signotec-ws/ ws://127.0.0.1:49494/
```
Browsers then connect to `wss:///signotec-ws/` — your own TLS
certificate, your own origin. Works for multiple hostnames or IPs
without having to reconfigure the pad server.
## Client-side code
The browser loads signotec's official `STPadServerLib-3.5.0.js` and
connects through the TLS endpoint. From a JavaScript perspective the
result is identical to a station-PC setup with a USB-attached pad —
same API mode, same `Pdf.load` + `Display.setPDF` flow.
## Operations
```bash
docker ps --filter name=signotec-stpadserver
journalctl -u signotec-stpadserver -f
sudo systemctl restart signotec-stpadserver
```
## Files
| File | Purpose |
|-----------------------------------------------|--------------------------------------------------|
| `Dockerfile` | Multi-stage build: extract installer + runtime |
| `wine-entrypoint.sh` | Wine prefix init + server start |
| `systemd/signotec-stpadserver.service` | systemd unit for auto-start |
| `apache/orbit-ssl-signotec.snippet` | Example reverse-proxy snippet for Apache |
| `install.sh` | Full setup script (sudo) |
## License / contributors
Code in this repository: MIT, © 2026 Florian Hesse / comnic IT
(https://comnic-it.de).
The signotec binaries fetched at build time are property of
[signotec GmbH](https://www.signotec.com) and are subject to their own
license terms — they are not stored in this repo, but downloaded fresh
from the signotec download portal on every build.