You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

50 lines
2.1 KiB

-- Ollama service management module for auto-boot-ollama-host
-- Handles starting, stopping, and monitoring Ollama service
local socket = require("socket")
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...")
socket.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, 90) then
utils.log("Ollama service is reachable again.")
socket.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 and shutdown host
function ollama_manager.stop_service_and_shutdown(config)
utils.log("Shutting down Ollama host to save power...")
-- 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)
-- Shutdown the host
ssh.execute("shutdown.exe /s /t 0", config.SSH_USER, config.OLLAMA_HOST, config.SSH_PORT, config.SSH_IDENTITY_FILE)
socket.sleep(5)
end
return ollama_manager