#!/bin/bash # GitHub Pages Setup Script (Alternative to Wiki) # Creates a docs/ site using GitHub Pages with MkDocs set -e DOCS_DIR="./DOCS" SITE_DIR="./docs" echo "🔧 SecuBox GitHub Pages Setup" echo "===============================" echo "" # Check if docs directory exists if [ ! -d "$DOCS_DIR" ]; then echo "❌ Error: DOCS directory not found" exit 1 fi echo "📦 Checking dependencies..." # Check for Python if ! command -v python3 &> /dev/null; then echo "❌ Python 3 is required but not installed." echo " Install: sudo apt-get install python3" exit 1 fi # Install mkdocs if not present if ! command -v mkdocs &> /dev/null; then echo "📥 Installing MkDocs..." # Check if we're on a Debian/Ubuntu system with apt if command -v apt-get &> /dev/null; then echo " Using apt package manager (recommended for Debian/Ubuntu)" echo " Running: sudo apt-get install -y mkdocs mkdocs-material python3-pymdownx" sudo apt-get update -qq sudo apt-get install -y mkdocs mkdocs-material python3-pymdownx else # Fallback to pip with virtual environment or user install echo " Using pip3 (fallback method)" if python3 -m pip --version &> /dev/null; then # Try user install first (doesn't require sudo, doesn't break system) python3 -m pip install --user mkdocs mkdocs-material pymdown-extensions else echo "❌ Error: pip not available and apt not found." echo " Please install mkdocs manually:" echo " - Debian/Ubuntu: sudo apt-get install mkdocs mkdocs-material" echo " - macOS: brew install mkdocs" echo " - Other: pip3 install --user mkdocs mkdocs-material" exit 1 fi fi # Verify installation if ! command -v mkdocs &> /dev/null; then echo "❌ Error: MkDocs installation failed." exit 1 fi else echo "✅ MkDocs already installed ($(mkdocs --version | head -1))" fi echo "" echo "📋 Creating GitHub Pages structure..." # Create mkdocs.yml configuration cat > mkdocs.yml << 'EOF' site_name: SecuBox Documentation site_description: OpenWrt LuCI Security & Management Suite site_author: CyberMind.fr site_url: https://gkerma.github.io/secubox-openwrt/ repo_name: gkerma/secubox-openwrt repo_url: https://github.com/CyberMind-FR/secubox-openwrt edit_uri: edit/master/DOCS/ theme: name: material palette: # Light mode - media: "(prefers-color-scheme: light)" scheme: default primary: indigo accent: purple toggle: icon: material/brightness-7 name: Switch to dark mode # Dark mode - media: "(prefers-color-scheme: dark)" scheme: slate primary: indigo accent: purple toggle: icon: material/brightness-4 name: Switch to light mode features: - navigation.instant - navigation.tracking - navigation.tabs - navigation.tabs.sticky - navigation.sections - navigation.expand - navigation.top - search.suggest - search.highlight - content.code.copy - content.code.annotate icon: repo: fontawesome/brands/github edit: material/pencil view: material/eye font: text: Inter code: JetBrains Mono extra_css: - stylesheets/extra.css extra: social: - icon: fontawesome/brands/github link: https://github.com/CyberMind-FR/secubox-openwrt - icon: fontawesome/solid/globe link: https://secubox.cybermood.eu version: provider: mike markdown_extensions: - pymdownx.highlight: anchor_linenums: true - pymdownx.inlinehilite - pymdownx.snippets - pymdownx.superfences: custom_fences: - name: mermaid class: mermaid format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.tabbed: alternate_style: true - pymdownx.tasklist: custom_checkbox: true - admonition - pymdownx.details - attr_list - md_in_html - tables - toc: permalink: true nav: - Home: index.md - Getting Started: - Quick Start: quick-start.md - Documentation Index: documentation-index.md - Development: - Development Guidelines: development-guidelines.md - Code Templates: code-templates.md - Module Implementation: module-implementation-guide.md - Reference: - RPCD & Architecture: claude.md - Validation Guide: validation-guide.md - Permissions Guide: permissions-guide.md - LuCI Development: luci-development-reference.md - Modules: - Module Status: module-status.md - Feature Prompts: feature-regeneration-prompts.md - Tools & Roadmap: - TODO Roadmap: todo-analyse.md - Archive: - Archive Index: archive/index.md - Build Issues: archive/build-issues.md - Completion Report: archive/completion-report.md - Module Enable/Disable: archive/module-enable-disable-design.md EOF # Create docs directory structure echo "📁 Creating docs/ directory..." rm -rf "$SITE_DIR" mkdir -p "$SITE_DIR" mkdir -p "$SITE_DIR/archive" mkdir -p "$SITE_DIR/stylesheets" # Create index page (home) cat > "$SITE_DIR/index.md" << 'EOF' # SecuBox Documentation **Version:** 1.0.0 **Last Updated:** 2025-12-28 **Project:** OpenWrt LuCI Security & Management Suite Welcome to the SecuBox documentation! This comprehensive guide covers all aspects of developing, deploying, and maintaining SecuBox modules. --- ## 🏗️ What is SecuBox? SecuBox is a comprehensive **security and network management suite for OpenWrt** consisting of **15 LuCI application modules** that provide: - **Security Monitoring** - CrowdSec intrusion prevention, Netdata metrics - **Network Intelligence** - Deep packet inspection, traffic classification - **Access Control** - Captive portal, authentication, VPN management - **Performance Optimization** - QoS, bandwidth management, caching - **System Administration** - Centralized dashboard, service management --- ## 🚀 Quick Navigation
- :fontawesome-solid-rocket:{ .lg .middle } **Getting Started** --- New to SecuBox? Start here! [:octicons-arrow-right-24: Quick Start Guide](quick-start.md) - :fontawesome-solid-book:{ .lg .middle } **Development Guide** --- Complete development reference with architecture diagrams [:octicons-arrow-right-24: Development Guidelines](development-guidelines.md) - :fontawesome-solid-code:{ .lg .middle } **Code Templates** --- Working examples and implementation patterns [:octicons-arrow-right-24: Code Templates](code-templates.md) - :fontawesome-solid-list-check:{ .lg .middle } **Validation** --- Module validation and testing workflows [:octicons-arrow-right-24: Validation Guide](validation-guide.md)
--- ## 📦 15 Module Suite ### Core Control (2 modules) - **SecuBox Central Hub** - Main dashboard and module management - **System Hub** - System administration (health, services, logs, backup, etc.) ### Security & Monitoring (2 modules) - **CrowdSec Dashboard** - Intrusion prevention and threat intelligence - **Netdata Dashboard** - Real-time system monitoring ### Network Intelligence (2 modules) - **Netifyd Dashboard** - Deep packet inspection and classification - **Network Modes** - Network profile management ### VPN & Access Control (3 modules) - **WireGuard Dashboard** - VPN tunnel management - **Client Guardian** - Network access control and captive portal - **Auth Guardian** - Authentication system ### Bandwidth & Traffic (2 modules) - **Bandwidth Manager** - QoS and bandwidth quotas - **Traffic Shaper** - Advanced traffic shaping ### Performance & Services (2 modules) - **CDN Cache** - Content delivery network proxy cache - **VHost Manager** - Virtual host configuration ### System Optimization (2 modules) - **Media Flow** - Media traffic optimization - **KSM Manager** - Kernel same-page merging [View Module Status →](module-status.md){ .md-button .md-button--primary } --- ## 🎨 Design System SecuBox uses a modern, consistent design system: - **Color Palette:** Indigo/Violet gradients with dark mode support - **Typography:** Inter (text) + JetBrains Mono (code/values) - **Components:** Cards, badges, buttons with gradient effects - **Layout:** Responsive grid system See the [Design System section](development-guidelines.md#design-system--ui-guidelines) for complete specifications. --- ## 🔧 Development Workflow !!! warning "Critical Rules" 1. **RPCD Naming:** Script name must match ubus object (`luci.module-name`) 2. **Menu Paths:** Must match view file locations exactly 3. **Permissions:** 755 for RPCD scripts, 644 for CSS/JS 4. **Validation:** Always run `./secubox-tools/validate-modules.sh` before commit ### Development Tools ```bash # Validate all modules (7 automated checks) ./secubox-tools/validate-modules.sh # Fix file permissions automatically ./secubox-tools/fix-permissions.sh --local # Build packages locally ./secubox-tools/local-build.sh build luci-app-module-name ``` [Complete Development Workflow →](development-guidelines.md#deployment-procedures){ .md-button } --- ## 🌐 Live Demo Experience SecuBox in action: **Production Demo:** [https://secubox.cybermood.eu](https://secubox.cybermood.eu) - Main dashboard: `/` - System Hub: `/system-hub` - CrowdSec: `/crowdsec` - All 15 modules accessible --- ## 📚 Documentation Sections ### For New Contributors 1. [Quick Start Guide](quick-start.md) - Essential rules and commands 2. [Development Guidelines](development-guidelines.md) - Complete reference 3. [CLAUDE.md](claude.md) - Build system and architecture ### For AI-Assisted Development 1. [Module Implementation Guide](module-implementation-guide.md) - Step-by-step workflow 2. [Feature Regeneration Prompts](feature-regeneration-prompts.md) - AI prompts for all modules 3. [Code Templates](code-templates.md) - Implementation patterns --- ## 📞 Support & Resources - **GitHub Repository:** [gkerma/secubox-openwrt](https://github.com/CyberMind-FR/secubox-openwrt) - **Documentation Issues:** [GitHub Issues](https://github.com/CyberMind-FR/secubox-openwrt/issues) - **Technical Support:** support@cybermind.fr - **Company:** CyberMind.fr --- ## 📝 License Apache-2.0 --- **Last Updated:** 2025-12-28 | **Maintainer:** CyberMind.fr EOF # Copy documentation files with lowercase names (convention for web) echo "📄 Copying documentation files..." cp "$DOCS_DIR/QUICK-START.md" "$SITE_DIR/quick-start.md" cp "$DOCS_DIR/DEVELOPMENT-GUIDELINES.md" "$SITE_DIR/development-guidelines.md" cp "$DOCS_DIR/DOCUMENTATION-INDEX.md" "$SITE_DIR/documentation-index.md" cp "$DOCS_DIR/CODE-TEMPLATES.md" "$SITE_DIR/code-templates.md" cp "$DOCS_DIR/CLAUDE.md" "$SITE_DIR/claude.md" cp "$DOCS_DIR/VALIDATION-GUIDE.md" "$SITE_DIR/validation-guide.md" cp "$DOCS_DIR/PERMISSIONS-GUIDE.md" "$SITE_DIR/permissions-guide.md" cp "$DOCS_DIR/FEATURE-REGENERATION-PROMPTS.md" "$SITE_DIR/feature-regeneration-prompts.md" cp "$DOCS_DIR/MODULE-IMPLEMENTATION-GUIDE.md" "$SITE_DIR/module-implementation-guide.md" cp "$DOCS_DIR/MODULE_STATUS.md" "$SITE_DIR/module-status.md" cp "$DOCS_DIR/LUCI_DEVELOPMENT_REFERENCE.md" "$SITE_DIR/luci-development-reference.md" cp "TODO-ANALYSE.md" "$SITE_DIR/todo-analyse.md" # Create archive index cat > "$SITE_DIR/archive/index.md" << 'EOF' # Documentation Archive Historical and completed documentation. ## Purpose This archive contains documents that: - Represent completed project milestones - Describe implemented features - Document resolved issues ## Archived Documents - [Build Issues](build-issues.md) - Historical build troubleshooting (resolved) - [Completion Report](completion-report.md) - Project completion milestone - [Module Enable/Disable Design](module-enable-disable-design.md) - Feature design (implemented) ## Archive Policy Documents are archived when: 1. ✅ Feature/project is completed 2. ✅ Information is outdated but historically valuable 3. ✅ Content has been migrated to active documentation 4. ✅ Document serves as historical reference only --- [← Back to Home](../index.md){ .md-button } EOF cp "$DOCS_DIR/archive/BUILD_ISSUES.md" "$SITE_DIR/archive/build-issues.md" cp "$DOCS_DIR/archive/COMPLETION_REPORT.md" "$SITE_DIR/archive/completion-report.md" cp "$DOCS_DIR/archive/MODULE-ENABLE-DISABLE-DESIGN.md" "$SITE_DIR/archive/module-enable-disable-design.md" # Create custom CSS cat > "$SITE_DIR/stylesheets/extra.css" << 'EOF' /* SecuBox custom styling */ :root { --md-primary-fg-color: #6366f1; --md-accent-fg-color: #8b5cf6; } /* Code blocks */ .highlight { border-radius: 0.375rem; } /* Cards grid */ .grid.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; margin: 1.5rem 0; } .grid.cards > * { border: 1px solid var(--md-default-fg-color--lightest); border-radius: 0.375rem; padding: 1rem; transition: transform 0.2s, box-shadow 0.2s; } .grid.cards > *:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } /* Gradient headings */ h1 { background: linear-gradient(135deg, #6366f1, #8b5cf6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Admonitions */ .md-typeset .admonition { border-radius: 0.375rem; } EOF echo "" echo "🔧 Fixing internal links for GitHub Pages..." # Convert relative links to work with GitHub Pages find "$SITE_DIR" -name "*.md" -type f -exec sed -i \ -e 's|\](\.\/QUICK-START\.md)|](quick-start.md)|g' \ -e 's|\](\.\/DEVELOPMENT-GUIDELINES\.md)|](development-guidelines.md)|g' \ -e 's|\](\.\/DOCUMENTATION-INDEX\.md)|](documentation-index.md)|g' \ -e 's|\](\.\/CODE-TEMPLATES\.md)|](code-templates.md)|g' \ -e 's|\](\.\/CLAUDE\.md)|](claude.md)|g' \ -e 's|\](\.\/VALIDATION-GUIDE\.md)|](validation-guide.md)|g' \ -e 's|\](\.\/PERMISSIONS-GUIDE\.md)|](permissions-guide.md)|g' \ -e 's|\](\.\/FEATURE-REGENERATION-PROMPTS\.md)|](feature-regeneration-prompts.md)|g' \ -e 's|\](\.\/MODULE-IMPLEMENTATION-GUIDE\.md)|](module-implementation-guide.md)|g' \ -e 's|\](\.\/MODULE_STATUS\.md)|](module-status.md)|g' \ -e 's|\](\.\/LUCI_DEVELOPMENT_REFERENCE\.md)|](luci-development-reference.md)|g' \ -e 's|\](\.\.\/TODO-ANALYSE\.md)|](todo-analyse.md)|g' \ -e 's|\](\.\/CODEX\.md)|](codex.md)|g' \ {} + echo "" echo "🏗️ Building site preview..." mkdocs build echo "" echo "✅ GitHub Pages setup complete!" echo "" echo "📋 Next steps:" echo "" echo "1️⃣ Test locally:" echo " mkdocs serve" echo " Open: http://127.0.0.1:8000" echo "" echo "2️⃣ Commit and push:" echo " git add mkdocs.yml docs/" echo " git commit -m 'Add GitHub Pages documentation site'" echo " git push" echo "" echo "3️⃣ Enable GitHub Pages in repository settings:" echo " - Go to: https://github.com/CyberMind-FR/secubox-openwrt/settings/pages" echo " - Source: Deploy from a branch" echo " - Branch: master" echo " - Folder: /docs" echo " - Save" echo "" echo "4️⃣ Your site will be live at:" echo " https://gkerma.github.io/secubox-openwrt/" echo "" echo "🎉 Done! MkDocs Material theme provides a modern documentation site."