Commit Graph

1570 Commits

Author SHA1 Message Date
54f7b4bc64 chore(secubox-feed): Rebuild packages with theme v1.0.0 and latest updates
- Updated luci-theme-secubox from 0.4.8-r1 to 1.0.0-r2
- Rebuilt all LuCI apps and SecuBox packages
- Updated Packages index and apps-local.json manifest

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 12:10:44 +01:00
e7a9062140 feat(secubox-mesh): Add network device and VM/container discovery
Enhanced mesh discovery with multi-method network device detection:

- discovery_scan_subnet(): Active /24 subnet scanning for SecuBox peers
- discovery_scan_docker(): Docker container detection via Unix socket
- discovery_scan_lxc(): LXC and Proxmox container detection
- discovery_scan_libvirt(): KVM/libvirt VM detection via virsh
- discovery_scan_all_devices(): Full ARP neighbor discovery with fingerprinting
- discovery_fingerprint_device(): Port scanning for service detection

New RPCD API methods:
- devices: List all discovered network devices
- scan_full: Trigger full network scan (includes subnet scan)
- scan_containers: Scan specifically for containers/VMs

LuCI mesh dashboard updates:
- "Discovered Devices" table with IP, MAC, type, hostname, services
- "Scan Network" button to trigger full discovery
- Device classification: secubox, server, container, vm, unknown
- Peer table now shows source field (docker:name, lxc:name, etc.)

Also includes CRT P31 theme CSS comprehensive fix for UI consistency.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 11:38:37 +01:00
b772c6da11 docs: Update tracking files for theme deployment and documentation 2026-03-26 10:54:49 +01:00
92e5f5b95e fix(luci-theme-secubox): Fix navbar layout for LuCI bootstrap structure
- Remove sidebar navigation styles (LuCI uses horizontal top nav)
- Add proper flexbox header layout:
  - .brand on left with hostname
  - #topmenu.nav horizontal menu in center
  - #indicators on right
- Add dropdown menu styles for submenu items
- Add #tabmenu secondary navigation styles
- Fix footer to use flex layout
- Update responsive styles for mobile header wrapping

The layout now properly positions:
- Header bar (sticky, 50px height)
- Main content below header
- Footer at bottom

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 08:20:09 +01:00
0a3aba569c docs: Add comprehensive documentation with screenshot structure
Creates docs/ directory with secubox-deb style documentation:

- README.md: Project overview and quick links
- SCREENSHOTS.md: Module screenshot gallery (pending captures)
- UI-GUIDE.md: CRT P31 theme design guide
- MODULES.md: Complete package catalog (75+ modules)
- API.md: RPCD/ubus API reference

Screenshot directory structure:
- docs/screenshots/router/ for OpenWrt router captures
- docs/wiki/ for multilingual documentation

Documentation follows secubox-deb format with:
- Organized module categories
- Status indicators ( Captured /  Pending)
- Theme color palette reference
- API method tables

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 07:35:42 +01:00
5294d26375 fix(luci-theme-secubox): Add ucode templates for LuCI 24.10 compatibility
- Add header.ut and footer.ut ucode templates (required by modern LuCI)
- Remove old Lua templates (incompatible with OpenWrt 24.10)
- Add mobile.css for responsive styling
- Update UCI defaults to register theme in luci.themes section
- Bump PKG_RELEASE to 3

The theme now properly loads via LuCI's theme system with:
- CRT P31 phosphor green cascade.css
- crt-engine.js for scanline effects
- Proper ucode template integration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 07:29:55 +01:00
1140221f4a feat(luci-theme-secubox): Add CRT P31 phosphor green terminal theme
Complete LuCI theme implementation with:
- CRT P31 phosphor green color scheme with scanline effects
- Header, footer, and sysauth login page templates
- Cascading CSS with CRT glow and phosphor effects
- CRT engine JS for terminal-style animations
- CRT components JS for reusable UI components
- UCI defaults to set as default LuCI theme
- Updated Makefile for proper asset installation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 07:18:23 +01:00
54668158c8 feat(luci-app-secubox-mesh): Add LuCI dashboard for mesh network
KISS-themed web interface for SecuBox mesh daemon management:
- Node Identity card (DID, role, mesh gate, daemon uptime)
- System Telemetry with CPU/Memory/Disk gauges and temperature
- Network stats (RX/TX totals, TCP connections, WireGuard peers)
- Configuration panel with Restart Daemon and Rotate Keys buttons
- Connected Peers table with live status
- 10-second auto-refresh polling
- Menu: SecuBox → Mesh Network

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 07:14:42 +01:00
cd6af3edff feat(secubox-mesh): Add OpenWrt mesh daemon with topology management
Port secuboxd from Debian/Go to OpenWrt shell implementation:
- secuboxd daemon with Unix control socket at /var/run/secuboxd/topo.sock
- secuboxctl CLI compatible with Debian version interface
- Mesh libraries: topology, discovery, election, telemetry, control
- Mesh gate election with weighted scoring (uptime, peers, CPU, memory, role)
- mDNS service discovery (_secubox._udp.local) via umdns
- DID integration via mirrornet identity library
- RPCD handler with 11 ubus methods for LuCI integration
- procd init script with respawn and network triggers
- UCI config sections: mesh, node, telemetry, discovery

