A DockTalk node is a small radio receiver at someone's home near the water. It listens to the harbor's VHF channels and streams them to DockTalk. This page explains the setup twice: once in plain English, once for engineers.
All off-the-shelf, no soldering, no tools. The exact shopping list with links is on the home page. Already own a Pi or an old Linux laptop? Then you only need the dongle and antenna, about $112. And if your spot is truly prime (waterfront, marina, liveaboard), apply: we cover the whole kit for locations like that.
Kit in hand? Follow the step-by-step setup guide — every click, nothing assumed, about 30 minutes.
Unplug it, plug it back in. Still down? Re-run the install command, it's always safe to run again. Still stuck? Email hello@docktalk.app with your node name and we'll sort it together. You never owe us debugging time.
Want in? Apply to host a node. Takes two minutes.
Push-only. Nodes hold one secret (their own push token), accept no inbound connections, and stream outbound over HTTPS. The server cannot reach a node at all. A node is "online" exactly while its audio is arriving.
ghcr.io/michaelxavierd/docktalk-node) built by CI from sources pinned to
exact upstream commits (rtlsdrblog/rtl-sdr-blog @ aed0ea1,
szpajder/RTLSDR-Airband @ 8e45496). A release tag is the only thing that
moves the fleet forward; v3.0.0 is the same bytes on every Pi, forever.stable tag, and report their version
with every push (X-DockTalk-Version); the fleet's versions are visible on
the public node API.# claim code is single-use and bound to your machine at first redeem curl -fsSL https://docktalk.app/install | sudo bash -s -- --claim DT-XXXX-XXXX --docker
It refuses to run on non-Debian/non-systemd machines before burning the claim code, generates the port's channel plan server-side from the live catalog, proves Icecast answers before proceeding, and ends by verifying end-to-end that audio is arriving (VERIFIED), or tells you exactly which service to look at.
| Endpoint | Purpose |
|---|---|
GET /install | the installer script (public; the claim code is the secret) |
POST /v1/nodes/claim | redeem claim code → node identity + push token |
GET /v1/nodes/conf | generated RTLSDR-Airband config for the port's channel plan |
PUT /v1/push/{mount} | the audio push (Bearer token; one long-lived request per channel) |
GET /v1/nodes | public roster: online state, channels live, agent version |
| Resource | 16-channel node |
|---|---|
| Power | ~4 to 6 W (Pi 4), ~2 W (Pi Zero 2 W with a trimmed plan) |
| Upload | ~32 kbps/channel → ~5 GB/day at 16 channels (continuous stream, silence included) |
| CPU | comfortable on a Pi 4; a Pi 3 or Zero 2 W prefers a smaller channel plan |
Found a hole? We want to hear it. The current architecture exists because a node host pushed back on the previous one. hello@docktalk.app