Introduce a comprehensive README file detailing the project's purpose, features, environment variables, usage instructions, project structure, and how it operates. This addition enhances documentation and provides clarity for users and developers.
85 lines
2.4 KiB
Markdown
85 lines
2.4 KiB
Markdown
# Auto-Boot Ollama Host
|
|
|
|
This directory contains the auto-boot-ollama-host script, organized into multiple modules for better maintainability and structure.
|
|
|
|
## File Structure
|
|
|
|
### Main Script
|
|
|
|
- `auto-boot-ollama-host.lua` - Main script that orchestrates all functionality
|
|
|
|
### Modules
|
|
|
|
#### `config.lua`
|
|
|
|
Handles all environment variable configuration with sensible defaults:
|
|
|
|
- Docker configuration (container name, since time)
|
|
- Ollama service configuration (host, port)
|
|
- SSH configuration (port, user, identity file)
|
|
- Pattern configuration (error and finish patterns)
|
|
- Wake-on-LAN configuration
|
|
|
|
#### `utils.lua`
|
|
|
|
Provides utility functions:
|
|
|
|
- `log(msg)` - Timestamped logging
|
|
- `getenv(name, def)` - Environment variable with default
|
|
|
|
#### `network.lua`
|
|
|
|
Network-related functionality:
|
|
|
|
- `port_is_up(host, port, timeout)` - Check if TCP port is accessible
|
|
- `send_wol(mac, bcast_ip, port)` - Send Wake-on-LAN magic packet
|
|
|
|
#### `ssh.lua`
|
|
|
|
SSH command execution:
|
|
|
|
- `execute(command, user, host, port, identity_file)` - Execute remote SSH command
|
|
- `execute_with_output(command, user, host, port, identity_file)` - Execute SSH command and return output
|
|
|
|
#### `ollama_manager.lua`
|
|
|
|
Ollama service management:
|
|
|
|
- `start_service(config)` - Start Ollama service via SSH
|
|
- `stop_service_and_shutdown(config)` - Stop service and shutdown host
|
|
|
|
#### `session_check.lua`
|
|
|
|
Windows desktop session detection:
|
|
|
|
- `is_user_logged_in_enhanced(config)` - Check if user is logged into desktop session
|
|
|
|
## Benefits of Modular Structure
|
|
|
|
1. **Separation of Concerns**: Each module has a single responsibility
|
|
2. **Reusability**: Modules can be reused in other projects
|
|
3. **Testability**: Individual modules can be unit tested
|
|
4. **Maintainability**: Easier to locate and modify specific functionality
|
|
5. **Readability**: Clear structure and organization
|
|
6. **Configuration**: Centralized configuration management
|
|
|
|
## New Features
|
|
|
|
### Desktop Session Detection
|
|
|
|
The script includes Windows desktop session detection:
|
|
|
|
- Checks if the SSH_USER is currently logged into a Windows desktop session
|
|
- If user is logged in, skips Ollama startup/shutdown to avoid interruption
|
|
- If user is not logged in, proceeds with normal operation
|
|
|
|
## Usage
|
|
|
|
To use the script, simply run:
|
|
|
|
```bash
|
|
lua auto-boot-ollama-host.lua
|
|
```
|
|
|
|
The script provides a modular structure for better maintainability while maintaining all functionality.
|