A self-hosted dashboard for keeping local and public service links together in one clear interface.
Matrix Home was created for my own homelab to provide a fast home page for services that may have both a local address and a public address. It supports multiple visual themes, JSON backup and restore, quick search and a compact editing workflow.
Warning
Matrix Home is under active development. Many changes and a complete visual and structural restyling are planned. Features, configuration and stored data may change before the project reaches a stable release.
| Field | Current state |
|---|---|
| Maturity | 🟡 Active Development |
| Used in my homelab | ✅ Yes |
| Recommended for production | ❌ Not yet |
| Setup difficulty | 🟡 Intermediate |
| Documentation | 🟡 In progress |
| Current version | 1.3.10 |
Homelab services are often available through two different routes: a fast local URL at home and a protected public URL when away. Matrix Home keeps both destinations in the same entry, instead of forcing separate bookmarks or duplicate dashboard items.
- Separate local and public URLs for each service.
- Matrix, Dark, Light, Retro and automatic themes.
- Quick search by typing anywhere on the page.
- Sorting by site or group.
- Add, edit and remove entries from the web interface.
- JSON import and export.
- Persistent storage through a Docker volume.
- Health endpoint for container monitoring.
| Matrix theme | Retro theme | Light theme |
|---|---|---|
![]() |
![]() |
![]() |
docker run -d \
--name matrix-home \
-p 8070:8070 \
-v matrix-home-data:/app/data \
--restart unless-stopped \
issuluca/matrix-home:latestOpen http://localhost:8070 after the container starts.
Clone the repository and start the included Compose configuration:
git clone https://github.com/issu-lab/matrix-home.git
cd matrix-home
docker compose up -d --buildThe persistent Docker volume stores the dashboard data independently from the container.
Open the menu in the upper-right corner to:
- enable edit mode;
- import or export the link collection;
- select a visual theme;
- check the current protection setting.
Each link can contain:
{
"SITO": "SERVICE NAME",
"GROUP": "HOMELAB",
"LOCAL": "http://192.168.1.10",
"CLOUD": "https://service.example.com"
}LOCAL and CLOUD are independent and either one may be omitted.
Dashboard entries are stored in /app/data/links.json inside the container. When the supplied Docker volume is used, the data remains available after upgrades or container replacement.
The recommended backup method is the built-in JSON export. A complete volume backup can also be created with:
docker cp matrix-home:/app/data ./matrix-home-backupCaution
The current protection toggle is not a complete authentication system. The application must not be exposed directly to the internet.
For remote access, place Matrix Home behind a trusted access layer such as:
- Cloudflare Access;
- an authenticated reverse proxy;
- a private VPN.
The authentication and access-control model will be redesigned before Matrix Home is considered suitable for broader use.
- The interface and internal structure still reflect an early personal version.
- Configuration and validation need to be made more consistent.
- The current access-control mechanism is not suitable for direct public exposure.
- Upgrade and migration behavior is not yet formally guaranteed.
- Documentation will evolve together with the application.
- Complete visual and usability restyling.
- A single action that can present local and public destinations clearly.
- Revised authentication and security model.
- Cleaner configuration and data handling.
- Better responsive behavior on desktop and mobile.
- More consistent editing, import and export workflows.
- Structured documentation and upgrade notes.
Matrix Home requires Node.js 22 or later.
git clone https://github.com/issu-lab/matrix-home.git
cd matrix-home
npm install
npm startThe development server listens on http://localhost:8070 by default. Set PORT to use a different port.
Released under the MIT License.
Part of iSSU Open Homelab — built for my homelab and shared as it evolves.



