An offline trivy install crash-looped (server FATALs when it can't fetch the vuln DB), and on rootless docker the restart storm churned the shared network's port-forwarder until the WebUI's own published host port was torn down — the WebUI stayed healthy INSIDE its container but was unreachable from the host, with nothing detecting or healing it. Three fixes, in the house self-healing style (mirrors the network-drift trio): 1. Control-plane health checker wired into the existing task-processor idle poll (maybeRegenPoll), no new daemon. dockerHealthScan (read-only) detects daemon down, a WebUI running-but-host-port-unreachable (the port-forward corruption), and crash-looping containers. webuiSystemHealthCheck writes frontend/data/system/health_status.json + self-dispatches a heal — the user can't click a button on a dead WebUI, so the poll drives the fix. Frontend health-notifier surfaces a topbar badge + dashboard banner + details panel. 2. Failure cap, enforced centrally by dockerHealthHeal (task-gated): stops crash-loopers (removing the churn), restarts the WebUI to re-publish a lost port forward, and — only if that fails — recycles the rootless daemon and restarts the core container. Caps every app immediately, no template churn. 3. Trivy no longer crash-loops offline: the server runs in a shell retry-loop so the container stays Up and quietly retries on a backoff instead of exiting FATAL. Verified: container stays Up across repeated DB-download failures. Core WebUI compose gains restart: unless-stopped so it self-recovers after a reboot / daemon recycle instead of staying down. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
66 lines
2.5 KiB
Bash
Executable File
66 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This file is auto-generated by generate_arrays.sh
|
|
# Do not edit manually - run './scripts/source/files/generate_arrays.sh run' to regenerate
|
|
|
|
docker_scripts=(
|
|
"docker/app/checks/app_installed.sh"
|
|
"docker/app/checks/container_health_loop.sh"
|
|
"docker/app/checks/container_health.sh"
|
|
"docker/app/compose/down_all.sh"
|
|
"docker/app/compose/down_app.sh"
|
|
"docker/app/compose/up_all.sh"
|
|
"docker/app/compose/up_app.sh"
|
|
"docker/app/compose/up_down_app.sh"
|
|
"docker/app/docker/remove_app.sh"
|
|
"docker/app/docker/restart_app.sh"
|
|
"docker/app/docker/start_all.sh"
|
|
"docker/app/docker/start_app.sh"
|
|
"docker/app/docker/stop_all.sh"
|
|
"docker/app/docker/stop_app.sh"
|
|
"docker/app/functions/function_app_tool.sh"
|
|
"docker/app/functions/function_install_app.sh"
|
|
"docker/app/functions/function_restart_app.sh"
|
|
"docker/app/uninstall/delete_data.sh"
|
|
"docker/app/uninstall/down_remove_app.sh"
|
|
"docker/app/uninstall/remove_images.sh"
|
|
"docker/app/uninstall/uninstall_app.sh"
|
|
"docker/checks/app_health_details.sh"
|
|
"docker/checks/app_health_status.sh"
|
|
"docker/checks/running_for_user.sh"
|
|
"docker/command/docker_run_install.sh"
|
|
"docker/command/docker_run.sh"
|
|
"docker/command/run_privileged.sh"
|
|
"docker/compose/copy_build_context.sh"
|
|
"docker/compose/restart_after_update.sh"
|
|
"docker/compose/setup_compose_yml.sh"
|
|
"docker/compose/update_and_start.sh"
|
|
"docker/compose/update_compose_yml.sh"
|
|
"docker/health/docker_health_heal.sh"
|
|
"docker/health/docker_health_scan.sh"
|
|
"docker/install/rooted/rooted_docker_check.sh"
|
|
"docker/install/rooted/rooted_docker_compose.sh"
|
|
"docker/install/rooted/rooted_docker.sh"
|
|
"docker/install/rootless/rootless_apparmor.sh"
|
|
"docker/install/rootless/rootless_docker.sh"
|
|
"docker/install/rootless/rootless_start_setup.sh"
|
|
"docker/install/rootless/rootless_uninstall.sh"
|
|
"docker/install/rootless/rootless_user.sh"
|
|
"docker/network/network_conflicts.sh"
|
|
"docker/network/network_heal.sh"
|
|
"docker/network/network_prune.sh"
|
|
"docker/network/network_randomize_subnet.sh"
|
|
"docker/network/network_setup.sh"
|
|
"docker/service/start_docker.sh"
|
|
"docker/service/stop_docker.sh"
|
|
"docker/setup_env.sh"
|
|
"docker/type_switcher/scan_container_socket.sh"
|
|
"docker/type_switcher/set_socket_permissions.sh"
|
|
"docker/type_switcher/swap_docker_type.sh"
|
|
"docker/type_switcher/switch_containers_type.sh"
|
|
"docker/update_docker_sudo_pass.sh"
|
|
"docker/update_docker_user_pass.sh"
|
|
"docker/whitelist_port_updater.sh"
|
|
|
|
)
|