Files
ResourceUsageAPI/install-service.sh
T

87 lines
2.7 KiB
Bash

#!/bin/bash
# Resource Monitor Service - Installation Script for Windows Service
SERVICE_NAME="ResourceMonitorService"
SERVICE_DISPLAY_NAME="Resource Monitor Service v2.0"
SERVICE_DESCRIPTION="Monitors VM resources for Unraid integration"
INSTALL_PATH="C:\Services\ResourceMonitor"
echo "=== Resource Monitor Service - Windows Service Installer ==="
echo
# Check if running as administrator
if [[ ! $(id -u) -eq 0 ]]; then
echo "ERROR: This script must be run as Administrator"
echo "Please run PowerShell as Administrator and try again"
exit 1
fi
echo "Installing Resource Monitor Service as Windows Service..."
# Create installation directory
echo "Creating installation directory..."
mkdir -p "$INSTALL_PATH"
# Build the service in release mode
echo "Building service..."
dotnet publish --configuration Release --output "$INSTALL_PATH"
if [[ $? -ne 0 ]]; then
echo "ERROR: Build failed"
exit 1
fi
# Stop existing service if running
echo "Stopping existing service (if running)..."
sc stop "$SERVICE_NAME" 2>/dev/null
# Remove existing service if it exists
echo "Removing existing service (if exists)..."
sc delete "$SERVICE_NAME" 2>/dev/null
# Install the service
echo "Installing Windows Service..."
sc create "$SERVICE_NAME" \
binPath="\"$INSTALL_PATH\\ResourceMonitorService.exe\" --windows-service" \
DisplayName="$SERVICE_DISPLAY_NAME" \
Description="$SERVICE_DESCRIPTION" \
start=auto
if [[ $? -ne 0 ]]; then
echo "ERROR: Failed to create Windows Service"
exit 1
fi
# Configure service recovery options
echo "Configuring service recovery options..."
sc failure "$SERVICE_NAME" reset=300 actions=restart/5000/restart/5000/restart/10000
# Configure firewall rule
echo "Configuring Windows Firewall..."
powershell -Command "New-NetFirewallRule -DisplayName 'Resource Monitor Service' -Direction Inbound -Protocol TCP -LocalPort 2414 -Action Allow -Profile Any" 2>/dev/null
# Start the service
echo "Starting service..."
sc start "$SERVICE_NAME"
if [[ $? -eq 0 ]]; then
echo
echo "=== Installation Complete ==="
echo "Service Name: $SERVICE_NAME"
echo "Installation Path: $INSTALL_PATH"
echo "Service URL: http://localhost:2414"
echo "API Health Check: http://localhost:2414/api/health"
echo
echo "The service is now running and will start automatically with Windows."
echo "You can manage it through Services.msc or using sc commands:"
echo " - Stop: sc stop $SERVICE_NAME"
echo " - Start: sc start $SERVICE_NAME"
echo " - Status: sc query $SERVICE_NAME"
echo
echo "To uninstall: sc stop $SERVICE_NAME && sc delete $SERVICE_NAME"
else
echo "ERROR: Failed to start service"
echo "Check Windows Event Log for details"
exit 1
fi