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

You are trying to install an outdated and unsupported third party docker image, from an outdated guide.

Use my sample Stacks/compose file in the first post, and follow this instruction to rebuild the image for the Pi processor.

So like this:

version: "3"
services:
  echo-speaks-server:
    container_name: echo-speaks-server
    build: https://github.com/tonesto7/echo-speaks-server.git
    restart: unless-stopped
    
    # Network mode host allows IP to be automatically detected
    # Windows MUST change from host to bridge mode and set IP in settings below
    network_mode: host
    #network_mode: bridge
    # Port mappings are ignored with host mode
    ports:
      - 8091:8091   # WebUI must match PORT below
    
    # Set environment variables
    environment:
      - useHeroku=false
      - hubPlatform=Hubitat

      #### UNCOMMENT Options to use them (remove the # and keep the -) ####
      ## Host IP Address Override if needed
      ## MUST Uncomment next line and set IP when using network_mode: bridge
      #- ipAddress=192.168.1.XXX

      ## Change WebUI Port if needed
      #- PORT=8091

    # Keeps login and session if re-deployed
    volumes:
      - data:/root
    
volumes:
  data: {}
1 Like

A couple of questions on this.
Is the IP address that needs to be entered the local IP address behind the NAT (i.e. 192.168.x.x) or is it the public IP address visible from outside the NAT?

I can probably answer this once I get the answer above, but do the HE hub and the Echo Speaks server directly communication over the local LAN? I have multiple VLANs and the server I was going to use is on a different VLAN than my HE hub which are isolated from each other.

If they need to be on the same VLAN I will probably dig out an old Raspberry Pi and try to get it to work.

Its the local host LAN IP. By default the app on HE will give you a cloud link to give to the server, so it will connect to your hub via the cloud connection. But I think for the hub reaching back out to the server it will try to use a local connection. So you may need some local communication for it to work.

I've been busy with other things and finally back to trying to get the Pi working... Note I had docker desktop working...
On the Pi, trying the npm and nodejs route..got everything installed and can open up a window to the pi server and sign into Amazon and successfully get cookies. then reconfigured the echo speak app to point to the pi and when I click on sign in from the echo speak app ..i get


when i click on done I get

An unexpected error has occurred trying to load the app. Check Logs for more information.

Looking in the logs, i see
app:8622024-02-17 12:44:11.485 AMwarn EchoApp (v4.2.3.0) | Echo Speaks Authentication is no longer valid... Please login again and commands will be allowed again!!! | Method: (getEchoDevices)

app:8622024-02-17 12:44:11.483 AMwarn EchoApp (v4.2.3.0) | Echo Speaks Authentication is no longer valid... Please login again and commands will be allowed again!!! | Method: (checkGuardSupport)

Note I did try rebooting hub
I then pointed the echo speak to my docker install that was working and get the same blank window w done.

Sorry to keep asking questions but any suggestions?

Did you revert the Echo Speaks code on HE back to original code? Use Repair in HPM to reinstall it fresh from github.

1 Like

OMG, they BOTH work now.. Thanks a million!
p.s. this has been driving me crazy for a long time.... appreciate the help.

oh one more q, my nephews router does not let me make the IP static (for the PI)... is there any ability to use a name and not an IP ?

You could try setting that ipAddress variable on the server to a hostname, not sure if it will work or not. That is basically what the server will then tell the HE app how to reach it. Not sure if it will work.

or get a cheap 2 bay nas for him, and help him set it up.

In case anyone else is having this problem - the docker app seems to only work when on the "host" network (and I'm just now realizing that there's a "network_mode: bridge" and a method to set a static IP in the yaml that I was missing). In any case, If you're using host mode and you're running any other web services on the host IP that have also set cookies, the other cookie data seems to interfere with this sign-in process. My workaround was:

  1. Restart the docker container
  2. Open Hubitat interface in a new Private/Incognito browsing session
  3. Navigate to the echo speaks app and follow the login link/instructions from there
  4. Close the login popup (if it doesn't close on its own)
  5. Back on the Echo Speaks app tab in your incognito browser, click "Next" (if it didn't progress on its own).

It worked immediately when I did that. Tested and I was able to get speech exactly as expected.

2 Likes

Hi I have Docker desktop installed and using powershell issued the command ...but getting an error...any suggestions would be appreciated

You have the image path incorrect, missing the 7

tonesto7/echo-speaks-server
1 Like

omg...you are a lifesaver

1 Like

Not sure what I am doing wrong... I cant get it to work.
Synology Docker.
|App:|v4.2.4.0|
|Device:|v4.2.4.0|
|Server:|v2.8.0|

It keeps saying that I am not logged into Amazon although the server says I am.

Here is my callback URL: http://192.168.1.31/apps/api/198/receiveData?access_token=ba3dfbdc-ca54-4324-a9e0-XXXXce4568ab

Edit: typo. I already edited https to http when I posted. screenshot was wrong.

Try http for the callback instead of https

Reboot your ES server. If possible, try using a different browser. I had this issue when trying to set things up using Chrome. Firefox worked best in my situation.

4 Likes

yes, firefox did the trick. Weird. Thank you!

1 Like

Did you ever get the proper format for the callback URL? Mine also looks like your format and I have not been able to get it to work.
Thanks

Actually, I just figured it out. Had to change HTTPS to HTTP and then it worked fine. Hope this helps someone out.

2 Likes

Just wanted to give a heads up that I was able to retire my Synolgoy / Docker image of Echo Speaks server yesterday and replace it with a native LXC container in Proxmox. The instructions for Linux only install worked well:

I created a Debian 12 container with small drive (2 GB) and small memory (1 GB) to cover the install. Setup a network interface on the same segment and VLAN as my existing Hubitat that is running Eco Speaks and then ran the command to install Node and then the server code. Tested that the application was running by going into the web page via the IP address of the container and everything looked good.

Repointing the Hubitat at the new server was simple by resetting the server connection in the Hubitat Echo Speaks app and then running though the setup again. I did have the issue where "not logged in" wasn't going away and a quick cycle of the Proxmox container after the callback and login was completed appeared to clear up the message on the Hubitat.

Now that it's been up overnight and seems to be stable I am going to reduce the memory needed to 512 MB since it seem to take only 90 MB of RAM to run the server. I also setup high availability in Proxmox to allow the container to move from one Proxmox server to another in case of a failure.

image

1 Like