feat(navbar): consolidate to 6 charter categories + fix dropped menu entries (closes #306) (#307)

The hub's `_compute_menu_sync()` drops menu entries lacking an `id`
field. 6+ packages (lyrion, yacy, zigbee, rustdesk, grafana, authelia)
shipped a different schema (`title/url/section/module`) so they NEVER
appeared in the navbar. Plus the existing CATEGORY_META declared 12
sections (dashboard/security/network/system/core/users/services/
privacy/monitoring/publishing/apps/admin), not the 6 SecuBox charter
modules.

Changes:
* All 121 packages/secubox-*/menu.d/*.json normalised to the canonical
  schema (id, name, path, category, icon, order, description). Legacy
  schema aliases (title/url/module/section) preserved as fallbacks then
  dropped from the file.
* Each menu entry's category remapped to one of the 6 charter modules:
  AUTH (auth/users/identity/zkp/nac/openclaw),
  WALL (crowdsec/waf/mitmproxy/hardening/threat-* /cve-triage/...),
  BOOT (kernel-build/eye-remote/master-link/droplet/cloner/backup/...),
  MIND (ai-gateway/mcp-server/grafana/ndpid/netifyd/glances/...),
  ROOT (system/hub/portal/console/admin/vault/vm/rtty/...),
  MESH (wireguard/dns/tor/matrix/gitea/nextcloud/mail/lyrion/yacy/
        zigbee/dns-provider/rustdesk/... — all network + comms apps).
* secubox-hub v1.4.0 — CATEGORY_META rewritten with the 6 charter
  modules carrying their official color from DESIGN-CHARTER.md and
  the complementary-pair order. DEFAULT_MENU fallback remapped too.
* secubox-zigbee v2.5.3 — www/zigbee/index.html rewritten with the
  canonical SecuBox scaffold (body display:flex, sidebar 220px fixed,
  .main reserving 48px for the global-menu-bar). MESH palette.

Browser side: operators need to clear localStorage sbx_menu_cache (or
hard-refresh after the 1h TTL) to see the new sections after deploy.

Co-authored-by: CyberMind-FR <gandalf@Gk2.net>
This commit is contained in:
CyberMind 2026-05-21 10:03:05 +02:00 committed by GitHub
parent 0e02d54e01
commit 5e93c73600
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
125 changed files with 499 additions and 397 deletions

View File

@ -1,7 +1,7 @@
{
"id": "ad-guard",
"name": "Ad Guard",
"category": "network",
"category": "wall",
"icon": "🛡️",
"path": "/ad-guard/",
"order": 160,

View File

@ -1,7 +1,7 @@
{
"id": "admin",
"name": "Administration",
"category": "core",
"category": "root",
"icon": "⚙️",
"path": "/admin/",
"order": 100,

View File

@ -1,7 +1,7 @@
{
"id": "ai-gateway",
"name": "AI Gateway",
"category": "security",
"category": "mind",
"icon": "🤖",
"path": "/ai-gateway/",
"order": 110,

View File

@ -1,7 +1,7 @@
{
"id": "ai-insights",
"name": "AI Insights",
"category": "security",
"category": "mind",
"icon": "🤖",
"path": "/ai-insights/",
"order": 701,

View File

@ -1,7 +1,7 @@
{
"id": "auth",
"name": "Auth Guardian",
"category": "security",
"category": "auth",
"icon": "🔑",
"path": "/auth/",
"order": 120,

View File

@ -1,9 +1,10 @@
{
"title": "SSO",
"subtitle": "Authelia · OIDC IdP",
"icon": "fa-key",
"url": "/auth/",
"section": "security",
"order": 40,
"module": "authelia"
"id": "authelia",
"name": "SSO",
"path": "/auth/",
"category": "auth",
"description": ""
}

View File

@ -1,7 +1,7 @@
{
"id": "avatar",
"name": "Identity Manager",
"category": "users",
"category": "mesh",
"icon": "👤",
"path": "/avatar/",
"order": 470,

View File

@ -1,7 +1,7 @@
{
"id": "backup",
"name": "Backup",
"category": "system",
"category": "boot",
"icon": "💾",
"path": "/backup/",
"order": 550,

View File

@ -1,7 +1,7 @@
{
"id": "c3box",
"name": "C3box",
"category": "apps",
"category": "mind",
"icon": "🌐",
"path": "/c3box/",
"order": 503,

View File

@ -1,7 +1,7 @@
{
"id": "cdn",
"name": "CDN Cache",
"category": "network",
"category": "mesh",
"icon": "💾",
"path": "/cdn/",
"order": 240,

View File

@ -1 +1,9 @@
{"id":"cloner","name":"Cloner","icon":"💾","path":"/cloner/","category":"system","order":902,"description":"System backup and restore"}
{
"id": "cloner",
"name": "Cloner",
"icon": "💾",
"path": "/cloner/",
"category": "boot",
"order": 902,
"description": "System backup and restore"
}

View File

@ -1,7 +1,7 @@
{
"id": "config-advisor",
"name": "Config Advisor",
"category": "security",
"category": "mind",
"icon": "📋",
"path": "/config-advisor/",
"order": 155,

View File

@ -2,9 +2,10 @@
"name": "Console TUI",
"path": null,
"icon": "🖥️",
"category": "system",
"category": "root",
"order": 3,
"description": "Terminal-based dashboard (TTY1)",
"console_only": true,
"requires_auth": false
"requires_auth": false,
"id": "console"
}

View File

@ -3,7 +3,7 @@
"name": "Cookie Tracker",
"icon": "🍪",
"path": "/cookies/",
"category": "privacy",
"category": "mesh",
"order": 704,
"description": "Cookie tracking and privacy compliance"
}

View File

@ -1,7 +1,7 @@
{
"id": "crowdsec",
"name": "CrowdSec",
"category": "security",
"category": "wall",
"icon": "🛡️",
"path": "/crowdsec/",
"order": 100,

View File

@ -1,7 +1,7 @@
{
"id": "cve-triage",
"name": "Cve-triage",
"category": "security",
"category": "wall",
"icon": "🛡️",
"path": "/cve-triage/",
"order": 135,

View File

@ -1,7 +1,7 @@
{
"id": "cyberfeed",
"name": "CyberFeed",
"category": "security",
"category": "wall",
"icon": "📡",
"path": "/cyberfeed/",
"order": 490,

View File

@ -1,7 +1,7 @@
{
"id": "device-intel",
"name": "Device Intel",
"category": "monitoring",
"category": "mind",
"icon": "🔬",
"path": "/device-intel/",
"order": 320,

View File

@ -1,7 +1,7 @@
{
"id": "dns-guard",
"name": "DNS Guard",
"category": "security",
"category": "wall",
"icon": "🌐",
"path": "/dns-guard/",
"order": 145,

View File

@ -1,7 +1,7 @@
{
"id": "dns-provider",
"name": "DNS Provider",
"category": "network",
"category": "mesh",
"icon": "☁️",
"path": "/dns-provider/",
"order": 706,

View File

@ -1,7 +1,7 @@
{
"id": "dns",
"name": "Dns",
"category": "network",
"category": "mesh",
"icon": "🌐",
"path": "/dns/",
"order": 32,

View File

@ -3,7 +3,7 @@
"name": "Domoticz",
"icon": "&#127968;",
"path": "/domoticz/",
"category": "apps",
"category": "mesh",
"order": 614,
"description": "Home automation system"
}

View File

@ -1,7 +1,7 @@
{
"id": "dpi",
"name": "DPI",
"category": "network",
"category": "mind",
"icon": "🔍",
"path": "/dpi/",
"order": 210,

View File

@ -1,7 +1,7 @@
{
"id": "droplet",
"name": "Droplet",
"category": "publishing",
"category": "boot",
"icon": "📤",
"path": "/droplet/",
"order": 400,

View File

@ -3,7 +3,7 @@
"name": "Exposure",
"icon": "🌐",
"path": "/exposure/",
"category": "network",
"category": "wall",
"order": 565,
"description": "Unified exposure settings (Tor, SSL, DNS, Mesh)"
}

View File

@ -4,6 +4,6 @@
"icon": "👁️",
"path": "/eye-remote/",
"order": 50,
"category": "system",
"category": "boot",
"description": "Manage Eye Remote display devices"
}

View File

@ -1,7 +1,7 @@
{
"id": "gitea",
"name": "Gitea",
"category": "apps",
"category": "mesh",
"icon": "🐙",
"path": "/gitea/",
"order": 504,

View File

@ -1,7 +1,7 @@
{
"id": "glances",
"name": "Glances",
"category": "monitoring",
"category": "mind",
"icon": "📈",
"path": "/glances/",
"order": 904,

View File

@ -1,8 +1,9 @@
{
"name": "GoToSocial",
"path": "/gotosocial/",
"icon": "🦋",
"category": "apps",
"order": 615,
"description": "Fediverse/ActivityPub server"
"name": "GoToSocial",
"path": "/gotosocial/",
"icon": "🦋",
"category": "mesh",
"order": 615,
"description": "Fediverse/ActivityPub server",
"id": "gotosocial"
}

View File

@ -1,9 +1,10 @@
{
"title": "Grafana",
"subtitle": "Security metrics",
"icon": "fa-chart-line",
"url": "/grafana/",
"section": "monitoring",
"order": 50,
"module": "grafana"
"id": "grafana",
"name": "Grafana",
"path": "/grafana/",
"category": "mind",
"description": ""
}

View File

@ -1,7 +1,7 @@
{
"id": "haproxy",
"name": "HAProxy",
"category": "network",
"category": "mesh",
"icon": "⚖️",
"path": "/haproxy/",
"order": 250,

View File

@ -4,7 +4,7 @@
"icon": "🛡️",
"path": "/hardening/",
"api": "/api/v1/hardening/",
"category": "security",
"category": "wall",
"order": 120,
"description": "Kernel and system hardening"
}

View File

@ -1,8 +1,9 @@
{
"name": "Hexo",
"path": "/hexo/",
"icon": "edit",
"category": "apps",
"order": 610,
"description": "Static blog generator"
"name": "Hexo",
"path": "/hexo/",
"icon": "edit",
"category": "mesh",
"order": 610,
"description": "Static blog generator",
"id": "hexo"
}

View File

@ -3,7 +3,7 @@
"name": "Home Assistant",
"icon": "🏠",
"path": "/homeassistant/",
"category": "apps",
"category": "mesh",
"order": 618,
"description": "Home automation and IoT hub"
}

View File

@ -1716,48 +1716,46 @@ MENU_DIR = Path("/usr/share/secubox/menu.d")
# Default menu definitions (used if menu.d files don't exist)
DEFAULT_MENU = [
{"id": "hub", "name": "Dashboard", "category": "dashboard", "icon": "🏠", "path": "/", "order": 0},
{"id": "system", "name": "System Hub", "category": "dashboard", "icon": "🔧", "path": "/system/", "order": 10},
{"id": "crowdsec", "name": "CrowdSec", "category": "security", "icon": "🛡️", "path": "/crowdsec/", "order": 100},
{"id": "waf", "name": "WAF", "category": "security", "icon": "🔥", "path": "/waf/", "order": 105},
{"id": "wireguard", "name": "WireGuard VPN", "category": "security", "icon": "🔐", "path": "/wireguard/", "order": 110},
{"id": "auth", "name": "Auth Guardian", "category": "security", "icon": "🔑", "path": "/auth/", "order": 120},
{"id": "nac", "name": "Client Guardian", "category": "security", "icon": "👥", "path": "/nac/", "order": 130},
{"id": "netmodes", "name": "Network Modes", "category": "network", "icon": "🔀", "path": "/netmodes/", "order": 200},
{"id": "dpi", "name": "DPI", "category": "network", "icon": "🔍", "path": "/dpi/", "order": 210},
{"id": "qos", "name": "Bandwidth Manager", "category": "network", "icon": "📶", "path": "/qos/", "order": 220},
{"id": "vhost", "name": "Virtual Hosts", "category": "network", "icon": "🌍", "path": "/vhost/", "order": 230},
{"id": "cdn", "name": "CDN Cache", "category": "network", "icon": "💾", "path": "/cdn/", "order": 240},
{"id": "haproxy", "name": "HAProxy", "category": "network", "icon": "⚖️", "path": "/haproxy/", "order": 250},
{"id": "dns", "name": "DNS", "category": "network", "icon": "🌐", "path": "/dns/", "order": 260},
{"id": "netdata", "name": "Netdata", "category": "monitoring", "icon": "📊", "path": "/netdata/", "order": 300},
{"id": "mediaflow", "name": "Media Flow", "category": "monitoring", "icon": "📺", "path": "/mediaflow/", "order": 310},
{"id": "droplet", "name": "Droplet", "category": "publishing", "icon": "📤", "path": "/droplet/", "order": 400},
{"id": "metablogizer", "name": "MetaBlogizer", "category": "publishing", "icon": "📝", "path": "/metablogizer/", "order": 410},
{"id": "publish", "name": "Publish", "category": "publishing", "icon": "🚀", "path": "/publish/", "order": 420},
{"id": "streamlit", "name": "Streamlit", "category": "apps", "icon": "🎯", "path": "/streamlit/", "order": 500},
{"id": "streamforge", "name": "StreamForge", "category": "apps", "icon": "🔨", "path": "/streamforge/", "order": 510},
{"id": "users", "name": "Users", "category": "admin", "icon": "👤", "path": "/users/", "order": 600},
{"id": "mail", "name": "Mail Server", "category": "admin", "icon": "📧", "path": "/mail/", "order": 610},
{"id": "webmail", "name": "Webmail", "category": "admin", "icon": "📬", "path": "/webmail/", "order": 620},
{"id": "mail-lxc", "name": "Mail LXC", "category": "admin", "icon": "📧", "path": "/mail-lxc/", "order": 630},
{"id": "webmail-lxc", "name": "Webmail LXC", "category": "admin", "icon": "📬", "path": "/webmail-lxc/", "order": 640},
{"id": "portal", "name": "Portal", "category": "security", "icon": "🚪", "path": "/portal/", "order": 140},
{"id": "hub", "name": "Dashboard", "category": "root", "icon": "🏠", "path": "/", "order": 0},
{"id": "system", "name": "System Hub", "category": "root", "icon": "🔧", "path": "/system/", "order": 10},
{"id": "crowdsec", "name": "CrowdSec", "category": "wall", "icon": "🛡️", "path": "/crowdsec/", "order": 100},
{"id": "waf", "name": "WAF", "category": "wall", "icon": "🔥", "path": "/waf/", "order": 105},
{"id": "wireguard", "name": "WireGuard VPN", "category": "mesh", "icon": "🔐", "path": "/wireguard/", "order": 110},
{"id": "auth", "name": "Auth Guardian", "category": "auth", "icon": "🔑", "path": "/auth/", "order": 120},
{"id": "nac", "name": "Client Guardian", "category": "auth", "icon": "👥", "path": "/nac/", "order": 130},
{"id": "netmodes", "name": "Network Modes", "category": "mesh", "icon": "🔀", "path": "/netmodes/", "order": 200},
{"id": "dpi", "name": "DPI", "category": "mind", "icon": "🔍", "path": "/dpi/", "order": 210},
{"id": "qos", "name": "Bandwidth Manager", "category": "mesh", "icon": "📶", "path": "/qos/", "order": 220},
{"id": "vhost", "name": "Virtual Hosts", "category": "mesh", "icon": "🌍", "path": "/vhost/", "order": 230},
{"id": "cdn", "name": "CDN Cache", "category": "mesh", "icon": "💾", "path": "/cdn/", "order": 240},
{"id": "haproxy", "name": "HAProxy", "category": "mesh", "icon": "⚖️", "path": "/haproxy/", "order": 250},
{"id": "dns", "name": "DNS", "category": "mesh", "icon": "🌐", "path": "/dns/", "order": 260},
{"id": "netdata", "name": "Netdata", "category": "mind", "icon": "📊", "path": "/netdata/", "order": 300},
{"id": "mediaflow", "name": "Media Flow", "category": "boot", "icon": "📺", "path": "/mediaflow/", "order": 310},
{"id": "droplet", "name": "Droplet", "category": "boot", "icon": "📤", "path": "/droplet/", "order": 400},
{"id": "metablogizer", "name": "MetaBlogizer", "category": "mind", "icon": "📝", "path": "/metablogizer/", "order": 410},
{"id": "publish", "name": "Publish", "category": "boot", "icon": "🚀", "path": "/publish/", "order": 420},
{"id": "streamlit", "name": "Streamlit", "category": "mesh", "icon": "🎯", "path": "/streamlit/", "order": 500},
{"id": "streamforge", "name": "StreamForge", "category": "mesh", "icon": "🔨", "path": "/streamforge/", "order": 510},
{"id": "users", "name": "Users", "category": "auth", "icon": "👤", "path": "/users/", "order": 600},
{"id": "mail", "name": "Mail Server", "category": "mesh", "icon": "📧", "path": "/mail/", "order": 610},
{"id": "webmail", "name": "Webmail", "category": "mesh", "icon": "📬", "path": "/webmail/", "order": 620},
{"id": "mail-lxc", "name": "Mail LXC", "category": "mesh", "icon": "📧", "path": "/mail-lxc/", "order": 630},
{"id": "webmail-lxc", "name": "Webmail LXC", "category": "mesh", "icon": "📬", "path": "/webmail-lxc/", "order": 640},
{"id": "portal", "name": "Portal", "category": "root", "icon": "🚪", "path": "/portal/", "order": 140},
]
CATEGORY_META = {
"dashboard": {"name": "Dashboard", "icon": "📊", "order": 0},
"security": {"name": "Security", "icon": "🛡️", "order": 1},
"network": {"name": "Network", "icon": "🌐", "order": 2},
"system": {"name": "System", "icon": "⚙️", "order": 3},
"core": {"name": "Core", "icon": "🔧", "order": 4},
"users": {"name": "Users", "icon": "👥", "order": 5},
"services": {"name": "Services", "icon": "🔌", "order": 6},
"privacy": {"name": "Privacy", "icon": "🔒", "order": 7},
"monitoring": {"name": "Monitoring", "icon": "📈", "order": 8},
"publishing": {"name": "Publishing", "icon": "📤", "order": 9},
"apps": {"name": "Applications", "icon": "🎯", "order": 10},
"admin": {"name": "Administration", "icon": "🛠️", "order": 11},
# SecuBox 6-module color system (Charte §Six Module Color System).
# Every menu.d entry MUST set `category` to one of these six. The
# ordering mirrors the charter's complementary-pair sequence:
# AUTH/WALL/BOOT then their counterparts MIND/ROOT/MESH.
"auth": {"name": "Auth", "icon": "🛂", "order": 0, "color": "#C04E24"},
"wall": {"name": "Wall", "icon": "🛡️", "order": 1, "color": "#9A6010"},
"boot": {"name": "Boot", "icon": "🚀", "order": 2, "color": "#803018"},
"mind": {"name": "Mind", "icon": "🧠", "order": 3, "color": "#3D35A0"},
"root": {"name": "Root", "icon": "⚙️", "order": 4, "color": "#0A5840"},
"mesh": {"name": "Mesh", "icon": "🌐", "order": 5, "color": "#104A88"},
}

View File

@ -1,3 +1,16 @@
secubox-hub (1.4.0-1~bookworm1) bookworm; urgency=medium
* api/main.py: CATEGORY_META rewritten to the 6 SecuBox charter
modules (auth / wall / boot / mind / root / mesh) instead of the
legacy 12 (dashboard / security / network / system / core / users
/ services / privacy / monitoring / publishing / apps / admin).
Each entry carries its charter color and complementary-pair order.
Closes #306.
* api/main.py: DEFAULT_MENU fallback entries remapped to the 6
charter categories.
-- Gerald Kerma <devel@cybermind.fr> Thu, 21 May 2026 11:30:00 +0000
secubox-hub (1.3.4-1~bookworm1) bookworm; urgency=medium
* www/shared/health-banner.js: stop emitting clickable <a href="…">

View File

@ -1,7 +1,7 @@
{
"id": "hub",
"name": "Dashboard",
"category": "dashboard",
"category": "root",
"icon": "🏠",
"path": "/",
"order": 0,

View File

@ -1,7 +1,7 @@
{
"id": "identity",
"name": "Identity",
"category": "security",
"category": "auth",
"icon": "🔐",
"path": "/identity/",
"order": 125,

View File

@ -3,7 +3,7 @@
"name": "Interceptor",
"icon": "🎯",
"path": "/interceptor/",
"category": "security",
"category": "wall",
"order": 703,
"description": "Traffic interception and analysis"
}

View File

@ -1,7 +1,7 @@
{
"id": "iot-guard",
"name": "IoT Guard",
"category": "security",
"category": "wall",
"icon": "📡",
"path": "/iot-guard/",
"order": 150,

View File

@ -1,7 +1,7 @@
{
"id": "ipblock",
"name": "IP Blocklist",
"category": "security",
"category": "wall",
"icon": "🚫",
"path": "/ipblock/",
"order": 702,

View File

@ -1 +1,9 @@
{"id":"jabber","name":"Jabber","icon":"💬","path":"/jabber/","category":"apps","order":818,"description":"XMPP messaging server"}
{
"id": "jabber",
"name": "Jabber",
"icon": "💬",
"path": "/jabber/",
"category": "mesh",
"order": 818,
"description": "XMPP messaging server"
}

View File

@ -3,7 +3,7 @@
"name": "Jellyfin",
"path": "/jellyfin/",
"icon": "🎬",
"category": "apps",
"category": "mesh",
"order": 801,
"description": "Media server management"
}

View File

@ -3,7 +3,7 @@
"name": "Jitsi Meet",
"icon": "📹",
"path": "/jitsi/",
"category": "apps",
"category": "mesh",
"order": 620,
"description": "Video conferencing and meetings"
}

View File

@ -1,7 +1,7 @@
{
"id": "ksm",
"name": "KSM Memory",
"category": "system",
"category": "wall",
"icon": "💾",
"path": "/ksm/",
"order": 460,

View File

@ -3,7 +3,7 @@
"name": "LocalAI",
"icon": "🤖",
"path": "/localai/",
"category": "apps",
"category": "mind",
"order": 804,
"description": "Self-hosted LLM inference with OpenAI-compatible API"
}

View File

@ -1,7 +1,7 @@
{
"id": "localrecall",
"name": "Localrecall",
"category": "security",
"category": "mind",
"icon": "🧠",
"path": "/localrecall/",
"order": 120,

View File

@ -1,9 +1,10 @@
{
"title": "Lyrion",
"subtitle": "Music server",
"icon": "fa-music",
"url": "/lyrion/",
"section": "hosting",
"order": 80,
"module": "lyrion"
"id": "lyrion",
"name": "Lyrion",
"path": "/lyrion/",
"category": "mesh",
"description": ""
}

View File

@ -1,7 +1,7 @@
{
"id": "mac-guard",
"name": "MAC Guard",
"category": "security",
"category": "wall",
"icon": "🖥️",
"path": "/mac-guard/",
"order": 705,

View File

@ -1 +1,9 @@
{"id":"magicmirror","name":"MagicMirror","icon":"🪞","path":"/magicmirror/","category":"apps","order":819,"description":"Smart display platform"}
{
"id": "magicmirror",
"name": "MagicMirror",
"icon": "🪞",
"path": "/magicmirror/",
"category": "mesh",
"order": 819,
"description": "Smart display platform"
}

View File

@ -1,7 +1,7 @@
{
"id": "mail",
"name": "Mail",
"category": "apps",
"category": "mesh",
"icon": "📧",
"path": "/mail/",
"order": 55,

View File

@ -1,7 +1,7 @@
{
"id": "master-link",
"name": "Master-link",
"category": "network",
"category": "boot",
"icon": "🔗",
"path": "/master-link/",
"order": 200,

View File

@ -3,7 +3,7 @@
"name": "Matrix Chat",
"icon": "💬",
"path": "/matrix/",
"category": "apps",
"category": "mesh",
"order": 619,
"description": "Federated encrypted chat server"
}

View File

@ -1,7 +1,7 @@
{
"id": "mcp-server",
"name": "MCP Server",
"category": "security",
"category": "mind",
"icon": "🔌",
"path": "/mcp-server/",
"order": 115,

View File

@ -1,7 +1,7 @@
{
"id": "mediaflow",
"name": "Media Flow",
"category": "monitoring",
"category": "boot",
"icon": "📺",
"path": "/mediaflow/",
"order": 310,

View File

@ -1,9 +1,9 @@
{
"id": "mesh",
"name": "Yggdrasil Mesh",
"icon": "🌐",
"path": "/mesh/",
"category": "network",
"order": 580,
"description": "Yggdrasil mesh network management"
"id": "mesh",
"name": "Yggdrasil Mesh",
"icon": "🌐",
"path": "/mesh/",
"category": "mesh",
"order": 580,
"description": "Yggdrasil mesh network management"
}

View File

@ -1,7 +1,7 @@
{
"id": "meshname",
"name": "Mesh DNS",
"category": "network",
"category": "mesh",
"icon": "🌐",
"path": "/meshname/",
"order": 585,

View File

@ -1,7 +1,7 @@
{
"id": "metablogizer",
"name": "MetaBlogizer",
"category": "publishing",
"category": "mind",
"icon": "📝",
"path": "/metablogizer/",
"order": 410,

View File

@ -1,7 +1,7 @@
{
"id": "metabolizer",
"name": "Metabolizer",
"category": "system",
"category": "mind",
"icon": "&#128202;",
"path": "/metabolizer/",
"order": 480,

View File

@ -1,7 +1,7 @@
{
"id": "metacatalog",
"name": "Service Catalog",
"category": "system",
"category": "mind",
"icon": "📚",
"path": "/metacatalog/",
"order": 485,

View File

@ -1,9 +1,10 @@
{
"name": "Metoblizer",
"title": "Metoblizer - Log Aggregator",
"order": 950,
"depends": {
"acl": ["luci-app-secubox"],
"acl": [
"luci-app-secubox"
],
"uci": {}
},
"entries": [
@ -13,5 +14,10 @@
"order": 1,
"icon": "scroll"
}
]
],
"id": "metoblizer",
"category": "mind",
"icon": "🧠",
"path": "/metoblizer/",
"description": ""
}

View File

@ -1,9 +1,9 @@
{
"id": "metrics",
"name": "Metrics",
"icon": "📊",
"path": "/metrics/",
"order": 200,
"category": "monitoring",
"description": "Metrics Dashboard"
"id": "metrics",
"name": "Metrics",
"icon": "📊",
"path": "/metrics/",
"order": 200,
"category": "mind",
"description": "Metrics Dashboard"
}

View File

@ -1,7 +1,7 @@
{
"id": "mirror",
"name": "Mirror/CDN",
"category": "system",
"category": "mesh",
"icon": "☁️",
"path": "/mirror/",
"order": 495,

View File

@ -3,7 +3,7 @@
"name": "WAF",
"icon": "🛡️",
"path": "/mitmproxy/",
"category": "security",
"category": "wall",
"order": 500,
"description": "Web Application Firewall"
}

View File

@ -1 +1,9 @@
{"id":"mmpm","name":"MMPM","icon":"📦","path":"/mmpm/","category":"apps","order":820,"description":"MagicMirror Package Manager"}
{
"id": "mmpm",
"name": "MMPM",
"icon": "📦",
"path": "/mmpm/",
"category": "mesh",
"order": 820,
"description": "MagicMirror Package Manager"
}

View File

@ -3,7 +3,7 @@
"name": "Modem",
"icon": "📶",
"path": "/modem/",
"category": "network",
"category": "mesh",
"order": 37,
"description": "LTE/5G modem management"
}

View File

@ -1,9 +1,10 @@
{
"title": "Lyrion",
"subtitle": "Music server",
"icon": "fa-music",
"url": "/lyrion/",
"section": "hosting",
"order": 80,
"module": "lyrion"
"id": "lyrion",
"name": "Lyrion",
"path": "/lyrion/",
"category": "mesh",
"description": ""
}

View File

@ -1,7 +1,7 @@
{
"id": "nac",
"name": "Client Guardian",
"category": "security",
"category": "auth",
"icon": "👥",
"path": "/nac/",
"order": 130,

View File

@ -1,7 +1,7 @@
{
"id": "ndpid",
"name": "nDPId",
"category": "network",
"category": "mind",
"icon": "🔬",
"path": "/ndpid/",
"order": 32,

View File

@ -1,7 +1,7 @@
{
"id": "netdata",
"name": "Netdata",
"category": "monitoring",
"category": "mind",
"icon": "📊",
"path": "/netdata/",
"order": 300,

View File

@ -3,7 +3,7 @@
"name": "Network Diagnostics",
"icon": "🩺",
"path": "/netdiag/",
"category": "network",
"category": "root",
"order": 921,
"description": "Network troubleshooting tools: ping, traceroute, DNS, WHOIS, MTR, port scan"
}

View File

@ -1,7 +1,7 @@
{
"id": "netifyd",
"name": "Netifyd",
"category": "network",
"category": "mind",
"icon": "N",
"path": "/netifyd/",
"order": 235,

View File

@ -1,7 +1,7 @@
{
"id": "netmodes",
"name": "Network Modes",
"category": "network",
"category": "mesh",
"icon": "🔀",
"path": "/netmodes/",
"order": 200,

View File

@ -1,7 +1,7 @@
{
"id": "nettweak",
"name": "Network Tuning",
"category": "system",
"category": "mesh",
"icon": "🔧",
"path": "/nettweak/",
"order": 450,

View File

@ -1,7 +1,7 @@
{
"id": "network-anomaly",
"name": "Network-anomaly",
"category": "security",
"category": "wall",
"icon": "📊",
"path": "/network-anomaly/",
"order": 140,

View File

@ -1,8 +1,9 @@
{
"name": "Newsbin",
"path": "/newsbin/",
"icon": "📥",
"category": "apps",
"order": 814,
"description": "Usenet downloader management"
"name": "Newsbin",
"path": "/newsbin/",
"icon": "📥",
"category": "mesh",
"order": 814,
"description": "Usenet downloader management",
"id": "newsbin"
}

View File

@ -1,7 +1,7 @@
{
"id": "nextcloud",
"name": "Nextcloud",
"category": "apps",
"category": "mesh",
"icon": "☁️",
"path": "/nextcloud/",
"order": 505,

View File

@ -1,8 +1,9 @@
{
"name": "Ollama AI",
"path": "/ollama/",
"icon": "🧠",
"category": "apps",
"order": 800,
"description": "Local AI inference with Ollama"
"name": "Ollama AI",
"path": "/ollama/",
"icon": "🧠",
"category": "mind",
"order": 800,
"description": "Local AI inference with Ollama",
"id": "ollama"
}

View File

@ -1,7 +1,7 @@
{
"id": "openclaw",
"name": "OpenClaw OSINT",
"category": "security",
"category": "auth",
"icon": "🕵️",
"path": "/openclaw/",
"order": 708,

View File

@ -1 +1,9 @@
{"id":"ossec","name":"OSSEC HIDS","icon":"🔒","path":"/ossec/","category":"security","order":952,"description":"Host intrusion detection"}
{
"id": "ossec",
"name": "OSSEC HIDS",
"icon": "🔒",
"path": "/ossec/",
"category": "wall",
"order": 952,
"description": "Host intrusion detection"
}

View File

@ -1,10 +1,12 @@
{
"id": "p2p",
"name": "P2P Hub",
"icon": "🔗",
"path": "/p2p/",
"category": "network",
"order": 590,
"description": "Peer-to-Peer Network Hub",
"requires": ["secubox-p2p"]
"id": "p2p",
"name": "P2P Hub",
"icon": "🔗",
"path": "/p2p/",
"category": "mesh",
"order": 590,
"description": "Peer-to-Peer Network Hub",
"requires": [
"secubox-p2p"
]
}

View File

@ -1,8 +1,9 @@
{
"name": "PeerTube",
"path": "/peertube/",
"icon": "📹",
"category": "apps",
"order": 811,
"description": "Federated video platform"
"name": "PeerTube",
"path": "/peertube/",
"icon": "📹",
"category": "mesh",
"order": 811,
"description": "Federated video platform",
"id": "peertube"
}

View File

@ -1,8 +1,9 @@
{
"name": "PhotoPrism",
"path": "/photoprism/",
"icon": "📷",
"category": "apps",
"order": 617,
"description": "Photo management and AI recognition"
"name": "PhotoPrism",
"path": "/photoprism/",
"icon": "📷",
"category": "mesh",
"order": 617,
"description": "Photo management and AI recognition",
"id": "photoprism"
}

View File

@ -3,7 +3,7 @@
"name": "PicoBrew",
"icon": "🍺",
"path": "/picobrew/",
"category": "apps",
"category": "mesh",
"order": 496,
"description": "Homebrew fermentation controller"
}

View File

@ -1,7 +1,7 @@
{
"id": "portal",
"name": "Portal",
"category": "dashboard",
"category": "root",
"icon": "🔐",
"path": "/portal/",
"order": 1,

View File

@ -1,7 +1,7 @@
{
"id": "publish",
"name": "Publish",
"category": "publishing",
"category": "boot",
"icon": "📡",
"path": "/publish/",
"order": 600,

View File

@ -1,7 +1,7 @@
{
"id": "qos",
"name": "Bandwidth Manager",
"category": "network",
"category": "mesh",
"icon": "📶",
"path": "/qos/",
"order": 220,

View File

@ -1 +1,9 @@
{"id":"redroid","name":"Redroid","icon":"🤖","path":"/redroid/","category":"apps","order":821,"description":"Android in container"}
{
"id": "redroid",
"name": "Redroid",
"icon": "🤖",
"path": "/redroid/",
"category": "mesh",
"order": 821,
"description": "Android in container"
}

View File

@ -1,7 +1,7 @@
{
"id": "reporter",
"name": "Reporter",
"category": "monitoring",
"category": "mind",
"icon": "📊",
"path": "/reporter/",
"order": 909,

View File

@ -3,7 +3,7 @@
"name": "RezApp",
"icon": "📦",
"path": "/rezapp/",
"category": "apps",
"category": "root",
"order": 494,
"description": "Application deployment and management"
}

View File

@ -3,7 +3,7 @@
"name": "Migration Roadmap",
"icon": "🗺️",
"path": "/roadmap/",
"category": "system",
"category": "mind",
"order": 900,
"description": "OpenWRT to Debian migration tracking"
}

View File

@ -1,7 +1,7 @@
{
"id": "routes",
"name": "Routes",
"category": "network",
"category": "root",
"icon": "🛣️",
"path": "/routes/",
"order": 907,

View File

@ -3,7 +3,7 @@
"name": "Remote Terminal",
"icon": "🖥️",
"path": "/rtty/",
"category": "system",
"category": "root",
"order": 905,
"description": "Web-based remote terminal access using rtty"
}

View File

@ -1,9 +1,10 @@
{
"title": "RustDesk",
"subtitle": "Remote desktop relay",
"icon": "fa-desktop",
"url": "/rustdesk/",
"section": "remote-access",
"order": 70,
"module": "rustdesk"
"id": "rustdesk",
"name": "RustDesk",
"path": "/rustdesk/",
"category": "mesh",
"description": ""
}

View File

@ -1,7 +1,7 @@
{
"id": "saas-relay",
"name": "SaaS Relay",
"category": "services",
"category": "mind",
"icon": "🔄",
"path": "/saas-relay/",
"order": 492,

View File

@ -1 +1,10 @@
{"id":"simplex","name":"SimpleX","icon":"💬","path":"/simplex/","category":"apps","order":816,"description":"Zero-knowledge private messaging server","color":"#6366f1"}
{
"id": "simplex",
"name": "SimpleX",
"icon": "💬",
"path": "/simplex/",
"category": "mesh",
"order": 816,
"description": "Zero-knowledge private messaging server",
"color": "#6366f1"
}

View File

@ -1,7 +1,7 @@
{
"id": "smtp-relay",
"name": "SMTP Relay",
"category": "services",
"category": "mesh",
"icon": "envelope",
"path": "/smtp-relay/",
"order": 915,

View File

@ -1,7 +1,7 @@
{
"id": "soc",
"name": "Soc",
"category": "dashboard",
"category": "wall",
"icon": "🛡️",
"path": "/soc/",
"order": 100,

View File

@ -1,7 +1,7 @@
{
"id": "streamforge",
"name": "StreamForge",
"category": "apps",
"category": "mesh",
"icon": "🔨",
"path": "/streamforge/",
"order": 510,

View File

@ -1,7 +1,7 @@
{
"id": "streamlit",
"name": "Streamlit",
"category": "apps",
"category": "mesh",
"icon": "🎯",
"path": "/streamlit/",
"order": 500,

Some files were not shown because too many files have changed in this diff Show More