WeatherStar 4000

Latest update on ws4channels:

03/07/2026 Attempt to default the output to widescreen, randomize music, and expand guide data compatiability for other programs like xTeVe, Telly, Threadfin, Plex, Jellyfin ect.

Please update your WS4KP container to use the following variable:

WSQS_settings_wide_checkbox=true

Please note that this variable goes in the WS4KP container not this ws4channels container.*

Use the :latest tag for these changes.

Please forgive the stupid question.

I set this up by doing the Docker setup shown above, and my streamed WS 4000 had a big white bar on the right quarter of the screen.

Your instructions say to Please update your WS4KP container to use the following variable:

WSQS_settings_wide_checkbox=true"

Where do I do this? I have been working on this for about 12 hours now and I haven't found where to put this.

Here is the way I installed mine. (It works great except for the white on the right) :smile:

docker pull ghcr.io/netbymatt/ws4kp
docker run -d \
  --name ws4kp \
  --restart unless-stopped \
  -p 9090:8080 \
  ghcr.io/netbymatt/ws4kp
docker pull ghcr.io/rice9797/ws4channels:latest
sudo docker run -d   --name ws4channels   --restart unless-stopped   --memory="1096m"   --cpus="1"   -p 9798:9798   -e ZIP_CODE=06111   -e WS4KP_HOST=192.168.86.101   -e WS4KP_PORT=9090   ghcr.io/rice9797/ws4channels:latest

Thanks for your help!

Try:

docker run -d \
  --name ws4kp \
  --restart unless-stopped \
  -p 9090:8080 \
  -e WSQS_settings_wide_checkbox=true \
  ghcr.io/netbymatt/ws4kp
2 Likes

You want to do it like @bnhf explained lt. let me know how it goes.

1 Like

That worked, thanks!

1 Like

We are good now, thanks for the great program!

1 Like

Any ideas on how I might be able to automate a way to feed a lat/long into this and restart the container every hour or so?
My thought is to have a standard WS4k channel active for my home location, but also have a WS4k Travel channel that reports local weather wherever I am. I can probably pull my location from either dawarich or home assistant easily, but am not savvy enough to figure out how to push that into a docker environment variable and a commanded restart of a portainer stack.

I just found out about weather.com’s ā€œretroā€ option:

1 Like

I love this whole WS4KP / wschannels setup!

For me it works really well when I'm just showing it off to someone, but when I let it run continuously, I get issues.

I get the whole "racing clock" issue where the stream is way behind, catches up to real-time, and then the stream freezes and restarts to a position 30 to 180 minutes behind.

To troubleshoot this, I have tried increasing and decreasing CPU and Mem (individually) as suggested here, and have also tried running the containers on different hosts:

  • one is a Debian VM with four 3Ghz cores and 16GB of RAM
  • the other host is my Synology NAS with four 2Ghz CPUs and 2GB RAM and an Intel GPU

I get the exact same results with both hosts

For clients, I've tried using VLC on my computer, Televisio on my Android devices, and Plex on Android and Roku, as well as the Plex Web UI. Same exact results on everything.

Here is where it gets weird:

During troubleshooting, for giggles, I stopped the WS4KP container and ws4channels container, came back about 45 minutes later, started only the ws4channels container, started the stream from multiple clients, and it's still streaming content!

Even with the WS4KP container stopped for about 45 minutes, I'm still seeing the Hourly Forecast from an hour prior.

I don't know a lot about Docker or the internals of what's going on, but to me this suggests that something is caching this data somewhere. As far as I know, neither VLC, Televiso, nor Plex are doing any caching.

Is there something within ws4channels that is caching the stream? Or a setting to tell clients not to cache? I would like to turn caching off and see if it helps.

It seems that even when this setup "works", the ws4channels stream will show one time, and the WS4KP WebGUI shows the current time (usually two minutes faster than ws4channels)

As far as network speeds, WiFi is 500mbps and wired is 10gbps. latency to those two hosts mentioned above is two to four milliseconds.

I'd really love to have this working so I can do a routine that starts my TV and navigates to this first thing in the morning so it's one when I walk into the living room, and also to show it off to people :slight_smile:

Thanks in advance for help/advice with this!

--Tony

I haven’t seen this in a long while. A minute or two drift is normal but I’ve never seen 30+ min. I did do an update recently in preparation for upcoming ws4kp changes but I don’t think that would cause this.

There is some HLS caching but nothing that should cause your issues. I’ll make some changes to caching and investigate capture loop drift when I get some time. It may be a few weeks.

In the meantime make sure you are on the latest versions of both containers and try using the new permalink environment variable and see if this helps.

My container runs 24/7 for months and I don’t have any drift beyond the initial start up of a minute behind so your experience is not normal. I’ll respond back here when I do an update.

If you could post your ws4channels container logs when it’s acting up that would be helpful.

1 Like

Thank you for replying so quickly!!

