Commit Graph

22 Commits

Author SHA1 Message Date
CyberMind
2744758b9e
Health banner: live panel (visitor-origin + live-hosts + cert-status) (#98)
* docs(spec): Health banner live panel design (ref #92)

Three public banner sections sharing one polling/CORS pipeline:
- VisitorOrigin: nft set seen_src + GeoLite2-ASN.mmdb, threshold-gated
  rollup, raw IPs discarded before persistence
- LiveHosts: HAProxy admin socket, 60 x 1-min ring buffer over req_tot
  deltas, hostname-heuristic frontend filter
- CertStatus: scan /etc/letsencrypt/live + cryptography parse, classify
  valid / expiring_soon / expiring_critical / expired

Each section fails independently; section hidden on enabled=false,
empty entries, or fetch error. All three endpoints are unauthenticated,
CORS-open, Cache-Control max-age=300.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(plan): Health banner live panel implementation plan (ref #92)

14-task TDD plan: tests scaffold -> config helpers -> three aggregators
(visitor-origin / live-hosts / cert-status) -> FastAPI lifespan wiring ->
nftables ruleset -> geoipupdate timer -> debian packaging -> banner v1.3.0
-> README + tracking docs -> full-suite verification + PR.

Also reconciles spec with codebase conventions: service user is 'secubox'
(not 'secubox-metrics'); config lives in /etc/secubox/secubox.conf, not a
separate metrics.toml.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Scaffold pytest layout for new aggregators (ref #92)

Adds tests/__init__.py and conftest.py that wire packages/secubox-metrics/api
and the repo-wide common/ onto sys.path so individual aggregator modules can
be imported in isolation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(core): Add visitor_origin / live_hosts / cert_status config helpers (ref #92)

Three new section helpers in secubox_core.config that merge defaults with
operator-supplied TOML overrides. Each section defaults to enabled=false so
the live-panel aggregators stay quiet on systems that haven't opted in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Use tmp_path fixture + drop unused import (ref #92)

Switches the config-helper tests from a hard-coded /tmp path to pytest's
tmp_path fixture, matching the pattern in packages/secubox-haproxy/tests/.
Removes the now-unused 'from unittest.mock import patch' line.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): VisitorOrigin aggregator (ref #92)

Pure-Python aggregator that polls the nft seen_src set, resolves ASNs via
GeoLite2 mmdb, and emits a threshold-gated top-N rollup. Private/loopback IPs
are skipped at lookup time; raw IPs never leave the function scope; the
threshold gate runs before persistence so the cache file never contains
attributable counts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): VisitorOrigin code-review followups (ref #92)

- mmdb auto-reopen on mtime change (Important): close + reopen when stat
  reports a different mtime; previously _mmdb_mtime was dead state.
- _read_nft_set defensive parse (Important): guard against {elem: str} shapes
  to prevent a latent TypeError.
- current() returns a defensive copy (Minor): no more by-reference leak of
  internal state.
- Drop unused ip_address import and unused monkeypatch parameter (Minor).
- Tighten tiebreak test to assert ASN order, not just count order (Minor).
- Add test for mtime-based reopen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Pin VisitorOrigin error-path behaviour (ref #92)

Regression tests for refresh_once: disabled config, missing mmdb, and nft
subprocess failure must all yield a non-throwing degraded payload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): LiveHosts aggregator with 60x1-min ring buffer (ref #92)

Reads HAProxy admin socket via raw AF_UNIX, parses 'show stat' CSV, filters
internal frontends (leading underscore or no dot), ring-buffers per-frontend
deltas over 60 minutes, and emits a top-N hostname rollup. Counter-reset
detection (cur < prev) yields a fresh-baseline bucket instead of a negative
delta. current() returns a defensive copy mirroring the VisitorOrigin fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Pin LiveHosts CSV parser + missing-socket paths (ref #92)

Tests the show-stat CSV parser against the real HAProxy column order and
asserts that an absent admin socket returns a degraded payload rather than
raising.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): CertStatus aggregator (ref #92)

Scans /etc/letsencrypt/live for cert.pem files, classifies each by days
remaining (valid / expiring_soon / expiring_critical / expired) using the
operator's warn_days/critical_days thresholds, and emits a summary + soonest
next-renewal host. A single corrupt PEM never kills the scan. Days remaining
computed with math.ceil so a cert expiring in 2.99d reports 3d, consistent
with certbot/renewal tooling expectations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(metrics): correct expired boundary when using math.ceil (ref #92)

math.ceil maps any cert that expired within the last 24 h to days=0,
which the previous `days < 0` guard treated as expiring_critical instead
of expired. Changing the guard to `days <= 0` closes the gap: with ceil,
days=0 means actual remaining time is in (-86400, 0] — i.e. already
past or exactly at expiry — so classifying it as expired is correct.
All four existing tests continue to pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(metrics): Wire three live-panel aggregators into FastAPI lifespan (ref #92)

Adds the three asyncio background tasks under a single lifespan and exposes
their current() payloads on /api/v1/metrics/{visitor-origin,live-hosts,cert-status}
with a 5-min Cache-Control. Endpoints stay unauthenticated by design — the
aggregators only emit threshold-gated, hostname-only data.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): Await cancelled lifespan tasks + tidy import order (ref #92)

- Important: lifespan finally now awaits gather(*tasks, return_exceptions=True)
  after cancel(), so blocking subprocess/socket I/O in aggregator refreshes
  doesn't race uvicorn's shutdown timeout.
- Minor: move 'from contextlib import asynccontextmanager' into the stdlib
  import group at the top of the file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): Ship nftables ingress tap for visitor-origin (ref #92)

Private inet secubox_metrics table with a timeout'd src-IP set, hooked from
prerouting at priority -300 so additions happen before secubox-firewall's
filter chain decides whether to drop the packet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): Weekly GeoLite2 ASN refresh timer (ref #92)

Conditional on /etc/secubox/secrets/maxmind.conf existing, so the unit is a
silent no-op on installs that haven't supplied a license key. RandomizedDelay
spreads load when many boxes deploy together.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* build(metrics): Package live-panel deps, nft ruleset, and geoipupdate timer (ref #92)

- control: add python3-maxminddb, python3-cryptography, geoipupdate, nftables
- rules: install nftables/ and systemd/ assets
- postinst: secubox -> haproxy group, cache + secrets + GeoIP dirs,
            nftables reload, timer enable
- service: ReadWritePaths gains /var/cache/secubox

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): Run geoipupdate as secubox + restart svc on upgrade (ref #92)

- secubox-geoipupdate.service: User/Group=secubox so .mmdb files inherit the
  ownership the metrics service expects when reading them. Previously the
  unit ran as root and created root-owned files that secubox-metrics could
  not open.
- postinst: switch 'systemctl start' to 'systemctl restart' so the secubox
  user's new haproxy-group membership is picked up by an already-running
  service after an upgrade.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(banner): v1.3.0 live panel — visitor origin, live hosts, cert status (ref #92)

Three independent fetch loops on a shared 30s cadence, three DOM sections,
per-section hide on enabled=false / empty / fetch error. Uses existing
design tokens (gold/cyan/matrix-green) so no new CSS variables are added.
A failing section never affects the others.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(banner): Correct banner element id lookup in live-panel (ref #92)

The new live-panel sectionContainer() helper looked up
getElementById('sbx-health-banner'), but the actual banner element is
created with id='health-banner'. The mismatch made banner null, so the
three live-panel sections were silently never appended to the DOM.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: Session 160 — Health Banner Live Panel (ref #92)

README documents the three new endpoints + config blocks. HISTORY / WIP /
MIGRATION-MAP entries describe the feature, the spec/plan paths, and the
session's outcome.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): Address whole-branch review findings (ref #92)

- Wrap _read_nft_set / _read_haproxy_stats in asyncio.to_thread so blocking
  I/O (subprocess up to 5s, AF_UNIX recv up to 2s) no longer stalls the
  event loop on every refresh tick.
- Replace falsy current() guard with explicit _refreshed flag. Previously,
  a successful refresh that produced entries=[] would fall through to the
  on-disk cache, serving stale non-empty data during low-traffic periods.
- Move geoipupdate from Depends to Recommends. It lives in bookworm/contrib,
  so a hard dependency breaks 'apt install secubox-metrics' on systems
  without contrib enabled. The aggregator already degrades gracefully when
  the mmdb is absent, making Recommends the correct strength. README
  documents the contrib note.
- prerm stops + disables secubox-geoipupdate.timer/service so 'apt remove'
  doesn't leave an orphan timer firing weekly with a missing unit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: CyberMind-FR <gandalf@Gk2.net>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:27:56 +02:00
bfbefccf11 feat(modem): Add secubox-modem LTE/5G management module
- Auto-detect Quectel modems (EC25, RM500Q, etc.) via USB/mmcli
- Connection management with APN config via ModemManager
- SMS send/receive functionality
- WebSocket AT command terminal with xterm.js
- Signal monitoring with Chart.js graphs
- QMI client for detailed signal queries (RSRP, SINR, etc.)
- P31 phosphor CRT theme WebUI with 5 tabs

Import fixes: use absolute imports (core.*) instead of relative (..core.*)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-05 12:00:59 +02:00
f7f5d5b332 docs: Update WIP.md for Session 41 with Phase 9+ modules
- Added 11 new system/infrastructure modules to tracking
- Updated package count from 93 to 124
- Documented nettweak, ksm, avatar, admin, metabolizer, metacatalog,
  cyberfeed, mirror, saas-relay, rezapp, picobrew modules

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-05 06:33:03 +02:00
4acd982bac feat(phase10): Complete all 10 Security Extensions modules
New modules created (8):
- secubox-ai-insights: ML threat detection and anomaly analysis
- secubox-ipblock: IP blocklist manager with nftables integration
- secubox-interceptor: Traffic interception and SSL inspection
- secubox-cookies: Cookie tracking and GDPR compliance
- secubox-mac-guard: MAC address whitelist/blacklist control
- secubox-dns-provider: Multi-provider DNS API (OVH, Gandi, Cloudflare)
- secubox-threats: Unified threat dashboard with IOC management
- secubox-openclaw: OSINT reconnaissance tool

Previously built:
- secubox-wazuh: SIEM integration
- secubox-ossec: Host IDS

All modules include:
- FastAPI backend with JWT authentication
- P31 Phosphor light theme frontend
- Debian packaging with systemd integration
- nginx reverse proxy config
- Menu integration

Total packages: 93 (was 85)
All migration phases complete (8, 9, 10)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-04 10:26:16 +02:00
ce28d53918 feat(phase8): Complete all 21 Application modules
New modules created (13):
- secubox-hexo: Static blog generator (Hexo)
- secubox-webradio: Internet radio streaming
- secubox-torrent: BitTorrent client (Transmission)
- secubox-newsbin: Usenet downloader (SABnzbd)
- secubox-domoticz: Home automation
- secubox-gotosocial: Fediverse/ActivityPub server
- secubox-simplex: SimpleX secure messaging
- secubox-photoprism: Photo management
- secubox-homeassistant: IoT/Home automation hub
- secubox-matrix: Matrix chat server (Synapse)
- secubox-jitsi: Video conferencing
- secubox-peertube: Video platform
- secubox-voip: VoIP/PBX (Asterisk/FreePBX)

All modules include:
- FastAPI backend with JWT authentication
- P31 Phosphor light theme frontend
- Docker/Podman container management
- Debian packaging (control, rules, postinst, prerm)
- nginx reverse proxy config
- systemd service unit
- Menu integration

Total packages: 85 (was 72)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-04 10:04:25 +02:00
074bb042df docs: Update tracking files for Session 36
- Phase 9 marked complete (22/22 modules)
- Total package count: 72
- Updated MIGRATION-MAP.md with Phase 9 completion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-04 09:05:29 +02:00
f5b114590c feat(soc): Add hierarchical SOC system with multi-tier deployment
Implements complete Security Operations Center architecture with:

Phase 1-4: Base SOC packages
- secubox-soc-agent: Edge node metrics collector with HMAC-signed push
- secubox-soc-gateway: Central aggregation hub with node registry
- secubox-console: TUI dashboard with SOC screens (fleet/alerts/node)
- secubox-soc-web: React web dashboard with cyberpunk theme

Phase 5: Hierarchical Mode
- Mode configuration (edge/regional/central)
- Regional SOC enrollment with token-based auth
- Regional-to-central aggregation with signed push
- Cross-region threat correlation
- Global view for central SOC with regional breakdown

New packages: secubox-soc-agent, secubox-soc-gateway, secubox-soc-web
Updated: secubox-console v1.1.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-01 07:08:08 +02:00
d3e9352722 feat(core): Add board detection and kiosk management library
- secubox_core v1.1.0: New kiosk.py module with reusable functions
  - Board detection (MOCHAbin, ESPRESSObin, x64-vm, x64-baremetal, RPi)
  - Interface classification (WAN/LAN/SFP by board type)
  - Kiosk management (status, enable, disable)
- secubox-system v1.2.0: Board Detection and Kiosk cards in UI
  - Uses secubox_core.kiosk (no code duplication)
  - New endpoints: /board, /board/detect, /board/capabilities, /kiosk/*
- secubox-hub v1.1.0: Network Mode selection on dashboard
  - Mode selector with preview and apply
  - Proxies to secubox-netmodes via Unix socket
  - New endpoints: /network_mode, /network_mode/preview, /board_summary
- secubox-portal v2.1.0: Device-specific theming
  - 7 board themes (Pro, Lite, Virtual, Server, Maker, Standard)
  - Login page dynamically adapts colors and badge
  - New endpoints: /theme, /branding

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-01 05:52:19 +02:00
bacb9fc01b feat(phase8): Add LXC-based application modules
Phase 8 Applications (LXC containers, no Docker):
- secubox-ollama: AI inference with Ollama
- secubox-jellyfin: Media server
- secubox-lyrion: LMS audio streaming
- secubox-zigbee: Zigbee2MQTT gateway
- secubox-localai: LocalAI inference
- secubox-domoticz: Home automation
- secubox-photoprism: Photo management
- secubox-homeassistant: Smart home hub

All modules include:
- LXC container management (Pattern 11)
- Shared sidebar + CRT theme (Pattern 12)
- FastAPI backend with JWT auth
- Systemd service units
- Debian packaging

Patterns documented:
- Pattern 11: LXC ONLY (never Docker/Podman)
- Pattern 12: Module Web UI Requirements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-28 09:41:15 +01:00
26c27d226d Add OpenWRT vs Debian comparison and update migration status
- Create docs/OPENWRT-DEBIAN-COMPARISON.md with full module comparison
  - OpenWRT: 103 luci-app modules
  - Debian: 52 packages (49 UI + 3 backend)
  - 43 modules migrated, 68 pending
  - ~1000+ API endpoints documented
  - Technology stack comparison
  - Roadmap for remaining phases

- Update MIGRATION-MAP.md with accurate counts and link to comparison
- Update WIP.md with Session 16 progress (UI theme, screenshots, docs)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 07:27:31 +01:00
4901143c78 Reorganize Go daemon and fix module compliance
- Move Go mesh daemon code to daemon/ directory
  - secuboxd mesh daemon with mDNS discovery
  - secuboxctl CLI management tool
  - c3box situational awareness dashboard
  - GK-HAM-2025 ZKP authentication system

- Add Debian packaging for secubox-daemon and secubox-c3box

- Fix maintainer in 12 packages to Gerald KERMA <devel@cybermind.fr>
  - secubox-backup, device-intel, mesh, meshname, p2p
  - roadmap, soc, tor, vortex-dns, vortex-firewall
  - watchdog, zkp

- Add JWT authentication to secubox-mesh API

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-25 07:51:17 +01:00
82edb92b28 Expand API documentation to cover all 48 modules
- Comprehensive API Reference with ~1000+ endpoints documented
- Organized by category: Core, Security, Network, Services, Apps, Intel
- Code examples for common operations (login, ban IP, add WG peer)
- WebSocket documentation for real-time updates
- Error handling and rate limiting info
- French (API-Reference-FR.md) and Chinese (API-Reference-ZH.md) translations
- Updated tracking files for Phase 7 Documentation completion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-25 06:59:33 +01:00
0873446338 Add Metrics Dashboard to documentation
- Add secubox-metrics README
- Update MIGRATION-MAP with 52 modules
- Update multilingual wiki docs (EN, FR, DE, ZH)
- Add Metrics Dashboard to all module lists

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-24 15:42:33 +01:00
5d2264cadc Add comprehensive module documentation
- docs/MODULES.md: Complete documentation for all 46 modules
  - Organized by category (dashboard, security, network, etc.)
  - API endpoint counts and descriptions
  - CRT P31 phosphor theme documentation
  - Screenshot checklist for visual documentation
  - Module architecture and build instructions
- docs/screenshots/: Directory for module screenshots
- Updated WIP.md with Session 11 documentation work
- Updated MIGRATION-MAP.md with secubox-soc module

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-24 12:25:27 +01:00
ce81230b75 Add 4 new modules: device-intel, vortex-dns, vortex-firewall, meshname
New modules ported from OpenWRT:
- secubox-device-intel v1.0.0: Asset discovery, MAC vendor lookup, device tagging
- secubox-vortex-dns v1.0.0: DNS firewall with RPZ, blocklists, threat feeds
- secubox-vortex-firewall v1.0.0: nftables IP blocking with threat feeds
- secubox-meshname v1.0.0: Mesh DNS with Avahi/dnsmasq integration

Fixes:
- Remove duplicate WireGuard menu entry (21-wireguard.json)
- Fix vortex-firewall permission error on /etc/nftables.d

Total modules: 45

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-24 11:27:20 +01:00
c53f24dc6c Add per-VLAN QoS support and fix menu naming issues
secubox-qos v1.1.0:
- Add multi-interface support (eth0, eth0.100, eth0.200, etc.)
- Add VLAN discovery and listing (/vlans endpoint)
- Add per-VLAN bandwidth policies with priority settings
- Add 802.1p PCP (Priority Code Point) marking support
- Add VLAN creation/deletion endpoints
- Add VLAN-aware traffic classification rules
- Add per-interface statistics and tc class stats
- Support applying QoS to all managed interfaces at once
- Update frontend with VLAN policies table and PCP settings

secubox-roadmap:
- Add conditional navbar based on authentication status
- Show guest header with Login button when not authenticated
- Show full sidebar when authenticated

Menu fixes (5 modules):
- Fix mitmproxy: title → name
- Fix exposure: title → name, add description
- Fix traffic: title → name, add description
- Fix wireguard: title → name, section → category, fix icon
- Fix zkp: remove duplicate title, url → path

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-24 10:17:10 +01:00
68fcb0dacb Add 6 new security and infrastructure modules
New modules:
- secubox-backup v1.0.0: System config and LXC container backup/restore
- secubox-watchdog v1.0.0: Container, service, and endpoint monitoring
- secubox-tor v1.0.0: Tor circuits and hidden services management
- secubox-exposure v1.0.0: Unified exposure settings (Tor, SSL, DNS, Mesh)
- secubox-mitmproxy v1.0.0: WAF with traffic inspection, alerts, and bans
- secubox-traffic v1.0.0: TC/CAKE QoS traffic shaping per interface

All modules include:
- FastAPI backend with JWT authentication
- Catppuccin-styled frontend dashboard
- Debian packaging (systemd, postinst, prerm)
- Menu integration via menu.d JSON

Total modules: 41 (was 35)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-23 17:57:53 +01:00
62175507f8 secubox-users v1.1.0: Enhanced unified identity management
- Add usersctl CLI v1.1.0 with full user lifecycle management
- Add groups support with permissions system
- Add import/export functionality for bulk operations
- Add service provisioning: Nextcloud, Gitea, Email, Matrix, Jellyfin, PeerTube, Jabber
- Enhance API with Pydantic validation and group endpoints
- Modern Catppuccin-styled frontend with modals and toasts
- Add nginx config for frontend serving

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-23 07:16:39 +01:00
1868fa2d8c feat(mail): Debian LXC containers for Postfix/Dovecot/Roundcube
Mail Server LXC (mailserverctl v2.1.0):
- Switch from Alpine to Debian bookworm via debootstrap
- Host networking (lxc.net.0.type = none)
- Postfix + Dovecot with virtual mailbox support
- User management via mailctl (add/list/remove)
- DKIM key generation

Roundcube Webmail LXC (roundcubectl v1.4.0):
- Debian bookworm with roundcube package
- SQLite backend, port 8027
- PHP-FPM 8.2 + nginx
- Three-fold commands (components, access)

Also includes:
- Three-fold architecture for 6 modules
- Maintainer update to Gerald KERMA
- Authentication fixes (JWT secret, redirect paths)
- 4 new modules (c3box, gitea, nextcloud, portal)
- WIP.md updated with session progress

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-22 10:40:00 +01:00
7c42a80baf feat: modular nginx config + hub roadmap + new modules
Nginx architecture:
- Modular config: each module installs /etc/nginx/secubox.d/<module>.conf
- Auto-register on install, auto-remove on purge
- Main config includes from secubox.d/*.conf
- 27 module snippets for dynamic component management

Hub enhancements:
- Add roadmap widget showing migration progress (84% complete)
- Add /api/v1/hub/roadmap endpoint with category breakdown
- Shared sidebar.css for consistent styling across modules

New modules:
- secubox-portal: JWT authentication, session management
- secubox-dns: DNS server management
- secubox-mail: Mail server (Postfix) management
- secubox-webmail: Roundcube webmail
- secubox-users: User account management
- secubox-publish: Content publishing
- secubox-waf: Web Application Firewall
- secubox-mail-lxc: Mail LXC container
- secubox-webmail-lxc: Webmail LXC container

Debian packaging:
- All modules updated with modular nginx support
- postinst: creates secubox.d/, reloads nginx
- prerm: removes snippet, reloads nginx
- rules: installs nginx/<module>.conf

Scripts:
- new-package.sh: generates modular nginx files for new modules
- retrofit-nginx-modular.sh: updates existing packages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-21 20:34:01 +01:00
59ea431b78 docs: update WIP and MIGRATION-MAP with 18 modules
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-21 18:29:22 +01:00
bf1babb37c Initial commit: SecuBox-DEB migration from OpenWrt to Debian
Includes all package APIs with public dashboard endpoints:
- secubox-system: System Hub with /info, /resources, /security
- secubox-crowdsec: CrowdSec dashboard with /status, /hub, /metrics, actions
- secubox-wireguard: WireGuard VPN with /interfaces, /peers, start/stop
- secubox-netdata: Monitoring with /stats, /processes, /alerts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-21 09:41:06 +01:00