80 lines
2 KiB
Markdown
80 lines
2 KiB
Markdown
# Proxmox Debian VM Bootstrap Wizard
|
||
|
||
A simple, interactive bootstrap for freshly cloned Debian VMs on Proxmox.
|
||
It uses a two‑stage approach:
|
||
|
||
1. **Bootstrap script** (stored as `setup.sh` on your VM template)
|
||
- Prompts for root if needed
|
||
- Downloads and runs the latest interactive wizard
|
||
2. **Remote setup wizard** (pulled from Git)
|
||
- Menu‑driven (`whiptail`) configuration: updates, sudo, hostname, SSH keys, aliases, neofetch, CIFS mounts, etc.
|
||
|
||
---
|
||
|
||
## Prerequisites
|
||
|
||
- Debian‑based VM template
|
||
- Network access to `git.jordanwages.com`
|
||
- `whiptail` (auto‑installed if missing)
|
||
- Either `curl` or `wget`
|
||
|
||
---
|
||
|
||
## Installation
|
||
|
||
1. **Copy & rename**
|
||
On your Debian template, place the **bootstrap** script as `/root/setup.sh`:
|
||
```bash
|
||
chmod +x /root/setup.sh
|
||
|
||
2. **Provision a new VM**
|
||
Clone from your template and boot it. Then run:
|
||
|
||
```bash
|
||
sudo /root/setup.sh
|
||
```
|
||
|
||
* If you’re not root, you’ll be prompted (via `whiptail`) for the root password.
|
||
* The script fetches and executes the latest remote wizard.
|
||
|
||
3. **Follow the wizard**
|
||
Use the on‑screen menus to:
|
||
|
||
* Grant passwordless `sudo` to selected users
|
||
* Apply system updates
|
||
* Set a new hostname
|
||
* Add SSH keys for root & your primary user
|
||
* Install core & optional utilities (`htop`, `jq`, `git`, etc.)
|
||
* Configure CIFS mounts for your NAS shares
|
||
|
||
---
|
||
|
||
## Customization
|
||
|
||
* **Default SSH key**
|
||
Edit the `DEFAULT_SSH_KEY` variable in the remote `setup.sh` to your own public key.
|
||
|
||
* **Optional packages**
|
||
Tweak the `TOOLS=(…)` array in the remote script to add or remove utilities.
|
||
|
||
* **CIFS shares**
|
||
Adjust the `CIFS_HOSTS=(…)` array to match your NAS hostnames.
|
||
|
||
---
|
||
|
||
## Troubleshooting
|
||
|
||
* **Fetch failures**
|
||
Ensure network connectivity and that `curl` or `wget` is installed.
|
||
|
||
* **Rerunning**
|
||
Simply invoke:
|
||
|
||
```bash
|
||
sudo /root/setup.sh
|
||
```
|
||
|
||
again to repeat the wizard.
|
||
|
||
* **Manually inspect**
|
||
If a step errors out, inspect the console output for hints.
|