Add Open Waters as a feed target - #230
Open
bkeepers wants to merge 2 commits into
Open
Conversation
…EDATA=true creates a station token and feeds over HTTPS (UDP fallback); OPENWATERS_TOKEN to supply your own
There was a problem hiding this comment.
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
aiscatchers6 script (token-based HTTPS feed, token generation/storage, UDP fallback). - Add
opensslto 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.
… key and token owner-only, silence jq on a bad response
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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=trueis 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,/datanot writable), it logs a warning and feeds anonymously over UDP toais.openwaters.io:10110instead, so it always feeds.OPENWATERS_TOKEN=<token>uses an existing token and skips the generated one.OPENWATERS_URL,OPENWATERS_UDP_HOST,OPENWATERS_UDP_PORTpoint 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:
rootfs/etc/s6-overlay/scripts/aiscatcheropenssladded toKEPT_PACKAGESfor the key+token generation (curl and jq are already in the base image)config-examplesenv/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
-Hand-uinvocations, but I have not yet run a full build of this image with the change.