{"id":16111326,"url":"https://github.com/bripkens/web-based-elgato-control-panel","last_synced_at":"2026-03-18T18:00:13.087Z","repository":{"id":66009332,"uuid":"463015955","full_name":"bripkens/web-based-elgato-control-panel","owner":"bripkens","description":"Web hosted control panel for the Elgato lighting products that does not rely on mDNS","archived":false,"fork":false,"pushed_at":"2022-02-25T07:15:53.000Z","size":318,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-21T18:06:30.977Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bripkens.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-24T05:07:41.000Z","updated_at":"2022-05-16T02:09:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"5208d6b1-9805-40f0-a4d2-bd5fe7d371b1","html_url":"https://github.com/bripkens/web-based-elgato-control-panel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bripkens/web-based-elgato-control-panel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bripkens%2Fweb-based-elgato-control-panel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bripkens%2Fweb-based-elgato-control-panel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bripkens%2Fweb-based-elgato-control-panel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bripkens%2Fweb-based-elgato-control-panel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bripkens","download_url":"https://codeload.github.com/bripkens/web-based-elgato-control-panel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bripkens%2Fweb-based-elgato-control-panel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29618316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T19:41:45.912Z","updated_at":"2026-02-19T14:32:14.665Z","avatar_url":"https://github.com/bripkens.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Web-based Elgato Control Panel\n\n## Why\n\nThe [Elgato control center software] can be used to control various Elgato products. Among others their [key lights]. Elgato's control center software needs to be installed on a desktop computer or mobile phone to function. The software does so pretty flawlessly and works nice, but it does have one restriction that encouraged the creation of this project:\n\n**Home networks leveraging [virtual LANs] (VLANs) are not supported!** This means that it is not possible to place the Elgato lighting products into a tagged network while having the trusted desktop computers in an untagged network. [Multicast DNS] (mDNS) is the reason why it doesn't work. MDNS is used by the Elgato products to identify under which IP address the products are reachable in the local network. Unfortuantely, mDNS does not work across networks unless you establish certain mDNS forwarder/gateway technologies.\n\n![Screenshot of Wireshark showing the Elgato key light products exchanging multicast DNS messages](./images/mdns-wireshark.png)\n\n[Elgato control center software]: https://help.elgato.com/hc/en-us/sections/360004115951-Elgato-Control-Center-Software\n[key lights]: https://www.elgato.com/en/key-light\n[virtual LANs]: https://en.wikipedia.org/wiki/Virtual_LAN\n[Multicast DNS]: https://en.wikipedia.org/wiki/Multicast_DNS\n\n## What\n\nThis project is a small web-based app through which the Elgato lighting products can be controlled. In contrast to Elgato's own control center software, this app does not rely on mDNS. Instead, it requires configuration to know which lights are deployed in the local networks and how to reach them. This makes it less convenient than Elgato's own software, but allows it to operate in securer network configurations, e.g., when VLANs are leveraged.\n\nThe app can be run either directly as a Node.js process or deployed through Docker, e.g., on a Raspberry PI. See the following [Usage](#usage) section to learn more.\n\n![Screenshot of the software explained by this readme. Showing two lights called left and right being controllable.](./images/screenshot.png)\n\n## Usage\n\n### Configuration\n\nThis project requires the following environment variables to operate. During local development (`npm run dev`), this configuration can be specified through a `.env` file. Outside of local development environment variables need to be manually specified as shown below.\n\n```\nexport PORT=8080\nexport LIGHTS='[\n  {\n    \"name\": \"left\",\n    \"ip\": \"192.168.20.20\",\n    \"port\": 9123\n  },\n  {\n    \"name\": \"right\",\n    \"ip\": \"192.168.20.21\",\n    \"port\": 9123\n  }\n]'\n```\n\n### Starting Locally\n```sh\n# Install dependencies\nnpm install\n\n# Add configuration\ncp .env.sample .env\n$EDITOR .env\n\n# Start\nnpm run dev\n```\n\n### As Docker\n\n#### Build the Docker Image\n\n```sh\ndocker build \\\n  -t ecp \\\n  .\n```\n\n#### Running the Docker Container\n\n```sh\ndocker run \\\n  --env 'LIGHTS=[{\"name\": \"left\", \"ip\": \"192.168.20.20\", \"port\": 9123},{\"name\": \"right\", \"ip\": \"192.168.20.21\", \"port\": 9123}]' \\\n  --name ecp \\\n  --init \\\n  --publish 8080:8080 \\\n  --memory \"100M\" \\\n  --memory-swap \"100M\" \\\n  --restart always \\\n  ecp\n```\n\n## Leveraged Techniques\n\nAn avid reader stumbling over the implemented techniques might be wondering why this project isn't using an SPA framework, CSS-in-JS or something other 2020+ techniques. These are my reasons:\n\n - The modern web technology stack comes with a slew of dependencies that constantly have security issues and breaking changes. By implementing it the way it is, I do not have to spend time frequently upgrading/maintaining these.\n - To reduce the CPU, memory and storage footpint on my Raspberry PI.\n - To make this project as small as possible (code-wise). I will only be rarely maintaining this project (hopefully). Having less code means I will have an easier time understanding what the hell I did `x` years ago 😅.\n - I have been working with web technologies since 2002 and somehow I haven't implemented a single classical server-rendered app since ~2014! I have been longing for this simplicity for quite some time. This project gave me an excuse to apply this technique again ❤️.\n\n## License, Ownership and Trademarks\n\nThe Elgato company and project names as well as the favicon are owned by Corsair Gaming Inc. I only leverage them to help the community understand this project.\n\nEverything else is [MIT licensed](/LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbripkens%2Fweb-based-elgato-control-panel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbripkens%2Fweb-based-elgato-control-panel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbripkens%2Fweb-based-elgato-control-panel/lists"}