fix(haproxy): Sync generated config to /etc/haproxy.cfg

- metablogizer: reload_haproxy() now copies config to /etc/haproxy.cfg
- haproxyctl: generate_config() syncs to /etc/haproxy.cfg after generation
- Fixes issue where newly uploaded sites return 404 because HAProxy
  reads config from /etc/haproxy.cfg but config was only generated to
  /srv/haproxy/config/haproxy.cfg

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-02-24 08:02:42 +01:00
parent 8a51a3e655
commit 29e2eac616
149 changed files with 314 additions and 1023 deletions

View File

@ -1,6 +1,6 @@
# SecuBox UI & Theme History
_Last updated: 2026-02-21_
_Last updated: 2026-02-24_
1. **Unified Dashboard Refresh (2025-12-20)**
- Dashboard received the "sh-page-header" layout, hero stats, and SecuNav top tabs.
@ -3159,3 +3159,24 @@ git checkout HEAD -- index.html
- `secubox-app-haproxy/files/usr/sbin/haproxyctl` (alpn h2,http/1.1 → alpn http/1.1)
- `secubox-app-haproxy/files/usr/share/haproxy/templates/default.cfg` (updated)
- `secubox-app-haproxy/files/etc/config/haproxy` (updated)
38. **Service Stability & LED Pulse Fix (2026-02-24)**
- **CrowdSec Autostart Fix:**
- Root cause: Machine registration mismatch between credentials file (`secubox-local`) and database (old UUID-style name).
- Fix: Re-registered machine with `cscli machines add secubox-local --auto --force`.
- Downloaded GeoLite2-City.mmdb (63MB) via `cscli hub update`.
- CrowdSec now starts automatically after reboot.
- **LED Pulse SPUNK ALERT Fix:**
- Root cause: `secubox-led-pulse` was checking `lxc-attach -n haproxy -- pgrep haproxy` but HAProxy runs on host, not in LXC.
- Fix: Changed to `pgrep haproxy` (host process check).
- Committed: `8a51a3e6 fix(led-pulse): Check HAProxy on host instead of LXC container`.
- **Docker nextcloud-talk-hpb Restore:**
- Fixed corrupted Docker storage layer (`GetImageBlob: no such file or directory`).
- Restarted dockerd, re-pulled image, container now healthy.
- **cloud.gk2.secubox.in 503 Fix:**
- Changed backend from `mitmproxy_inspector` to `nextcloud` (WAF was disabled for this vhost).
- **LXC Autostart Configuration:**
- Enabled `lxc.start.auto = 1` for mailserver and roundcube containers.
- **Verification:** All 13 LXC containers + 6 core services confirmed running after reboot.
- **Files:**
- `secubox-core/root/usr/sbin/secubox-led-pulse` (fixed HAProxy check)

View File

@ -31,7 +31,6 @@ _Last updated: 2026-02-06_
| Package | Status | Notes |
|---------|--------|-------|
| `secubox-app-guacamole` | DEFERRED | LXC build-from-source too slow; needs pre-built binaries |
| `secubox-app-rustdesk` | DONE | Native hbbs/hbbr binaries, auto-key generation |
| `secubox-app-ksmbd` | DONE | Mesh media server with pre-configured shares |
| `secubox-app-domoticz` | DONE | LXC Debian, MQTT bridge, Zigbee2MQTT |
@ -164,7 +163,6 @@ All cloud providers are **opt-in**. Offline resilience: local tier always active
- [x] Threat Analyst agent (Done 2026-02-05)
- [x] DNS Guard AI migration (Done 2026-02-06)
- [x] LocalAI multi-channel emancipation (Done 2026-02-06)
- [ ] Guacamole pre-built binaries (DEFERRED)
### v0.19.0 — AI Expansion + MirrorNet

View File

@ -1,6 +1,6 @@
# Work In Progress (Claude)
_Last updated: 2026-02-21 (v0.24.1 - KISS UI Regeneration)_
_Last updated: 2026-02-24 (Service Stability Fixes)_
> **Architecture Reference**: SecuBox Fanzine v3 — Les 4 Couches
@ -864,6 +864,16 @@ _Last updated: 2026-02-21 (v0.24.1 - KISS UI Regeneration)_
- 4 views: Overview, Devices, Policies, Settings
- RPCD handler with 11 methods + public ACL for unauthenticated access
### Just Completed (2026-02-24)
- **Service Stability & LED Pulse Fix** — DONE (2026-02-24)
- CrowdSec autostart: Fixed machine registration mismatch, downloaded GeoLite2-City.mmdb
- LED pulse: Fixed HAProxy check to run on host instead of non-existent LXC container
- Docker: Restored corrupted nextcloud-talk-hpb container
- HAProxy: Fixed cloud.gk2.secubox.in 503 (wrong backend)
- LXC: Enabled autostart for mailserver and roundcube containers
- Verified: All 13 LXC containers + 6 core services running after reboot
### Just Completed (2026-02-21)
- **SecuBox KISS UI Full Regeneration** — DONE (2026-02-21)
@ -913,24 +923,17 @@ _Last updated: 2026-02-21 (v0.24.1 - KISS UI Regeneration)_
### SysWarden Evolution Plan (2026-02-20)
Implementing 4 evolutions inspired by SysWarden patterns:
Implementing 3 evolutions inspired by SysWarden patterns:
| # | Module | Priority | Status |
|---|--------|----------|--------|
| 1 | `luci-app-ipblocklist` | HIGH | DONE |
| 2 | AbuseIPDB Reporter | HIGH | DONE |
| 3 | Log Denoising (System Hub) | MEDIUM | DONE |
| 4 | SIEM Connector (x86 only) | LOW | TODO |
**Next**: Evolution #4 - SIEM Connector (optional, x86 only)
### Next Up — Couche 1
1. **Guacamole Pre-built Binaries**
- Current LXC build-from-source approach is too slow
- Need to find/create pre-built ARM64 binaries for guacd + Tomcat
3. **Multi-Node Mesh Testing**
1. **Multi-Node Mesh Testing**
- Deploy second SecuBox node to test real peer-to-peer sync
- Validate bidirectional threat intelligence sharing

View File

@ -397,7 +397,16 @@
"WebFetch(domain:arnowelzel.de)",
"Bash(__NEW_LINE_5c2a7272ff3658b1__ ssh root@192.168.255.1 '\n# Test different sizes to find the limit\nfor size in 1000 5000 10000 20000 40000 60000; do\n CONTENT=$\\(head -c $size /tmp/test-upload.html | base64 -w0\\)\n CSIZE=$\\(echo -n \"\"$CONTENT\"\" | wc -c\\)\n RESULT=$\\(ubus call luci.metablogizer upload_and_create_site \"\"{\\\\\"\"name\\\\\"\":\\\\\"\"sizetest\\\\\"\",\\\\\"\"domain\\\\\"\":\\\\\"\"sizetest.gk2.secubox.in\\\\\"\",\\\\\"\"content\\\\\"\":\\\\\"\"$CONTENT\\\\\"\",\\\\\"\"is_zip\\\\\"\":\\\\\"\"0\\\\\"\"}\"\" 2>&1\\)\n \n if echo \"\"$RESULT\"\" | grep -q \"\"success.*true\"\"; then\n echo \"\"Size $size \\($CSIZE base64\\): OK\"\"\n ubus call luci.metablogizer delete_site \"\"{\\\\\"\"id\\\\\"\":\\\\\"\"site_sizetest\\\\\"\"}\"\" >/dev/null 2>&1\n else\n ERROR=$\\(echo \"\"$RESULT\"\" | head -1\\)\n echo \"\"Size $size \\($CSIZE base64\\): FAILED - $ERROR\"\"\n break\n fi\ndone\n')",
"WebFetch(domain:admin.gk2.secubox.in)",
"WebFetch(domain:tdah.gk2.secubox.in)"
"WebFetch(domain:tdah.gk2.secubox.in)",
"Bash(sudo ./secubox-tools/c3box-vm-builder.sh:*)",
"Bash(./secubox-tools/c3box-vm-builder.sh:*)",
"Bash(sudo apt-get update:*)",
"Bash(vboxmanage --version:*)",
"Bash(vboxmanage import:*)",
"Bash(vboxmanage startvm:*)",
"Bash(# Find the built packages find /home/reepost/CyberMindStudio/secubox-openwrt/secubox-tools -name \"\"luci-theme-secubox*.ipk\"\" -newer /home/reepost/CyberMindStudio/secubox-openwrt/secubox-tools/local-feed)",
"Bash(do if ssh -o ConnectTimeout=5 root@192.168.255.1 \"echo ''System up''\")",
"Bash(do if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@192.168.255.1 \"echo ''System up''\")"
]
}
}

View File

