[PR #1] [MERGED] installer: prompt for storage, disk, CPU, RAM, and GPU #3

Closed
opened 2026-10-15 12:52:34 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/proxmox-community-script/pull/1
Author: @JBailes
Created: 8/9/2026
Status: ✅ Merged
Merged: 8/9/2026
Merged by: @JBailes

Base: main ← Head: installer-prompts


📝 Commits (1)

  • fb226c2 installer: prompt for storage, disk, CPU, RAM, and GPU

📊 Changes

5 files changed (+390 additions, -42 deletions)

View changed files

📝 .env.example (+9 -1)
📝 README.md (+28 -2)
📝 docker-compose.yml (+5 -0)
📝 install.sh (+226 -39)
➕ tests/gather-dryrun.sh (+122 -0)

📄 Description

The installer only asked for the container storage and a LAN IP; the GPU was picked by autodetect with no say from the user, and the Wolf CT's disk, cores, and RAM were whatever the recipe defaulted to — with nothing checking that the disk fit the chosen storage.

Ask for all of it up front, using the same selection model as the Wolf quickstart scripts this installer descends from (games-on-whales/wolf, quickstart/common.sh): a numbered list of what the host actually has, default 1, auto-selected when there is a single candidate, and an env preset that must name a real candidate or abort.

  • Storage: active rootdir storages from pvesm, labelled "name (type, N GB free)".
  • Disk / cores / RAM: bounded by that free space, nproc, and MemTotal, so a value that cannot work is refused instead of failing later at pct create. Defaults follow the quickstart (4 cores, 4096 MB) and this repo (100 GB).
  • GPU: the render-node scan now probes nvidia_drm modeset=1 first (NVIDIA exposes no render node without it), resolves vendor + model via lspci, and lists every GPU as "vendor name (driver, node)" rather than silently taking the first NVIDIA one. The NVIDIA compose overlay follows the chosen GPU.

docker-compose.yml gains cpus/mem_limit, which docker-lxc-daemon maps onto the CT (HostConfig.NanoCPUs -> lxc.cgroup2.cpu.max, Memory -> the PVE memory: line). Both default to 0 (uncapped) so an existing .env without the keys is unchanged.

Writing .env goes through set_env, which appends a missing key — the previous sed -i silently did nothing for keys absent from an existing .env, so new settings would never have landed on an upgrade.

tests/gather-dryrun.sh exercises the whole section against a faked Proxmox host (two storages, two GPUs, 16 cores, 64 GB): labels, defaults, interactive answers, re-ask on bad input, and every rejection path.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/proxmox-community-script/pull/1 **Author:** [@JBailes](https://github.com/JBailes) **Created:** 8/9/2026 **Status:** ✅ Merged **Merged:** 8/9/2026 **Merged by:** [@JBailes](https://github.com/JBailes) **Base:** `main` ← **Head:** `installer-prompts` --- ### 📝 Commits (1) - [`fb226c2`](https://github.com/games-on-whales/proxmox-community-script/commit/fb226c221cc019d24bf589f6a5876ade5106b63c) installer: prompt for storage, disk, CPU, RAM, and GPU ### 📊 Changes **5 files changed** (+390 additions, -42 deletions) <details> <summary>View changed files</summary> 📝 `.env.example` (+9 -1) 📝 `README.md` (+28 -2) 📝 `docker-compose.yml` (+5 -0) 📝 `install.sh` (+226 -39) ➕ `tests/gather-dryrun.sh` (+122 -0) </details> ### 📄 Description The installer only asked for the container storage and a LAN IP; the GPU was picked by autodetect with no say from the user, and the Wolf CT's disk, cores, and RAM were whatever the recipe defaulted to — with nothing checking that the disk fit the chosen storage. Ask for all of it up front, using the same selection model as the Wolf quickstart scripts this installer descends from (games-on-whales/wolf, quickstart/common.sh): a numbered list of what the host actually has, default 1, auto-selected when there is a single candidate, and an env preset that must name a real candidate or abort. - Storage: active rootdir storages from pvesm, labelled "name (type, N GB free)". - Disk / cores / RAM: bounded by that free space, nproc, and MemTotal, so a value that cannot work is refused instead of failing later at pct create. Defaults follow the quickstart (4 cores, 4096 MB) and this repo (100 GB). - GPU: the render-node scan now probes nvidia_drm modeset=1 first (NVIDIA exposes no render node without it), resolves vendor + model via lspci, and lists every GPU as "vendor name (driver, node)" rather than silently taking the first NVIDIA one. The NVIDIA compose overlay follows the chosen GPU. docker-compose.yml gains cpus/mem_limit, which docker-lxc-daemon maps onto the CT (HostConfig.NanoCPUs -> lxc.cgroup2.cpu.max, Memory -> the PVE memory: line). Both default to 0 (uncapped) so an existing .env without the keys is unchanged. Writing .env goes through set_env, which appends a missing key — the previous sed -i silently did nothing for keys absent from an existing .env, so new settings would never have landed on an upgrade. tests/gather-dryrun.sh exercises the whole section against a faked Proxmox host (two storages, two GPUs, 16 cores, 64 GB): labels, defaults, interactive answers, re-ask on bad input, and every rejection path. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 12:52:34 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/proxmox-community-script#3
No description provided.