secubox-openwrt/package/secubox/luci-app-vhost-manager/htdocs/luci-static/resources/vhost-manager/templates.json
CyberMind-FR 31a87c5d7a feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration
Major structural reorganization and feature additions:

## Folder Reorganization
- Move 17 luci-app-* packages to package/secubox/ (except luci-app-secubox core hub)
- Update all tooling to support new structure:
  - secubox-tools/quick-deploy.sh: search both locations
  - secubox-tools/validate-modules.sh: validate both directories
  - secubox-tools/fix-permissions.sh: fix permissions in both locations
  - .github/workflows/test-validate.yml: build from both paths
- Update README.md links to new package/secubox/ paths

## AppStore Migration (Complete)
- Add catalog entries for all remaining luci-app packages:
  - network-tweaks.json: Network optimization tools
  - secubox-bonus.json: Documentation & demos hub
- Total: 24 apps in AppStore catalog (22 existing + 2 new)
- New category: 'documentation' for docs/demos/tutorials

## VHost Manager v2.0 Enhancements
- Add profile activation system for Internal Services and Redirects
- Implement createVHost() API wrapper for template-based deployment
- Fix Virtual Hosts view rendering with proper LuCI patterns
- Fix RPCD backend shell script errors (remove invalid local declarations)
- Extend backend validation for nginx return directives (redirect support)
- Add section_id parameter for named VHost profiles
- Add Remove button to Redirects page for feature parity
- Update README to v2.0 with comprehensive feature documentation

## Network Tweaks Dashboard
- Close button added to component details modal

Files changed: 340+ (336 renames with preserved git history)
Packages affected: 19 luci-app, 2 secubox-app, 1 theme, 4 tools

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-01 14:59:38 +01:00

