No description
  • JavaScript 92.8%
  • Dockerfile 7.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-21 10:53:06 -04:00
music initial push 2026-10-21 09:10:29 -04:00
streamer update DOCKERFILE with labels 2026-10-21 10:53:06 -04:00
.gitignore update README and docker-compose with non-international image 2026-10-21 10:43:17 -04:00
docker-compose.yml update README and docker-compose with non-international image 2026-10-21 10:43:17 -04:00
README.md update README and docker-compose with non-international image 2026-10-21 10:43:17 -04:00

WeatherStar 4000+ → Jellyfin Live TV

Turns WeatherStar 4000+ (ws4kp) into a 24/7 weather channel in Jellyfin. ws4kp uses National Weather Service data, so it covers US locations only.

How it works: the weatherstar-tv container opens the WeatherStar page in Chromium on a virtual display (kiosk mode, your location baked into the URL), captures it with ffmpeg, and serves it as a standard IPTV channel:

URL Purpose
http://<host>:9798/playlist.m3u M3U tuner for Jellyfin
http://<host>:9798/guide.xml XMLTV guide ("Local Forecast" every hour)
http://<host>:9798/stream.ts The live MPEG-TS stream (H.264 + AAC)
http://<host>:9798/snapshot.png Screenshot of what the browser is showing right now
http://<host>:9798/health Status JSON

Encoding only runs while someone is watching; it stops 20 s after the last viewer leaves.

1. Set your location

Edit docker-compose.yml → weatherstar-tv → environment:

  • Option A: set LOCATION_NAME (e.g. Indianapolis, IN, USA) and optionally LATITUDE/LONGITUDE for an exact point.
  • Option B: open the web UI (http://<host>:8080), search your city, pick displays/units, click Copy Permalink at the bottom, and paste it into PERMALINK. This captures every setting you chose. The streamer rewrites the host to the local ws4kp container automatically.

2. Start it

docker compose up -d --build

Give it ~30 seconds, then check http://<host>:9798/snapshot.png — you should see the forecast playing. If you'd rather not run your own copy of the web app, delete the ws4kp service and set WS4KP_URL: "https://weatherstar.netbymatt.com/".

3. Add it to Jellyfin

  1. Dashboard → Live TV → Tuner Devices → +
    • Tuner type: M3U Tuner
    • File or URL: http://<host>:9798/playlist.m3u
    • Leave Allow fMP4 transcoding container off. Save.
  2. Dashboard → Live TV → TV Guide Data Providers → + → XMLTV
    • File or URL: http://<host>:9798/guide.xml. Save.
  3. If the channel shows "no guide data", use Map Channels on the XMLTV provider and map WeatherStar 4000 → WeatherStar 4000.
  4. Dashboard → Scheduled Tasks → Refresh Guide → Run.

The channel appears under Live TV as channel 4000.

Use your server's LAN IP for <host>, not localhost — unless Jellyfin runs in the same compose project, in which case http://weatherstar-tv:9798/playlist.m3u works. If Jellyfin requests the playlist by one address but must stream from another, set PUBLIC_URL.

Options

Variable Default Notes
LOCATION_NAME Indianapolis, IN, USA Searched like the app's location box; ignored when PERMALINK is set
LATITUDE / LONGITUDE – Optional exact coordinates (skips the search)
PERMALINK – Paste from "Copy Permalink"
VIEW_MODE wide standard (4:3, 960×720), wide, wide-enhanced (16:9, 1280×720)
UNITS us us or si (metric)
SCAN_LINES false CRT scan-line effect
EXTRA_PARAMS – Raw query string, e.g. settings-speed-select=1.25
CHANNEL_NAME / CHANNEL_NUMBER / CHANNEL_ID WeatherStar 4000 / 4000 / weatherstar4000
FRAME_RATE 15 The display is mostly static; 10–15 is plenty
VIDEO_BITRATE 2000k
VIDEO_OPTIONS – Replaces the x264 encoder args (hardware encoding)
IDLE_STOP_SECONDS 20 Stop encoding after the last viewer leaves
RELOAD_MINUTES 360 Periodic page reload; 0 disables
PUBLIC_URL from request Base URL written into the playlist
CHROME_ARGS – Extra Chromium flags (e.g. --proxy-server=...)

Music

The app's own music player isn't captured. Put .mp3 files in the folder mounted at /music and restart the container; they loop as the channel's audio. ws4kp's royalty-free WeatherStar-style tracks are a good fit: the four in the ws4kp repo under server/music/default/, plus more in ws4kp-music. With no files, the stream carries a silent audio track (Jellyfin clients behave better with one).

Resources

Roughly 1 CPU core and ~600 MB RAM while streaming at 15 fps with software x264; much less when idle.

Troubleshooting

  • Snapshot shows "The National Weather Service isn't responding": the app retries on its own; check the ws4kp container can reach api.weather.gov.
  • Snapshot shows the location prompt: the location search failed. Set LATITUDE/LONGITUDE, or use a permalink.
  • Channel spins/buffers in Jellyfin: try lowering FRAME_RATE to 10, and confirm curl http://<host>:9798/stream.ts -o x.ts from the Jellyfin host produces a growing file.
  • Logs: docker logs -f weatherstar-tv