Muximux
A self-hosted homelab dashboard with an optional built-in reverse proxy that makes stubborn apps work in iframes
Install / Use
/learn @mescon/MuximuxREADME
Muximux
A self-hosted homelab dashboard with an optional built-in reverse proxy that makes stubborn apps work in iframes.
One binary. One port. One YAML config file.
AI Disclosure -- Muximux is developed with significant AI assistance (Claude Code). All code is reviewed, tested, and approved by the maintainer before shipping. See Development for details.

What Is Muximux?
If you run services like Sonarr, Radarr, Plex, Grafana, or Home Assistant in your homelab, you probably have a dozen browser bookmarks and port numbers to remember. Muximux gives you a single page where all of those apps live, organized into groups, with live health indicators showing what's up and what's down.
Apps load inside the dashboard as iframes, so switching between them is instant - no page reloads, no losing your place. For apps that refuse to be embedded (most set X-Frame-Options: DENY), Muximux includes a reverse proxy that transparently strips those headers and rewrites paths so they work.
Everything is configured in one YAML file — no database, no external dependencies. The entire application ships as a single binary with the frontend embedded. Every setting is configurable through the built-in GUI, so you never have to touch the YAML directly. Back up or migrate your entire setup by copying a single file.
Why v3?
Muximux v3 is a ground-up rewrite. The original Muximux was a PHP application that served as a simple bookmark portal. v3 replaces it with a modern stack and a much broader feature set:
- Go backend with the frontend embedded in the binary - no PHP, no web server, no runtime dependencies
- Built-in reverse proxy that rewrites HTML, CSS, JS, and headers so apps actually work inside iframes
- Real-time health monitoring via WebSocket - see which apps are up or down without refreshing
- Built-in authentication - username/password, forward auth (Authelia/Authentik), or OIDC
- Optional TLS and gateway - an embedded Caddy instance can handle HTTPS certificates and serve other sites alongside Muximux
- Guided onboarding - a setup wizard walks you through security setup and adding your first apps
- Split view - display two apps side by side or stacked with a draggable divider
- 1,600+ icons from Lucide plus thousands of service-specific icons from Dashboard Icons
- Themes - built-in light and dark modes, plus custom themes via CSS
How You Can Use It
Muximux fits different setups. Pick the level that matches yours.
Dashboard behind your existing proxy
You already have Traefik, nginx, or Caddy handling TLS and auth. Run Muximux behind it with auth: none and let your proxy do the heavy lifting. Muximux serves on a single port and your proxy forwards to it. This is the simplest setup.
Dashboard with the built-in reverse proxy
Same as above, but some of your apps refuse to load in iframes. Set proxy: true on those apps and Muximux will proxy them through /proxy/{slug}/, stripping blocking headers and rewriting paths. This runs inside the Go server and works in every deployment mode - no extra configuration needed.
Full reverse proxy appliance
No existing proxy? Use Muximux as your only reverse proxy. Configure tls.domain for automatic HTTPS via Let's Encrypt and a gateway Caddyfile to serve your other services on their own domains. Caddy handles TLS certificates, HTTP-to-HTTPS redirects, and routing - all from the same single binary.
See the Deployment Guide for Docker Compose examples for each setup.
Quick Start
Docker
docker run -d \
--name muximux \
-p 8080:8080 \
-v $(pwd)/data:/app/data \
ghcr.io/mescon/muximux:latest
Open http://localhost:8080. If no config file exists, an onboarding wizard will guide you through security and initial setup.
Docker Compose
services:
muximux:
image: ghcr.io/mescon/muximux:latest
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
Binary
./muximux
By default, Muximux uses data/ beside the binary as its data directory (containing config, themes, icons). Override it with --data or the MUXIMUX_DATA environment variable.
See docker-compose.yml for a full example with environment variables, health checks, and optional TLS/gateway ports.
Documentation
Full documentation is available in the Wiki:
- Installation - Docker, binary, building from source
- Getting Started - First launch and onboarding
- Configuration Reference - All config.yaml options
- Apps - Adding and configuring applications
- Built-in Reverse Proxy - How the proxy works and when to use it
- Security - Security measures and OWASP ASVS compliance
- Authentication - Auth methods and setup
- [TLS & HTTPS](docs/wiki/tls-and-gateway
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
338.7kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
prose
338.7kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
