fix(rootless): route requirement/disk docker checks through runFileOp

Three docker calls ran the binary directly (two plain, one sudo), so in
rootless they hit /var/run/docker.sock (the rooted socket, absent) and
printed 'Cannot connect to the Docker daemon' — the WebUI-image requirement
check, the system-disk WebUI generator (docker system df), and the
app-install fallback (docker ps). Route all three through runFileOp, which in
rootless runs as the docker install user with DOCKER_HOST set and is
argv-safe for --format, and in rooted runs as the manager via the docker
group.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: librelad <librelad@digitalangels.vip>
This commit is contained in:
librelad 2026-05-24 13:39:06 +01:00
parent dcbb3c1759
commit ecd3db5632
3 changed files with 4 additions and 4 deletions

View File

@ -114,6 +114,6 @@ _appReqServiceInstalled()
status=$(dockerCheckAppInstalled "$svc" "docker" 2>/dev/null)
[[ "$status" == "installed" ]] && return 0 || return 1
fi
# Fallback: ask docker directly.
sudo docker ps -a --format '{{.Names}}' 2>/dev/null | grep -q "^${svc}-service$"
# Fallback: ask docker directly (mode-aware: rootless hits the rootless socket).
runFileOp docker ps -a --format '{{.Names}}' 2>/dev/null | grep -q "^${svc}-service$"
}

View File

@ -3,7 +3,7 @@
checkLibrePortalWebUIImageRequirement()
{
if [[ $CFG_REQUIREMENT_WEBUI == "true" ]]; then
if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "libreportal-service:latest"; then
if runFileOp docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "libreportal-service:latest"; then
isSuccessful "LibrePortal WebUI Docker Image appears to be setup."
else
isNotice "LibrePortal WebUI Docker Image has not been setup."

View File

@ -17,7 +17,7 @@ webuiSystemDisk() {
local docker_percent="0"
if command -v docker &> /dev/null; then
docker_usage=$(docker system df --format "{{.Size}}" | head -1 2>/dev/null || echo "N/A")
docker_usage=$(runFileOp docker system df --format "{{.Size}}" 2>/dev/null | head -1 || echo "N/A")
if [[ "$docker_usage" != "N/A" ]]; then
# Convert Docker usage to GB for calculation
docker_used=$(echo "$docker_usage" | sed 's/GB//g' | sed 's/MB//g' | awk '{print $1*1}' 2>/dev/null || echo "0")