secubox-openwrt/QUICK-START.md
CyberMind-FR 58a6bcba73 docs: add critical pre-deployment checks and common error solutions
Added comprehensive pre-deployment verification to prevent common issues:

🔍 Pre-Deployment Checks (CRITICAL)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. Disk Space Verification
   - Check overlay usage before deployment
   - Stop if ≥90% full
   - Emergency cleanup procedures

2. Permissions Verification (Prevent HTTP 403)
   - RPCD: 755 (rwxr-xr-x)
   - CSS/JS: 644 (rw-r--r--)
   - Common error: Files created with 600 instead of 644
   - Symptom: HTTP 403 Forbidden on resource loading

3. Post-Deployment Verification
   - 6-point checklist script
   - Verify disk space, permissions, ubus objects
   - Automated validation

4. Common Deployment Errors Table
   - HTTP 403 Forbidden → Permission fix
   - No space left → Cleanup procedure
   - Object not found → RPCD permission check
   - Module not appearing → Cache clearing
   - Changes not visible → Browser cache

5. Emergency Disk Space Recovery
   - Analysis commands
   - Cleanup procedures
   - Netdata web UI removal option (saves 22MB)

📝 Files Updated:
- DEVELOPMENT-GUIDELINES.md: Added ~175 lines at section 9
- QUICK-START.md: Added rules #4 and #5

Based on real deployment issues encountered:
- Router overlay 100% full (98.8M/98.8M)
- HTTP 403 on netdata-dashboard (permissions 600 vs 644)
- Common.css deployment failures due to space

These checks are now MANDATORY before any deployment.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 20:40:28 +01:00

315 lines
7.2 KiB
Markdown