@ -91,7 +91,17 @@ reload_haproxy() {
return 1
fi
# Generate new config
/usr/sbin/haproxyctl generate >/dev/null 2>&1
# Sync generated config to all locations HAProxy might read from
local src_cfg="/srv/haproxy/config/haproxy.cfg"
if [ -f "$src_cfg" ]; then
cp "$src_cfg" /etc/haproxy.cfg 2>/dev/null
[ -d /opt/haproxy/config ] && cp "$src_cfg" /opt/haproxy/config/haproxy.cfg 2>/dev/null
fi
# Reload HAProxy
if [ -x /etc/init.d/haproxy ]; then
/etc/init.d/haproxy reload >/dev/null 2>&1
fi

View File

@ -1,753 +0,0 @@
'use strict';
'require baseclass';
/**
* SecuBox KISS Theme v2.0 - Shared styling for all LuCI dashboards
* Features: Top bar with logout, collapsible sidebar, responsive design, view tabs
*/
var KissThemeClass = baseclass.extend({
// Navigation config - organized by category with collapsible sections
// Items with `tabs` array show sub-navigation when active
nav: [
{ cat: 'Dashboard', icon: '📊', collapsed: false, items: [
{ icon: '🏠', name: 'Home', path: 'admin/secubox-home' },
{ icon: '📊', name: 'Dashboard', path: 'admin/secubox/dashboard' },
{ icon: '🖥️', name: 'System Hub', path: 'admin/secubox/system/system-hub' }
]},
{ cat: 'Security', icon: '🛡️', collapsed: false, items: [
{ icon: '🧙', name: 'InterceptoR', path: 'admin/secubox/interceptor', tabs: [
{ name: 'Overview', path: 'admin/secubox/interceptor/overview' },
{ name: 'Services', path: 'admin/secubox/interceptor/services' }
]},
{ icon: '🛡️', name: 'CrowdSec', path: 'admin/secubox/security/crowdsec', tabs: [
{ name: 'Overview', path: 'admin/secubox/security/crowdsec/overview' },
{ name: 'Decisions', path: 'admin/secubox/security/crowdsec/decisions' },
{ name: 'Alerts', path: 'admin/secubox/security/crowdsec/alerts' },
{ name: 'Bouncers', path: 'admin/secubox/security/crowdsec/bouncers' },
{ name: 'Setup', path: 'admin/secubox/security/crowdsec/setup' }
]},
{ icon: '🔍', name: 'mitmproxy', path: 'admin/secubox/security/mitmproxy', tabs: [
{ name: 'Status', path: 'admin/secubox/security/mitmproxy/status' },
{ name: 'Settings', path: 'admin/secubox/security/mitmproxy/settings' }
]},
{ icon: '🚫', name: 'Vortex FW', path: 'admin/secubox/security/vortex-firewall' },
{ icon: '👁️', name: 'Client Guard', path: 'admin/secubox/security/guardian', tabs: [
{ name: 'Clients', path: 'admin/secubox/security/guardian/clients' },
{ name: 'Settings', path: 'admin/secubox/security/guardian/settings' }
]},
{ icon: '🍪', name: 'Cookie Track', path: 'admin/secubox/interceptor/cookies' }
]},
{ cat: 'Network', icon: '🌐', collapsed: true, items: [
{ icon: '⚖️', name: 'HAProxy', path: 'admin/services/haproxy', tabs: [
{ name: 'Overview', path: 'admin/services/haproxy/overview' },
{ name: 'Vhosts', path: 'admin/services/haproxy/vhosts' },
{ name: 'Backends', path: 'admin/services/haproxy/backends' },
{ name: 'Certs', path: 'admin/services/haproxy/certificates' },
{ name: 'ACLs', path: 'admin/services/haproxy/acls' },
{ name: 'Stats', path: 'admin/services/haproxy/stats' },
{ name: 'Settings', path: 'admin/services/haproxy/settings' }
]},
{ icon: '🔒', name: 'WireGuard', path: 'admin/services/wireguard', tabs: [
{ name: 'Wizard', path: 'admin/services/wireguard/wizard' },
{ name: 'Overview', path: 'admin/services/wireguard/overview' },
{ name: 'Peers', path: 'admin/services/wireguard/peers' },
{ name: 'QR Codes', path: 'admin/services/wireguard/qrcodes' },
{ name: 'Traffic', path: 'admin/services/wireguard/traffic' },
{ name: 'Config', path: 'admin/services/wireguard/config' },
{ name: 'Settings', path: 'admin/services/wireguard/settings' }
]},
{ icon: '🌍', name: 'Tor Shield', path: 'admin/services/tor-shield', tabs: [
{ name: 'Overview', path: 'admin/services/tor-shield/overview' },
{ name: 'Circuits', path: 'admin/services/tor-shield/circuits' },
{ name: 'Hidden Svc', path: 'admin/services/tor-shield/hidden-services' },
{ name: 'Bridges', path: 'admin/services/tor-shield/bridges' },
{ name: 'Settings', path: 'admin/services/tor-shield/settings' }
]},
{ icon: '💾', name: 'CDN Cache', path: 'admin/services/cdn-cache', tabs: [
{ name: 'Overview', path: 'admin/services/cdn-cache/overview' },
{ name: 'Cache', path: 'admin/services/cdn-cache/cache' },
{ name: 'Policies', path: 'admin/services/cdn-cache/policies' },
{ name: 'Stats', path: 'admin/services/cdn-cache/statistics' },
{ name: 'Maint.', path: 'admin/services/cdn-cache/maintenance' },
{ name: 'Settings', path: 'admin/services/cdn-cache/settings' }
]},
{ icon: '📡', name: 'Bandwidth', path: 'admin/secubox/network/bandwidth-manager' },
{ icon: '📶', name: 'Traffic Shaper', path: 'admin/secubox/network/traffic-shaper', tabs: [
{ name: 'Overview', path: 'admin/secubox/network/traffic-shaper/overview' },
{ name: 'Classes', path: 'admin/secubox/network/traffic-shaper/classes' },
{ name: 'Rules', path: 'admin/secubox/network/traffic-shaper/rules' },
{ name: 'Stats', path: 'admin/secubox/network/traffic-shaper/stats' },
{ name: 'Presets', path: 'admin/secubox/network/traffic-shaper/presets' }
]},
{ icon: '🌐', name: 'Network Modes', path: 'admin/secubox/network/network-modes' },
{ icon: '🔌', name: 'Interfaces', path: 'admin/network/network' },
{ icon: '🌐', name: 'DNS Master', path: 'admin/services/dns-master' }
]},
{ cat: 'AI & LLM', icon: '🤖', collapsed: true, items: [
{ icon: '🧠', name: 'AI Insights', path: 'admin/secubox/ai/insights' },
{ icon: '🦙', name: 'Ollama', path: 'admin/services/ollama', tabs: [
{ name: 'Dashboard', path: 'admin/services/ollama/dashboard' },
{ name: 'Models', path: 'admin/services/ollama/models' },
{ name: 'Chat', path: 'admin/services/ollama/chat' },
{ name: 'Settings', path: 'admin/services/ollama/settings' }
]},
{ icon: '🤖', name: 'LocalAI', path: 'admin/services/localai' }
]},
{ cat: 'Apps', icon: '📦', collapsed: true, items: [
{ icon: '✉️', name: 'Mail Server', path: 'admin/services/mailserver' },
{ icon: '☁️', name: 'Nextcloud', path: 'admin/secubox/services/nextcloud', tabs: [
{ name: 'Overview', path: 'admin/secubox/services/nextcloud/overview' },
{ name: 'Settings', path: 'admin/secubox/services/nextcloud/settings' }
]},
{ icon: '🎬', name: 'Media Flow', path: 'admin/services/media-flow' },
{ icon: '🪞', name: 'MagicMirror', path: 'admin/services/magicmirror2' },
{ icon: '📰', name: 'HexoJS', path: 'admin/services/hexojs', tabs: [
{ name: 'Overview', path: 'admin/services/hexojs/overview' },
{ name: 'Posts', path: 'admin/services/hexojs/posts' },
{ name: 'Editor', path: 'admin/services/hexojs/editor' },
{ name: 'Media', path: 'admin/services/hexojs/media' },
{ name: 'Deploy', path: 'admin/services/hexojs/deploy' },
{ name: 'Sync', path: 'admin/services/hexojs/sync' },
{ name: 'Theme', path: 'admin/services/hexojs/theme' },
{ name: 'Settings', path: 'admin/services/hexojs/settings' }
]},
{ icon: '📺', name: 'Netdata', path: 'admin/services/netdata-dashboard' },
{ icon: '🏠', name: 'Vhost Manager', path: 'admin/services/vhost-manager' },
{ icon: '📦', name: 'App Store', path: 'admin/secubox/apps' }
]},
{ cat: 'Streamlit', icon: '🎯', collapsed: true, items: [
{ icon: '📺', name: 'France TV', url: 'http://192.168.255.1:8522/' },
{ icon: '🔮', name: 'Yijing Oracle', url: 'http://192.168.255.1:8501/' },
{ icon: '🏭', name: 'Fabricator', url: 'http://192.168.255.1:8520/' },
{ icon: '☯️', name: 'Bazi Complete', url: 'http://192.168.255.1:8509/' },
{ icon: '🎛️', name: 'SecuBox Control', url: 'http://192.168.255.1:8511/' }
]},
{ cat: 'P2P & Mesh', icon: '🔗', collapsed: true, items: [
{ icon: '🔗', name: 'P2P Network', path: 'admin/services/secubox-p2p' },
{ icon: '🌳', name: 'Netifyd', path: 'admin/services/secubox-netifyd' },
{ icon: '📡', name: 'Exposure', path: 'admin/services/exposure' }
]},
{ cat: 'System', icon: '⚙️', collapsed: true, items: [
{ icon: '⚙️', name: 'Settings', path: 'admin/system' },
{ icon: '📊', name: 'Status', path: 'admin/status/overview' },
{ icon: '🛠️', name: 'KSM Manager', path: 'admin/services/ksm-manager' },
{ icon: '🔄', name: 'Cloner', path: 'admin/secubox/system/cloner' },
{ icon: '🌳', name: 'LuCI Menu', path: 'admin/secubox/luci-tree' },
{ icon: '🔧', name: 'Software', path: 'admin/system/opkg' }
]}
],
// Track collapsed state per category
collapsedState: {},
// Core palette
colors: {
bg: '#0a0e17',
bg2: '#111827',
card: '#161e2e',
line: '#1e293b',
text: '#e2e8f0',
muted: '#94a3b8',
green: '#00C853',
red: '#FF1744',
blue: '#2979FF',
cyan: '#22d3ee',
purple: '#a78bfa',
orange: '#fb923c',
yellow: '#fbbf24'
},
// State
isKissMode: true,
sidebarOpen: false,
// CSS generation
generateCSS: function() {
var c = this.colors;
return `
/* SecuBox KISS Theme v2 */
:root {
--kiss-bg: ${c.bg}; --kiss-bg2: ${c.bg2}; --kiss-card: ${c.card};
--kiss-line: ${c.line}; --kiss-text: ${c.text}; --kiss-muted: ${c.muted};
--kiss-green: ${c.green}; --kiss-red: ${c.red}; --kiss-blue: ${c.blue};
--kiss-cyan: ${c.cyan}; --kiss-purple: ${c.purple}; --kiss-orange: ${c.orange};
--kiss-yellow: ${c.yellow};
}
/* === Top Bar === */
.kiss-topbar {
position: fixed; top: 0; left: 0; right: 0; height: 56px; z-index: 1000;
background: linear-gradient(90deg, #0d1321 0%, ${c.bg} 100%);
border-bottom: 1px solid ${c.line};
display: flex; align-items: center; padding: 0 16px; gap: 12px;
}
.kiss-topbar-menu {
width: 40px; height: 40px; border: none; background: transparent;
color: ${c.text}; font-size: 24px; cursor: pointer; border-radius: 8px;
display: flex; align-items: center; justify-content: center;
}
.kiss-topbar-menu:hover { background: rgba(255,255,255,0.1); }
.kiss-topbar-logo {
font-weight: 900; font-size: 20px; display: flex; align-items: center; gap: 2px;
}
.kiss-topbar-logo .g { color: ${c.green}; }
.kiss-topbar-logo .r { color: ${c.red}; font-size: 12px; vertical-align: super; }
.kiss-topbar-logo .b { color: ${c.blue}; }
.kiss-topbar-logo .o { color: #546e7a; }
.kiss-topbar-breadcrumb {
flex: 1; font-size: 13px; color: ${c.muted}; overflow: hidden;
text-overflow: ellipsis; white-space: nowrap;
}
.kiss-topbar-breadcrumb a { color: ${c.cyan}; text-decoration: none; }
.kiss-topbar-actions { display: flex; gap: 8px; align-items: center; }
.kiss-topbar-btn {
padding: 8px 14px; border-radius: 6px; font-size: 12px; font-weight: 600;
border: 1px solid ${c.line}; background: ${c.bg2}; color: ${c.text};
cursor: pointer; display: flex; align-items: center; gap: 6px;
text-decoration: none;
}
.kiss-topbar-btn:hover { border-color: ${c.green}; background: rgba(0,200,83,0.1); }
.kiss-topbar-btn.logout { border-color: ${c.red}; color: ${c.red}; }
.kiss-topbar-btn.logout:hover { background: rgba(255,23,68,0.1); }
/* === Sidebar === */
.kiss-sidebar {
position: fixed; left: 0; top: 56px; bottom: 0; width: 220px;
background: linear-gradient(180deg, #0d1321 0%, ${c.bg} 100%);
border-right: 1px solid ${c.line}; z-index: 999;
overflow-y: auto; overflow-x: hidden;
transition: transform 0.3s ease;
}
.kiss-sidebar::-webkit-scrollbar { width: 4px; }
.kiss-sidebar::-webkit-scrollbar-thumb { background: ${c.line}; border-radius: 2px; }
.kiss-nav { padding: 8px 0; }
.kiss-nav-section {
padding: 10px 16px 8px; font-size: 11px; letter-spacing: 0.5px;
text-transform: uppercase; color: ${c.muted}; font-weight: 600;
cursor: pointer; display: flex; align-items: center; gap: 8px;
transition: all 0.2s; border-radius: 6px; margin: 2px 8px;
}
.kiss-nav-section:hover { background: rgba(255,255,255,0.05); color: ${c.text}; }
.kiss-nav-section-icon { font-size: 14px; }
.kiss-nav-section-arrow { margin-left: auto; font-size: 10px; transition: transform 0.2s; }
.kiss-nav-section.collapsed .kiss-nav-section-arrow { transform: rotate(-90deg); }
.kiss-nav-section.collapsed + .kiss-nav-items { display: none; }
.kiss-nav-items { overflow: hidden; transition: all 0.2s; }
.kiss-nav-item {
display: flex; align-items: center; gap: 10px; padding: 8px 16px 8px 32px;
text-decoration: none; font-size: 12px; color: ${c.muted};
transition: all 0.2s; border-left: 3px solid transparent; margin: 1px 0;
}
.kiss-nav-item:hover { background: rgba(255,255,255,0.05); color: ${c.text}; }
.kiss-nav-item.active {
color: ${c.green}; background: rgba(0,200,83,0.08);
border-left-color: ${c.green};
}
.kiss-nav-item.has-tabs { padding-right: 8px; }
.kiss-nav-item .tab-arrow { margin-left: auto; font-size: 9px; opacity: 0.5; transition: transform 0.2s; }
.kiss-nav-item.expanded .tab-arrow { transform: rotate(90deg); }
.kiss-nav-icon { font-size: 14px; width: 20px; text-align: center; flex-shrink: 0; }
/* === Sub-tabs (nested under active items) === */
.kiss-nav-tabs {
overflow: hidden; max-height: 0; transition: max-height 0.3s ease;
background: rgba(0,0,0,0.15);
}
.kiss-nav-tabs.expanded { max-height: 500px; }
.kiss-nav-tab {
display: flex; align-items: center; gap: 6px; padding: 6px 16px 6px 48px;
text-decoration: none; font-size: 11px; color: ${c.muted};
transition: all 0.15s; border-left: 2px solid transparent;
position: relative;
}
.kiss-nav-tab::before {
content: ''; position: absolute; left: 36px; top: 50%;
width: 4px; height: 4px; border-radius: 50%;
background: ${c.line}; transform: translateY(-50%);
}
.kiss-nav-tab:hover { background: rgba(255,255,255,0.03); color: ${c.text}; }
.kiss-nav-tab:hover::before { background: ${c.muted}; }
.kiss-nav-tab.active {
color: ${c.cyan}; background: rgba(34,211,238,0.05);
border-left-color: ${c.cyan};
}
.kiss-nav-tab.active::before { background: ${c.cyan}; }
/* === Main Content === */
.kiss-main {
margin-left: 220px; margin-top: 56px; padding: 20px;
min-height: calc(100vh - 56px); background: ${c.bg};
width: calc(100% - 220px); max-width: none;
}
.kiss-main > * { max-width: 100%; }
/* === View Tabs (internal navigation) === */
.kiss-tabs {
display: flex; gap: 4px; margin-bottom: 20px; padding-bottom: 12px;
border-bottom: 1px solid ${c.line}; flex-wrap: wrap;
}
.kiss-tab {
padding: 8px 16px; font-size: 13px; color: ${c.muted};
text-decoration: none; border-radius: 6px; transition: all 0.2s;
border: 1px solid transparent;
}
.kiss-tab:hover { color: ${c.text}; background: rgba(255,255,255,0.05); }
.kiss-tab.active {
color: ${c.green}; background: rgba(0,200,83,0.1);
border-color: rgba(0,200,83,0.3);
}
/* === Overlay for mobile === */
.kiss-overlay {
position: fixed; top: 56px; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.6); z-index: 998; display: none;
}
.kiss-overlay.active { display: block; }
/* === Full Width Overrides === */
html, body { margin: 0; padding: 0; width: 100%; min-height: 100vh; background: ${c.bg}; }
body.kiss-mode { overflow-x: hidden; }
body.kiss-mode #maincontent,
body.kiss-mode .main-right,
body.kiss-mode .main {
margin: 0 !important; padding: 0 !important;
width: 100% !important; max-width: 100% !important;
background: ${c.bg} !important;
}
body.kiss-mode .container,
body.kiss-mode .cbi-map,
body.kiss-mode #cbi-network,
body.kiss-mode .cbi-section { max-width: 100% !important; width: 100% !important; }
/* === Cards === */
.kiss-root {
background: ${c.bg}; color: ${c.text}; font-family: 'Segoe UI', sans-serif;
width: 100%; min-height: 100vh; position: relative;
}
.kiss-root * { box-sizing: border-box; }
.kiss-card {
background: ${c.card}; border: 1px solid ${c.line};
border-radius: 12px; padding: 20px; margin-bottom: 16px;
}
.kiss-card:hover { border-color: rgba(0,200,83,0.2); }
.kiss-card-title {
font-weight: 700; font-size: 16px; margin-bottom: 12px;
display: flex; align-items: center; gap: 8px;
}
/* === Grid === */
.kiss-grid { display: grid; gap: 16px; }
.kiss-grid-2 { grid-template-columns: repeat(2, 1fr); }
.kiss-grid-3 { grid-template-columns: repeat(3, 1fr); }
.kiss-grid-4 { grid-template-columns: repeat(4, 1fr); }
/* === Stats === */
.kiss-stat {
background: ${c.card}; border: 1px solid ${c.line};
border-radius: 10px; padding: 16px; text-align: center;
}
.kiss-stat-value { font-family: monospace; font-weight: 700; font-size: 28px; color: ${c.green}; }
.kiss-stat-label { font-size: 11px; color: ${c.muted}; text-transform: uppercase; margin-top: 4px; }
/* === Buttons === */
.kiss-btn {
padding: 10px 18px; border-radius: 8px; font-size: 13px; font-weight: 600;
cursor: pointer; border: 1px solid ${c.line}; background: ${c.bg2};
color: ${c.text}; display: inline-flex; align-items: center; gap: 6px;
}
.kiss-btn:hover { border-color: rgba(0,200,83,0.3); background: rgba(0,200,83,0.05); }
.kiss-btn-green { border-color: ${c.green}; color: ${c.green}; }
.kiss-btn-red { border-color: ${c.red}; color: ${c.red}; }
.kiss-btn-blue { border-color: ${c.blue}; color: ${c.blue}; }
/* === Badges === */
.kiss-badge {
font-family: monospace; font-size: 10px; letter-spacing: 1px;
padding: 4px 10px; border-radius: 4px; display: inline-block;
}
.kiss-badge-green { color: ${c.green}; background: rgba(0,200,83,0.1); border: 1px solid rgba(0,200,83,0.25); }
.kiss-badge-red { color: ${c.red}; background: rgba(255,23,68,0.1); border: 1px solid rgba(255,23,68,0.25); }
.kiss-badge-blue { color: ${c.blue}; background: rgba(41,121,255,0.1); border: 1px solid rgba(41,121,255,0.25); }
.kiss-badge-yellow { color: ${c.yellow}; background: rgba(251,191,36,0.1); border: 1px solid rgba(251,191,36,0.25); }
/* === Tables === */
.kiss-table { width: 100%; border-collapse: separate; border-spacing: 0; }
.kiss-table th {
text-align: left; padding: 10px 16px; font-size: 11px;
text-transform: uppercase; color: ${c.muted}; border-bottom: 1px solid ${c.line};
}
.kiss-table td { padding: 10px 16px; font-size: 14px; border-bottom: 1px solid rgba(255,255,255,0.03); }
.kiss-table tr:hover td { background: rgba(255,255,255,0.02); }
/* === Progress === */
.kiss-progress { height: 8px; background: rgba(255,255,255,0.06); border-radius: 4px; overflow: hidden; }
.kiss-progress-fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, ${c.green}, ${c.cyan}); }
/* === Panels === */
.kiss-panel-green { border-left: 3px solid ${c.green}; }
.kiss-panel-red { border-left: 3px solid ${c.red}; }
.kiss-panel-blue { border-left: 3px solid ${c.blue}; }
/* === Toggle Buttons === */
.kiss-toggles {
position: fixed; bottom: 20px; right: 20px; z-index: 9999;
display: flex; flex-direction: column; gap: 8px;
}
.kiss-toggle-btn {
font-size: 20px; cursor: pointer; opacity: 0.7;
background: ${c.card}; border: 1px solid ${c.line};
border-radius: 50%; width: 44px; height: 44px;
display: flex; align-items: center; justify-content: center;
box-shadow: 0 4px 12px rgba(0,0,0,0.3); transition: all 0.2s;
}
.kiss-toggle-btn:hover { opacity: 1; transform: scale(1.1); border-color: ${c.green}; }
.kiss-toggle-btn.active { border-color: ${c.green}; background: rgba(0,200,83,0.15); }
/* === Minimized mode === */
.kiss-chrome-hidden .kiss-topbar,
.kiss-chrome-hidden .kiss-sidebar,
.kiss-chrome-hidden .kiss-overlay { display: none !important; }
.kiss-chrome-hidden .kiss-main {
margin-left: 0 !important; margin-top: 0 !important;
width: 100% !important; padding: 16px !important;
}
/* === Responsive === */
@media (max-width: 1024px) {
.kiss-sidebar { transform: translateX(-100%); }
.kiss-sidebar.open { transform: translateX(0); }
.kiss-main { margin-left: 0; width: 100%; }
.kiss-grid-3, .kiss-grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
.kiss-grid-2 { grid-template-columns: 1fr; }
.kiss-topbar-breadcrumb { display: none; }
.kiss-stat-value { font-size: 22px; }
.kiss-main { padding: 12px; width: 100%; }
.kiss-card { padding: 14px; }
.kiss-table { font-size: 12px; }
.kiss-table th, .kiss-table td { padding: 8px 10px; }
}
@media (max-width: 480px) {
.kiss-topbar-logo span:not(.g) { display: none; }
.kiss-topbar-btn span { display: none; }
.kiss-tabs { gap: 2px; }
.kiss-tab { padding: 6px 10px; font-size: 12px; }
.kiss-main { padding: 8px; }
.kiss-stat { padding: 10px; }
.kiss-stat-value { font-size: 18px; }
}
`;
},
// Apply theme
apply: function(options) {
options = options || {};
if (!document.querySelector('#kiss-theme-css')) {
var style = document.createElement('style');
style.id = 'kiss-theme-css';
style.textContent = this.generateCSS();
document.head.appendChild(style);
}
this.addToggle();
if (options.hideChrome !== false) {
this.hideChrome();
}
},
chromeVisible: true,
addToggle: function() {
var self = this;
if (document.querySelector('.kiss-toggles')) return;
var container = document.createElement('div');
container.className = 'kiss-toggles';
// Toggle KISS chrome (sidebar/topbar)
var chromeToggle = document.createElement('div');
chromeToggle.className = 'kiss-toggle-btn active';
chromeToggle.innerHTML = '📐';
chromeToggle.title = 'Toggle sidebar & top bar';
chromeToggle.onclick = function() { self.toggleChrome(); };
// Toggle LuCI mode
var modeToggle = document.createElement('div');
modeToggle.id = 'kiss-mode-toggle';
modeToggle.className = 'kiss-toggle-btn';
modeToggle.innerHTML = '👁️';
modeToggle.title = 'Switch to LuCI mode';
modeToggle.onclick = function() { self.toggleMode(); };
container.appendChild(chromeToggle);
container.appendChild(modeToggle);
document.body.appendChild(container);
},
toggleChrome: function() {
this.chromeVisible = !this.chromeVisible;
var btn = document.querySelector('.kiss-toggles .kiss-toggle-btn');
var root = document.querySelector('.kiss-root');
if (this.chromeVisible) {
btn.classList.add('active');
btn.innerHTML = '📐';
if (root) root.classList.remove('kiss-chrome-hidden');
} else {
btn.classList.remove('active');
btn.innerHTML = '📏';
if (root) root.classList.add('kiss-chrome-hidden');
}
},
toggleMode: function() {
this.isKissMode = !this.isKissMode;
var toggle = document.getElementById('kiss-mode-toggle');
if (this.isKissMode) {
toggle.innerHTML = '👁️';
toggle.title = 'Switch to LuCI mode';
this.hideChrome();
} else {
toggle.innerHTML = '👁️‍🗨️';
toggle.title = 'Switch to KISS mode';
this.showChrome();
}
},
showChrome: function() {
['#mainmenu', '.main-left', 'header', 'nav', 'aside', 'footer', '#topmenu', '#tabmenu', '.pull-right'].forEach(function(s) {
var el = document.querySelector(s);
if (el) el.style.display = '';
});
var main = document.querySelector('.main-right') || document.querySelector('#maincontent');
if (main) { main.style.marginLeft = ''; main.style.marginTop = ''; main.style.width = ''; }
// Hide KISS elements
var kissEl = document.querySelectorAll('.kiss-topbar, .kiss-sidebar, .kiss-overlay');
kissEl.forEach(function(el) { el.style.display = 'none'; });
},
hideChrome: function() {
document.body.classList.add('kiss-mode');
// Hide LuCI chrome but KEEP #tabmenu for view tabs
['#mainmenu', '.main-left', 'header', 'nav[role="navigation"]', 'aside', 'footer', '#topmenu', '.pull-right'].forEach(function(s) {
var el = document.querySelector(s);
if (el) el.style.display = 'none';
});
var main = document.querySelector('.main-right') || document.querySelector('#maincontent');
if (main) { main.style.marginLeft = '0'; main.style.marginTop = '0'; main.style.width = '100%'; }
// Show KISS elements
var kissEl = document.querySelectorAll('.kiss-topbar, .kiss-sidebar, .kiss-overlay');
kissEl.forEach(function(el) { el.style.display = ''; });
},
toggleSidebar: function() {
this.sidebarOpen = !this.sidebarOpen;
var sidebar = document.querySelector('.kiss-sidebar');
var overlay = document.querySelector('.kiss-overlay');
if (sidebar) sidebar.classList.toggle('open', this.sidebarOpen);
if (overlay) overlay.classList.toggle('active', this.sidebarOpen);
},
closeSidebar: function() {
this.sidebarOpen = false;
var sidebar = document.querySelector('.kiss-sidebar');
var overlay = document.querySelector('.kiss-overlay');
if (sidebar) sidebar.classList.remove('open');
if (overlay) overlay.classList.remove('active');
},
E: function(tag, attrs, children) {
var el = document.createElement(tag);
if (attrs) {
for (var k in attrs) {
if (k === 'class') el.className = attrs[k];
else if (k.startsWith('on') && typeof attrs[k] === 'function')
el.addEventListener(k.slice(2).toLowerCase(), attrs[k]);
else el.setAttribute(k, attrs[k]);
}
}
if (children) {
(Array.isArray(children) ? children : [children]).forEach(function(c) {
if (c == null) return;
el.appendChild(typeof c === 'string' ? document.createTextNode(c) : c);
});
}
return el;
},
card: function(title, content) {
return this.E('div', { 'class': 'kiss-card' }, [
title ? this.E('div', { 'class': 'kiss-card-title' }, title) : null,
this.E('div', {}, content)
]);
},
stat: function(value, label, color) {
return this.E('div', { 'class': 'kiss-stat' }, [
this.E('div', { 'class': 'kiss-stat-value', 'style': color ? 'color:' + color : '' }, String(value)),
this.E('div', { 'class': 'kiss-stat-label' }, label)
]);
},
badge: function(text, type) {
return this.E('span', { 'class': 'kiss-badge kiss-badge-' + (type || 'green') }, text);
},
btn: function(label, onClick, type) {
return this.E('button', { 'class': 'kiss-btn' + (type ? ' kiss-btn-' + type : ''), 'onClick': onClick }, label);
},
// Render top bar
renderTopbar: function() {
var self = this;
var path = window.location.pathname.replace('/cgi-bin/luci/', '').split('/');
var breadcrumb = path.map(function(p, i) {
var href = '/cgi-bin/luci/' + path.slice(0, i + 1).join('/');
return self.E('a', { 'href': href }, p);
});
return this.E('header', { 'class': 'kiss-topbar' }, [
this.E('button', { 'class': 'kiss-topbar-menu', 'onClick': function() { self.toggleSidebar(); } }, '☰'),
this.E('div', { 'class': 'kiss-topbar-logo' }, [
this.E('span', { 'class': 'g' }, 'C'),
this.E('span', { 'class': 'r' }, '3'),
this.E('span', { 'class': 'b' }, 'B'),
this.E('span', { 'class': 'o' }, 'O'),
this.E('span', { 'class': 'g' }, 'X')
]),
this.E('div', { 'class': 'kiss-topbar-breadcrumb' }, breadcrumb),
this.E('div', { 'class': 'kiss-topbar-actions' }, [
this.E('a', { 'class': 'kiss-topbar-btn', 'href': '/cgi-bin/luci/admin/system' }, [
'⚙️', this.E('span', {}, 'Settings')
]),
this.E('a', { 'class': 'kiss-topbar-btn logout', 'href': '/cgi-bin/luci/admin/logout' }, [
'🚪', this.E('span', {}, 'Logout')
])
])
]);
},
// Toggle category collapsed state
toggleCategory: function(catName) {
this.collapsedState[catName] = !this.collapsedState[catName];
var section = document.querySelector('.kiss-nav-section[data-cat="' + catName + '"]');
if (section) {
section.classList.toggle('collapsed', this.collapsedState[catName]);
}
},
// Render sidebar
renderSidebar: function(activePath) {
var self = this;
var currentPath = activePath || window.location.pathname.replace('/cgi-bin/luci/', '');
var navItems = [];
// Initialize collapsed state from nav config
this.nav.forEach(function(cat) {
if (self.collapsedState[cat.cat] === undefined) {
// Auto-expand if current path is in this category
var hasActive = cat.items.some(function(item) {
if (item.path && currentPath.indexOf(item.path) !== -1) return true;
if (item.tabs) {
return item.tabs.some(function(tab) {
return currentPath === tab.path || currentPath.indexOf(tab.path) !== -1;
});
}
return false;
});
self.collapsedState[cat.cat] = hasActive ? false : (cat.collapsed || false);
}
});
this.nav.forEach(function(cat) {
var isCollapsed = self.collapsedState[cat.cat];
// Section header (clickable to expand/collapse)
navItems.push(self.E('div', {
'class': 'kiss-nav-section' + (isCollapsed ? ' collapsed' : ''),
'data-cat': cat.cat,
'onClick': function(e) {
e.preventDefault();
self.toggleCategory(cat.cat);
}
}, [
self.E('span', { 'class': 'kiss-nav-section-icon' }, cat.icon || '📁'),
self.E('span', {}, cat.cat),
self.E('span', { 'class': 'kiss-nav-section-arrow' }, '▼')
]));
// Items container with sub-tabs
var itemElements = [];
cat.items.forEach(function(item) {
var isExternal = !!item.url;
var href = isExternal ? item.url : '/cgi-bin/luci/' + item.path;
var hasTabs = item.tabs && item.tabs.length > 0;
// Check if this item or any of its tabs is active
var isItemActive = !isExternal && item.path && currentPath.indexOf(item.path) !== -1;
var isTabActive = hasTabs && item.tabs.some(function(tab) {
return currentPath === tab.path || currentPath.indexOf(tab.path) !== -1;
});
var isActive = isItemActive || isTabActive;
// Main nav item
itemElements.push(self.E('a', {
'href': href,
'class': 'kiss-nav-item' + (isActive ? ' active' : '') + (isExternal ? ' external' : '') + (hasTabs ? ' has-tabs' : '') + (isActive && hasTabs ? ' expanded' : ''),
'target': isExternal ? '_blank' : '',
'onClick': function() { self.closeSidebar(); }
}, [
self.E('span', { 'class': 'kiss-nav-icon' }, item.icon),
self.E('span', {}, item.name),
isExternal ? self.E('span', { 'style': 'margin-left:auto;font-size:10px;opacity:0.5;' }, '↗') : null,
hasTabs ? self.E('span', { 'class': 'tab-arrow' }, '▶') : null
]));
// Sub-tabs (only rendered if item has tabs)
if (hasTabs) {
var tabsContainer = self.E('div', {
'class': 'kiss-nav-tabs' + (isActive ? ' expanded' : '')
}, item.tabs.map(function(tab) {
var tabActive = currentPath === tab.path || currentPath.indexOf(tab.path) !== -1;
return self.E('a', {
'href': '/cgi-bin/luci/' + tab.path,
'class': 'kiss-nav-tab' + (tabActive ? ' active' : ''),
'onClick': function() { self.closeSidebar(); }
}, tab.name);
}));
itemElements.push(tabsContainer);
}
});
var itemsContainer = self.E('div', { 'class': 'kiss-nav-items' }, itemElements);
navItems.push(itemsContainer);
});
return this.E('nav', { 'class': 'kiss-sidebar' }, [
this.E('div', { 'class': 'kiss-nav' }, navItems)
]);
},
// Render overlay for mobile
renderOverlay: function() {
var self = this;
return this.E('div', { 'class': 'kiss-overlay', 'onClick': function() { self.closeSidebar(); } });
},
// Wrap content with theme
wrap: function(content, activePath) {
this.apply();
return this.E('div', { 'class': 'kiss-root' }, [
this.renderTopbar(),
this.renderSidebar(activePath),
this.renderOverlay(),
this.E('div', { 'class': 'kiss-main' }, Array.isArray(content) ? content : [content])
]);
}
});
var KissTheme = new KissThemeClass();
window.KissTheme = KissTheme;
return KissThemeClass;

View File

@ -11,7 +11,7 @@ Description: Unified AI security insights dashboard for SecuBox.
DNS Guard, Network Anomaly, CVE Triage, and LocalRecall.
Provides security posture scoring and AI-powered analysis.
Filename: luci-app-ai-insights_1.0.0-r1_all.ipk
Size: 11637
Size: 11638
Package: luci-app-auth-guardian
Version: 0.4.0-r3
@ -23,7 +23,7 @@ Architecture: all
Installed-Size: 71680
Description: Comprehensive authentication and session management with captive portal, OAuth2/OIDC integration, voucher system, and time-based access control
Filename: luci-app-auth-guardian_0.4.0-r3_all.ipk
Size: 12396
Size: 12394
Package: luci-app-backup
Version: 1.0.0-r1
@ -35,7 +35,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI Backup Manager
Filename: luci-app-backup_1.0.0-r1_all.ipk
Size: 4532
Size: 4527
Package: luci-app-bandwidth-manager
Version: 0.5.0-r2
@ -59,7 +59,7 @@ Architecture: all
Installed-Size: 122880
Description: Dashboard for managing local CDN caching proxy on OpenWrt
Filename: luci-app-cdn-cache_0.5.0-r3_all.ipk
Size: 24254
Size: 24256
Package: luci-app-client-guardian
Version: 0.4.0-r7
@ -71,7 +71,7 @@ Architecture: all
Installed-Size: 276480
Description: Network Access Control with client monitoring, zone management, captive portal, parental controls, and SMS/email alerts
Filename: luci-app-client-guardian_0.4.0-r7_all.ipk
Size: 52684
Size: 52689
Package: luci-app-cloner
Version: 1.0.0-r1
@ -82,7 +82,7 @@ Architecture: all
Installed-Size: 102400
Description: SecuBox cloning station for building and deploying clone images
Filename: luci-app-cloner_1.0.0-r1_all.ipk
Size: 19433
Size: 19435
Package: luci-app-config-advisor
Version: 1.0.0-r1
@ -94,7 +94,7 @@ Architecture: all
Installed-Size: 51200
Description: ANSSI CSPN compliance checking and security configuration advisor
Filename: luci-app-config-advisor_1.0.0-r1_all.ipk
Size: 8858
Size: 8857
Package: luci-app-cookie-tracker
Version: 1.0.0-r1
@ -105,7 +105,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI Cookie Tracker Dashboard
Filename: luci-app-cookie-tracker_1.0.0-r1_all.ipk
Size: 5663
Size: 5655
Package: luci-app-crowdsec-dashboard
Version: 0.8.0-r1
@ -117,7 +117,7 @@ Architecture: all
Installed-Size: 225280
Description: Real-time security monitoring dashboard for CrowdSec on OpenWrt
Filename: luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk
Size: 43019
Size: 43023
Package: luci-app-cve-triage
Version: 1.0.0-r1
@ -129,7 +129,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI CVE Triage Dashboard
Filename: luci-app-cve-triage_1.0.0-r1_all.ipk
Size: 5950
Size: 5945
Package: luci-app-cyberfeed
Version: 0.1.1-r1
@ -172,7 +172,7 @@ Description: SecuBox DNS Guard provides privacy-focused DNS management with AI-
- Real-time alerts and blocklist management
- Domain analysis with LocalAI integration
Filename: luci-app-dnsguard_1.1.0-r1_all.ipk
Size: 12444
Size: 12449
Package: luci-app-dns-provider
Version: 1.0.0-r1
@ -184,7 +184,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI DNS Provider Manager
Filename: luci-app-dns-provider_1.0.0-r1_all.ipk
Size: 7168
Size: 7173
Package: luci-app-domoticz
Version: 1.0.0-r1
@ -196,7 +196,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI Domoticz Home Automation Configuration
Filename: luci-app-domoticz_1.0.0-r1_all.ipk
Size: 7121
Size: 7126
Package: luci-app-exposure
Version: 1.0.0-r3
@ -220,7 +220,7 @@ Architecture: all
Installed-Size: 92160
Description: Modern dashboard for Gitea Platform management on OpenWrt
Filename: luci-app-gitea_1.0.0-r2_all.ipk
Size: 16621
Size: 16625
Package: luci-app-glances
Version: 1.0.0-r2
@ -232,7 +232,7 @@ Architecture: all
Installed-Size: 51200
Description: Modern dashboard for Glances system monitoring with SecuBox theme
Filename: luci-app-glances_1.0.0-r2_all.ipk
Size: 7022
Size: 7023
Package: luci-app-gotosocial
Version: 0.1.0-r1
@ -244,7 +244,7 @@ Architecture: all
Installed-Size: 51200
Description: LuCI app for GoToSocial Fediverse Server
Filename: luci-app-gotosocial_0.1.0-r1_all.ipk
Size: 8206
Size: 8213
Package: luci-app-haproxy
Version: 1.0.0-r8
@ -256,7 +256,7 @@ Architecture: all
Installed-Size: 225280
Description: Web interface for managing HAProxy load balancer with vhosts, SSL certificates, and backend routing
Filename: luci-app-haproxy_1.0.0-r8_all.ipk
Size: 35339
Size: 35341
Package: luci-app-hexojs
Version: 1.0.0-r3
@ -268,7 +268,7 @@ Architecture: all
Installed-Size: 194560
Description: Modern dashboard for Hexo static site generator on OpenWrt
Filename: luci-app-hexojs_1.0.0-r3_all.ipk
Size: 30447
Size: 30451
Package: luci-app-iot-guard
Version: 1.0.0-r1
@ -280,7 +280,7 @@ Architecture: all
Installed-Size: 61440
Description: IoT device isolation and security monitoring interface
Filename: luci-app-iot-guard_1.0.0-r1_all.ipk
Size: 10532
Size: 10535
Package: luci-app-ipblocklist
Version: 1.0.0-r1
@ -292,7 +292,7 @@ Architecture: all
Installed-Size: 40960
Description: SecuBox IP Blocklist - Static threat defense dashboard
Filename: luci-app-ipblocklist_1.0.0-r1_all.ipk
Size: 6528
Size: 6531
Package: luci-app-jabber
Version: 0
@ -304,7 +304,7 @@ Architecture: all
Installed-Size: 61440
Description: LuCI Jabber/XMPP Server (Prosody)
Filename: luci-app-jabber_0_all.ipk
Size: 9304
Size: 9309
Package: luci-app-jellyfin
Version: 1.0.0-r1
@ -316,7 +316,7 @@ Architecture: all
Installed-Size: 51200
Description: LuCI Jellyfin Media Server Configuration
Filename: luci-app-jellyfin_1.0.0-r1_all.ipk
Size: 10482
Size: 10488
Package: luci-app-jitsi
Version: 1.0.0-r1
@ -328,7 +328,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI Jitsi Meet Configuration
Filename: luci-app-jitsi_1.0.0-r1_all.ipk
Size: 5176
Size: 5179
Package: luci-app-ksm-manager
Version: 0.4.0-r2
@ -340,7 +340,7 @@ Architecture: all
Installed-Size: 112640
Description: Centralized cryptographic key management with hardware security module (HSM) support for Nitrokey and YubiKey devices. Provides secure key storage, certificate management, SSH key handling, and secret storage with audit logging.
Filename: luci-app-ksm-manager_0.4.0-r2_all.ipk
Size: 18776
Size: 18781
Package: luci-app-localai
Version: 0.1.0-r15
@ -364,7 +364,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI LocalRecall AI Memory Dashboard
Filename: luci-app-localrecall_1.0.0-r1_all.ipk
Size: 8418
Size: 8417
Package: luci-app-lyrion
Version: 1.0.0-r1
@ -376,7 +376,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI support for Lyrion Music Server
Filename: luci-app-lyrion_1.0.0-r1_all.ipk
Size: 6834
Size: 6836
Package: luci-app-mac-guardian
Version: 0.5.0-r1
@ -388,7 +388,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI MAC Guardian - WiFi MAC Security Monitor
Filename: luci-app-mac-guardian_0.5.0-r1_all.ipk
Size: 6657
Size: 6666
Package: luci-app-magicmirror2
Version: 0.4.0-r6
@ -400,7 +400,7 @@ Architecture: all
Installed-Size: 71680
Description: Modern dashboard for MagicMirror2 smart display platform with module manager and SecuBox theme
Filename: luci-app-magicmirror2_0.4.0-r6_all.ipk
Size: 12359
Size: 12360
Package: luci-app-mailinabox
Version: 1.0.0-r1
@ -412,7 +412,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI support for Mail-in-a-Box
Filename: luci-app-mailinabox_1.0.0-r1_all.ipk
Size: 5486
Size: 5484
Package: luci-app-mailserver
Version: 1.0.0-r1
@ -424,7 +424,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI Mail Server Manager
Filename: luci-app-mailserver_1.0.0-r1_all.ipk
Size: 6508
Size: 6506
Package: luci-app-master-link
Version: 1.0.0-r1
@ -448,7 +448,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI Matrix Homeserver Dashboard
Filename: luci-app-matrix_1.0.0-r1_all.ipk
Size: 7523
Size: 7524
Package: luci-app-media-flow
Version: 0.6.4-r1
@ -472,7 +472,7 @@ Architecture: all
Installed-Size: 133120
Description: LuCI support for MetaBlogizer Static Site Publisher
Filename: luci-app-metablogizer_1.1.0-r1_all.ipk
Size: 26205
Size: 26207
Package: luci-app-metabolizer
Version: 1.0.0-r2
@ -484,7 +484,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI support for Metabolizer CMS
Filename: luci-app-metabolizer_1.0.0-r2_all.ipk
Size: 4822
Size: 4820
Package: luci-app-mitmproxy
Version: 0.5.0-r2
@ -496,7 +496,7 @@ Architecture: all
Installed-Size: 71680
Description: Modern dashboard for mitmproxy HTTPS traffic inspection with SecuBox theme
Filename: luci-app-mitmproxy_0.5.0-r2_all.ipk
Size: 13235
Size: 13233
Package: luci-app-mmpm
Version: 0.2.0-r3
@ -508,7 +508,7 @@ Architecture: all
Installed-Size: 51200
Description: Web interface for MMPM - MagicMirror Package Manager
Filename: luci-app-mmpm_0.2.0-r3_all.ipk
Size: 7970
Size: 7972
Package: luci-app-mqtt-bridge
Version: 0.4.0-r4
@ -520,7 +520,7 @@ Architecture: all
Installed-Size: 122880
Description: USB-to-MQTT IoT hub with SecuBox theme
Filename: luci-app-mqtt-bridge_0.4.0-r4_all.ipk
Size: 22688
Size: 22690
Package: luci-app-ndpid
Version: 1.1.2-r2
@ -532,7 +532,7 @@ Architecture: all
Installed-Size: 122880
Description: Modern dashboard for nDPId deep packet inspection on OpenWrt
Filename: luci-app-ndpid_1.1.2-r2_all.ipk
Size: 21699
Size: 21702
Package: luci-app-netdata-dashboard
Version: 0.5.0-r2
@ -544,7 +544,7 @@ Architecture: all
Installed-Size: 112640
Description: Real-time system monitoring dashboard with Netdata integration for OpenWrt
Filename: luci-app-netdata-dashboard_0.5.0-r2_all.ipk
Size: 20561
Size: 20558
Package: luci-app-network-anomaly
Version: 1.0.0-r1
@ -556,7 +556,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI Network Anomaly Detection Dashboard
Filename: luci-app-network-anomaly_1.0.0-r1_all.ipk
Size: 7639
Size: 7646
Package: luci-app-network-modes
Version: 0.5.0-r3
@ -568,7 +568,7 @@ Architecture: all
Installed-Size: 286720
Description: Configure OpenWrt for different network modes: Sniffer, Access Point, Relay, Router
Filename: luci-app-network-modes_0.5.0-r3_all.ipk
Size: 54227
Size: 54226
Package: luci-app-network-tweaks
Version: 1.0.0-r7
@ -580,7 +580,7 @@ Architecture: all
Installed-Size: 81920
Description: Unified network services dashboard with DNS/hosts sync, CDN cache control, and WPAD auto-proxy configuration
Filename: luci-app-network-tweaks_1.0.0-r7_all.ipk
Size: 15945
Size: 15944
Package: luci-app-nextcloud
Version: 1.0.0-r1
@ -592,7 +592,7 @@ Architecture: all
Installed-Size: 51200
Description: LuCI support for Nextcloud LXC
Filename: luci-app-nextcloud_1.0.0-r1_all.ipk
Size: 10351
Size: 10348
Package: luci-app-ollama
Version: 0.1.0-r1
@ -616,7 +616,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI PeerTube Video Platform
Filename: luci-app-peertube_0_all.ipk
Size: 5757
Size: 5759
Package: luci-app-picobrew
Version: 1.0.0-r1
@ -628,7 +628,7 @@ Architecture: all
Installed-Size: 51200
Description: Modern dashboard for PicoBrew Server management on OpenWrt
Filename: luci-app-picobrew_1.0.0-r1_all.ipk
Size: 9535
Size: 9531
Package: luci-app-secubox
Version: 0.7.1-r4
@ -640,7 +640,7 @@ Architecture: all
Installed-Size: 440320
Description: Central control hub for all SecuBox modules. Provides unified dashboard, module status, system health monitoring, and quick actions.
Filename: luci-app-secubox_0.7.1-r4_all.ipk
Size: 82095
Size: 82097
Package: luci-app-secubox-admin
Version: 1.0.0-r19
@ -651,7 +651,7 @@ Architecture: all
Installed-Size: 337920
Description: Unified admin control center for SecuBox appstore plugins with system monitoring
Filename: luci-app-secubox-admin_1.0.0-r19_all.ipk
Size: 58041
Size: 58042
Package: luci-app-secubox-crowdsec
Version: 1.0.0-r3
@ -663,7 +663,7 @@ Architecture: all
Installed-Size: 81920
Description: LuCI SecuBox CrowdSec Dashboard
Filename: luci-app-secubox-crowdsec_1.0.0-r3_all.ipk
Size: 13923
Size: 13919
Package: luci-app-secubox-mirror
Version: 0.1.0-r1
@ -675,7 +675,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI MirrorNet Dashboard
Filename: luci-app-secubox-mirror_0.1.0-r1_all.ipk
Size: 5847
Size: 5848
Package: luci-app-secubox-netdiag
Version: 1.0.0-r1
@ -687,7 +687,7 @@ Architecture: all
Installed-Size: 81920
Description: Real-time DSA switch port statistics, error monitoring, and network health diagnostics
Filename: luci-app-secubox-netdiag_1.0.0-r1_all.ipk
Size: 15346
Size: 15347
Package: luci-app-secubox-netifyd
Version: 1.2.1-r1
@ -699,7 +699,7 @@ Architecture: all
Installed-Size: 194560
Description: Complete LuCI interface for netifyd DPI engine with real-time flow monitoring, application detection, network analytics, and flow action plugins
Filename: luci-app-secubox-netifyd_1.2.1-r1_all.ipk
Size: 36721
Size: 36720
Package: luci-app-secubox-p2p
Version: 0.1.0-r1
@ -711,7 +711,7 @@ Architecture: all
Installed-Size: 245760
Description: LuCI SecuBox P2P Hub
Filename: luci-app-secubox-p2p_0.1.0-r1_all.ipk
Size: 46833
Size: 46831
Package: luci-app-secubox-portal
Version: 0.7.0-r3
@ -723,7 +723,7 @@ Architecture: all
Installed-Size: 194560
Description: Unified entry point for all SecuBox applications with tabbed navigation
Filename: luci-app-secubox-portal_0.7.0-r3_all.ipk
Size: 41685
Size: 41686
Package: luci-app-secubox-security-threats
Version: 1.0.0-r4
@ -735,7 +735,7 @@ Architecture: all
Installed-Size: 61440
Description: Unified dashboard integrating netifyd DPI threats with CrowdSec intelligence for real-time threat monitoring and automated blocking
Filename: luci-app-secubox-security-threats_1.0.0-r4_all.ipk
Size: 10658
Size: 10657
Package: luci-app-secubox-users
Version: 1.0.0-r1
@ -746,7 +746,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI SecuBox User Management
Filename: luci-app-secubox-users_1.0.0-r1_all.ipk
Size: 5148
Size: 5146
Package: luci-app-service-registry
Version: 1.0.0-r1
@ -758,7 +758,7 @@ Architecture: all
Installed-Size: 194560
Description: Unified service aggregation with HAProxy vhosts, Tor hidden services, and QR-coded landing page
Filename: luci-app-service-registry_1.0.0-r1_all.ipk
Size: 39954
Size: 39953
Package: luci-app-simplex
Version: 1.0.0-r1
@ -770,7 +770,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI SimpleX Chat Server Configuration
Filename: luci-app-simplex_1.0.0-r1_all.ipk
Size: 7027
Size: 7037
Package: luci-app-streamlit
Version: 1.0.0-r11
@ -782,7 +782,7 @@ Architecture: all
Installed-Size: 112640
Description: Multi-instance Streamlit management with Gitea integration
Filename: luci-app-streamlit_1.0.0-r11_all.ipk
Size: 20567
Size: 20568
Package: luci-app-system-hub
Version: 0.5.2-r2
@ -794,7 +794,7 @@ Architecture: all
Installed-Size: 327680
Description: Central system control with monitoring, services, logs, and backup
Filename: luci-app-system-hub_0.5.2-r2_all.ipk
Size: 64288
Size: 64291
Package: luci-app-threat-analyst
Version: 1.0.0-r1
@ -806,7 +806,7 @@ Architecture: all
Installed-Size: 51200
Description: LuCI Threat Analyst Dashboard
Filename: luci-app-threat-analyst_1.0.0-r1_all.ipk
Size: 10140
Size: 10141
Package: luci-app-tor
Version: 1.0.0-r1
@ -818,7 +818,7 @@ Architecture: all
Installed-Size: 92160
Description: Modern dashboard for Tor anonymization on OpenWrt
Filename: luci-app-tor_1.0.0-r1_all.ipk
Size: 17816
Size: 17818
Package: luci-app-tor-shield
Version: 1.0.0-r10
@ -830,7 +830,7 @@ Architecture: all
Installed-Size: 122880
Description: Modern dashboard for Tor anonymization on OpenWrt
Filename: luci-app-tor-shield_1.0.0-r10_all.ipk
Size: 22765
Size: 22767
Package: luci-app-traffic-shaper
Version: 0.4.0-r2
@ -842,7 +842,7 @@ Architecture: all
Installed-Size: 81920
Description: Advanced traffic shaping with TC/CAKE for precise bandwidth control
Filename: luci-app-traffic-shaper_0.4.0-r2_all.ipk
Size: 14585
Size: 14591
Package: luci-app-vhost-manager
Version: 0.5.0-r5
@ -854,7 +854,7 @@ Architecture: all
Installed-Size: 153600
Description: Nginx reverse proxy manager with Let's Encrypt SSL certificates, authentication, and WebSocket support
Filename: luci-app-vhost-manager_0.5.0-r5_all.ipk
Size: 26281
Size: 26283
Package: luci-app-voip
Version: 1.0.0-r1
@ -866,7 +866,7 @@ Architecture: all
Installed-Size: 81920
Description: LuCI VoIP PBX Management
Filename: luci-app-voip_1.0.0-r1_all.ipk
Size: 11040
Size: 11043
Package: luci-app-vortex-dns
Version: 1.0.0-r1
@ -878,7 +878,7 @@ Architecture: all
Installed-Size: 40960
Description: LuCI Vortex DNS Dashboard
Filename: luci-app-vortex-dns_1.0.0-r1_all.ipk
Size: 6078
Size: 6072
Package: luci-app-vortex-firewall
Version: 1.0.0-r1
@ -890,7 +890,7 @@ Architecture: all
Installed-Size: 30720
Description: LuCI Vortex DNS Firewall Dashboard
Filename: luci-app-vortex-firewall_1.0.0-r1_all.ipk
Size: 5453
Size: 5455
Package: luci-app-wazuh
Version: 1.0.0-r1
@ -901,7 +901,7 @@ Architecture: all
Installed-Size: 71680
Description: Unified security monitoring dashboard for Wazuh SIEM/XDR integration
Filename: luci-app-wazuh_1.0.0-r1_all.ipk
Size: 11069
Size: 11072
Package: luci-app-wireguard-dashboard
Version: 0.7.0-r5
@ -913,7 +913,7 @@ Architecture: all
Installed-Size: 215040
Description: Modern dashboard for WireGuard VPN monitoring on OpenWrt
Filename: luci-app-wireguard-dashboard_0.7.0-r5_all.ipk
Size: 42286
Size: 42288
Package: luci-app-zigbee2mqtt
Version: 1.0.0-r2
@ -925,19 +925,19 @@ Architecture: all
Installed-Size: 40960
Description: Graphical interface for managing the Zigbee2MQTT LXC application.
Filename: luci-app-zigbee2mqtt_1.0.0-r2_all.ipk
Size: 6592
Size: 6594
Package: luci-theme-secubox
Version: 0.4.7-r1
Version: 0.4.8-r1
Depends: luci-base
License: Apache-2.0
Section: luci
Maintainer: OpenWrt LuCI community
Architecture: all
Installed-Size: 450560
Installed-Size: 491520
Description: Global CyberMood design system (CSS/JS/i18n) shared by all SecuBox dashboards.
Filename: luci-theme-secubox_0.4.7-r1_all.ipk
Size: 110239
Filename: luci-theme-secubox_0.4.8-r1_all.ipk
Size: 121591
Package: secubox-app
Version: 1.0.0-r2
@ -948,7 +948,7 @@ Installed-Size: 92160
Description: Command line helper for SecuBox App Store manifests. Installs /usr/sbin/secubox-app
and ships the default manifests under /usr/share/secubox/plugins/.
Filename: secubox-app_1.0.0-r2_all.ipk
Size: 11186
Size: 11183
Package: secubox-app-adguardhome
Version: 1.0.0-r2
@ -962,7 +962,7 @@ Description: Installer, configuration, and service manager for running AdGuard
inside Docker on SecuBox-powered OpenWrt systems. Network-wide ad blocker
with DNS-over-HTTPS/TLS support and detailed analytics.
Filename: secubox-app-adguardhome_1.0.0-r2_all.ipk
Size: 2877
Size: 2883
Package: secubox-app-auth-logger
Version: 1.2.2-r1
@ -980,7 +980,7 @@ Description: Logs authentication failures from LuCI/rpcd and Dropbear SSH
- JavaScript hook to intercept login failures
- CrowdSec parser and bruteforce scenario
Filename: secubox-app-auth-logger_1.2.2-r1_all.ipk
Size: 9375
Size: 9379
Package: secubox-app-crowdsec-custom
Version: 1.1.0-r1
@ -1005,7 +1005,7 @@ Description: Custom CrowdSec configurations for SecuBox web interface protectio
- Insider WAF: LAN threat detection (C2, exfiltration, lateral movement)
- Whitelist for trusted networks
Filename: secubox-app-crowdsec-custom_1.1.0-r1_all.ipk
Size: 6940
Size: 6944
Package: secubox-app-cs-firewall-bouncer
Version: 0.0.31-r4
@ -1032,7 +1032,7 @@ Description: SecuBox CrowdSec Firewall Bouncer for OpenWrt.
- Automatic restart on firewall reload
- procd service management
Filename: secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk
Size: 5049321
Size: 5049325
Package: secubox-app-cyberfeed
Version: 0.2.1-r1
@ -1046,7 +1046,7 @@ Description: Cyberpunk-themed RSS feed aggregator for OpenWrt/SecuBox.
Features emoji injection, neon styling, and RSS-Bridge support
for social media feeds (Facebook, Twitter, Mastodon).
Filename: secubox-app-cyberfeed_0.2.1-r1_all.ipk
Size: 12452
Size: 12456
Package: secubox-app-device-intel
Version: 1.0.0-r1
@ -1060,7 +1060,7 @@ Description: Unified device inventory aggregating mac-guardian, client-guardian
P2P mesh, and exposure scanner data. Includes heuristic classification
and pluggable emulator modules for MQTT, Zigbee, and USB devices.
Filename: secubox-app-device-intel_1.0.0-r1_all.ipk
Size: 13100
Size: 13109
Package: secubox-app-dns-provider
Version: 1.0.0-r1
@ -1074,7 +1074,7 @@ Description: Programmatic DNS record management via provider APIs (OVH, Gandi
Cloudflare). Provides the dnsctl CLI for record CRUD, zone sync
DNS propagation verification, and ACME DNS-01 challenge support.
Filename: secubox-app-dns-provider_1.0.0-r1_all.ipk
Size: 8259
Size: 8260
Package: secubox-app-domoticz
Version: 1.0.0-r4
@ -1102,7 +1102,7 @@ Description: Unified service exposure manager for SecuBox.
- Dynamic Tor hidden service management
- HAProxy SSL reverse proxy configuration
Filename: secubox-app-exposure_1.0.0-r1_all.ipk
Size: 9147
Size: 9154
Package: secubox-app-gitea
Version: 1.0.0-r5
@ -1125,7 +1125,7 @@ Description: Gitea Git Platform - Self-hosted lightweight Git service
Runs in LXC container with Alpine Linux.
Configure in /etc/config/gitea.
Filename: secubox-app-gitea_1.0.0-r5_all.ipk
Size: 9441
Size: 9442
Package: secubox-app-gk2hub
Version: 0.1.0-r1
@ -1139,7 +1139,7 @@ Description: Dynamic landing page generator for GK2 SecuBox services.
Aggregates Streamlit apps, MetaBlogizer sites, and infrastructure
services into a single service directory page.
Filename: secubox-app-gk2hub_0.1.0-r1_all.ipk
Size: 4057
Size: 4061
Package: secubox-app-glances
Version: 1.0.0-r1
@ -1162,7 +1162,7 @@ Description: Glances - Cross-platform system monitoring tool for SecuBox.
Runs in LXC container for isolation and security.
Configure in /etc/config/glances.
Filename: secubox-app-glances_1.0.0-r1_all.ipk
Size: 6142
Size: 6139
Package: secubox-app-guacamole
Version: 1.0.0-r1
@ -1176,7 +1176,7 @@ Description: Apache Guacamole clientless remote desktop gateway.
Runs in an LXC Debian container with guacd and Tomcat.
Supports SSH, VNC, and RDP connections via web browser.
Filename: secubox-app-guacamole_1.0.0-r1_all.ipk
Size: 6941
Size: 6945
Package: secubox-app-haproxy
Version: 1.0.0-r24
@ -1196,7 +1196,7 @@ Description: HAProxy load balancer and reverse proxy running in an LXC containe
- Stats dashboard
- Rate limiting and ACLs
Filename: secubox-app-haproxy_1.0.0-r24_all.ipk
Size: 22008
Size: 22010
Package: secubox-app-hexojs
Version: 1.0.0-r8
@ -1220,7 +1220,7 @@ Description: Hexo CMS - Self-hosted static blog generator for OpenWrt
Runs in LXC container with Alpine Linux.
Configure in /etc/config/hexojs.
Filename: secubox-app-hexojs_1.0.0-r8_all.ipk
Size: 100061
Size: 100062
Package: secubox-app-ipblocklist
Version: 1.0.0-r1
@ -1235,7 +1235,7 @@ Description: Pre-emptive IP blocklist defense layer for SecuBox.
Maintainer: Gandalf <gandalf@cybermind.fr>
License: Apache-2.0
Filename: secubox-app-ipblocklist_1.0.0-r1_all.ipk
Size: 4698
Size: 4697
Package: secubox-app-jabber
Version: 1.0.0-r1
@ -1249,7 +1249,7 @@ Description: Jabber/XMPP instant messaging server based on Prosody.
Runs in an LXC Debian container with full XMPP support.
Features multi-user chat (MUC), file uploads, and S2S federation.
Filename: secubox-app-jabber_1.0.0-r1_all.ipk
Size: 13276
Size: 13278
Package: secubox-app-jellyfin
Version: 3.0.0-r1
@ -1262,7 +1262,7 @@ Installed-Size: 20480
Description: Jellyfin media server running in LXC container.
Free media server for streaming movies, TV shows, music, and photos.
Filename: secubox-app-jellyfin_3.0.0-r1_all.ipk
Size: 4746
Size: 4753
Package: secubox-app-jitsi
Version: 1.0.0-r1
@ -1287,7 +1287,7 @@ Description: Jitsi Meet - Secure, fully featured video conferencing for SecuBox
Integrates with HAProxy for SSL termination.
Configure in /etc/config/jitsi.
Filename: secubox-app-jitsi_1.0.0-r1_all.ipk
Size: 8921
Size: 8925
Package: secubox-app-localai
Version: 3.9.0-r1
@ -1309,7 +1309,7 @@ Description: LocalAI native binary package for OpenWrt.
API: http://<router-ip>:8081/v1
Filename: secubox-app-localai_3.9.0-r1_all.ipk
Size: 5838
Size: 5845
Package: secubox-app-localai-wb
Version: 2.25.0-r1
@ -1333,7 +1333,7 @@ Description: LocalAI native binary package for OpenWrt.
API: http://<router-ip>:8080/v1
Filename: secubox-app-localai-wb_2.25.0-r1_all.ipk
Size: 7947
Size: 7949
Package: secubox-app-lyrion
Version: 2.0.2-r1
@ -1353,7 +1353,7 @@ Description: Lyrion Media Server (formerly Logitech Media Server / Squeezebox S
Auto-detects available runtime, preferring LXC for lower resource usage.
Configure runtime in /etc/config/lyrion.
Filename: secubox-app-lyrion_2.0.2-r1_all.ipk
Size: 8122
Size: 8130
Package: secubox-app-mac-guardian
Version: 0.5.0-r1
@ -1368,7 +1368,7 @@ Description: WiFi MAC address security monitor for SecuBox.
and spoofing. Integrates with CrowdSec and provides
real-time hostapd hotplug detection.
Filename: secubox-app-mac-guardian_0.5.0-r1_all.ipk
Size: 12096
Size: 12098
Package: secubox-app-magicmirror2
Version: 0.4.0-r8
@ -1390,7 +1390,7 @@ Description: MagicMirror² - Open source modular smart mirror platform for Secu
Runs in LXC container for isolation and security.
Configure in /etc/config/magicmirror2.
Filename: secubox-app-magicmirror2_0.4.0-r8_all.ipk
Size: 9248
Size: 9249
Package: secubox-app-mailinabox
Version: 2.0.0-r1
@ -1428,7 +1428,7 @@ Installed-Size: 20480
Description: Postfix + Dovecot mail server running in LXC container.
Supports IMAP/SMTP with SSL/TLS.
Filename: secubox-app-mailserver_2.0.0-r1_all.ipk
Size: 5694
Size: 5700
Package: secubox-app-matrix
Version: 1.0.0-r1
@ -1442,7 +1442,7 @@ Description: Matrix homeserver based on Conduit - a lightweight, high-performan
Matrix server written in Rust. Runs in an LXC Debian container.
Features E2EE messaging, federation, and mesh integration.
Filename: secubox-app-matrix_1.0.0-r1_all.ipk
Size: 10453
Size: 10448
Package: secubox-app-metabolizer
Version: 1.0.0-r3
@ -1463,7 +1463,7 @@ Description: Metabolizer Blog Pipeline - Integrated CMS with Git-based workflow
Pipeline: Edit in Streamlit -> Push to Gitea -> Build with Hexo -> Publish
Filename: secubox-app-metabolizer_1.0.0-r3_all.ipk
Size: 13976
Size: 13983
Package: secubox-app-mitmproxy
Version: 0.5.0-r19
@ -1490,7 +1490,7 @@ Description: mitmproxy - Interactive HTTPS proxy for SecuBox-powered OpenWrt sy
Runs in LXC container for isolation and security.
Configure in /etc/config/mitmproxy.
Filename: secubox-app-mitmproxy_0.5.0-r19_all.ipk
Size: 22957
Size: 22952
Package: secubox-app-mmpm
Version: 0.2.0-r5
@ -1511,7 +1511,7 @@ Description: MMPM (MagicMirror Package Manager) for SecuBox.
Runs inside the MagicMirror2 LXC container.
Filename: secubox-app-mmpm_0.2.0-r5_all.ipk
Size: 3975
Size: 3976
Package: secubox-app-nextcloud
Version: 1.0.0-r2
@ -1525,7 +1525,7 @@ Description: Nextcloud file sync and collaboration platform running in a Debian
LXC container with MariaDB, Redis, and Nginx. Features HAProxy SSL
integration, automated backups, and KISS LuCI dashboard.
Filename: secubox-app-nextcloud_1.0.0-r2_all.ipk
Size: 9671
Size: 9675
Package: secubox-app-ollama
Version: 0.1.0-r1
@ -1547,7 +1547,7 @@ Description: Ollama - Simple local LLM runtime for SecuBox-powered OpenWrt syst
Runs in Docker/Podman container.
Configure in /etc/config/ollama.
Filename: secubox-app-ollama_0.1.0-r1_all.ipk
Size: 5731
Size: 5738
Package: secubox-app-picobrew
Version: 1.0.0-r7
@ -1569,7 +1569,7 @@ Description: PicoBrew Server - Self-hosted brewing controller for PicoBrew devi
Runs in LXC container with Python/Flask backend.
Configure in /etc/config/picobrew.
Filename: secubox-app-picobrew_1.0.0-r7_all.ipk
Size: 5543
Size: 5533
Package: secubox-app-rustdesk
Version: 1.0.0-r1
@ -1582,7 +1582,7 @@ Installed-Size: 20480
Description: Self-hosted RustDesk relay server for remote desktop access.
Downloads and manages hbbs (ID server) and hbbr (relay server) binaries.
Filename: secubox-app-rustdesk_1.0.0-r1_all.ipk
Size: 4466
Size: 4465
Package: secubox-app-simplex
Version: 1.0.0-r1
@ -1606,7 +1606,7 @@ Description: SimpleX Chat self-hosted messaging infrastructure for SecuBox.
Privacy-first messaging relay that you control.
Configure in /etc/config/simplex.
Filename: secubox-app-simplex_1.0.0-r1_all.ipk
Size: 9367
Size: 9368
Package: secubox-app-smbfs
Version: 1.0.0-r1
@ -1620,7 +1620,7 @@ Description: SMB/CIFS remote directory mount manager for SecuBox. Manages share
network mounts for media servers (Jellyfin, Lyrion), backups, and
general-purpose remote storage over SMB/CIFS protocol.
Filename: secubox-app-smbfs_1.0.0-r1_all.ipk
Size: 5268
Size: 5253
Package: secubox-app-streamlit
Version: 1.0.0-r5
@ -1647,7 +1647,7 @@ Description: Streamlit App Platform - Self-hosted Python data app platform
Configure in /etc/config/streamlit.
Filename: secubox-app-streamlit_1.0.0-r5_all.ipk
Size: 16512
Size: 16515
Package: secubox-app-tor
Version: 1.0.0-r1
@ -1670,7 +1670,7 @@ Description: SecuBox Tor Shield - One-click Tor anonymization for OpenWrt
Configure in /etc/config/tor-shield.
Filename: secubox-app-tor_1.0.0-r1_all.ipk
Size: 7371
Size: 7372
Package: secubox-app-voip
Version: 1.0.0-r1
@ -1684,7 +1684,7 @@ Description: VoIP PBX solution with Asterisk in LXC container.
Features OVH SIP trunk integration, WebRTC support
and Jabber/XMPP relay for SMS and voicemail notifications.
Filename: secubox-app-voip_1.0.0-r1_all.ipk
Size: 11955
Size: 11954
Package: secubox-app-webapp
Version: 1.5.0-r7
@ -1702,7 +1702,7 @@ Description: SecuBox Control Center Dashboard - A web-based dashboard for monit
- Service management
- Network interface control
Filename: secubox-app-webapp_1.5.0-r7_all.ipk
Size: 39177
Size: 39175
Package: secubox-app-zigbee2mqtt
Version: 1.0.0-r3
@ -1734,7 +1734,7 @@ Description: AI-powered configuration security advisor for SecuBox.
- LocalAI integration for intelligent analysis
- Automated remediation suggestions
Filename: secubox-config-advisor_0.1.0-r1_all.ipk
Size: 14849
Size: 14848
Package: secubox-content-pkg
Version: 1.0.0-r1
@ -1747,7 +1747,7 @@ Installed-Size: 20480
Description: Package Metablogizer sites and Streamlit apps as IPKs for P2P distribution.
Auto-publishes content to the mesh feed for peer auto-sync.
Filename: secubox-content-pkg_1.0.0-r1_all.ipk
Size: 3909
Size: 3910
Package: secubox-cookie-tracker
Version: 1.0.0-r1
@ -1829,7 +1829,7 @@ Description: SecuBox DNS Guard provides AI-powered DNS anomaly detection using
- Unusual TLD pattern detection
- Automatic blocklist generation with approval workflow
Filename: secubox-dns-guard_1.0.0-r1_all.ipk
Size: 12482
Size: 12485
Package: secubox-identity
Version: 0.1.0-r1
@ -1848,7 +1848,7 @@ Description: Decentralized identity management for SecuBox mesh nodes.
- Peer identity verification
- Trust scoring integration
Filename: secubox-identity_0.1.0-r1_all.ipk
Size: 8084
Size: 8089
Package: secubox-iot-guard
Version: 1.0.0-r1
@ -1864,7 +1864,7 @@ Description: IoT device isolation, classification, and security monitoring.
risk scoring. Orchestrates Client Guardian, MAC Guardian
Vortex Firewall, and Bandwidth Manager for IoT protection.
Filename: secubox-iot-guard_1.0.0-r1_all.ipk
Size: 13370
Size: 13369
Package: secubox-localrecall
Version: 1.0.0-r1
@ -1879,7 +1879,7 @@ Description: Persistent memory system for SecuBox AI agents.
for context across sessions. LocalAI integration for
semantic search and AI-powered summarization.
Filename: secubox-localrecall_1.0.0-r1_all.ipk
Size: 7793
Size: 7800
Package: secubox-master-link
Version: 1.0.0-r1
@ -1901,7 +1901,7 @@ Description: Secure mesh onboarding for SecuBox nodes via master/peer link.
Configure in /etc/config/master-link.
Filename: secubox-master-link_1.0.0-r1_all.ipk
Size: 15035
Size: 15038
Package: secubox-mcp-server
Version: 1.0.0-r1
@ -1947,7 +1947,7 @@ Description: MirrorNet core mesh orchestration for SecuBox.
- Mesh health monitoring and anomaly detection
- DID-based identity (did:plc compatible)
Filename: secubox-mirrornet_0.1.0-r1_all.ipk
Size: 15309
Size: 15308
Package: secubox-network-anomaly
Version: 1.0.0-r1
@ -1962,7 +1962,7 @@ Description: AI-powered network anomaly detection for SecuBox.
DNS anomalies, and protocol anomalies using statistical
analysis and optional LocalAI integration.
Filename: secubox-network-anomaly_1.0.0-r1_all.ipk
Size: 6167
Size: 6165
Package: secubox-p2p
Version: 0.6.0-r3
@ -1981,7 +1981,7 @@ Description: SecuBox P2P Hub backend providing peer discovery, mesh networking
and MirrorBox NetMesh Catalog for cross-chain distributed service
registry with HAProxy vhost discovery and multi-endpoint access URLs.
Filename: secubox-p2p_0.6.0-r3_all.ipk
Size: 47860
Size: 47869
Package: secubox-p2p-intel
Version: 0.1.0-r1
@ -2000,7 +2000,7 @@ Description: Decentralized threat intelligence sharing for SecuBox mesh.
- CrowdSec and mitmproxy integration
- Automatic firewall rule application
Filename: secubox-p2p-intel_0.1.0-r1_all.ipk
Size: 9801
Size: 9797
Package: secubox-threat-analyst
Version: 1.0.0-r1
@ -2019,7 +2019,7 @@ Description: Autonomous threat analysis agent for SecuBox.
Part of SecuBox AI Gateway (Couche 2).
Filename: secubox-threat-analyst_1.0.0-r1_all.ipk
Size: 9863
Size: 9868
Package: secubox-vortex-dns
Version: 1.0.0-r1
@ -2038,7 +2038,7 @@ Description: Meshed multi-dynamic subdomain delegation system for SecuBox.
- Gossip-based exposure config sync
- Submastering for nested hierarchies
Filename: secubox-vortex-dns_1.0.0-r1_all.ipk
Size: 5441
Size: 5442
Package: secubox-vortex-firewall
Version: 1.0.0-r1

View File

@ -1,12 +1,12 @@
{
"feed_url": "/secubox-feed",
"generated": "2026-02-21T10:31:16+01:00",
"generated": "2026-02-23T16:38:44+01:00",
"packages": [
{
"name": "luci-app-ai-insights",
"version": "1.0.0-r1",
"filename": "luci-app-ai-insights_1.0.0-r1_all.ipk",
"size": 11637,
"size": 11638,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -18,7 +18,7 @@
"name": "luci-app-auth-guardian",
"version": "0.4.0-r3",
"filename": "luci-app-auth-guardian_0.4.0-r3_all.ipk",
"size": 12396,
"size": 12394,
"category": "security",
"icon": "key",
"description": "Authentication management",
@ -30,7 +30,7 @@
"name": "luci-app-backup",
"version": "1.0.0-r1",
"filename": "luci-app-backup_1.0.0-r1_all.ipk",
"size": 4532,
"size": 4527,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -54,7 +54,7 @@
"name": "luci-app-cdn-cache",
"version": "0.5.0-r3",
"filename": "luci-app-cdn-cache_0.5.0-r3_all.ipk",
"size": 24254,
"size": 24256,
"category": "network",
"icon": "globe",
"description": "CDN caching",
@ -66,7 +66,7 @@
"name": "luci-app-client-guardian",
"version": "0.4.0-r7",
"filename": "luci-app-client-guardian_0.4.0-r7_all.ipk",
"size": 52684,
"size": 52689,
"category": "network",
"icon": "users",
"description": "Client management and monitoring",
@ -78,7 +78,7 @@
"name": "luci-app-cloner",
"version": "1.0.0-r1",
"filename": "luci-app-cloner_1.0.0-r1_all.ipk",
"size": 19433,
"size": 19435,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -90,7 +90,7 @@
"name": "luci-app-config-advisor",
"version": "1.0.0-r1",
"filename": "luci-app-config-advisor_1.0.0-r1_all.ipk",
"size": 8858,
"size": 8857,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -102,7 +102,7 @@
"name": "luci-app-cookie-tracker",
"version": "1.0.0-r1",
"filename": "luci-app-cookie-tracker_1.0.0-r1_all.ipk",
"size": 5663,
"size": 5655,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -114,7 +114,7 @@
"name": "luci-app-crowdsec-dashboard",
"version": "0.8.0-r1",
"filename": "luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk",
"size": 43019,
"size": 43023,
"category": "security",
"icon": "shield",
"description": "CrowdSec security monitoring",
@ -126,7 +126,7 @@
"name": "luci-app-cve-triage",
"version": "1.0.0-r1",
"filename": "luci-app-cve-triage_1.0.0-r1_all.ipk",
"size": 5950,
"size": 5945,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -162,7 +162,7 @@
"name": "luci-app-dnsguard",
"version": "1.1.0-r1",
"filename": "luci-app-dnsguard_1.1.0-r1_all.ipk",
"size": 12444,
"size": 12449,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -174,7 +174,7 @@
"name": "luci-app-dns-provider",
"version": "1.0.0-r1",
"filename": "luci-app-dns-provider_1.0.0-r1_all.ipk",
"size": 7168,
"size": 7173,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -186,7 +186,7 @@
"name": "luci-app-domoticz",
"version": "1.0.0-r1",
"filename": "luci-app-domoticz_1.0.0-r1_all.ipk",
"size": 7121,
"size": 7126,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -210,7 +210,7 @@
"name": "luci-app-gitea",
"version": "1.0.0-r2",
"filename": "luci-app-gitea_1.0.0-r2_all.ipk",
"size": 16621,
"size": 16625,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -222,7 +222,7 @@
"name": "luci-app-glances",
"version": "1.0.0-r2",
"filename": "luci-app-glances_1.0.0-r2_all.ipk",
"size": 7022,
"size": 7023,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -234,7 +234,7 @@
"name": "luci-app-gotosocial",
"version": "0.1.0-r1",
"filename": "luci-app-gotosocial_0.1.0-r1_all.ipk",
"size": 8206,
"size": 8213,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -246,7 +246,7 @@
"name": "luci-app-haproxy",
"version": "1.0.0-r8",
"filename": "luci-app-haproxy_1.0.0-r8_all.ipk",
"size": 35339,
"size": 35341,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -258,7 +258,7 @@
"name": "luci-app-hexojs",
"version": "1.0.0-r3",
"filename": "luci-app-hexojs_1.0.0-r3_all.ipk",
"size": 30447,
"size": 30451,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -270,7 +270,7 @@
"name": "luci-app-iot-guard",
"version": "1.0.0-r1",
"filename": "luci-app-iot-guard_1.0.0-r1_all.ipk",
"size": 10532,
"size": 10535,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -282,7 +282,7 @@
"name": "luci-app-ipblocklist",
"version": "1.0.0-r1",
"filename": "luci-app-ipblocklist_1.0.0-r1_all.ipk",
"size": 6528,
"size": 6531,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -294,7 +294,7 @@
"name": "luci-app-jabber",
"version": "0",
"filename": "luci-app-jabber_0_all.ipk",
"size": 9304,
"size": 9309,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -306,7 +306,7 @@
"name": "luci-app-jellyfin",
"version": "1.0.0-r1",
"filename": "luci-app-jellyfin_1.0.0-r1_all.ipk",
"size": 10482,
"size": 10488,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -318,7 +318,7 @@
"name": "luci-app-jitsi",
"version": "1.0.0-r1",
"filename": "luci-app-jitsi_1.0.0-r1_all.ipk",
"size": 5176,
"size": 5179,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -330,7 +330,7 @@
"name": "luci-app-ksm-manager",
"version": "0.4.0-r2",
"filename": "luci-app-ksm-manager_0.4.0-r2_all.ipk",
"size": 18776,
"size": 18781,
"category": "system",
"icon": "cpu",
"description": "Kernel memory management",
@ -354,7 +354,7 @@
"name": "luci-app-localrecall",
"version": "1.0.0-r1",
"filename": "luci-app-localrecall_1.0.0-r1_all.ipk",
"size": 8418,
"size": 8417,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -366,7 +366,7 @@
"name": "luci-app-lyrion",
"version": "1.0.0-r1",
"filename": "luci-app-lyrion_1.0.0-r1_all.ipk",
"size": 6834,
"size": 6836,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -378,7 +378,7 @@
"name": "luci-app-mac-guardian",
"version": "0.5.0-r1",
"filename": "luci-app-mac-guardian_0.5.0-r1_all.ipk",
"size": 6657,
"size": 6666,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -390,7 +390,7 @@
"name": "luci-app-magicmirror2",
"version": "0.4.0-r6",
"filename": "luci-app-magicmirror2_0.4.0-r6_all.ipk",
"size": 12359,
"size": 12360,
"category": "iot",
"icon": "monitor",
"description": "Smart mirror display",
@ -402,7 +402,7 @@
"name": "luci-app-mailinabox",
"version": "1.0.0-r1",
"filename": "luci-app-mailinabox_1.0.0-r1_all.ipk",
"size": 5486,
"size": 5484,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -414,7 +414,7 @@
"name": "luci-app-mailserver",
"version": "1.0.0-r1",
"filename": "luci-app-mailserver_1.0.0-r1_all.ipk",
"size": 6508,
"size": 6506,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -438,10 +438,10 @@
"name": "luci-app-matrix",
"version": "1.0.0-r1",
"filename": "luci-app-matrix_1.0.0-r1_all.ipk",
"size": 7523,
"category": "messaging",
"icon": "message-square",
"description": "Matrix/Conduit E2EE messaging server dashboard",
"size": 7524,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
"installed": false,
"luci_app": null
}
@ -462,7 +462,7 @@
"name": "luci-app-metablogizer",
"version": "1.1.0-r1",
"filename": "luci-app-metablogizer_1.1.0-r1_all.ipk",
"size": 26205,
"size": 26207,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -474,7 +474,7 @@
"name": "luci-app-metabolizer",
"version": "1.0.0-r2",
"filename": "luci-app-metabolizer_1.0.0-r2_all.ipk",
"size": 4822,
"size": 4820,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -486,7 +486,7 @@
"name": "luci-app-mitmproxy",
"version": "0.5.0-r2",
"filename": "luci-app-mitmproxy_0.5.0-r2_all.ipk",
"size": 13235,
"size": 13233,
"category": "security",
"icon": "lock",
"description": "HTTPS proxy and traffic inspection",
@ -498,7 +498,7 @@
"name": "luci-app-mmpm",
"version": "0.2.0-r3",
"filename": "luci-app-mmpm_0.2.0-r3_all.ipk",
"size": 7970,
"size": 7972,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -510,7 +510,7 @@
"name": "luci-app-mqtt-bridge",
"version": "0.4.0-r4",
"filename": "luci-app-mqtt-bridge_0.4.0-r4_all.ipk",
"size": 22688,
"size": 22690,
"category": "iot",
"icon": "message-square",
"description": "MQTT bridge",
@ -522,7 +522,7 @@
"name": "luci-app-ndpid",
"version": "1.1.2-r2",
"filename": "luci-app-ndpid_1.1.2-r2_all.ipk",
"size": 21699,
"size": 21702,
"category": "security",
"icon": "eye",
"description": "Deep packet inspection",
@ -534,7 +534,7 @@
"name": "luci-app-netdata-dashboard",
"version": "0.5.0-r2",
"filename": "luci-app-netdata-dashboard_0.5.0-r2_all.ipk",
"size": 20561,
"size": 20558,
"category": "monitoring",
"icon": "bar-chart-2",
"description": "System monitoring dashboard",
@ -546,7 +546,7 @@
"name": "luci-app-network-anomaly",
"version": "1.0.0-r1",
"filename": "luci-app-network-anomaly_1.0.0-r1_all.ipk",
"size": 7639,
"size": 7646,
"category": "network",
"icon": "wifi",
"description": "Network configuration",
@ -558,7 +558,7 @@
"name": "luci-app-network-modes",
"version": "0.5.0-r3",
"filename": "luci-app-network-modes_0.5.0-r3_all.ipk",
"size": 54227,
"size": 54226,
"category": "network",
"icon": "wifi",
"description": "Network configuration",
@ -570,7 +570,7 @@
"name": "luci-app-network-tweaks",
"version": "1.0.0-r7",
"filename": "luci-app-network-tweaks_1.0.0-r7_all.ipk",
"size": 15945,
"size": 15944,
"category": "network",
"icon": "wifi",
"description": "Network configuration",
@ -582,7 +582,7 @@
"name": "luci-app-nextcloud",
"version": "1.0.0-r1",
"filename": "luci-app-nextcloud_1.0.0-r1_all.ipk",
"size": 10351,
"size": 10348,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -606,7 +606,7 @@
"name": "luci-app-peertube",
"version": "0",
"filename": "luci-app-peertube_0_all.ipk",
"size": 5757,
"size": 5759,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -618,7 +618,7 @@
"name": "luci-app-picobrew",
"version": "1.0.0-r1",
"filename": "luci-app-picobrew_1.0.0-r1_all.ipk",
"size": 9535,
"size": 9531,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -630,7 +630,7 @@
"name": "luci-app-secubox",
"version": "0.7.1-r4",
"filename": "luci-app-secubox_0.7.1-r4_all.ipk",
"size": 82095,
"size": 82097,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -642,7 +642,7 @@
"name": "luci-app-secubox-admin",
"version": "1.0.0-r19",
"filename": "luci-app-secubox-admin_1.0.0-r19_all.ipk",
"size": 58041,
"size": 58042,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -654,7 +654,7 @@
"name": "luci-app-secubox-crowdsec",
"version": "1.0.0-r3",
"filename": "luci-app-secubox-crowdsec_1.0.0-r3_all.ipk",
"size": 13923,
"size": 13919,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -666,7 +666,7 @@
"name": "luci-app-secubox-mirror",
"version": "0.1.0-r1",
"filename": "luci-app-secubox-mirror_0.1.0-r1_all.ipk",
"size": 5847,
"size": 5848,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -678,7 +678,7 @@
"name": "luci-app-secubox-netdiag",
"version": "1.0.0-r1",
"filename": "luci-app-secubox-netdiag_1.0.0-r1_all.ipk",
"size": 15346,
"size": 15347,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -690,7 +690,7 @@
"name": "luci-app-secubox-netifyd",
"version": "1.2.1-r1",
"filename": "luci-app-secubox-netifyd_1.2.1-r1_all.ipk",
"size": 36721,
"size": 36720,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -702,7 +702,7 @@
"name": "luci-app-secubox-p2p",
"version": "0.1.0-r1",
"filename": "luci-app-secubox-p2p_0.1.0-r1_all.ipk",
"size": 46833,
"size": 46831,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -714,7 +714,7 @@
"name": "luci-app-secubox-portal",
"version": "0.7.0-r3",
"filename": "luci-app-secubox-portal_0.7.0-r3_all.ipk",
"size": 41685,
"size": 41686,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -726,7 +726,7 @@
"name": "luci-app-secubox-security-threats",
"version": "1.0.0-r4",
"filename": "luci-app-secubox-security-threats_1.0.0-r4_all.ipk",
"size": 10658,
"size": 10657,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -738,7 +738,7 @@
"name": "luci-app-secubox-users",
"version": "1.0.0-r1",
"filename": "luci-app-secubox-users_1.0.0-r1_all.ipk",
"size": 5148,
"size": 5146,
"category": "system",
"icon": "box",
"description": "SecuBox system component",
@ -750,7 +750,7 @@
"name": "luci-app-service-registry",
"version": "1.0.0-r1",
"filename": "luci-app-service-registry_1.0.0-r1_all.ipk",
"size": 39954,
"size": 39953,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -762,7 +762,7 @@
"name": "luci-app-simplex",
"version": "1.0.0-r1",
"filename": "luci-app-simplex_1.0.0-r1_all.ipk",
"size": 7027,
"size": 7037,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -774,7 +774,7 @@
"name": "luci-app-streamlit",
"version": "1.0.0-r11",
"filename": "luci-app-streamlit_1.0.0-r11_all.ipk",
"size": 20567,
"size": 20568,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -786,7 +786,7 @@
"name": "luci-app-system-hub",
"version": "0.5.2-r2",
"filename": "luci-app-system-hub_0.5.2-r2_all.ipk",
"size": 64288,
"size": 64291,
"category": "system",
"icon": "settings",
"description": "System management",
@ -798,7 +798,7 @@
"name": "luci-app-threat-analyst",
"version": "1.0.0-r1",
"filename": "luci-app-threat-analyst_1.0.0-r1_all.ipk",
"size": 10140,
"size": 10141,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -810,7 +810,7 @@
"name": "luci-app-tor",
"version": "1.0.0-r1",
"filename": "luci-app-tor_1.0.0-r1_all.ipk",
"size": 17816,
"size": 17818,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -822,7 +822,7 @@
"name": "luci-app-tor-shield",
"version": "1.0.0-r10",
"filename": "luci-app-tor-shield_1.0.0-r10_all.ipk",
"size": 22765,
"size": 22767,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -834,7 +834,7 @@
"name": "luci-app-traffic-shaper",
"version": "0.4.0-r2",
"filename": "luci-app-traffic-shaper_0.4.0-r2_all.ipk",
"size": 14585,
"size": 14591,
"category": "network",
"icon": "filter",
"description": "Traffic shaping and QoS",
@ -846,7 +846,7 @@
"name": "luci-app-vhost-manager",
"version": "0.5.0-r5",
"filename": "luci-app-vhost-manager_0.5.0-r5_all.ipk",
"size": 26281,
"size": 26283,
"category": "network",
"icon": "server",
"description": "Virtual host management",
@ -858,7 +858,7 @@
"name": "luci-app-voip",
"version": "1.0.0-r1",
"filename": "luci-app-voip_1.0.0-r1_all.ipk",
"size": 11040,
"size": 11043,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -870,7 +870,7 @@
"name": "luci-app-vortex-dns",
"version": "1.0.0-r1",
"filename": "luci-app-vortex-dns_1.0.0-r1_all.ipk",
"size": 6078,
"size": 6072,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -882,7 +882,7 @@
"name": "luci-app-vortex-firewall",
"version": "1.0.0-r1",
"filename": "luci-app-vortex-firewall_1.0.0-r1_all.ipk",
"size": 5453,
"size": 5455,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -894,7 +894,7 @@
"name": "luci-app-wazuh",
"version": "1.0.0-r1",
"filename": "luci-app-wazuh_1.0.0-r1_all.ipk",
"size": 11069,
"size": 11072,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -906,7 +906,7 @@
"name": "luci-app-wireguard-dashboard",
"version": "0.7.0-r5",
"filename": "luci-app-wireguard-dashboard_0.7.0-r5_all.ipk",
"size": 42286,
"size": 42288,
"category": "vpn",
"icon": "shield",
"description": "WireGuard VPN dashboard",
@ -918,7 +918,7 @@
"name": "luci-app-zigbee2mqtt",
"version": "1.0.0-r2",
"filename": "luci-app-zigbee2mqtt_1.0.0-r2_all.ipk",
"size": 6592,
"size": 6594,
"category": "iot",
"icon": "radio",
"description": "Zigbee device management",
@ -928,9 +928,9 @@
,
{
"name": "luci-theme-secubox",
"version": "0.4.7-r1",
"filename": "luci-theme-secubox_0.4.7-r1_all.ipk",
"size": 110239,
"version": "0.4.8-r1",
"filename": "luci-theme-secubox_0.4.8-r1_all.ipk",
"size": 121591,
"category": "theme",
"icon": "palette",
"description": "LuCI theme",
@ -942,7 +942,7 @@
"name": "secubox-app",
"version": "1.0.0-r2",
"filename": "secubox-app_1.0.0-r2_all.ipk",
"size": 11186,
"size": 11183,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -954,7 +954,7 @@
"name": "secubox-app-adguardhome",
"version": "1.0.0-r2",
"filename": "secubox-app-adguardhome_1.0.0-r2_all.ipk",
"size": 2877,
"size": 2883,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -966,7 +966,7 @@
"name": "secubox-app-auth-logger",
"version": "1.2.2-r1",
"filename": "secubox-app-auth-logger_1.2.2-r1_all.ipk",
"size": 9375,
"size": 9379,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -978,7 +978,7 @@
"name": "secubox-app-crowdsec-custom",
"version": "1.1.0-r1",
"filename": "secubox-app-crowdsec-custom_1.1.0-r1_all.ipk",
"size": 6940,
"size": 6944,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -990,7 +990,7 @@
"name": "secubox-app-cs-firewall-bouncer",
"version": "0.0.31-r4_aarch64",
"filename": "secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk",
"size": 5049321,
"size": 5049325,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1002,7 +1002,7 @@
"name": "secubox-app-cyberfeed",
"version": "0.2.1-r1",
"filename": "secubox-app-cyberfeed_0.2.1-r1_all.ipk",
"size": 12452,
"size": 12456,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1014,7 +1014,7 @@
"name": "secubox-app-device-intel",
"version": "1.0.0-r1",
"filename": "secubox-app-device-intel_1.0.0-r1_all.ipk",
"size": 13100,
"size": 13109,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1026,7 +1026,7 @@
"name": "secubox-app-dns-provider",
"version": "1.0.0-r1",
"filename": "secubox-app-dns-provider_1.0.0-r1_all.ipk",
"size": 8259,
"size": 8260,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1050,7 +1050,7 @@
"name": "secubox-app-exposure",
"version": "1.0.0-r1",
"filename": "secubox-app-exposure_1.0.0-r1_all.ipk",
"size": 9147,
"size": 9154,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1062,7 +1062,7 @@
"name": "secubox-app-gitea",
"version": "1.0.0-r5",
"filename": "secubox-app-gitea_1.0.0-r5_all.ipk",
"size": 9441,
"size": 9442,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1074,7 +1074,7 @@
"name": "secubox-app-gk2hub",
"version": "0.1.0-r1",
"filename": "secubox-app-gk2hub_0.1.0-r1_all.ipk",
"size": 4057,
"size": 4061,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1086,7 +1086,7 @@
"name": "secubox-app-glances",
"version": "1.0.0-r1",
"filename": "secubox-app-glances_1.0.0-r1_all.ipk",
"size": 6142,
"size": 6139,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1098,7 +1098,7 @@
"name": "secubox-app-guacamole",
"version": "1.0.0-r1",
"filename": "secubox-app-guacamole_1.0.0-r1_all.ipk",
"size": 6941,
"size": 6945,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1110,7 +1110,7 @@
"name": "secubox-app-haproxy",
"version": "1.0.0-r24",
"filename": "secubox-app-haproxy_1.0.0-r24_all.ipk",
"size": 22008,
"size": 22010,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1122,7 +1122,7 @@
"name": "secubox-app-hexojs",
"version": "1.0.0-r8",
"filename": "secubox-app-hexojs_1.0.0-r8_all.ipk",
"size": 100061,
"size": 100062,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1134,7 +1134,7 @@
"name": "secubox-app-ipblocklist",
"version": "1.0.0-r1",
"filename": "secubox-app-ipblocklist_1.0.0-r1_all.ipk",
"size": 4698,
"size": 4697,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1146,7 +1146,7 @@
"name": "secubox-app-jabber",
"version": "1.0.0-r1",
"filename": "secubox-app-jabber_1.0.0-r1_all.ipk",
"size": 13276,
"size": 13278,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1158,7 +1158,7 @@
"name": "secubox-app-jellyfin",
"version": "3.0.0-r1",
"filename": "secubox-app-jellyfin_3.0.0-r1_all.ipk",
"size": 4746,
"size": 4753,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1170,7 +1170,7 @@
"name": "secubox-app-jitsi",
"version": "1.0.0-r1",
"filename": "secubox-app-jitsi_1.0.0-r1_all.ipk",
"size": 8921,
"size": 8925,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1182,7 +1182,7 @@
"name": "secubox-app-localai",
"version": "3.9.0-r1",
"filename": "secubox-app-localai_3.9.0-r1_all.ipk",
"size": 5838,
"size": 5845,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1194,7 +1194,7 @@
"name": "secubox-app-localai-wb",
"version": "2.25.0-r1",
"filename": "secubox-app-localai-wb_2.25.0-r1_all.ipk",
"size": 7947,
"size": 7949,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1206,7 +1206,7 @@
"name": "secubox-app-lyrion",
"version": "2.0.2-r1",
"filename": "secubox-app-lyrion_2.0.2-r1_all.ipk",
"size": 8122,
"size": 8130,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1218,7 +1218,7 @@
"name": "secubox-app-mac-guardian",
"version": "0.5.0-r1",
"filename": "secubox-app-mac-guardian_0.5.0-r1_all.ipk",
"size": 12096,
"size": 12098,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1230,7 +1230,7 @@
"name": "secubox-app-magicmirror2",
"version": "0.4.0-r8",
"filename": "secubox-app-magicmirror2_0.4.0-r8_all.ipk",
"size": 9248,
"size": 9249,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1254,7 +1254,7 @@
"name": "secubox-app-mailserver",
"version": "2.0.0-r1",
"filename": "secubox-app-mailserver_2.0.0-r1_all.ipk",
"size": 5694,
"size": 5700,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1266,10 +1266,10 @@
"name": "secubox-app-matrix",
"version": "1.0.0-r1",
"filename": "secubox-app-matrix_1.0.0-r1_all.ipk",
"size": 10453,
"category": "messaging",
"icon": "message-square",
"description": "Matrix/Conduit federated E2EE messaging server",
"size": 10448,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
"installed": false,
"luci_app": "luci-app-matrix"
}
@ -1278,7 +1278,7 @@
"name": "secubox-app-metabolizer",
"version": "1.0.0-r3",
"filename": "secubox-app-metabolizer_1.0.0-r3_all.ipk",
"size": 13976,
"size": 13983,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1290,7 +1290,7 @@
"name": "secubox-app-mitmproxy",
"version": "0.5.0-r19",
"filename": "secubox-app-mitmproxy_0.5.0-r19_all.ipk",
"size": 22957,
"size": 22952,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1302,7 +1302,7 @@
"name": "secubox-app-mmpm",
"version": "0.2.0-r5",
"filename": "secubox-app-mmpm_0.2.0-r5_all.ipk",
"size": 3975,
"size": 3976,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1314,7 +1314,7 @@
"name": "secubox-app-nextcloud",
"version": "1.0.0-r2",
"filename": "secubox-app-nextcloud_1.0.0-r2_all.ipk",
"size": 9671,
"size": 9675,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1326,7 +1326,7 @@
"name": "secubox-app-ollama",
"version": "0.1.0-r1",
"filename": "secubox-app-ollama_0.1.0-r1_all.ipk",
"size": 5731,
"size": 5738,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1338,7 +1338,7 @@
"name": "secubox-app-picobrew",
"version": "1.0.0-r7",
"filename": "secubox-app-picobrew_1.0.0-r7_all.ipk",
"size": 5543,
"size": 5533,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1350,7 +1350,7 @@
"name": "secubox-app-rustdesk",
"version": "1.0.0-r1",
"filename": "secubox-app-rustdesk_1.0.0-r1_all.ipk",
"size": 4466,
"size": 4465,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1362,7 +1362,7 @@
"name": "secubox-app-simplex",
"version": "1.0.0-r1",
"filename": "secubox-app-simplex_1.0.0-r1_all.ipk",
"size": 9367,
"size": 9368,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1374,7 +1374,7 @@
"name": "secubox-app-smbfs",
"version": "1.0.0-r1",
"filename": "secubox-app-smbfs_1.0.0-r1_all.ipk",
"size": 5268,
"size": 5253,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1386,7 +1386,7 @@
"name": "secubox-app-streamlit",
"version": "1.0.0-r5",
"filename": "secubox-app-streamlit_1.0.0-r5_all.ipk",
"size": 16512,
"size": 16515,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1398,7 +1398,7 @@
"name": "secubox-app-tor",
"version": "1.0.0-r1",
"filename": "secubox-app-tor_1.0.0-r1_all.ipk",
"size": 7371,
"size": 7372,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1410,7 +1410,7 @@
"name": "secubox-app-voip",
"version": "1.0.0-r1",
"filename": "secubox-app-voip_1.0.0-r1_all.ipk",
"size": 11955,
"size": 11954,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1422,7 +1422,7 @@
"name": "secubox-app-webapp",
"version": "1.5.0-r7",
"filename": "secubox-app-webapp_1.5.0-r7_all.ipk",
"size": 39177,
"size": 39175,
"category": "secubox",
"icon": "package",
"description": "SecuBox backend service",
@ -1446,7 +1446,7 @@
"name": "secubox-config-advisor",
"version": "0.1.0-r1",
"filename": "secubox-config-advisor_0.1.0-r1_all.ipk",
"size": 14849,
"size": 14848,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1458,7 +1458,7 @@
"name": "secubox-content-pkg",
"version": "1.0.0-r1",
"filename": "secubox-content-pkg_1.0.0-r1_all.ipk",
"size": 3909,
"size": 3910,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1506,7 +1506,7 @@
"name": "secubox-dns-guard",
"version": "1.0.0-r1",
"filename": "secubox-dns-guard_1.0.0-r1_all.ipk",
"size": 12482,
"size": 12485,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1518,7 +1518,7 @@
"name": "secubox-identity",
"version": "0.1.0-r1",
"filename": "secubox-identity_0.1.0-r1_all.ipk",
"size": 8084,
"size": 8089,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1530,7 +1530,7 @@
"name": "secubox-iot-guard",
"version": "1.0.0-r1",
"filename": "secubox-iot-guard_1.0.0-r1_all.ipk",
"size": 13370,
"size": 13369,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1542,7 +1542,7 @@
"name": "secubox-localrecall",
"version": "1.0.0-r1",
"filename": "secubox-localrecall_1.0.0-r1_all.ipk",
"size": 7793,
"size": 7800,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1554,7 +1554,7 @@
"name": "secubox-master-link",
"version": "1.0.0-r1",
"filename": "secubox-master-link_1.0.0-r1_all.ipk",
"size": 15035,
"size": 15038,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1578,7 +1578,7 @@
"name": "secubox-mirrornet",
"version": "0.1.0-r1",
"filename": "secubox-mirrornet_0.1.0-r1_all.ipk",
"size": 15309,
"size": 15308,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1590,7 +1590,7 @@
"name": "secubox-network-anomaly",
"version": "1.0.0-r1",
"filename": "secubox-network-anomaly_1.0.0-r1_all.ipk",
"size": 6167,
"size": 6165,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1602,7 +1602,7 @@
"name": "secubox-p2p",
"version": "0.6.0-r3",
"filename": "secubox-p2p_0.6.0-r3_all.ipk",
"size": 47860,
"size": 47869,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1614,7 +1614,7 @@
"name": "secubox-p2p-intel",
"version": "0.1.0-r1",
"filename": "secubox-p2p-intel_0.1.0-r1_all.ipk",
"size": 9801,
"size": 9797,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1626,7 +1626,7 @@
"name": "secubox-threat-analyst",
"version": "1.0.0-r1",
"filename": "secubox-threat-analyst_1.0.0-r1_all.ipk",
"size": 9863,
"size": 9868,
"category": "utility",
"icon": "package",
"description": "SecuBox package",
@ -1638,7 +1638,7 @@
"name": "secubox-vortex-dns",
"version": "1.0.0-r1",
"filename": "secubox-vortex-dns_1.0.0-r1_all.ipk",
"size": 5441,
"size": 5442,
"category": "utility",
"icon": "package",
"description": "SecuBox package",

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