Files
dropshell-templates/squashdisplay/start.sh
2025-09-08 17:46:34 +12:00

115 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
# shellcheck disable=SC1091
source "${AGENT_PATH}/common.sh"
_check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG"
echo "Starting Squash Display setup container..."
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# Check if setup.sh exists
if [ ! -f "${SCRIPT_DIR}/setup.sh" ]; then
echo "Error: setup.sh not found in ${SCRIPT_DIR}"
_die "Setup script not found!"
fi
# Make setup script executable
chmod +x ${SCRIPT_DIR}/setup.sh
echo "Found setup script at: ${SCRIPT_DIR}/setup.sh"
# Set default values for any unset variables
KIOSK_URL="${KIOSK_URL:-https://squash.kiwi/court/otog}"
KIOSK_USER="${KIOSK_USER:-squash}"
DISPLAY_WIDTH="${DISPLAY_WIDTH:-1920}"
DISPLAY_HEIGHT="${DISPLAY_HEIGHT:-1080}"
DISPLAY_REFRESH="${DISPLAY_REFRESH:-60}"
GPU_MEM="${GPU_MEM:-256}"
ENABLE_WATCHDOG="${ENABLE_WATCHDOG:-true}"
ENABLE_AUTO_LOGIN="${ENABLE_AUTO_LOGIN:-true}"
ENABLE_HDMI_KEEP_ALIVE="${ENABLE_HDMI_KEEP_ALIVE:-true}"
# Build the docker run command - needs privileged access to configure host
# Using --env-file to avoid quoting issues
cat > /tmp/squashdisplay.env << EOF
KIOSK_URL=${KIOSK_URL}
KIOSK_USER=${KIOSK_USER}
DISPLAY_WIDTH=${DISPLAY_WIDTH}
DISPLAY_HEIGHT=${DISPLAY_HEIGHT}
DISPLAY_REFRESH=${DISPLAY_REFRESH}
GPU_MEM=${GPU_MEM}
ENABLE_WATCHDOG=${ENABLE_WATCHDOG}
ENABLE_AUTO_LOGIN=${ENABLE_AUTO_LOGIN}
ENABLE_HDMI_KEEP_ALIVE=${ENABLE_HDMI_KEEP_ALIVE}
EOF
DOCKER_RUN_CMD="docker run -d \
--restart no \
--name ${CONTAINER_NAME} \
--privileged \
--pid=host \
--network=host \
-v /:/host \
-v ${SCRIPT_DIR}/setup.sh:/setup.sh:ro \
--env-file /tmp/squashdisplay.env \
${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG} \
sh /setup.sh"
# Create and start the container
if ! _create_and_start_container "$DOCKER_RUN_CMD" "$CONTAINER_NAME"; then
rm -f /tmp/squashdisplay.env
_die "Failed to start Squash Display setup container"
fi
# Clean up env file
rm -f /tmp/squashdisplay.env
# Wait for setup to complete
echo "Running kiosk setup..."
echo "This may take several minutes as packages are installed..."
echo ""
# Check if running interactively
if [ -t 0 ]; then
echo "Following setup progress (this may take 5-10 minutes)..."
echo "You can also check progress with: docker logs -f ${CONTAINER_NAME}"
echo ""
# Follow the container logs until it exits
docker logs -f ${CONTAINER_NAME} 2>&1
# Check if setup completed successfully
EXIT_CODE=$(docker inspect ${CONTAINER_NAME} --format='{{.State.ExitCode}}')
if [ "$EXIT_CODE" != "0" ]; then
echo "Setup failed with exit code: $EXIT_CODE"
echo "Check logs for details: docker logs ${CONTAINER_NAME}"
exit 1
fi
else
echo "Setup running in background..."
echo "Check progress with: docker logs -f ${CONTAINER_NAME}"
echo ""
# In non-interactive mode, just wait a moment for container to start
sleep 5
# Check if container started successfully
if ! _is_container_running "$CONTAINER_NAME"; then
# Container already exited, check exit code
EXIT_CODE=$(docker inspect ${CONTAINER_NAME} --format='{{.State.ExitCode}}' 2>/dev/null || echo "1")
if [ "$EXIT_CODE" = "0" ]; then
echo "Setup completed successfully!"
else
echo "Setup may have failed. Check status with: ./status.sh"
echo "View logs with: docker logs ${CONTAINER_NAME}"
fi
else
echo "Setup is running. Monitor with: docker logs -f ${CONTAINER_NAME}"
echo "Check status with: ./status.sh"
fi
fi
echo ""
echo "Squash Display setup completed successfully!"
echo "Container: ${CONTAINER_NAME}"