[GUIDE] Echo Speaks Server on Docker (or without)

It’s very odd to me that you had to go through this. I’ve had my ES server and the app in Hubitat setup/configured for ages now and have never had any issues like this. It just runs and does its thing. I was shocked that it continued to work without a hitch when I updated to Alexa+.

ya and only on one my my 2 hubs that I use it. I've also had it working for years with no issue other than the odd time Amazon cloud had issues. it continues to work fine on my other hub. but on this one once the ,408 and expired login error in the docker container occured that was it nothing else short of resetting the server with new callback and cookie worked


the initial error point I believe is the docker/container error in the black log window posted just above

I have been running the integration on a LXC with Proxmox for over two years without fail. But this week I was shocked that none of my Echo’s played a weather alert that showed up and the app showed the cookie didn’t get refreshed. I had to go back into the Echo Speaks Server and re-log into the service and all seems to be well. Don’t know what triggered this I rarely restart any services on my Proxmox cluster unless there is a security patch. I am wondering if something at Amazon forced the re-login?

Mine just quit working yesterday. Restarted the container, re-logged in, nothing seems to be working this morning.

I don’t have time right now to troubleshoot this. Will check back here to see if anyone else has done anything that works and go from there.

Update: looked in Portainer logs:

2026-06-06T13:49:01.476142300Z getRemoteCookie...
2026-06-06T13:49:01.476514226Z 6-6-2026 - 1:49:01pm debug: 	/config page requested
2026-06-06T13:49:01.557140787Z 6-6-2026 - 1:49:01pm info: 	Checking for Server Version Updates...
2026-06-06T13:49:01.829113775Z Alexa-Cookie: Use as Login-Amazon-URL: amazon.com
2026-06-06T13:49:01.829133978Z Alexa-Cookie: Use as Base-Amazon-URL: amazon.com
2026-06-06T13:49:01.829137601Z Alexa-Cookie: Use as User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
2026-06-06T13:49:01.829140671Z Alexa-Cookie: Use as Accept-Language: en-US
2026-06-06T13:49:01.829142996Z Alexa-Cookie: Proxy-Mode enabled if needed: 192.168.1.100:8091 to listen on 0.0.0.0
2026-06-06T13:49:01.829145252Z Proxy Init: loaded temp data store ■■■ fallback former data
2026-06-06T13:49:01.829147408Z Proxy Init: reuse frc from former data
2026-06-06T13:49:01.829149390Z Proxy Init: reuse map-md from former data
2026-06-06T13:49:01.829151570Z Proxy Init: reuse deviceId from former data
2026-06-06T13:49:01.829153658Z 6-6-2026 - 1:49:01pm error: 	generateAlexaCookie: You can try to get the cookie manually by opening http://192.168.1.100:8091/ with your browser.
2026-06-06T13:49:01.829156083Z 6-6-2026 - 1:49:01pm debug: 	Alexa Login Status: There was an error
2026-06-06T13:49:02.070209678Z 6-6-2026 - 1:49:02pm info: 	Server Version is Up-to-Date.
2026-06-06T13:49:02.169907730Z 6-6-2026 - 1:49:02pm info: 	** ServerVersion Sent to Hubitat Endpoint Successfully! **
```

Then after a wall of large text blocks I get this at the end:

```
2026-06-06T13:49:41.659416578Z Alexa-Cookie: Response (401)
2026-06-06T13:49:41.659551138Z Get User data Response: ""
2026-06-06T13:49:41.659728622Z 6-6-2026 - 1:49:41pm error: 	generateAlexaCookie: Unexpected end of JSON input
2026-06-06T13:49:41.659994935Z 6-6-2026 - 1:49:41pm debug: 	Alexa Login Status: There was an error
2026-06-06T13:49:41.948702418Z 6-6-2026 - 1:49:41pm info: 	** ServerVersion Sent to Hubitat Endpoint Successfully! **
2026-06-06T13:49:46.073635916Z getRemoteCookie...
2026-06-06T13:49:46.074162023Z 6-6-2026 - 1:49:46pm debug: 	/config page requested
2026-06-06T13:49:46.104943838Z 6-6-2026 - 1:49:46pm info: 	Checking for Server Version Updates...
2026-06-06T13:49:46.290185425Z Alexa-Cookie: Use as Login-Amazon-URL: amazon.com
2026-06-06T13:49:46.290238744Z Alexa-Cookie: Use as Base-Amazon-URL: amazon.com
2026-06-06T13:49:46.290243837Z Alexa-Cookie: Use as User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
2026-06-06T13:49:46.290246462Z Alexa-Cookie: Use as Accept-Language: en-US
2026-06-06T13:49:46.290248460Z Alexa-Cookie: Proxy-Mode enabled if needed: 192.168.1.100:8091 to listen on 0.0.0.0
2026-06-06T13:49:46.290250861Z Proxy Init: loaded temp data store ■■■ fallback former data
2026-06-06T13:49:46.290252975Z Proxy Init: reuse frc from former data
2026-06-06T13:49:46.290255046Z Proxy Init: reuse map-md from former data
2026-06-06T13:49:46.290256730Z Proxy Init: reuse deviceId from former data
2026-06-06T13:49:46.290258527Z 6-6-2026 - 1:49:46pm error: 	generateAlexaCookie: You can try to get the cookie manually by opening http://192.168.1.100:8091/ with your browser.
2026-06-06T13:49:46.290260688Z 6-6-2026 - 1:49:46pm debug: 	Alexa Login Status: There was an error
2026-06-06T13:49:46.498158307Z 6-6-2026 - 1:49:46pm info: 	Server Version is Up-to-Date.
2026-06-06T13:49:46.649451175Z 6-6-2026 - 1:49:46pm info: 	** ServerVersion Sent to Hubitat Endpoint Successfully! **
```


The solution here was to use a PRIVATE browser session and do the login to AMZ. Working again.

my 3nd hub just errored out the same way. sigh.

but this one at least didnot have the proxy error on the login url.. so i could just relogin without resetting the server and getting a new callback url

Looks like mine crapped out just after midnight this morning. I’ll get to it after work today.

*Edit*

Looks like just logging back into Amazon via my server URL did the trick. First time I’ve had to login since I’ve had this all setup and configured.

I’ve had the 408 failur twice now over the past 2 weeks.
Fix both times has been to log back into Amazon with username/pw and 2fa code.

Working again for now.

Perhaps there’s a longer/shorter timeout that needs to be implemented. ¯\_(ツ)_/¯

The default cookie refresh interval is 5 days. I believe you can set it to anything you want.

Mine is set to the default (5 days) as far as checks go. My thought was more on the request call timeframe after the 5 days.

For instance, instead of it chekcking and failing, then checking again after a set time, it’s prolonged for an hour in case server load is the issue.

If 5 days is too long before refreshing and Amazon is requiring authentication more often, I’ll dial it back to 4 days, test, and see what happens.

Up until this week, I’ve never had the cookie not refresh in all the time I’ve been running Echo Speaks. I’m not convinced this is a server load issue.

We all need to keep in mind that while Echo Speaks is a great app, it’s not an “official” integration. It is essentially a hacked way of doing what it does, and we’ve all been doing what we can to keep it running. We all know that Amazon is continually making changes that break things one day and fix things the next. I hate to say it, but I think it’s only a matter of time until it stops working fully.

Right. I agree. I also don’t believe it’s a server load issue. More than likely an auth issue with things on Amazon’s backend.

Prior to the failure 408, it’s been runnnig for years without issue. But, it’s happened twice in the last 2 weeks. Going to keep monitoring and authenticating until it doesn’t.

I run cookie server in Docker on my Qnap. After I set it, it's working for somes days but it failed to each refresh… Someone know why?

Looks like Amazon may have changed something in the refresh. Lot of discussion over here:

I was also running an Echo Speaks Docker image as a QNAP container. I found this implementation to be hit-or-miss. I dislike tweaking Docker images when they don't work right out of the box if I can avoid it.

I ended up moving the Echo Speaks application to a node version running on a Raspberry Pi server I had available. It has been 99% up. It is also easier to tweak and monitor the logs in case the cookie refresh fails.

I feel like we're all on borrowed time with this great application as Amazon changes its backend API calls.

looks misconfigured to me. if u are running in docker it should not be referencing heroku. (see your log entry) you forgot to turn off that toggle during setup.

I don’t saw Heroku in my log and Heroku isn’t selected. Maybe I miss an other setting?

Probably not. Amazon seems to have made a change that is causing the cookie to not automatically refresh. You need to log back in manually to get the cookie to refresh. If you look at thte thread posted above by @thebearmay you can find how to change the refresh interval to 90 days.

I’m playing around with the server-side code for the refreshes. With some modifications, the /refreshCookie endpoint works. It refreshes the cookie … except for the refreshToken. I’m unsure about the impact.

Hi, I have echo-speaks-server v2.8.0 on Docker-RPI (build: GitHub - tonesto7/echo-speaks-server · GitHub) that I recently updated to, because I was receiving 404 error when attempting to re-login to Amazon from v2.7.2 this week (Echo Speaks stopped working at least 3 weeks ago but I just noticed now after being out of town). This was attempted with Incognito browser starting from Hubitat Echo Speaks app, then clicking through to my locally hosted echo-speaks-server and attempting to log in to Amazon again.

Prior to the 404 error, v2.7.2 was working for years. In looking at the container logs, it shows that in spite of ipAddress env variable specified, the echo-speaks-server is flip-flopping between a valid IP and the loopback interface around every 6th or 7th iteration. Can someone help me out?


getRemoteCookie...

6-25-2026 - 1:16:03pm debug: config(/) page requested

Alexa-Cookie: Use as Login-Amazon-URL: amazon.com

Alexa-Cookie: Use as Base-Amazon-URL: amazon.com

Alexa-Cookie: Use as User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

Alexa-Cookie: Use as Accept-Language: en-US

Alexa-Cookie: Proxy-Mode enabled if needed: 192.168.1.2:8091 to listen on 0.0.0.0

Proxy Init: loaded temp data store ■■■ fallback former data

Proxy Init: reuse frc from former data

Proxy Init: reuse map-md from former data

Proxy Init: reuse deviceId from former data

6-25-2026 - 1:16:04pm error: generateAlexaCookie: You can try to get the cookie manually by opening http://192.168.1.2:8091/ with your browser.

6-25-2026 - 1:16:04pm debug: Alexa Login Status: There was an error

6-25-2026 - 1:16:04pm info: ** ServerVersion Sent to Hubitat Endpoint Successfully! **

6-25-2026 - 1:16:10pm debug: set host url: 127.0.0.1

getRemoteCookie...

6-25-2026 - 1:16:11pm debug: config(/) page requested

Alexa-Cookie: Use as Login-Amazon-URL: amazon.com

Alexa-Cookie: Use as Base-Amazon-URL: amazon.com

Alexa-Cookie: Use as User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

Alexa-Cookie: Use as Accept-Language: en-US

Alexa-Cookie: Proxy-Mode enabled if needed: 127.0.0.1:8091 to listen on 0.0.0.0

Proxy Init: loaded temp data store ■■■ fallback former data

Proxy Init: reuse frc from former data

Proxy Init: reuse map-md from former data

Proxy Init: reuse deviceId from former data

6-25-2026 - 1:16:11pm error: generateAlexaCookie: You can try to get the cookie manually by opening http://127.0.0.1:8091/ with your browser.

6-25-2026 - 1:16:11pm debug: Alexa Login Status: There was an error

6-25-2026 - 1:16:11pm info: ** ServerVersion Sent to Hubitat Endpoint Successfully! **

incognito didnt work for me.. try a different browser ie chrome vs ie and also you dont need to go through the link in the app . you can type in directly http://192.168.1.2:8091

also the 2nd log entry with 127.0.0.1 instead of the 192 looks like you munged up your configuration.