Fixes subprocess state access for socat handler by saving daemon state to file.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 06:27:45 +01:00
707142c6bb fix(crowdsec-dashboard): Fix JSON parsing bug in overview cache
grep -c returns exit code 1 when count is 0, which triggered
the `|| echo 0` fallback to also output "0", resulting in:
  "waf_threats_today":0
  0,

This broke JSON parsing and caused the dashboard to show
CrowdSec as "STOPPED" even when running.

Fix: Use `|| :` (no-op) and set defaults with `: "${var:=0}"`

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 16:16:32 +01:00
1edf7ca7c0 docs: Update HISTORY with wiki translations and meta-package
- Added wiki internationalization (French + Chinese) for all 17 pages
- Documented secubox-full meta-package with tiered bundles
- Documented CI updates for default secubox-core inclusion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 14:33:06 +01:00
ae3b2ab3b5 feat(packages): Add secubox-full meta-package and fix secubox-core
- Add p2p-mesh.sh to secubox-core install (was missing, breaking master-link)
- Create secubox-full meta-package with tiered bundles:
  - secubox-core-bundle: Essential components
  - secubox-security-bundle: WAF/IDS/threat detection
  - secubox-services-bundle: HAProxy/DNS/web services
  - secubox-luci-bundle: All LuCI apps
  - secubox-full: Everything
- Update VM and firmware workflows to include secubox-core by default
- Add secubox-p2p, secubox-master-link, secubox-identity to default installs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 13:46:13 +01:00
be27d758b0 docs: Update HISTORY with metrics OpenWrt compatibility fix
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 11:44:33 +01:00
434e501dae fix(metrics): Use date -r for OpenWrt file mtime and fix grep -c double output
- Replace stat -c %Y with date -r for BusyBox compatibility (stat not available)
- Fix get_cache_age() to properly return early when cache file missing
- Fix grep -c || echo 0 pattern that caused "invalid number '0\n0'" errors
- Add proper numeric defaults using : "${var:=0}" pattern
- Add freshness metadata (_freshness) with age, timestamp, and fresh boolean

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 11:40:04 +01:00
9f24696ddd docs: Update HISTORY with freshness indicators feature
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 11:05:24 +01:00
b99dabaca9 feat(ui): Add progressive freshness indicators to dashboards
Add visible "Updated Xs ago" timestamps and freshness indicators to
make cached stats look more alive and help users know data currency.

Backend changes:
- luci.metrics: Add _freshness metadata (age, fresh, timestamp_epoch)
  to overview, waf_stats, and connections responses
- luci.crowdsec-dashboard: Add _freshness metadata to get_overview
  response using sed injection into cached JSON

Frontend changes:
- metrics/dashboard.js: Display freshness indicator (green/yellow/red)
  in header, animate value changes with flash effect
- crowdsec-dashboard/overview.js: Display freshness indicator next to
  running badge, update on poll

Shared utilities (kiss-theme.js):
- formatAge(seconds): Format "Xs ago", "Xm ago", "Xh ago"
- getFreshnessClass(age): Return fresh/recent/stale based on age
- getFreshnessColor(class): Return #00c853/#ff9800/#f44336
- freshnessIndicator(age, id): Create indicator DOM element
- updateFreshness(age, id): Update existing indicator

Freshness thresholds:
- Fresh (green): < 15s for metrics, < 30s for CrowdSec
- Recent (yellow): < 45s for metrics, < 90s for CrowdSec
- Stale (red): > threshold

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 11:05:01 +01:00
355c050700 fix(seed): Add opkg lock wait before install retries
Wait for /var/lock/opkg.lock to be released before retrying
package installation to avoid "Resource temporarily unavailable" errors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:56:23 +01:00
33c413c893 fix(seed): Add signature check disable and retry logic for GitHub Pages
- Disable opkg signature checking for unsigned SecuBox feeds
- Add retry logic (3 attempts) for repository validation
- Add retry logic (3 attempts) for opkg update
- Add retry logic (3 attempts) for package installation
- Increase wget timeout from 10s to 15s
- Update slipstream firstboot to also disable signature checking
- Fix CORE_PACKAGES to use packages that actually exist

This fixes the "Unknown package" errors when installing from
repo.secubox.in caused by opkg discarding unsigned package lists.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:55:12 +01:00
f9d1fee08e fix(ci): Update publish workflow to use individual ipk files
The release contains individual ipk files, not architecture-specific
tarballs. Update the workflow to:

- Download all *.ipk files from the release
- Copy packages to all architecture directories (most SecuBox packages
  are architecture-independent LuCI/shell packages)
- Simplify the repository structure creation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:33:13 +01:00
f447f62b13 fix(scripts): Fix seed script repo detection and error handling
- Send log messages to stderr in find_working_repo() to avoid
  polluting the URL output captured by configure_repo()
- Actually download and validate Packages.gz file content instead
  of just checking if server responds (spider check)
- Handle find_working_repo() failure gracefully with || true
- Clean up old feed entries properly when reconfiguring

Fixes the issue where log messages were being written to
customfeeds.conf along with the URL.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:31:06 +01:00
7d0f47f465 feat(scripts): Add SecuBox seed and slipstream scripts for auto-install
Add comprehensive scripts for bootstrapping SecuBox on fresh OpenWrt:

- secubox-seed.sh: Bootstrap script for fresh installations
  - Auto-detects architecture (x86_64, aarch64, armv7l)
  - Configures SecuBox repository with fallback mechanisms
  - Installation profiles: minimal, standard, full
  - Graceful handling when repo.secubox.in is unavailable

- secubox-slipstream.sh: Bake SecuBox config into images during build
  - Pre-configures repository feeds in rootfs
  - Installs seed script and first-boot setup
  - Adds SecuBox branding (banner, release info)
  - Works with rootfs directories or image files

Update GitHub Actions workflows:
- build-secubox-vm.yml: Add slipstream step for x86_64 VMs
- build-secubox-images.yml: Add slipstream step for GlobalScale devices

Images now include:
- Pre-configured SecuBox repository (/etc/opkg/customfeeds.conf)
- Seed script (/usr/sbin/secubox-seed)
- First-boot auto-setup script
- SecuBox banner

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:23:05 +01:00
ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
Add complete French (fr) and Chinese (zh) translations for all documentation:

- Root files: README, CHANGELOG, SECURITY, BETA-RELEASE
- docs/: All 16 core documentation files
- DOCS/: All 19 deep-dive documents including embedded/ and archive/
- package/secubox/: All 123+ package READMEs
- Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/

Total: 346 translation files created

Each file includes language switcher links for easy navigation between
English, French, and Chinese versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:00:18 +01:00
66b504dc07 fix(ci): Ignore tar race condition in publish step
The all-architectures tar archive may change during creation due to
other files being written. This causes tar to exit with code 1 even
though the archive is created successfully.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 23:01:36 +01:00
e15248afea fix(ci): Add python3-pyelftools for u-boot toolchain build
The rockchip-armv8 toolchain build fails because u-boot requires
the Python3 elftools module. Adding python3-pyelftools to the
toolchain job dependencies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 19:19:15 +01:00
a61b0fcda8 feat(haproxy): Add Sync WAF Routes button and fix LuCI backend routing
- Add "Sync WAF Routes" button to HAProxy vhosts page in LuCI
- Add sync_mitmproxy_routes RPC method to HAProxy RPCD backend
- Fix mitmproxyctl and secubox-route to handle LuCI backends (luci, luci_default, luci_control)
- Remove outdated port 8081 skip filter in route sync that prevented LuCI routes
- These changes allow vhosts with original_backend='luci' to be properly
  routed through the WAF

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 19:15:51 +01:00
64a12a65ad fix(droplet): Fix BusyBox tr bug in name sanitization too
The buggy tr '[:upper:]' '[:lower:]' was also used for sanitizing
site names, causing 'ziptest' to become 'ziwtest'. Use awk tolower()
for all lowercase conversions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 11:19:17 +01:00
afaa9c05ef feat(droplet): Add multi-file upload support
- Allow selecting and uploading multiple files at once
- Each file gets its own name input field
- Files are processed sequentially with progress indicator
- Errors are collected and displayed at the end

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 11:06:11 +01:00
1a1ca1794a fix(droplet): Use awk for lowercase instead of buggy BusyBox tr
BusyBox tr '[:upper:]' '[:lower:]' has a bug that converts 'p' to 'w',
causing .zip to be detected as .ziw. Use awk tolower() instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 11:04:05 +01:00
b76131ed1d fix(droplet): Strip CR/LF from file extension detection
Windows uploads may include carriage returns in filenames, causing
.zip to be detected as .ziw. Strip \r\n from extension string.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 10:57:22 +01:00
a905b885fc chore: Update to OpenWrt 24.10.6
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 09:07:45 +01:00
c79b3cb27b feat(repo): Add unified repo-deploy.sh and multi-arch support
- Add repo-deploy.sh script for staging and deploying packages
- Replicate _all.ipk packages to all 6 architectures automatically
- Add "Refresh Indexes" button to LuCI dashboard for local deployments
- Add RPCD refresh method to regenerate Packages indexes on-device
- Support architectures: aarch64_cortex-a72, aarch64_cortex-a53,
  aarch64_generic, x86_64, mips_24kc, mipsel_24kc

Usage:
  ./secubox-tools/repo-deploy.sh stage --clean
  ./secubox-tools/repo-deploy.sh deploy root@192.168.255.1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 08:03:08 +01:00
d92b3360ea feat(repo): Add unified repo-deploy.sh and multi-arch support
- Add repo-deploy.sh script for staging and deploying packages
- Replicate _all.ipk packages to all 6 architectures automatically
- Add "Refresh Indexes" button to LuCI dashboard for local deployments
- Add RPCD refresh method to regenerate Packages indexes on-device
- Support architectures: aarch64_cortex-a72, aarch64_cortex-a53,
  aarch64_generic, x86_64, mips_24kc, mipsel_24kc

Usage:
  ./secubox-tools/repo-deploy.sh stage --clean
  ./secubox-tools/repo-deploy.sh deploy root@192.168.255.1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-19 07:48:59 +01:00
9ddf5a4e0b fix(build): Fix 16 failed packages with missing Build/Compile and URL config
- Add missing 'define Build/Compile' to script-only packages:
  - secubox-app-config-vault
  - secubox-app-gotosocial
  - secubox-app-ipblocklist
  - secubox-app-ksmbd
  - secubox-app-qbittorrent
  - secubox-app-talk-hpb
  - secubox-app-vhost-manager
  - secubox-app-webtorrent
  - secubox-avatar-tap
  - secubox-core-users
  - secubox-dpi-dual
  - secubox-app-backup

- Fix luci-app-interceptor: Add missing BuildPackage call
- Fix luci-app-master-link: Correct RPCD handler filename (underscore → dash)
- Fix luci-app-config-vault: Add Build/Compile definition

- Create secubox-console Makefile (new package for remote management)
- Create secubox-app-backup cron job file

- Update secubox-app-repo: Change feed URLs from local IP (192.168.255.1:8888)
  to repo.secubox.in domain with HTTPS and proper src/gz format

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 18:01:51 +01:00
dd18e5c4aa fix(repo): Fix BusyBox ash compatibility in repo-sync
Wrap for loop with output redirection in subshell for
BusyBox ash compatibility when generating Packages index.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 16:43:27 +01:00
a15cdfc823 fix(ci): Sync GHA build workflow with local-build.sh methodology
- Split builds into SDK (PKGARCH:=all) and Toolchain (native binaries)
- Mirror OPENWRT_ONLY_PACKAGES list from local-build.sh
- Add all architectures: x86-64, aarch64-cortex-a72, aarch64-cortex-a53,
  aarch64-generic, rockchip-armv8, mips-24kc, mipsel-24kc
- SDK builds: LuCI apps, shell scripts, configs
- Toolchain builds: Go (crowdsec), C++ (netifyd, ndpid)
- Combine artifacts per architecture with checksums
- Create GitHub releases on tags

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 12:59:05 +01:00
21a8f06058 chore(secubox-app-bonus): Rebuild local feed with repo packages
- Add secubox-app-repo and luci-app-repo to local feed
- Regenerate Packages index
- Update all embedded packages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 12:54:11 +01:00
6d2ee8ae8f fix(repo-sync): Fix shell syntax error in for loop
Remove invalid 2>/dev/null redirection from for loop header

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 12:33:06 +01:00
86d6889285 fix(repo): Add usign package signing and fix ACL conflict
- Add usign dependency for package signing
- Sign Packages files after generation in repo-sync
- Generate signing keys automatically if not present
- Remove duplicate ACL file (now only in luci-app-repo)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 12:29:48 +01:00
088b6e749f fix(luci-app-repo): Add proper Package definition with TITLE field
- Add Package/luci-app-repo section with required fields
- Add Build/Compile empty target
- Add package description
- Fix build failure in SDK

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 10:41:36 +01:00
c152934bf1 fix(repo): Add postinst script to configure opkg feeds automatically
- Auto-create repo directories on install
- Detect device architecture and configure customfeeds.conf
- Add prerm script to cleanup on uninstall
- Points opkg to local repo at 192.168.255.1:8888

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 10:33:50 +01:00
9cd59b77ba feat(repo): Add secubox-app-repo and luci-app-repo packages
Backend package (secubox-app-repo):
- repoctl CLI for managing local package repository
- repo-sync script to download packages from GitHub releases
- uhttpd-based server on port 8888
- UCI configuration at /etc/config/repo
- RPCD handler for LuCI integration
- Auto-sync cron support (configurable interval)

Frontend package (luci-app-repo):
- Dashboard showing repository status and package counts
- Sync button to trigger package downloads
- Log viewer for sync operations
- Usage instructions for opkg configuration

Supported architectures:
- x86_64, aarch64_cortex-a72, aarch64_generic
- mips_24kc, mipsel_24kc

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 10:21:23 +01:00
276685f109 feat(repo): Add package repository at repo.secubox.in
- Fix preseed URLs from non-existent repo.secubox.org to repo.secubox.in
- Make feed URLs architecture-aware (x86_64, aarch64_cortex-a72, etc.)
- Add publish-package-repo.yml workflow for GitHub Pages deployment
- Workflow downloads release artifacts, generates opkg Packages index
- Supports all SecuBox architectures with proper opkg feed structure

Package repository structure:
- https://repo.secubox.in/packages/{arch}/ - Core SecuBox packages
- https://repo.secubox.in/luci/{arch}/ - LuCI apps
- https://repo.secubox.in/catalog/ - Repository metadata

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-18 09:10:01 +01:00
89e6db8631 chore(vm): Disable ARM64 Generic target (package repo issues) 2026-03-18 08:35:29 +01:00
19ee3b761d fix(vm): Use matrix target path for ARM image listing 2026-03-18 08:09:31 +01:00
eb46c7128b fix(vm): Fix ARM builds by using arch-specific packages
- Remove docker/bind-server from ARM (not available)
- Use simpler package set for ARM targets
- Fix rockchip profile name
- Keep x86-64 with full package set

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 21:17:46 +01:00
9c4d8dcdfd feat(vm): Add ARM64 architectures to C3Box VM builds
- Add aarch64-generic (QEMU/Proxmox ARM)
- Add Raspberry Pi 4/400/CM4 (bcm27xx/bcm2711)
- Add Rockchip ARM64 (NanoPi R4S/R5S/R6S)
- Download arch-specific prebuilt packages
- Add architecture-specific kernel modules
- Create local build script with same logic
- Handle different image formats per arch

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 20:44:40 +01:00
2c2d11423c feat(vm): Include full SecuBox package suite in C3Box VM
- Download prebuilt packages from release artifacts
- Include 101+ SecuBox modules matching c3box.local production
- Preseed SecuBox core config (appstore, security, diagnostics)
- Configure network: 192.168.200.1 (LAN), DHCP (WAN)
- Include master-link mesh and P2P hub components
- Add fallback install script for post-boot installation
- Increase default disk to 8GB for full suite
- Update RAM recommendation to 2GB minimum

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 20:05:40 +01:00
2482f76e52 fix(ci): Use explicit version input for C3Box VM naming
- Add 'version' input parameter (default: v1.0.0-beta)
- Use C3BOX_VERSION env var for consistent naming
- Artifacts now named: c3box-vm-{version}-{arch}.{format}
- Fix: manual triggers now use correct version in filenames

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 19:36:16 +01:00
5da21f29e4 feat(ci): Update C3Box preseed for devel/beta test config
- LAN IP changed to 192.168.200.1 (test subnet)
- WAN (br-wan) configured as DHCP client
- Updated banner, docs, and release notes with new IP
- Ready for SecuBox devel beta testing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 19:12:08 +01:00
4fa322d1fd feat(ci): Rebrand VM appliance to C3Box
- Rename workflow to "Build C3Box VM Appliance"
- Update hostname to 'c3box'
- New ASCII banner with C3Box branding
- Update artifact names: c3box-vm-{version}-{arch}
- Update all documentation and release notes
- Config files now in /etc/c3box/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 18:54:46 +01:00