-- Ollama service management module for auto-boot-ollama-host -- Handles starting, stopping, and monitoring Ollama service local utils = require("utils") local network = require("network") local ssh = require("ssh") local ollama_manager = {} -- Start Ollama service via SSH function ollama_manager.start_service(config) utils.log("SSH is reachable. Starting Ollama service...") utils.sleep(10) -- Start ollama service using nssm ssh.execute("nssm start ollama", config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) -- Alternative systemctl commands (commented out) -- ssh.execute('wsl.exe -d Debian -- sudo systemctl enable ollama', config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) -- ssh.execute('wsl.exe -d Debian -- sudo systemctl start ollama', config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) -- Wait for service to become available if network.port_is_up(config.OLLAMA_HOST, config.OLLAMA_PORT, 60) then utils.log("Ollama service is reachable again") utils.sleep(30) return true else utils.log("Timeout waiting for Ollama service to come up after SSH command") return false end end -- Stop Ollama service function ollama_manager.stop_service(config) utils.log("Stopping Ollama service...") -- Stop ollama service using nssm ssh.execute("nssm stop ollama", config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) -- Alternative systemctl commands (commented out) -- ssh.execute('wsl.exe -d Debian -- sudo systemctl disable ollama', config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) -- ssh.execute('wsl.exe -d Debian -- sudo systemctl stop ollama', config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) end -- Shutdown the host function ollama_manager.shutdown_host(config) utils.log("Shutting down Ollama host to save power...") -- Shutdown the host ssh.execute("shutdown.exe /s /t 0", config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE) utils.sleep(5) end return ollama_manager