Phase 2: Volume Wizard, GPU & device passthrough (0.2.0)
Backend: - gpu_service: detect NVIDIA (nvidia-smi) + AMD/Intel (/dev/dri, sysfs); inject helpers (nvidia deploy.reservations, /dev/dri + groups + LIBVA) - volume_service: list/orphaned/prune volumes; NFS/SMB/named/bind/tmpfs YAML generation (generate-yaml) - device_service: USB/TTY/DRI detection + sandboxed host path browser - compose_edit_service: server-side merge of volume/gpu/device fragments - routers: volumes (+host paths), editor (services/add-volume/set-gpu/ add-device/remove-device/set-privileged), system gpus+devices - compose: bind-mount /dev:ro for detection Frontend: - split-pane StackEditor with helper panel (service picker + tabs) - VolumeWizard (bind/named/nfs/smb/tmpfs) + HostPathBrowser - GPUSelector, DevicePanel; api clients for volumes/editor/system Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
7775128c07
commit
b553c1b861
@@ -3,8 +3,8 @@
|
||||
A self-hosted Docker Compose manager for power users and homelab enthusiasts —
|
||||
as intuitive as Dockge, as capable as Portainer for Compose workflows.
|
||||
|
||||
> **Status:** Phase 1 (Core) complete. Volume/GPU wizards, image-update checks,
|
||||
> templates, multi-host agents and backups land in later phases.
|
||||
> **Status:** Phase 1 (Core) + Phase 2 (Volumes & GPU) complete. Image-update
|
||||
> checks, templates, multi-host agents and backups land in later phases.
|
||||
|
||||
## What works today (Phase 1)
|
||||
|
||||
@@ -25,6 +25,22 @@ as intuitive as Dockge, as capable as Portainer for Compose workflows.
|
||||
dir containing a compose file) are picked up automatically.
|
||||
- **Dark / light theme.**
|
||||
|
||||
### Phase 2 — Volumes & GPU
|
||||
|
||||
- **Volume Wizard** in the editor (right-hand helper panel): Bind / Named / NFS /
|
||||
SMB-CIFS / tmpfs, with a sandboxed **host path browser** for bind mounts and a
|
||||
live YAML preview. NFS/SMB `driver_opts` are generated for you.
|
||||
- **GPU assignment** per service: auto-detects NVIDIA (`nvidia-smi`) and AMD/Intel
|
||||
(`/dev/dri` + sysfs), injects the right YAML (NVIDIA `deploy.reservations`, or
|
||||
`/dev/dri` passthrough + render/video groups + `LIBVA_DRIVER_NAME=iHD` for Intel).
|
||||
- **Device passthrough**: lists host USB / serial-TTY / DRI nodes, add per service,
|
||||
plus a guarded `privileged` toggle.
|
||||
- All wizard edits are merged into the compose YAML **server-side** (robust,
|
||||
validated) and returned to the editor for review before saving.
|
||||
|
||||
> GPU/device detection needs host visibility. The bundled compose bind-mounts
|
||||
> `/dev:/dev:ro`; NVIDIA additionally requires the NVIDIA container runtime on the host.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
@@ -91,10 +107,19 @@ GET /api/stacks/{id} PUT /api/stacks/{id} DELETE /
|
||||
POST /api/stacks/{id}/{start|stop|restart|pull|update|down|clone}
|
||||
GET /api/stacks/{id}/logs GET /api/stacks/{id}/export
|
||||
POST /api/stacks/convert (docker run → compose)
|
||||
GET /api/system/info GET /api/audit
|
||||
GET /api/system/info | gpus | devices GET /api/audit
|
||||
WS /ws/logs/{stack_id}[/{service}] WS /ws/events
|
||||
```
|
||||
|
||||
### Phase 2 endpoints
|
||||
|
||||
```
|
||||
GET /api/volumes | /orphaned DELETE /api/volumes/{name}
|
||||
POST /api/volumes/prune POST /api/volumes/generate-yaml
|
||||
GET /api/host/paths?path=&show_hidden= (sandboxed browser)
|
||||
POST /api/editor/services | add-volume | set-gpu | add-device | remove-device | set-privileged
|
||||
```
|
||||
|
||||
## Security notes
|
||||
|
||||
- The Docker socket is only ever touched by the backend process; it is never
|
||||
|
||||
Reference in New Issue
Block a user