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
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
|
|
|