#!/bin/bash # shellcheck disable=SC1091 source "${AGENT_PATH}/common.sh" _check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG" # Set defaults WEB_PORT="${WEB_PORT:-8080}" INFLUXDB_PORT="${INFLUXDB_PORT:-8086}" DEVICES="${DEVICES:-/dev/sda}" PRIVILEGED_MODE="${PRIVILEGED_MODE:-false}" COLLECTOR_CRON_SCHEDULE="${COLLECTOR_CRON_SCHEDULE:-0 0 * * *}" # Build device arguments DEVICE_ARGS="" if [ "$PRIVILEGED_MODE" = "true" ]; then DEVICE_ARGS="--privileged" else for dev in $DEVICES; do # Auto-prepend /dev/ if not already a path if [[ "$dev" != /* ]]; then dev="/dev/$dev" fi if [ -e "$dev" ]; then DEVICE_ARGS="$DEVICE_ARGS --device=$dev" else echo "Warning: Device $dev does not exist, skipping" fi done if [ -z "$DEVICE_ARGS" ]; then _die "No valid devices found. Check DEVICES setting or enable PRIVILEGED_MODE." fi fi # Build docker run command DOCKER_RUN_CMD="docker run -d \ --restart unless-stopped \ --name ${CONTAINER_NAME} \ -p ${WEB_PORT}:8080 \ -p ${INFLUXDB_PORT}:8086 \ -v ${CONTAINER_NAME}_config:/opt/scrutiny/config \ -v ${CONTAINER_NAME}_influxdb:/opt/scrutiny/influxdb \ -v /run/udev:/run/udev:ro \ --cap-add SYS_RAWIO \ --cap-add SYS_ADMIN \ -e COLLECTOR_CRON_SCHEDULE=\"${COLLECTOR_CRON_SCHEDULE}\" \ ${DEVICE_ARGS} \ ${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}" # Start container if ! _create_and_start_container "$DOCKER_RUN_CMD" "$CONTAINER_NAME"; then _die "Failed to start container ${CONTAINER_NAME}" fi # Verify running sleep 2 if ! _is_container_running "$CONTAINER_NAME"; then echo "Container logs:" docker logs "$CONTAINER_NAME" 2>&1 | tail -20 _die "Container ${CONTAINER_NAME} is not running" fi echo "Container ${CONTAINER_NAME} started successfully."