{"id":15121563,"url":"https://github.com/metacubex/metacubexd","last_synced_at":"2026-06-13T11:01:23.918Z","repository":{"id":180440438,"uuid":"664925328","full_name":"MetaCubeX/metacubexd","owner":"MetaCubeX","description":"Mihomo Dashboard, The Official One, XD","archived":false,"fork":false,"pushed_at":"2026-06-09T03:48:17.000Z","size":221673,"stargazers_count":3749,"open_issues_count":18,"forks_count":474,"subscribers_count":18,"default_branch":"main","last_synced_at":"2026-06-09T05:24:34.996Z","etag":null,"topics":["daisyui","dashboard","docker","solidjs"],"latest_commit_sha":null,"homepage":"","language":"Vue","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/MetaCubeX.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-11T04:04:14.000Z","updated_at":"2026-06-09T03:48:20.000Z","dependencies_parsed_at":"2023-10-28T04:19:51.306Z","dependency_job_id":"3fdb1d9c-fb12-4a7e-8be1-37697b7cad8f","html_url":"https://github.com/MetaCubeX/metacubexd","commit_stats":{"total_commits":1466,"total_committers":29,"mean_commits":50.55172413793103,"dds":0.5702592087312415,"last_synced_commit":"4bf631590ccb82106c30532f9c6a8cbf932ca369"},"previous_names":["metacubex/metacubexd"],"tags_count":399,"template":false,"template_full_name":null,"purl":"pkg:github/MetaCubeX/metacubexd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MetaCubeX%2Fmetacubexd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MetaCubeX%2Fmetacubexd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MetaCubeX%2Fmetacubexd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MetaCubeX%2Fmetacubexd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MetaCubeX","download_url":"https://codeload.github.com/MetaCubeX/metacubexd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MetaCubeX%2Fmetacubexd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34281700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["daisyui","dashboard","docker","solidjs"],"created_at":"2024-09-26T02:00:58.099Z","updated_at":"2026-06-13T11:01:23.908Z","avatar_url":"https://github.com/MetaCubeX.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# metacubexd\n\n**Mihomo Dashboard, The Official One, XD**\n\n[![pr-closed](https://img.shields.io/github/issues-pr-closed/metacubex/metacubexd?style=for-the-badge)](https://github.com/metacubex/metacubexd/pulls)\n[![last-commit](https://img.shields.io/github/last-commit/metacubex/metacubexd?style=for-the-badge)](https://github.com/metacubex/metacubexd/commits)\n[![build](https://img.shields.io/github/actions/workflow/status/metacubex/metacubexd/release.yml?style=for-the-badge)](https://github.com/metacubex/metacubexd/actions)\n[![downloads](https://img.shields.io/github/downloads/metacubex/metacubexd/total?style=for-the-badge)](https://github.com/metacubex/metacubexd/releases)\n[![license](https://img.shields.io/github/license/metacubex/metacubexd?style=for-the-badge)](./LICENSE)\n\n## ✨ Features\n\n- 📊 Real-time traffic monitoring and statistics\n- 🔄 Proxy group management with latency testing\n- 📡 Connection tracking and management\n- 📋 Rule viewer with search functionality\n- 📝 Live log streaming\n- 🎨 Beautiful UI with light/dark theme support\n- 📱 Fully responsive design for mobile devices\n- 🌐 Multi-language support (English, 中文, Русский)\n\n## 🖼️ Preview\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDesktop Screenshots\u003c/b\u003e\u003c/summary\u003e\n\n|                           Overview                            |                           Proxies                           |\n| :-----------------------------------------------------------: | :---------------------------------------------------------: |\n| \u003cimg src=\"docs/pc/overview.png\" alt=\"overview\" width=\"400\" /\u003e | \u003cimg src=\"docs/pc/proxies.png\" alt=\"proxies\" width=\"400\" /\u003e |\n\n|                             Connections                             |                          Rules                          |\n| :-----------------------------------------------------------------: | :-----------------------------------------------------: |\n| \u003cimg src=\"docs/pc/connections.png\" alt=\"connections\" width=\"400\" /\u003e | \u003cimg src=\"docs/pc/rules.png\" alt=\"rules\" width=\"400\" /\u003e |\n\n|                         Logs                          |                          Config                           |\n| :---------------------------------------------------: | :-------------------------------------------------------: |\n| \u003cimg src=\"docs/pc/logs.png\" alt=\"logs\" width=\"400\" /\u003e | \u003cimg src=\"docs/pc/config.png\" alt=\"config\" width=\"400\" /\u003e |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMobile Screenshots\u003c/b\u003e\u003c/summary\u003e\n\n|                             Overview                              |                             Proxies                             |                               Connections                               |\n| :---------------------------------------------------------------: | :-------------------------------------------------------------: | :---------------------------------------------------------------------: |\n| \u003cimg src=\"docs/mobile/overview.png\" alt=\"overview\" width=\"200\" /\u003e | \u003cimg src=\"docs/mobile/proxies.png\" alt=\"proxies\" width=\"200\" /\u003e | \u003cimg src=\"docs/mobile/connections.png\" alt=\"connections\" width=\"200\" /\u003e |\n\n|                            Rules                            |                           Logs                            |                            Config                             |\n| :---------------------------------------------------------: | :-------------------------------------------------------: | :-----------------------------------------------------------: |\n| \u003cimg src=\"docs/mobile/rules.png\" alt=\"rules\" width=\"200\" /\u003e | \u003cimg src=\"docs/mobile/logs.png\" alt=\"logs\" width=\"200\" /\u003e | \u003cimg src=\"docs/mobile/config.png\" alt=\"config\" width=\"200\" /\u003e |\n\n\u003c/details\u003e\n\n## 🔗 Official Links\n\n| Platform         | URL                                    |\n| :--------------- | :------------------------------------- |\n| GitHub Pages     | https://metacubex.github.io/metacubexd |\n| Cloudflare Pages | https://metacubexd.pages.dev           |\n\n## 🚀 Quick Start\n\n### Prerequisites\n\nEnable external-controller in your mihomo config:\n\n```yaml\nexternal-controller: 0.0.0.0:9090\n```\n\n### Option 1: Use Pre-built Assets\n\n```shell\n# Clone the gh-pages branch\ngit clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/mihomo/ui\n\n# Set external-ui in your config\n# external-ui: /etc/mihomo/ui\n\n# Update to latest version\ngit -C /etc/mihomo/ui pull -r\n```\n\n### Option 2: Docker\n\n```shell\n# Basic usage\ndocker run -d --restart always -p 80:80 --name metacubexd ghcr.io/metacubex/metacubexd\n\n# With custom default backend URL\ndocker run -d --restart always -p 80:80 --name metacubexd \\\n  -e DEFAULT_BACKEND_URL=http://192.168.1.1:9090 \\\n  ghcr.io/metacubex/metacubexd\n\n# Update\ndocker pull ghcr.io/metacubex/metacubexd \u0026\u0026 docker restart metacubexd\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDocker Compose\u003c/b\u003e\u003c/summary\u003e\n\n```yaml\nservices:\n  metacubexd:\n    container_name: metacubexd\n    image: ghcr.io/metacubex/metacubexd\n    restart: always\n    ports:\n      - '80:80'\n    # environment:\n    #   - DEFAULT_BACKEND_URL=http://192.168.1.1:9090\n\n  # Optional: mihomo instance\n  mihomo:\n    container_name: mihomo\n    image: docker.io/metacubex/mihomo:Alpha\n    restart: always\n    pid: host\n    network_mode: host\n    cap_add:\n      - ALL\n    volumes:\n      - ./config.yaml:/root/.config/mihomo/config.yaml\n      - /dev/net/tun:/dev/net/tun\n```\n\n```shell\ndocker compose up -d\n\n# Update\ndocker compose pull \u0026\u0026 docker compose up -d\n```\n\n\u003c/details\u003e\n\n### Option 3: Build from Source\n\n```shell\n# Install dependencies\npnpm install\n\n# Build for static hosting (gh-pages, etc.)\npnpm generate\n\n# Preview\npnpm preview\n```\n\n## 🩺 Troubleshooting\n\n### \"Unable to connect to backend\" when self-hosting (CORS)\n\nIf the dashboard loads but cannot connect to the Mihomo backend — even though\nthe External Controller is reachable directly in your browser — the cause is\nusually **CORS**.\n\nWhen you host the dashboard on your own address (e.g. `http://192.168.1.2:8080`),\nthe browser treats requests to the External Controller (e.g.\n`http://192.168.1.2:9090`) as cross-origin. Mihomo only answers cross-origin\nrequests from origins listed in its `external-controller-cors` allow-list, so\nrequests from your dashboard are rejected and the connection fails.\n\nAdd your dashboard's origin to the allow-list in your Mihomo `config.yaml`:\n\n```yaml\nexternal-controller-cors:\n  allow-private-network: true\n  allow-origins:\n    - 'http://192.168.1.2:8080' # your dashboard's address\n    # or, for trusted local networks only:\n    # - '*'\n```\n\n\u003e Tip: if you still cannot connect, open your browser's DevTools (F12) →\n\u003e Console and look for CORS-related errors to confirm the cause.\n\n## 🛠️ Development\n\n```shell\n# Start dev server\npnpm dev\n\n# Start dev server with mock data\npnpm dev:mock\n\n# Lint \u0026 Format\npnpm lint\npnpm format\n```\n\n## 📄 License\n\n[MIT](./LICENSE)\n\n## 🙏 Credits\n\n- [Nuxt](https://github.com/nuxt/nuxt) - The Intuitive Vue Framework\n- [Vue.js](https://github.com/vuejs/core) - The Progressive JavaScript Framework\n- [daisyUI](https://github.com/saadeghi/daisyui) - Tailwind CSS components\n- [Tailwind CSS](https://tailwindcss.com) - Utility-first CSS framework\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetacubex%2Fmetacubexd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetacubex%2Fmetacubexd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetacubex%2Fmetacubexd/lists"}