To make sure that I'm on the latest, I blew away all the Docker containers and images on this machine (but not ws4channels' persistent volume), pulled the latest WS4KP and latest ws4channels images, made containers, and started them.

I confirmed that they're on the latest by matching the build date to the dates in GitHub.

When I connect VLC to ws4channels, the clock was 30 minutes behind. This makes me think that there's some part of ws4channels caching data (puppeteer maybe?) in the persistent volume. So maybe I either have to adjust ws4channels not to cache data, or I have to adjust WS4KP to tell clients not to cache data? Or both?

I must have my logging set to minimal, because nothing ever shows up there other than that it was started. When I stop the container, I do get some output in the console. It mentions a possible memory leak! I've pasted it below:

  Puppeteer old Headless deprecation warning:
    In the near future `headless: true` will default to the new Headless mode
    for Chrome instead of the old Headless implementation. For more
    information, please see https://developer.chrome.com/articles/new-headless/.
    Consider opting in early by passing `headless: "new"` to `puppeteer.launch()`
    If you encounter any bugs, please report them to https://github.com/puppeteer/puppeteer/issues/new/choose.

(node:1) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
(node:1) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(node:1) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGTERM listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(node:1) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGHUP listeners added to [process]. Use emitter.setMaxListeners() to increase limit

I was the only listener btw. Just my one VLC instance running on my laptop.

Thanks again!

--Tony

I don’t actually ship ws4channels with a persistent volume. Did you create one yourself? If so, what path inside the container is it mounted to?

This just doesn’t make any sense, if you would stop the containers delete the persistent volume. Start up ws4kp and navigate to it with your laptop browser, choose the tiles you want to include, and create a permalink url. Start up ws4channels after including the permalink url environment variable. PERMALINK_URL=

1 Like

I don’t actually ship ws4channels with a persistent volume. Did you create one yourself? If so, what path inside the container is it mounted to?

I did create one. I'm gonna be honest, I have no recollection of where I got this variable from, but I did it because I read somewhere that this was the key to making custom music files persist across restarts.

-v ws4channels_app:/app

At first, I didn't even know where that mapped to, but I figured it out yesterday:

/var/lib/docker/volumes/ws4channels_app_data

Yes sir, I agree

So today I deleted every container, image, and volume, and started from scratch. I'm totally excluding the -v volume variable too to eliminate persistent storage as a possible cause.

I used the PERMALINK_URL= environment variable, and it runs but it still has the racing clock and stale data problem.

I replaced it with the ZIP_CODE variable, and runs but it still has the racing clock and stale data problem.

I also tried running it without the PERMALINK_URL nor ZIP_CODE variables just to see what would happen, and it runs with the location set to L.A., but still has the racing clock / stale data

Here is how I configured each for testing:

WS4KP:

docker run \
  --restart unless-stopped \
  --memory="1096m" \
  --cpus="1.0" \
  -p 9090:8080 \
  ghcr.io/netbymatt/ws4kp

ws4channels:

docker run \
  --restart unless-stopped \
  --memory="1096m" \
  --cpus="1.0" \
  -e PERMALINK_URL="http://[REDACTED]:9090/index.html?hazards=true&current-weather=true&latest-observations=true&hourly=true&hourly-graph=true&travel=true&regional-forecast=true&local-forecast=true&extended-forecast=true&almanac=true&spc-outlook=true&radar=true&kiosk=true&stickyKiosk=false&customTextEnable=false&speed=1.00&viewMode=standard&units=us&txtLocation=[REDACTED]&customText=&mediaVolume=0.75&wide=false&portrait=false&enhanced=false&scanLines=true&latLonQuery=[REDACTED]" \
  -e WS4KP_HOST="[REDACTED]" \
  -e WS4KP_PORT="9090" \
  -p 9798:9798 \
  ghcr.io/rice9797/ws4channels

(those are internal IP addresses that I redacted)

Also, once I start the ws4channels container and it shows "started FFmpeg - Version 2.0", the stream errors out for the first three minutes, and the clock shows three minutes behind once it does start.

Pushed a new update use latest tag. Logs should show version 2.1 for the latest. Let me know how it goes. :crossed_fingers:

Thank you, I am immensely appreciative of your help

Unfortunately, updating had no effect.

I can confirm that I'm now on version 2.1

Version 2.1 | Running with 1 CPU cores, 1096MB RAM
Streaming server running on port 9798
[2026-07-12T02:37:21.932Z] Launching browser (launch #1, reason: initial startup)

Fresh image and containers for both WS4KP and ws4channels, no persistent volumes

For the heck of it, I also tried on my laptop, since the VM doesn't have a graphics adapter, and whether or not my NAS was using its graphics card is dubious. Unfortunately, it did not work on my laptop with the graphics card hardware acceleration turned on either.

Thank you again for looking in to this! (on a weekend no less!)

--Tony

Sent you a PM for troubleshooting