Skip to content

Add Open Waters as a feed target - #230

Open
bkeepers wants to merge 2 commits into
sdr-enthusiasts:mainfrom
openwatersio:aiscast
Open

Add Open Waters as a feed target#230
bkeepers wants to merge 2 commits into
sdr-enthusiasts:mainfrom
openwatersio:aiscast

Conversation

@bkeepers

Copy link
Copy Markdown

Open Waters (https://openwaters.io/ais/) is an open AIS aggregation server at ais.openwaters.io: open government feeds plus volunteer receivers, re-served by bounding box over WebSocket and a native API, with every message tagged with the station it came from. Data is not relicensed; the code is MIT (https://github.com/openwatersio/aiscast).

This adds it as a feed target, following the conventions already in this container:

  • OPENWATERS_SHAREDATA=true is all an operator needs to set. On first start the container asks the server for a token (POST /v1/keys), stores it in /data/openwaters, and feeds over HTTPS with AIS-catcher's -H … USERPWD x:<token> GZIP on INTERVAL 15. The station therefore has a stable identity across restarts and IP changes, and earns the server's feeder tier (raw deduplicated NMEA back, higher limits) by contributing. If the token cannot be obtained (offline at start, /data not writable), it logs a warning and feeds anonymously over UDP to ais.openwaters.io:10110 instead, so it always feeds.
  • OPENWATERS_TOKEN=<token> uses an existing token and skips the generated one.
  • OPENWATERS_URL, OPENWATERS_UDP_HOST, OPENWATERS_UDP_PORT point at another instance of the server.

Nothing is enabled unless one of the two variables is set, and a station never feeds over both paths at once.

Notable changes:

  • the aggregator block in rootfs/etc/s6-overlay/scripts/aiscatcher
  • openssl added to KEPT_PACKAGES for the key+token generation (curl and jq are already in the base image)
  • added a row in the README table, and the two variables in the README and config-examples env/compose samples.

I maintain the Open Waters side. The key-generation and token-request commands were run as written against the live server, and as were the AIS-catcher -H and -u invocations, but I have not yet run a full build of this image with the change.

…EDATA=true creates a station token and feeds over HTTPS (UDP fallback); OPENWATERS_TOKEN to supply your own
Copilot AI lite review requested due to automatic review settings August 22, 2026 15:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Open Waters (ais.openwaters.io / aiscast) as an optional AIS feed target in this container, including automatic station token creation/persistence and an anonymous UDP fallback.

Changes:

  • Add Open Waters feed configuration logic to the aiscatcher s6 script (token-based HTTPS feed, token generation/storage, UDP fallback).
  • Add openssl to the image to support Ed25519 key generation for token requests.
  • Document new Open Waters environment variables in the README and example compose/env files.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
rootfs/etc/s6-overlay/scripts/aiscatcher Implements Open Waters token creation/loading and selects HTTPS vs UDP feeding.
Dockerfile Adds openssl CLI dependency needed for Ed25519 key generation.
README.md Documents Open Waters support and adds it to the aggregator table and env examples.
config-examples/docker-compose.yml.sample Adds Open Waters env vars to the sample compose file.
config-examples/.env.sample Adds Open Waters env vars to the sample env file.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread rootfs/etc/s6-overlay/scripts/aiscatcher Outdated
… key and token owner-only, silence jq on a bad response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants