diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 351df99c..e263c84e 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -65,7 +65,45 @@ "WebFetch(domain:docs.cybermind.fr)", "WebFetch(domain:lyrion.org)", "Bash(git pull:*)", - "Bash(git stash:*)" + "Bash(git stash:*)", + "Bash(./secubox-tools/localbuild.sh:*)", + "Bash(./scripts/sync-to-feed.sh:*)", + "Bash(sh:*)", + "Bash(dash:*)", + "Bash(scp:*)", + "Bash(/home/reepost/CyberMindStudio/_files/secubox-openwrt/secubox-tools/local-build.sh:*)", + "Bash(ping:*)", + "WebFetch(domain:docs.mitmproxy.org)", + "WebSearch", + "WebFetch(domain:forum.openwrt.org)", + "WebFetch(domain:nicolargo.github.io)", + "Bash(ssh-keygen:*)", + "Bash(scripts/build-packages.sh:*)", + "Bash(readlink:*)", + "Bash(ROUTER_IP=\"192.168.8.191\":*)", + "Bash(PKG_PATH=\"/home/reepost/CyberMindStudio/_files/secubox-openwrt/secubox-tools/build/aarch64_cortex-a72/secubox-app-webapp_1.1.0-r1_all.ipk\")", + "Bash(__NEW_LINE_cfb353d51df65726__ echo \"Deploying to router $ROUTER_IP...\")", + "Bash(__NEW_LINE_cfb353d51df65726__ echo \"Installing package on router...\")", + "Bash(ROUTER_IP=\"192.168.8.1\")", + "Bash(__NEW_LINE_63a99eb14feaadfb__ echo \"Deploying to router $ROUTER_IP...\")", + "Bash(__NEW_LINE_63a99eb14feaadfb__ echo \"Installing package on router...\")", + "Bash(__NEW_LINE_dd8ac110f380441b__ echo \"Deploying to router $ROUTER_IP...\")", + "Bash(__NEW_LINE_dd8ac110f380441b__ echo \"Installing package on router...\")", + "Bash(ROUTER_IP=\"192.168.255.1\":*)", + "Bash(__NEW_LINE_23d0cf42d6f3e749__ echo \"Deploying to router $ROUTER_IP...\")", + "Bash(__NEW_LINE_23d0cf42d6f3e749__ echo \"Installing package on router...\")", + "Bash(PKG_PATH=\"/home/reepost/CyberMindStudio/_files/secubox-openwrt/secubox-tools/build/aarch64_cortex-a72/secubox-app-webapp_1.2.0-r1_all.ipk\":*)", + "Bash(__NEW_LINE_149ef654235bfc1e__ echo \"Deploying v1.2.0 to router $ROUTER_IP...\")", + "Bash(__NEW_LINE_149ef654235bfc1e__ echo \"Installing package on router...\")", + "Bash(PKG_PATH=\"/home/reepost/CyberMindStudio/_files/secubox-openwrt/secubox-tools/build/aarch64_cortex-a72/secubox-app-webapp_1.3.0-r1_all.ipk\")", + "Bash(__NEW_LINE_00785cf715958748__ echo \"Deploying optimized v1.3.0 to router $ROUTER_IP...\")", + "Bash(__NEW_LINE_00785cf715958748__ echo \"Installing package on router...\")", + "Bash(wc:*)", + "WebFetch(domain:api.github.com)", + "Bash(./build.sh:*)", + "Bash(cd /home/reepost/CyberMindStudio/_files/secubox-openwrt/secubox-tools/sdk ./scripts/feeds update secubox)", + "Bash(./staging_dir/host/bin/ipkg-build:*)", + "Bash(./scripts/ipkg-build:*)" ] } } diff --git a/package/secubox/secubox-app-localai/Makefile b/package/secubox/secubox-app-localai/Makefile index 2589bd8b..0f84b4e8 100644 --- a/package/secubox/secubox-app-localai/Makefile +++ b/package/secubox/secubox-app-localai/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=secubox-app-localai -PKG_RELEASE:=8 +PKG_RELEASE:=9 PKG_VERSION:=0.1.0 PKG_ARCH:=all PKG_MAINTAINER:=CyberMind Studio diff --git a/package/secubox/secubox-app-localai/files/usr/sbin/localaictl b/package/secubox/secubox-app-localai/files/usr/sbin/localaictl index 0e47de6b..20e210f5 100644 --- a/package/secubox/secubox-app-localai/files/usr/sbin/localaictl +++ b/package/secubox/secubox-app-localai/files/usr/sbin/localaictl @@ -185,15 +185,19 @@ lxc_install() { local rootfs="$lxc_path/$CONTAINER_NAME/rootfs" local config="$lxc_path/$CONTAINER_NAME/config" - # Check if we should extract from Docker image (preferred - includes all backends) + # Check if we can extract from Docker image (preferred - includes all backends) local use_docker_extract=0 - if command -v podman >/dev/null 2>&1 || command -v docker >/dev/null 2>&1; then + if command -v podman >/dev/null 2>&1 && runtime_is_working podman; then + use_docker_extract=1 + elif command -v docker >/dev/null 2>&1 && runtime_is_working docker; then use_docker_extract=1 fi if [ "$use_docker_extract" = "1" ]; then lxc_install_from_docker "$rootfs" || return 1 else + log_warn "No working Docker/Podman daemon - using standalone binary" + log_warn "For full backend support, start Docker: /etc/init.d/dockerd start" lxc_install_standalone "$rootfs" || return 1 fi @@ -205,18 +209,37 @@ lxc_install() { return 0 } +# Check if container runtime daemon is actually working +runtime_is_working() { + local rt="$1" + case "$rt" in + podman) + # Podman is daemonless, just check command works + podman info >/dev/null 2>&1 + ;; + docker) + # Docker needs daemon running + docker info >/dev/null 2>&1 + ;; + *) + return 1 + ;; + esac +} + # Extract rootfs from Docker image (includes all backends) lxc_install_from_docker() { local rootfs="$1" local rt="" - # Detect available runtime for extraction - if command -v podman >/dev/null 2>&1; then + # Detect available AND WORKING runtime for extraction + if command -v podman >/dev/null 2>&1 && runtime_is_working podman; then rt="podman" - elif command -v docker >/dev/null 2>&1; then + elif command -v docker >/dev/null 2>&1 && runtime_is_working docker; then rt="docker" else - log_error "Need podman or docker to extract image" + log_error "Need working podman or docker to extract image" + log_error "Docker installed but daemon not running? Start with: /etc/init.d/dockerd start" return 1 fi