{"id":127,"date":"2026-10-03T10:08:18","date_gmt":"2026-10-03T08:08:18","guid":{"rendered":"https:\/\/linuxundich.de\/en\/?p=127"},"modified":"2026-10-04T10:46:22","modified_gmt":"2026-10-04T08:46:22","slug":"homarr-2-0-homelab-dashboard-with-custom-widgets-and-workshop","status":"publish","type":"post","link":"https:\/\/linuxundich.de\/en\/homarr-2-0-homelab-dashboard-with-custom-widgets-and-workshop\/","title":{"rendered":"Homarr 2.0: Homelab Dashboard with Custom Widgets and Workshop"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you run a few <a href=\"https:\/\/linuxundich.de\/en\/keeping-docker-containers-up-to-date-with-dockcheck\/\">Docker containers<\/a> in your homelab, sooner or later you need a start page that brings all your services together. On my machine, that job is currently done by <a href=\"https:\/\/gethomepage.dev\/\">Homepage<\/a>, because it&#8217;s so easy to set up and comes with plenty of ready-made widgets. Now, though, a competitor is eyeing my spot pretty openly: <a href=\"https:\/\/homarr.dev\/blog\/2026\/09\/03\/homarr-2.0\/\">Homarr 2.0<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before any questions come up: No, <a href=\"https:\/\/github.com\/homarr-labs\/homarr\">Homarr<\/a> has nothing to do with the *arr stack that quite a few homelabbers use to sail the high seas. A small irony on the side: <a href=\"https:\/\/sonarr.tv\/\">Sonarr<\/a> and <a href=\"https:\/\/radarr.video\/\">Radarr<\/a> of all things show up again and again in the release notes as prime examples of the dashboard&#8217;s integrations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The developers themselves call it the &#8220;ultimate Homarr update.&#8221; If you don&#8217;t feel like wading through the rather extensive release notes, you get, in the project&#8217;s own words, a video for the short attention span. It shows the most important new features of Homarr 2.0 in a quick run-through of just under two minutes.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/homarr-2-showreel.mp4\"><\/video><figcaption class=\"wp-element-caption\">Homarr 2.0 in under two minutes: the developers&#8217; video shows the most important new features.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Custom widgets and a workshop for sharing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The centerpiece of the new version is Custom Widgets v2. You build your own widgets from JSX, API requests, actions, and typed settings. If you don&#8217;t feel like coding yourself, you just describe what you need to the built-in Assistant and then test the result in a kind of workbench.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s exactly what appeals to me: the widget system looks far more extensive and flexible than the one in Homepage. According to the developers, you can build almost any widget with it, even the one that only three people need. They no longer have to wait.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac237587f3ff&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac237587f3ff\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/homarr-2-custom-widget-pokedex-1280x497.webp\" alt=\"A working Pok\u00e9dex widget on a local Homarr dashboard with a search field, Pok\u00e9mon artwork, and stats.\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">A self-built Pok\u00e9dex widget shows how far Homarr can be bent with custom widgets.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The second half of the concept is called <a href=\"https:\/\/homarr.dev\/workshop\">Workshop<\/a>. There, users publish, rate, and install finished widgets and custom CSS. According to the developers, untested AI slop has no place there, and the Workshop is moderated. Credentials and addresses of your own instance stay on your own server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also new is an interface that lets widgets, scripts, or AI agents use the stored integrations via <a href=\"https:\/\/modelcontextprotocol.io\/\">MCP<\/a>. Homarr already knows the addresses and API keys of your services anyway. It checks the permissions, attaches the credentials, and passes the request along without ever handing out the keys.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New board editor and lots of small stuff<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The developers have also rebuilt the board editor from the ground up. The old drag and drop is gone. Moving and resizing now run through <a href=\"https:\/\/dndkit.com\/\">dnd-kit<\/a> and check for collisions before saving. Groups and dynamic sections give way to so-called containers, and fixed sidebars are back.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac237587fa9b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac237587fa9b\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/homarr-2-dashboard-1280x800.webp\" alt=\"A filled Homarr 2.0 dashboard with compact widgets, the Assistant and a bar with apps.\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">A well-filled Homarr 2.0 dashboard with compact widgets, the Assistant and a bar for apps.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">On top of that, there is a new initial setup in six steps, a freely configurable header and 31 new integrations, for example for <a href=\"https:\/\/linuxundich.de\/mozilla-stellt-pocket-bookmarks-ein\/\" data-type=\"post\" data-id=\"45029\">Linkwarden and Karakeep<\/a>, <a href=\"https:\/\/frigate.video\/\">Frigate<\/a> or <a href=\"https:\/\/github.com\/mealie-recipes\/mealie\">Mealie<\/a>. Docker and <a href=\"https:\/\/podman.io\/\">Podman<\/a> can be connected with multiple hosts. Handy for switchers like me: Homarr also understands the Docker labels from Homepage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Important for existing installations: Homarr 2.0 only supports SQLite and PostgreSQL now. For those, the migrations run automatically at startup. If you have been using MySQL so far, you have to move your data to SQLite with a separate script before the update. The project has a <a href=\"https:\/\/homarr.dev\/docs\/advanced\/mysql-to-sqlite\">guide<\/a> (in German) that describes the necessary steps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whether I will actually retire my Homepage setup, I don&#8217;t know yet. But Homarr 2.0 will definitely be interesting for me. The <a href=\"https:\/\/demo.homarr.dev\/\">live demo<\/a> for a quick look won&#8217;t help you right now, though: it is currently getting hammered by visitors and is offline. Which dashboard do you use in your homelab?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The homelab dashboard Homarr has reached version 2.0. Self-built widgets, a workshop for sharing them, and a new board editor make it a serious challenger to Homepage.<\/p>\n","protected":false},"author":2,"featured_media":126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"lui_source_id":47843,"lui_source_hash":"2baa537779c71afcbd4f12c6618db0b03ca0f3828c0d32b65747d9ac833fa7a2","lui_source_translated":"2026-10-04","lui_source_reviewed":true,"lui_via_url":"","lui_via_label":"","lui_source_url":"","lui_source_label":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gnu-linux"],"_links":{"self":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":1,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":128,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/127\/revisions\/128"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media\/126"}],"wp:attachment":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}