# Quick Start Guide - SecuBox Development
**⚡ Aide-mémoire rapide pour développement**
Pour le guide complet, voir [DEVELOPMENT-GUIDELINES.md](./DEVELOPMENT-GUIDELINES.md)
---
## ⚠️ RÈGLES CRITIQUES (À NE JAMAIS OUBLIER)
### 1. RPCD Script Naming
```bash
# Le nom DOIT correspondre EXACTEMENT à l'objet ubus
JavaScript: object: 'luci.system-hub'
Fichier: root/usr/libexec/rpcd/luci.system-hub ✅
# Sinon: Error -32000 "Object not found"
```
### 2. Menu Path Matching
```json
Menu JSON: "path": "system-hub/overview"
Fichier: view/system-hub/overview.js
# Sinon: HTTP 404 Not Found
```
### 3. Permissions Files
```bash
# RPCD scripts = exécutable
chmod 755 root/usr/libexec/rpcd/luci.*
# CSS/JS = lecture seule
chmod 644 htdocs/**/*.{css,js}
# Sinon: 403 Forbidden ou script non exécuté
```
### 4. Pre-Deployment Checks
```bash
# TOUJOURS vérifier avant déploiement:
# 1. Espace disque (doit être < 90%)
ssh root@192.168.8.191 "df -h | grep overlay"
# 2. Permissions après déploiement
ssh root@192.168.8.191 "find /www/luci-static -name '*.js' -perm 600"
# ⚠️ Si résultats: fichiers ont 600 au lieu de 644 → Erreur 403!
# 3. Correction rapide si nécessaire
ssh root@192.168.8.191 "find /www/luci-static -name '*.css' -exec chmod 644 {} \;"
ssh root@192.168.8.191 "find /www/luci-static -name '*.js' -exec chmod 644 {} \;"
```
### 5. Common Errors Quick Fix
```bash
# HTTP 403 Forbidden
chmod 644 /www/luci-static/resources/**/*.{js,css}
# No space left on device
rm -rf /tmp/*.ipk /tmp/luci-*
find /root -name '*.backup-*' -mtime +7 -delete
# Object not found -32000
chmod 755 /usr/libexec/rpcd/luci.*
ubus list | grep luci.module-name # Vérifier disponibilité
```
---
## 🎨 Design System Essentials
### Color Palette (Dark Mode)
```css
--sh-bg-primary: #0a0a0f; /* Fond principal */
--sh-bg-card: #12121a; /* Cartes */
--sh-border: #2a2a35; /* Bordures */
--sh-primary: #6366f1; /* Indigo */
--sh-primary-end: #8b5cf6; /* Violet */
```
### Fonts
```css
/* Général */
font-family: 'Inter', sans-serif;
/* Valeurs numériques */
font-family: 'JetBrains Mono', monospace;
```
### Component Classes
```css
.sh-page-header /* Page header */
.sh-page-title /* Title (gradient text) */
.sh-stat-badge /* Stat badge (130px min) */
.sh-card /* Card (gradient border on hover) */
.sh-btn-primary /* Button (gradient) */
.sh-filter-tab /* Filter tab */
```
### Grid Sizes
```css
/* Stats */
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
/* Metrics */
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
/* Info cards */
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
```
---
## 🔧 Common Commands
### Validation
```bash
# Valider TOUT avant commit
./secubox-tools/validate-modules.sh
# JSON
jsonlint file.json
# Shell
shellcheck root/usr/libexec/rpcd/*
```
### Build
```bash
# Build local
./secubox-tools/local-build.sh build luci-app-module-name
# Build OpenWrt SDK
make package/luci-app-module-name/compile V=s
```
### Deploy
```bash
# Copier fichiers
scp file.js root@192.168.8.191:/www/luci-static/resources/
# Fix permissions
ssh root@192.168.8.191 "chmod 644 /www/luci-static/resources/**/*.css"
# Clear cache + restart
ssh root@192.168.8.191 "rm -f /tmp/luci-indexcache /tmp/luci-modulecache/* && /etc/init.d/rpcd restart && /etc/init.d/uhttpd restart"
```
### Debug
```bash
# Test RPCD
ssh root@router "ubus list | grep luci.module"
ssh root@router "ubus call luci.module-name getStatus"
# Check files
ssh root@router "ls -la /www/luci-static/resources/view/module-name/"
# Logs
ssh root@router "logread | grep -i error"
```
---
## 🚨 Common Errors & Quick Fixes
| Error | Quick Fix |
|-------|-----------|
| **-32000 Object not found** | Rename RPCD file to match ubus object |
| **404 View not found** | Fix menu path to match file location |
| **403 Forbidden CSS** | `chmod 644 *.css` |
| **[object HTMLButtonElement]** | Remove array wrapper: `E('div', {}, renderButtons())` |
| **Styles not updating** | Clear browser cache (Ctrl+Shift+R) + mode privé |
---
## 📋 Pre-Commit Checklist
- [ ] `./secubox-tools/validate-modules.sh`
- [ ] RPCD name = ubus object name
- [ ] Menu path = view file path
- [ ] Permissions: 755 (RPCD), 644 (CSS/JS)
- [ ] JSON valide (jsonlint)
- [ ] CSS: variables utilisées (pas hardcode)
- [ ] CSS: dark mode supporté
- [ ] JS: gestion d'erreur sur API calls
- [ ] Version incrémentée (PKG_VERSION)
---
## 📁 File Structure Template
```
luci-app-<module>/
├── Makefile
├── htdocs/luci-static/resources/
│ ├── view/<module>/
│ │ └── overview.js
│ └── <module>/
│ ├── api.js
│ ├── common.css
│ └── overview.css
└── root/
├── usr/libexec/rpcd/
│ └── luci.<module> ⚠️ MUST match ubus object!
└── usr/share/
├── luci/menu.d/
│ └── luci-app-<module>.json
└── rpcd/acl.d/
└── luci-app-<module>.json
```
---
## 🎯 Quick Code Templates
### RPCD Script
```bash
#!/bin/sh
case "$1" in
list)
echo '{"getStatus": {}, "getHealth": {}}'
;;
call)
case "$2" in
getStatus)
printf '{"enabled": true}\n'
;;
esac
;;
esac
```
### View (JavaScript)
```javascript
'use strict';
'require view';
'require <module>/api as API';
return view.extend({
load: function() {
return API.getStatus();
},
render: function(data) {
return E('div', { 'class': 'sh-page-header' }, [
E('h2', { 'class': 'sh-page-title' }, 'Title')
]);
},
handleSaveApply: null,
handleSave: null,
handleReset: null
});
```
### Page Header
```javascript
E('div', { 'class': 'sh-page-header' }, [
E('div', {}, [
E('h2', { 'class': 'sh-page-title' }, [
E('span', { 'class': 'sh-page-title-icon' }, '🎯'),
'Page Title'
]),
E('p', { 'class': 'sh-page-subtitle' }, 'Description')
]),
E('div', { 'class': 'sh-stats-grid' }, [
E('div', { 'class': 'sh-stat-badge' }, [
E('div', { 'class': 'sh-stat-value' }, '92'),
E('div', { 'class': 'sh-stat-label' }, 'Score')
])
])
])
```
### Card with Gradient Border
```javascript
E('div', { 'class': 'sh-card sh-card-success' }, [
E('div', { 'class': 'sh-card-header' }, [
E('h3', { 'class': 'sh-card-title' }, [
E('span', { 'class': 'sh-card-title-icon' }, '⚙️'),
'Card Title'
])
]),
E('div', { 'class': 'sh-card-body' }, [
// Content
])
])
```
---
## 🌐 Test URLs
```
SecuBox Dashboard:
https://192.168.8.191/cgi-bin/luci/admin/secubox
System Hub:
https://192.168.8.191/cgi-bin/luci/admin/secubox/system/system-hub
```
**TOUJOURS tester en mode privé** (Ctrl+Shift+N) après deploy!
---
## 📚 Documentation
- **Guide complet:** [DEVELOPMENT-GUIDELINES.md](./DEVELOPMENT-GUIDELINES.md)
- **Architecture:** [CLAUDE.md](./CLAUDE.md)
- **Validation:** `./secubox-tools/validate-modules.sh`
- **Démo design:** https://cybermind.fr/apps/system-hub/demo.html
---
**Version:** 1.0.0 | **Date:** 2025-12-26