# yrutschle/sslh

Applicative Protocol Multiplexer (e.g. share SSH and HTTPS on the same port)

Repository: https://github.com/yrutschle/sslh
Canonical: https://ross.abutalabs.com/products/sslh
Homepage: https://www.rutschle.net/tech/sslh/README.html
Language: C
License: GPL-2.0
License Family: copyleft
Last push: 2026-08-20T08:01:56+00:00

## Health v2 (maintenance only)
Score: 76/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 98, release rhythm 35, longevity 100
- inputs: {"age_days": 4802, "days_push": 13, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 5109, forks 398 (observed 2026-08-28T04:09:09.882518+00:00)

## What it is
sslh is a protocol multiplexer daemon written in C that accepts connections on a single port and forwards them to different backend services based on probes of the first data packet. It supports detection of HTTP, TLS/SSL (with SNI and ALPN), SSH, OpenVPN, WireGuard, tinc, XMPP, SOCKS5, and regex-matchable protocols.

## Use cases
- serve SSH and HTTPS on the same port 443
- connect to SSH through a corporate firewall that only allows port 443
- route multiple services through one port behind a single IP address
- use SNI-based routing to front a virtual host farm
- hide backend servers while preserving client IPs with transparent proxying or proxyprotocol
- share a single port between OpenVPN, WireGuard, and HTTPS

## When to choose
- you need to multiplex several protocols on one port to bypass restrictive firewalls
- you host multiple services behind a single IP and want SNI/ALPN-based routing
- you want a mature daemon with systemd support, privilege dropping, chroot, and transparent proxying

## When to avoid
- you need a general-purpose reverse proxy or load balancer rather than protocol demultiplexing
- you require high-security production use without reviewing the known CVEs and connection-limit hardening
- your protocols cannot be distinguished by the first data packet or a regex probe

## Facets
- artifact type: service
- maturity: stable
- function: proxy, networking, routing, security
- domain: networking, security, self-hosted
- platform: bsd, windows, cross-platform, cli, self-hosted
- tags: protocol-multiplexer, port-sharing, ssl, ssh, tls, sni, transparent-proxy, daemon, c, devops, linux, macos, docker

## Member repositories
- yrutschle/sslh (main) score 76

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:09.882518+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:02:09.601739+00:00, confidence not recorded.
  - readme: https://github.com/yrutschle/sslh (fetched 2026-08-28T04:09:09.882518+00:00, sha 2417e55bb509)
  - homepage: https://www.rutschle.net/tech/sslh/README.html (fetched 2026-08-29T08:57:03.849317+00:00, sha 5b5601858e59)
  - site_page: https://www.rutschle.net/tech/sslh/doc/INSTALL (fetched 2026-08-29T08:57:03.858591+00:00, sha f8d519dff144)
  - site_page: https://www.rutschle.net/tech/sslh/doc/FAQ (fetched 2026-08-29T08:57:03.860884+00:00, sha ef9cbd0f477e)
- Data as of 2026-08-30T08:39:29.467469+00:00.
