Integrate LuaJIT as an optional runtime for better performance, with a fallback to standard Lua 5.4. Update Dockerfile to install LuaJIT and create a wrapper script for execution. Enhance network module with socket fallback support and update README to reflect these changes and configuration options.
50 lines
2.0 KiB
Lua
50 lines
2.0 KiB
Lua
-- 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, 90) 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 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)
|
|
utils.sleep(5)
|
|
end
|
|
|
|
return ollama_manager
|