This repository packages whosthere — a LAN discovery tool with an interactive terminal UI — so you can run it in Docker and use it from a browser.
Whosthere is written by ramonvermeulen/whosthere (Apache-2.0). This repo only adds container wiring; all application behavior comes from upstream.
- Image build: clones upstream at build time, compiles a static
whostherebinary (CGO_ENABLED=0), and runs it under ttyd so the TUI is available over HTTP on port 7681. - Docker Compose: default service uses host networking (Linux) so mDNS, SSDP, and ARP-style discovery can see your real LAN. An optional bridge profile publishes
7681when host mode is impractical (with weaker discovery from inside the container).
There is no authentication on the web terminal by design; only expose it on networks you trust.
Build and start (host network — recommended on Linux for accurate scans):
docker compose up -d --buildOpen http://127.0.0.1:7681/ on the host (or http://<this-machine>:7681/ from another device on your LAN).
Bridge networking and explicit port mapping:
docker compose --profile bridge up -d --buildThen use http://127.0.0.1:7681/ via the published port.
Stop:
docker compose downOverride the Git ref when building (Compose passes WHOSTHERE_REF by default as main):
docker compose build --build-arg WHOSTHERE_REF=v0.7.0
docker compose up -dWhosthere is fetched when the image is built, not at container start. To move to a newer upstream release or the latest main:
-
Update this repo (if you use git):
git pullin your clone so you have any Dockerfile or Compose changes. -
Rebuild without cache so the builder stage re-clones upstream instead of reusing an old layer:
docker compose build --no-cache docker compose up -d
If you use the bridge profile, add
--profile bridgeto both commands. -
Optional: remove the old image to free disk space after you are happy with the new one, for example
docker image pruneordocker rmion the previouswhosthere-webtty:localID.
If you pin a tag with WHOSTHERE_REF, bump it to the new tag (or set it back to main in docker-compose.yml / build args), then run the same build --no-cache and up -d steps.
To refresh ttyd only, rebuild still pulls the latest ghcr.io/tsl0922/ttyd:latest used in the Dockerfile when that stage is not cached; use --no-cache if you want to force that as well.
- Whosthere: github.com/ramonvermeulen/whosthere — features, CLI/TUI usage, configuration, and disclaimer apply to the application itself.