https://github.com/metacubex/metacubexd
Mihomo Dashboard, The Official One, XD
https://github.com/metacubex/metacubexd
daisyui dashboard docker solidjs
Last synced: 11 days ago
JSON representation
Mihomo Dashboard, The Official One, XD
- Host: GitHub
- URL: https://github.com/metacubex/metacubexd
- Owner: MetaCubeX
- License: mit
- Created: 2023-07-11T04:04:14.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-06-09T03:48:17.000Z (15 days ago)
- Last Synced: 2026-06-09T05:24:34.996Z (15 days ago)
- Topics: daisyui, dashboard, docker, solidjs
- Language: Vue
- Homepage:
- Size: 211 MB
- Stars: 3,749
- Watchers: 18
- Forks: 474
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# metacubexd
**Mihomo Dashboard, The Official One, XD**
[](https://github.com/metacubex/metacubexd/pulls)
[](https://github.com/metacubex/metacubexd/commits)
[](https://github.com/metacubex/metacubexd/actions)
[](https://github.com/metacubex/metacubexd/releases)
[](./LICENSE)
## β¨ Features
- π Real-time traffic monitoring and statistics
- π Proxy group management with latency testing
- π‘ Connection tracking and management
- π Rule viewer with search functionality
- π Live log streaming
- π¨ Beautiful UI with light/dark theme support
- π± Fully responsive design for mobile devices
- π Multi-language support (English, δΈζ, Π ΡΡΡΠΊΠΈΠΉ)
## πΌοΈ Preview
Desktop Screenshots
| Overview | Proxies |
| :-----------------------------------------------------------: | :---------------------------------------------------------: |
|
|
|
| Connections | Rules |
| :-----------------------------------------------------------------: | :-----------------------------------------------------: |
|
|
|
| Logs | Config |
| :---------------------------------------------------: | :-------------------------------------------------------: |
|
|
|
Mobile Screenshots
| Overview | Proxies | Connections |
| :---------------------------------------------------------------: | :-------------------------------------------------------------: | :---------------------------------------------------------------------: |
|
|
|
|
| Rules | Logs | Config |
| :---------------------------------------------------------: | :-------------------------------------------------------: | :-----------------------------------------------------------: |
|
|
|
|
## π Official Links
| Platform | URL |
| :--------------- | :------------------------------------- |
| GitHub Pages | https://metacubex.github.io/metacubexd |
| Cloudflare Pages | https://metacubexd.pages.dev |
## π Quick Start
### Prerequisites
Enable external-controller in your mihomo config:
```yaml
external-controller: 0.0.0.0:9090
```
### Option 1: Use Pre-built Assets
```shell
# Clone the gh-pages branch
git clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/mihomo/ui
# Set external-ui in your config
# external-ui: /etc/mihomo/ui
# Update to latest version
git -C /etc/mihomo/ui pull -r
```
### Option 2: Docker
```shell
# Basic usage
docker run -d --restart always -p 80:80 --name metacubexd ghcr.io/metacubex/metacubexd
# With custom default backend URL
docker run -d --restart always -p 80:80 --name metacubexd \
-e DEFAULT_BACKEND_URL=http://192.168.1.1:9090 \
ghcr.io/metacubex/metacubexd
# Update
docker pull ghcr.io/metacubex/metacubexd && docker restart metacubexd
```
Docker Compose
```yaml
services:
metacubexd:
container_name: metacubexd
image: ghcr.io/metacubex/metacubexd
restart: always
ports:
- '80:80'
# environment:
# - DEFAULT_BACKEND_URL=http://192.168.1.1:9090
# Optional: mihomo instance
mihomo:
container_name: mihomo
image: docker.io/metacubex/mihomo:Alpha
restart: always
pid: host
network_mode: host
cap_add:
- ALL
volumes:
- ./config.yaml:/root/.config/mihomo/config.yaml
- /dev/net/tun:/dev/net/tun
```
```shell
docker compose up -d
# Update
docker compose pull && docker compose up -d
```
### Option 3: Build from Source
```shell
# Install dependencies
pnpm install
# Build for static hosting (gh-pages, etc.)
pnpm generate
# Preview
pnpm preview
```
## π©Ί Troubleshooting
### "Unable to connect to backend" when self-hosting (CORS)
If the dashboard loads but cannot connect to the Mihomo backend β even though
the External Controller is reachable directly in your browser β the cause is
usually **CORS**.
When you host the dashboard on your own address (e.g. `http://192.168.1.2:8080`),
the browser treats requests to the External Controller (e.g.
`http://192.168.1.2:9090`) as cross-origin. Mihomo only answers cross-origin
requests from origins listed in its `external-controller-cors` allow-list, so
requests from your dashboard are rejected and the connection fails.
Add your dashboard's origin to the allow-list in your Mihomo `config.yaml`:
```yaml
external-controller-cors:
allow-private-network: true
allow-origins:
- 'http://192.168.1.2:8080' # your dashboard's address
# or, for trusted local networks only:
# - '*'
```
> Tip: if you still cannot connect, open your browser's DevTools (F12) β
> Console and look for CORS-related errors to confirm the cause.
## π οΈ Development
```shell
# Start dev server
pnpm dev
# Start dev server with mock data
pnpm dev:mock
# Lint & Format
pnpm lint
pnpm format
```
## π License
[MIT](./LICENSE)
## π Credits
- [Nuxt](https://github.com/nuxt/nuxt) - The Intuitive Vue Framework
- [Vue.js](https://github.com/vuejs/core) - The Progressive JavaScript Framework
- [daisyUI](https://github.com/saadeghi/daisyui) - Tailwind CSS components
- [Tailwind CSS](https://tailwindcss.com) - Utility-first CSS framework