366 lines
12 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"templates": [
{
"id": "luci",
"icon": "🖥️",
"name": "LuCI UI",
"domain": "router.local",
"backend": "http://127.0.0.1:80",
"port": 80,
"category": "Core",
"description": "Expose the management UI behind nginx with optional SSL and auth.",
"app_id": null,
"enabled_by_default": true,
"requires_ssl": false,
"requires_auth": false,
"websocket_support": false
},
{
"id": "netdata",
"icon": "📈",
"name": "Netdata",
"domain": "metrics.local",
"backend": "http://127.0.0.1:19999",
"port": 19999,
"category": "Monitoring",
"description": "High-resolution telemetry for CPU, memory, and interfaces.",
"app_id": null,
"enabled_by_default": false,
"requires_ssl": false,
"requires_auth": true,
"websocket_support": true
},
{
"id": "crowdsec",
"icon": "🛡️",
"name": "CrowdSec",
"domain": "crowdsec.local",
"backend": "http://127.0.0.1:8080",
"port": 8080,
"category": "Security",
"description": "Review bouncer decisions and live intrusion alerts.",
"app_id": "secubox-app-crowdsec",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": false
},
{
"id": "nodogsplash",
"icon": "🌐",
"name": "NoDogSplash",
"domain": "portal.local",
"backend": "http://127.0.0.1:2050",
"port": 2050,
"category": "Network",
"description": "Captive portal splash page for guest network access control.",
"app_id": "secubox-app-nodogsplash",
"enabled_by_default": false,
"requires_ssl": false,
"requires_auth": false,
"websocket_support": false
},
{
"id": "domoticz",
"icon": "🏠",
"name": "Domoticz",
"domain": "domoticz.local",
"backend": "http://127.0.0.1:8080",
"port": 8080,
"category": "IoT & Home Automation",
"description": "Home automation system with support for various devices and protocols.",
"app_id": "secubox-app-domoticz",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": true
},
{
"id": "lyrion",
"icon": "🎵",
"name": "Lyrion Music Server",
"domain": "music.local",
"backend": "http://127.0.0.1:9000",
"port": 9000,
"category": "Media",
"description": "Multi-room audio streaming server (formerly Logitech Media Server).",
"app_id": "secubox-app-lyrion",
"enabled_by_default": false,
"requires_ssl": false,
"requires_auth": false,
"websocket_support": false
},
{
"id": "zigbee2mqtt",
"icon": "📡",
"name": "Zigbee2MQTT",
"domain": "zigbee.local",
"backend": "http://127.0.0.1:8080",
"port": 8080,
"category": "IoT & Home Automation",
"description": "Zigbee to MQTT bridge with web-based device management interface.",
"app_id": "secubox-app-zigbee2mqtt",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": true
},
{
"id": "localai",
"icon": "🤖",
"name": "LocalAI",
"domain": "ai.local",
"backend": "http://127.0.0.1:8080",
"port": 8080,
"category": "AI & Machine Learning",
"description": "Self-hosted OpenAI-compatible API with web interface for model management.",
"app_id": "secubox-app-localai",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": false
},
{
"id": "citadel",
"icon": "🏢",
"name": "Citadel",
"domain": "groupware.local",
"backend": "http://127.0.0.1:504",
"port": 504,
"category": "Productivity",
"description": "Complete groupware with email, calendar, contacts, and instant messaging.",
"app_id": "secubox-app-citadel",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": true
},
{
"id": "ispconfig",
"icon": "🖥️",
"name": "ISPConfig",
"domain": "hosting.local",
"backend": "http://127.0.0.1:8080",
"port": 8080,
"category": "Hosting & Control Panels",
"description": "Web hosting control panel for managing servers, websites, and databases.",
"app_id": "secubox-app-ispconfig",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": false
},
{
"id": "mailinabox",
"icon": "📧",
"name": "Mail-in-a-Box",
"domain": "mail.local",
"backend": "http://127.0.0.1:4430",
"port": 4430,
"category": "Productivity",
"description": "Easy-to-deploy email server with webmail, contacts, and calendar.",
"app_id": "secubox-app-mailinabox",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": true,
"websocket_support": false
},
{
"id": "nextcloud",
"icon": "☁️",
"name": "Nextcloud",
"domain": "cloud.local",
"backend": "http://127.0.0.1:80",
"port": 80,
"category": "Productivity",
"description": "Self-hosted file sync and share with calendar, contacts, and collaboration.",
"app_id": "secubox-app-nextcloud",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": true,
"notes": "Nextcloud handles its own authentication. Configure trusted domains in config.php."
},
{
"id": "adguardhome",
"icon": "🛡",
"name": "AdGuard Home",
"domain": "adguard.local",
"backend": "http://127.0.0.1:3000",
"port": 3000,
"category": "Network",
"description": "Network-wide ad blocker with DNS-over-HTTPS/TLS and analytics dashboard.",
"app_id": "secubox-app-adguardhome",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": false,
"notes": "AdGuard Home has its own authentication system."
},
{
"id": "portainer",
"icon": "🐳",
"name": "Portainer",
"domain": "portainer.local",
"backend": "http://127.0.0.1:9000",
"port": 9000,
"category": "Hosting & Control Panels",
"description": "Docker container management with web UI for deploying and monitoring containers.",
"app_id": "secubox-app-portainer",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": true,
"notes": "Portainer has its own authentication. Essential for managing Docker containers on the router."
},
{
"id": "homeassistant",
"icon": "🏡",
"name": "Home Assistant",
"domain": "home.local",
"backend": "http://127.0.0.1:8123",
"port": 8123,
"category": "IoT & Home Automation",
"description": "Home automation platform with 2000+ integrations for smart home devices.",
"app_id": "secubox-app-homeassistant",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": true,
"notes": "Home Assistant has built-in authentication. WebSocket required for real-time updates."
},
{
"id": "jellyfin",
"icon": "🎬",
"name": "Jellyfin",
"domain": "jellyfin.local",
"backend": "http://127.0.0.1:8096",
"port": 8096,
"category": "Media",
"description": "Free media server for streaming movies, TV shows, music, and photos.",
"app_id": "secubox-app-jellyfin",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": true,
"notes": "Jellyfin has its own user authentication. SSL recommended for remote access."
},
{
"id": "vaultwarden",
"icon": "🔐",
"name": "Vaultwarden",
"domain": "vault.local",
"backend": "http://127.0.0.1:80",
"port": 80,
"category": "Security",
"description": "Bitwarden-compatible password manager with web vault and mobile sync.",
"app_id": "secubox-app-vaultwarden",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": true,
"notes": "HTTPS is REQUIRED for Vaultwarden to work with mobile apps. Configure trusted domain."
},
{
"id": "gitea",
"icon": "🦊",
"name": "Gitea",
"domain": "git.local",
"backend": "http://127.0.0.1:3000",
"port": 3000,
"category": "Productivity",
"description": "Self-hosted Git service with web UI, issues, and pull requests.",
"app_id": "secubox-app-gitea",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": false,
"notes": "Gitea has built-in authentication. Also configure SSH access on port 22 if needed."
},
{
"id": "uptimekuma",
"icon": "📊",
"name": "Uptime Kuma",
"domain": "uptime.local",
"backend": "http://127.0.0.1:3001",
"port": 3001,
"category": "Network",
"description": "Uptime monitoring with status pages and notifications.",
"app_id": "secubox-app-uptimekuma",
"enabled_by_default": false,
"requires_ssl": true,
"requires_auth": false,
"websocket_support": true,
"notes": "Uptime Kuma has its own authentication. WebSocket required for real-time status updates."
},
{
"id": "magicmirror",
"icon": "🪞",
"name": "MagicMirror²",
"domain": "mirror.local",
"backend": "http://127.0.0.1:8080",
"port": 8080,
"category": "IoT & Home Automation",
"description": "Smart mirror platform with modular information display and web control.",
"app_id": "secubox-app-magicmirror",
"enabled_by_default": false,
"requires_ssl": false,
"requires_auth": false,
"websocket_support": true,
"notes": "WebSocket support required for module updates. Configure modules via LuCI MagicMirror manager."
}
],
"categories": {
"Core": {
"name": "Core Services",
"icon": "🖥️",
"description": "Essential router services and management interfaces"
},
"Monitoring": {
"name": "Monitoring & Analytics",
"icon": "📈",
"description": "System monitoring and performance analytics tools"
},
"Security": {
"name": "Security",
"icon": "🛡️",
"description": "Security and threat detection services"
},
"Network": {
"name": "Network Services",
"icon": "🌐",
"description": "Network utilities and DNS services"
},
"IoT & Home Automation": {
"name": "IoT & Home Automation",
"icon": "🏠",
"description": "Smart home and IoT device management"
},
"Media": {
"name": "Media & Entertainment",
"icon": "🎵",
"description": "Media streaming and entertainment services"
},
"AI & Machine Learning": {
"name": "AI & Machine Learning",
"icon": "🤖",
"description": "AI models and machine learning tools"
},
"Productivity": {
"name": "Productivity & Collaboration",
"icon": "📧",
"description": "Email, file sharing, and collaboration tools"
},
"Hosting & Control Panels": {
"name": "Hosting & Control Panels",
"icon": "🖥️",
"description": "Web hosting and server management"
}
},
"metadata": {
"version": "1.1",
"last_updated": "2026-01-01",
"repository": "https://github.com/cybermind-studio/secubox-openwrt"
}
}