How tsuyakashi/proxmox-hosted-workstation works
This repository deploys Proxmox-hosted workstations: Terraform defines Windows and macOS VMs, an Ubuntu desktop LXC, and a separate headless macOS VM; host-side scripts handle GPU ownership and privileged LXC setup. The main user workflow is selecting a workstation with workstation.sh, which manages the mutually exclusive GPU-backed guests. README documents the configuration relationships and operational responsibilities; source excerpts were not available, so uncertain script-to-script calls are omitted.
Main entry points: vm/main.tf VM module · windows/main.tf Windows VM config · workstation.sh Workstation lifecycle · ct-recreate.sh Privileged CT creation
Components 19
Workstation environments
- Windows VM config
env/windows/main.tf - Ubuntu LXC config
env/ubuntu/main.tf - macOS desktop config
env/macos-tahoe-desktop/main.tf - macOS headless config
env/macos-tahoe-headless/main.tf
Terraform modules
- VM module
mod/vm/main.tf - LXC module
mod/ct/main.tf
Host operations
- Ubuntu desktop provisioner
scripts/lxc-ubuntu-desktop-provision.sh - Privileged CT creation
scripts/ct-recreate.sh - LXC device passthrough
scripts/lxc-ct-passthrough.sh - Workstation lifecycle
scripts/workstation.sh - GPU arbiter
scripts/gpu-arbiter.sh - IOMMU VFIO setup
scripts/iommu-vfio-setup.sh - NVIDIA host setup
scripts/lxc-nvidia-host-setup.sh
Platform services
- Proxmox VE
- Terraform state
- HashiCorp Vault
- Proxmox host
Other components
- Operator
- Terraform CLI
Connections 23
- Operator → Terraform CLI: runs plans
- Terraform CLI → Windows VM config: applies config
- Terraform CLI → Ubuntu LXC config: applies config
- Terraform CLI → macOS desktop config: applies config
- Terraform CLI → macOS headless config: applies config
- Windows VM config → VM module: uses module
- macOS desktop config → VM module: uses module
- macOS headless config → VM module: uses module
- Ubuntu LXC config → LXC module: uses module
- VM module → Proxmox VE: creates VMs
- LXC module → Proxmox VE: creates container
- Terraform CLI → Terraform state: reads/writes state
- Operator → Workstation lifecycle: selects guest
- Workstation lifecycle → Proxmox host: rebinds GPU
- Workstation lifecycle → Proxmox VE: starts guest
- Privileged CT creation → Proxmox host: creates privileged CT
- Privileged CT creation → Terraform CLI: imports CT
- LXC device passthrough → Proxmox host: configures CT devices
- Ubuntu desktop provisioner → Proxmox host: installs desktop
- IOMMU VFIO setup → Proxmox host: configures VFIO
- NVIDIA host setup → Proxmox host: configures NVIDIA
- GPU arbiter → Proxmox host: manages GPU ownership
- Windows VM config → HashiCorp Vault: uses secrets