243 lines
4 KiB
Markdown
243 lines
4 KiB
Markdown
<p align="center">
|
||
<img src="images/updatemanager-logo.png" width="600">
|
||
</p>
|
||
|
||
|
||
Simple CLI tool to check and manage updates across multiple Ubuntu systems over SSH.
|
||
|
||
Built for Lanx environments – lightweight, fast and no unnecessary dependencies.
|
||
|
||
---
|
||
|
||
## 📚 Table of Contents
|
||
|
||
* [Features](#features)
|
||
* [Update Manager UI](#update-manager-ui)
|
||
* [Quick Install](#quick-install)
|
||
* [SSH Setup](#ssh-setup-required)
|
||
* [Configuration](#configuration)
|
||
* [Usage](#usage)
|
||
* [Logging](#logging)
|
||
* [File Structure](#file-structure)
|
||
* [How it works](#how-it-works)
|
||
* [Requirements](#requirements)
|
||
* [Future ideas](#future-ideas)
|
||
* [License](#license)
|
||
|
||
---
|
||
|
||
## Features
|
||
|
||
* Check updates on multiple hosts
|
||
* Run updates remotely over SSH
|
||
* Interactive CLI menu (dialog-based UI)
|
||
* Centralized logging
|
||
* Simple config files
|
||
* No agents required
|
||
* Works with existing SSH setup
|
||
|
||
---
|
||
|
||
## Update Manager UI
|
||
|
||
### Main menu
|
||
|
||
<p align="center">
|
||
<img src="docs/images/menu-main.png" width="50%" alt="Main menu">
|
||
</p>
|
||
|
||
### Log menu
|
||
|
||
<p align="center">
|
||
<img src="docs/images/menu-logs.png" width="50%" alt="Log menu">
|
||
</p>
|
||
|
||
<p align="center">
|
||
<em>Lightweight • No dependencies • Works over SSH</em>
|
||
</p>
|
||
|
||
---
|
||
|
||
## Quick Install
|
||
|
||
```bash
|
||
git clone https://github.com/YOUR-USER/update-manager.git
|
||
cd update-manager
|
||
|
||
sudo apt update
|
||
sudo apt install dialog openssh-client
|
||
|
||
sudo mkdir -p /opt/update-manager
|
||
sudo cp update-manager.sh update-manager-ui.sh dialogrc /opt/update-manager/
|
||
|
||
sudo chmod +x /opt/update-manager/update-manager.sh
|
||
sudo chmod +x /opt/update-manager/update-manager-ui.sh
|
||
|
||
sudo ln -s /opt/update-manager/update-manager.sh /usr/local/bin/update-manager
|
||
sudo ln -s /opt/update-manager/update-manager-ui.sh /usr/local/bin/update-manager-ui
|
||
```
|
||
|
||
---
|
||
|
||
## SSH Setup (Required)
|
||
|
||
Update Manager uses SSH to connect to your hosts.
|
||
|
||
You must have SSH key-based authentication set up (no password prompts).
|
||
|
||
### Generate SSH key (if not already done)
|
||
|
||
```bash
|
||
ssh-keygen -t ed25519
|
||
```
|
||
|
||
---
|
||
|
||
### Copy key to hosts
|
||
|
||
```bash
|
||
ssh-copy-id user@192.168.1.10
|
||
ssh-copy-id user@192.168.1.20
|
||
ssh-copy-id user@192.168.1.30
|
||
```
|
||
|
||
---
|
||
|
||
### Test connection
|
||
|
||
```bash
|
||
ssh user@192.168.1.10
|
||
```
|
||
|
||
You should be able to connect **without entering a password**.
|
||
|
||
> ⚠️ If SSH is not configured, the tool will fail or hang during execution.
|
||
|
||
---
|
||
|
||
## Configuration
|
||
|
||
### Copy config files
|
||
|
||
```bash
|
||
cp update-manager.conf.example update-manager.conf
|
||
cp hosts.conf.example hosts.conf
|
||
```
|
||
|
||
---
|
||
|
||
### Edit hosts
|
||
|
||
```bash
|
||
nano hosts.conf
|
||
```
|
||
|
||
Example:
|
||
|
||
```bash
|
||
# name ip user
|
||
server1 192.168.1.10 user
|
||
server2 192.168.1.20 user
|
||
server3 192.168.1.30 user
|
||
```
|
||
|
||
---
|
||
|
||
## Usage
|
||
|
||
### Check updates
|
||
|
||
```bash
|
||
update-manager check
|
||
```
|
||
|
||
### Start UI
|
||
|
||
```bash
|
||
update-manager-ui
|
||
```
|
||
|
||
---
|
||
|
||
## Logging
|
||
|
||
Log file location:
|
||
|
||
```bash
|
||
/opt/update-manager/log/update-manager.log
|
||
```
|
||
|
||
View log:
|
||
|
||
```bash
|
||
less /opt/update-manager/log/update-manager.log
|
||
```
|
||
|
||
Follow log:
|
||
|
||
```bash
|
||
tail -f /opt/update-manager/log/update-manager.log
|
||
```
|
||
|
||
---
|
||
|
||
## File Structure
|
||
|
||
```bash
|
||
/opt/update-manager/
|
||
├── update-manager.sh
|
||
├── update-manager-ui.sh
|
||
├── update-manager.conf
|
||
├── hosts.conf
|
||
├── log/
|
||
│ └── update-manager.log
|
||
```
|
||
|
||
---
|
||
|
||
## How it works
|
||
|
||
* Uses SSH to connect to each host
|
||
* Runs `apt` commands remotely
|
||
* Logs results locally
|
||
* No agents or services needed
|
||
* Designed for simple and efficient operations
|
||
|
||
---
|
||
|
||
## Requirements
|
||
|
||
* SSH access to all hosts
|
||
* SSH keys recommended (no password prompts)
|
||
* Ubuntu/Debian-based systems
|
||
|
||
---
|
||
|
||
## Future ideas
|
||
|
||
* 🔔 Notifications (ntfy / push alerts)
|
||
* 🌐 Web interface
|
||
* 📧 Email reporting
|
||
* 📊 Basic monitoring (status, last check, pending updates)
|
||
* 🧩 Plugin system (extensible modules)
|
||
* 🔐 Security & compliance checks
|
||
* 🤖 AI integration (Lanx AI)
|
||
|
||
---
|
||
|
||
## ❤️ Credits
|
||
|
||
Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk)
|
||
Maintained by [Eddie Nielsen](https://lanx.dk)
|
||
|
||
> Learn. Adopt. Survive. Share.
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
This project is licensed under the GNU GPL v3 License.
|
||
|
||
See the LICENSE file for full details.
|
||
|
||
---
|