v0.5 | 45 system management scripts for all Linux distributions
wget -qO - https://raw.githubusercontent.com/sorglos-it/ulh/main/install.sh | bash && cd ~/ulh && bash ulh.shcurl -sSL https://raw.githubusercontent.com/sorglos-it/ulh/main/install.sh | bash && cd ~/ulh && bash ulh.shgit clone https://github.com/sorglos-it/ulh.git
cd ulh
bash ulh.sh- Multi-Distribution - Debian, Ubuntu, Red Hat, Arch, SUSE, Alpine, Proxmox
- 45 Scripts - Network, system management, web servers, databases, languages, tools
- Auto-Updates - Self-updates on startup with transparent restart
- Custom Repos - Clone your own script repositories with git authentication (SSH, Token, Basic Auth)
- Per-Action Automation - answer.yaml enables automated execution for specific script actions
- Interactive Menu - Clean, intuitive box-based CLI interface
- All Distros - Every script supports all 5 major distribution families
- Zero Dependencies - Just bash, git, and standard Linux tools
cd ~/ulh
bash ulh.shMenu flow:
1. Repository Selector
├─ ulh Scripts
│ └─ Categories
│ └─ Scripts
│ └─ Actions
└─ Custom Repos
└─ Scripts
└─ Actions
See SCRIPTS.md for complete reference.
Define defaults and enable per-action automation:
# custom/answer.yaml
scripts:
ubuntu:
install:
- default: "no" # Interactive: user sees prompt
pro:
autoscript: true # Automated: no prompts
answers:
- default: "token123"Works for both system and custom repo scripts. See DOCS.md for details.
Add your own script repositories with git authentication:
# custom/repo.yaml
repositories:
my-scripts:
name: "My Custom Scripts"
url: "git@github.com:user/my-scripts.git"
path: "my-scripts"
auth_method: "ssh"
enabled: # Show in menu
auto_update: # Auto-pull on startupAuthentication Methods: SSH (with custom/keys/), HTTPS Token, Basic Auth, or none.
See DOCS.md#custom-repositories for complete setup guide.
ulh/
├── ulh.sh # Entry point (self-updating)
├── lib/ # 7 focused libraries
├── scripts/ # 45 system management scripts + custom repos
├── custom/ # Your custom repos
├── config.yaml # System scripts config
├── README.md # This file
├── DOCS.md # Comprehensive guide
└── SCRIPTS.md # Script reference
- DOCS.md - Complete guide: architecture, configuration, templates, troubleshooting
- SCRIPTS.md - All 45 scripts with categories and descriptions
- ✅ Debian / Ubuntu / Linux Mint
- ✅ Red Hat / Fedora / CentOS / Rocky / AlmaLinux
- ✅ Arch / Manjaro
- ✅ SUSE / openSUSE
- ✅ Alpine
- ✅ Proxmox VE
⚠️ PiKVM v3 (Arch-based appliance, limited package management)
- Linux (any major distro)
- Bash 4.0+
- Git
sudoaccess (for system-level operations)
- Install:
bash install.shor clone repo - Run:
bash ulh.sh - Select: Choose System Management or Custom Repo
- Navigate: Category → Script → Action
- Configure: Follow prompts (or accept defaults)
- Scripts run individually with sudo (ulh stays unprivileged)
- SSH keys stored in custom/keys/ (protected by .gitignore)
- No hardcoded credentials (use environment variables)
- All scripts pass syntax validation (bash -n)
To add scripts to your custom repository:
mkdir -p custom/myrepo/scripts
cp scripts/_template.sh custom/myrepo/scripts/my-script.shSee DOCS.md - Script Development for detailed guide and how to integrate custom repositories.
Contributions welcome! See DOCS.md for script development guidelines.
MIT License - Free for personal and commercial use
Questions? Check DOCS.md or open an issue on GitHub.
If ulh helps you save time and reduces your Linux headaches, consider supporting the project:
Curious how "unknown linux helper" came to be? Read BACKSTORY.md — the chaotic naming odyssey featuring Kevin, the Unknown Man, and why naming things is impossible.
