No description
  • TypeScript 60.4%
  • Go 39.1%
  • Dockerfile 0.2%
Find a file
Chuck & John 699e086a8a
Some checks failed
CI / Backend (Go 1.22) (push) Has been cancelled
CI / Backend (Go 1.23) (push) Has been cancelled
CI / Frontend (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
docs: add known issues for WebSocket security and concurrency bugs
2026-02-19 09:05:01 +00:00
.github/workflows ci: add GitHub Actions workflow for CI/CD 2026-02-16 04:19:05 +00:00
api Add tests, OpenAPI spec, architecture docs, and nonraid submodule 2026-02-14 16:53:39 -05:00
cmd Add YAML config file support with env var override 2026-02-15 21:47:57 +00:00
contrib/systemd Add build system, systemd service, and documentation 2026-02-14 16:09:24 -05:00
deployment Add systemd service unit file for proxmaid 2026-02-15 21:42:59 +00:00
docs Add frontend code review 2026-02-15 13:06:42 +00:00
frontend feat: wire frontend to real backend via env vars 2026-02-19 03:06:01 +00:00
internal Add parity check progress events 2026-02-15 22:04:38 +00:00
nonraid@b2badde141 Add tests, OpenAPI spec, architecture docs, and nonraid submodule 2026-02-14 16:53:39 -05:00
pkg/models WebSocket auth, reliability, and test coverage improvements 2026-02-15 21:26:38 +00:00
.dockerignore Add Docker support 2026-02-15 22:16:27 +00:00
.gitignore Remove accidentally committed binary and add to .gitignore 2026-02-15 21:50:52 +00:00
.gitmodules Add tests, OpenAPI spec, architecture docs, and nonraid submodule 2026-02-14 16:53:39 -05:00
docker-compose.yml Add Docker support 2026-02-15 22:16:27 +00:00
Dockerfile Add Docker support 2026-02-15 22:16:27 +00:00
go.mod Update go.mod deps and add config endpoint tests 2026-02-15 21:50:41 +00:00
go.sum Update go.mod deps and add config endpoint tests 2026-02-15 21:50:41 +00:00
KNOWN_ISSUES.md docs: add known issues for WebSocket security and concurrency bugs 2026-02-19 09:05:01 +00:00
Makefile Add build system, systemd service, and documentation 2026-02-14 16:09:24 -05:00
nmdclient Add CLI tool (nmdclient), frontend React app with components, API docs, architecture, TODO, and UI specs 2026-02-15 07:28:08 +00:00
README.md docs: update README with new endpoints and features 2026-02-15 22:16:12 +00:00
TASKS.md docs: update TASKS.md with integration progress and known issues 2026-02-19 03:07:01 +00:00
TEST_FIXES_PLAN.md Add frontend test fixes plan 2026-02-18 11:04:59 +00:00

ProxMaid

Go backend for managing NonRAID arrays via REST API and WebSocket. Part of the ProxMaid project combining NonRAID storage with Proxmox VE.

Clone

git clone --recursive ssh://git@jelly.hedgehog-bortle.ts.net:2222/chuck/proxmaid.git

Build

make build

Run

./bin/nmdapid
# or
make run

Configuration

ProxMaid supports two configuration methods:

Create /etc/proxmaid/config.yaml:

addr: ":8080"
superblock: "/nonraid.dat"
keyfile: "/etc/nonraid/luks-keyfile"
nmdctl: "/usr/local/bin/nmdctl"
poll_seconds: 2

Environment Variables

Variable Default Description
NMDAPI_ADDR :8080 Listen address
NMDAPI_SUPERBLOCK /nonraid.dat Superblock file path
NMDAPI_KEYFILE /etc/nonraid/luks-keyfile LUKS keyfile path
NMDAPI_NMDCTL /usr/local/bin/nmdctl Path to nmdctl binary
NMDAPI_POLL_SECONDS 2 WebSocket status poll interval

API Endpoints

Array Operations

Method Endpoint Description
GET /api/v1/array Get array status
POST /api/v1/array/start Start array
POST /api/v1/array/stop Stop array
POST /api/v1/array/check Start parity check
POST /api/v1/array/mount Mount all disks
POST /api/v1/array/unmount Unmount all disks
POST /api/v1/array/reload Reload array
POST /api/v1/array/create Create new array
DELETE /api/v1/array Delete array

Disk Operations

Method Endpoint Description
GET /api/v1/disks List all disks
POST /api/v1/disks Add disk
PUT /api/v1/disks/{slot} Replace disk
DELETE /api/v1/disks/{slot} Unassign disk
GET /api/v1/disks/{slot}/smart Get SMART data for disk

System

Method Endpoint Description
GET /api/v1/system/disks List physical disks
GET /api/v1/config Get masked configuration

Real-time

Method Endpoint Description
GET /ws WebSocket for real-time status
GET /health Health check

WebSocket Events

Connect to /ws for real-time updates. Events are sent as JSON messages.

Event Types

Event Description
status Array status updates (polled)
parity_progress Parity check progress updates

Example: Parity Progress

{
  "type": "parity_progress",
  "data": {
    "percent": 42.5,
    "speed": "150 MB/s",
    "elapsed": "2h 15m",
    "remaining": "3h 10m"
  }
}

Install as Service

ProxMaid uses systemd's Type=notify for proper service readiness notification.

sudo make install
sudo systemctl daemon-reload
sudo systemctl enable --now nmdapi

The service will notify systemd when it's ready to accept connections, ensuring proper startup ordering for dependent services.