Metadata-Version: 2.4
Name: ser2netweb
Version: 3.1.0
Summary: Serial-to-network bridge with a web UI: raw TCP, telnet, RFC 2217, UDP, Modbus gateway, MQTT
Author-email: Halis KILIÇ <mail@haliskilic.com.tr>
License-Expression: AGPL-3.0-only
Project-URL: Homepage, https://github.com/haliskilic/ser2netweb
Project-URL: Documentation, https://github.com/haliskilic/ser2netweb/blob/main/README.en.md
Project-URL: Changelog, https://github.com/haliskilic/ser2netweb/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/haliskilic/ser2netweb/issues
Project-URL: Source, https://github.com/haliskilic/ser2netweb
Keywords: serial,rs232,rs485,rfc2217,telnet,serial-over-ip,modbus,mqtt,sparkplug,iot
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Communications
Classifier: Topic :: System :: Hardware
Classifier: Topic :: System :: Networking
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
License-File: COMMERCIAL_LICENSE.md
License-File: THIRD-PARTY-NOTICES.md
License-File: tools/licenses/npm/htmx.org.txt
License-File: tools/licenses/npm/xterm-addon-fit.txt
License-File: tools/licenses/npm/xterm.txt
Requires-Dist: pyserial>=3.5
Requires-Dist: pyserial-asyncio-fast>=0.16
Requires-Dist: starlette>=0.46.1
Requires-Dist: uvicorn>=0.32.0
Requires-Dist: h11>=0.14.0
Requires-Dist: websockets>=14.2
Requires-Dist: python-multipart>=0.0.20
Requires-Dist: jinja2>=3.1.6
Requires-Dist: markupsafe>=2.1.3
Requires-Dist: psutil>=5.9.8
Requires-Dist: exceptiongroup>=1.2.0; python_version < "3.11"
Requires-Dist: taskgroup>=0.2.2; python_version < "3.11"
Provides-Extra: mqtt
Requires-Dist: paho-mqtt>=1.6.1; extra == "mqtt"
Provides-Extra: ldap
Requires-Dist: ldap3>=2.9.1; extra == "ldap"
Provides-Extra: oidc
Requires-Dist: authlib>=1.4.0; extra == "oidc"
Provides-Extra: tls
Requires-Dist: cryptography>=43.0.0; extra == "tls"
Provides-Extra: all
Requires-Dist: ser2netweb[ldap,mqtt,oidc,tls]; extra == "all"
Dynamic: license-file

# ser2netweb

Serial-to-network bridge with a web UI: share local serial ports (RS-232 / RS-485, USB
adapters) over the network as raw TCP, telnet, RFC 2217 or UDP, run a Modbus RTU/TCP
gateway, publish serial data and Modbus points to MQTT and Sparkplug B, all set up and
watched in a browser, with accounts, roles, an audit log, TLS and LDAP / OpenID Connect
sign-in.

ser2netweb (named ser2net up to 2.9.x) is an independent Python project. It is not
related to or derived from Corey Minyard's ser2net daemon
([github.com/cminyard/ser2net](https://github.com/cminyard/ser2net)), whose classic
configuration files it can import.

## Install

```bash
pipx install ser2netweb              # or: pipx install "ser2netweb[all]"
ser2netweb                           # asks for the web UI's address on the console, then serves it
```

Python 3.10 or newer on Linux, macOS or Windows. The extras add the optional features:
`mqtt` (paho-mqtt), `ldap` (ldap3), `oidc` (authlib), `tls` (cryptography: self-signed
certificates in-process), `all` (every one); later: `pipx inject ser2netweb paho-mqtt`.
On Linux, opening a serial port needs membership in its group (`dialout` on Debian,
Ubuntu, Fedora; `uucp` on Arch).

A pip / pipx install keeps its data (`config.json`, backups, logs, traces) in the user's
data folder, never next to the package:

| OS | Data folder |
|---|---|
| Linux and other Unix | `$XDG_DATA_HOME/ser2netweb`, else `~/.local/share/ser2netweb` |
| macOS | `~/Library/Application Support/ser2netweb` |
| Windows | `%LOCALAPPDATA%\ser2netweb` |

`--data-dir DIR` (or `--config FILE`) chooses another folder. `ser2netweb --help` lists the
options, `ser2netweb --about` shows the versions and where each component is loaded from.

To run it as a service (systemd, the Windows service), use the standalone executables or
the `.deb` / `.rpm` packages of a release instead: they come with a hardened systemd unit
and `--install-service`. Docker: `ghcr.io/haliskilic/ser2netweb`.

## Links

- Documentation: [README](https://github.com/haliskilic/ser2netweb/blob/main/README.en.md)
  (English), [README.md](https://github.com/haliskilic/ser2netweb/blob/main/README.md) (Türkçe)
- Changes: [CHANGELOG.md](https://github.com/haliskilic/ser2netweb/blob/main/CHANGELOG.md)
- Releases (executables, packages, image):
  [github.com/haliskilic/ser2netweb/releases](https://github.com/haliskilic/ser2netweb/releases)
- Security: [SECURITY.md](https://github.com/haliskilic/ser2netweb/blob/main/SECURITY.md)

Licence: GNU AGPL-3.0-only, or a commercial licence
([COMMERCIAL_LICENSE.md](https://github.com/haliskilic/ser2netweb/blob/main/COMMERCIAL_LICENSE.md)).
