A modular, dialog-based TUI (Text User Interface) tool for managing Ubuntu servers. Built with whiptail for compatibility with remote SSH sessions.
- Modular architecture - easily extensible
- Dialog-based interface using whiptail
- Works over SSH (non-interactive sessions)
- Comprehensive server management capabilities
See FEATURES.md for a complete list of modules and features.
- Ubuntu Server (18.04+)
- Root/sudo access
- whiptail (usually pre-installed)
# Clone the repository
git clone https://github.com/MyUncleSam/server-manager-scripts.git
cd server-manager-scripts
# Make executable
chmod +x server-manager.sh
# Run
sudo ./server-manager.shRun the server manager with root privileges:
sudo ./server-manager.shNavigate using:
- Arrow keys to move
- Enter to select
- Tab to switch between buttons
- Space to toggle checkboxes
- Esc or Cancel/Exit to go back
ubuntu-scripts/
├── server-manager.sh # Main entry point
├── lib/
│ ├── ui.sh # Dialog-based UI helper functions
│ └── common.sh # Common utility functions
├── modules/ # Feature modules
│ ├── apt.sh
│ ├── docker.sh
│ ├── fail2ban.sh
│ ├── hostname.sh
│ ├── motd.sh
│ ├── network.sh
│ ├── ntp-client.sh
│ ├── software.sh
│ ├── ssh.sh
│ ├── system-info.sh
│ ├── ufw.sh
│ ├── ufw-docker.sh
│ ├── unattended-upgrades.sh
│ └── user.sh
├── logs/ # Log files (gitignored)
├── CLAUDE.md # AI assistant instructions
├── FEATURES.md # Detailed feature list
└── README.md # This file
See CLAUDE.md for detailed instructions on creating new modules.
Basic template:
#!/bin/bash
module_info() {
echo "Module Name|Short description"
}
module_main() {
while true; do
local choice
choice=$(ui_menu "Title" "Select:" \
"action1" "Description") || break
case "$choice" in
action1) do_something ;;
esac
done
}- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details.
- Built with whiptail
- Inspired by various server management tools