betterNAS/apps/node-agent/README.md
Harivansh Rathi 18b4ce1a40 Add install script, CI workflows, and release pipeline
- Install script: curl-pipe-sh installer that downloads the right
  binary for the user's OS/arch from GitHub Releases
- CI workflow: runs go vet + go test for both Go modules and builds
  the web app on push/PR
- Release workflow: goreleaser builds cross-platform binaries
  (linux/darwin, amd64/arm64) on version tags
- Node-agent defaults BETTERNAS_CONTROL_PLANE_URL to
  https://api.betternas.com so users only need username/password
2026-04-01 20:37:40 -04:00

36 lines
1.1 KiB
Markdown

# betterNAS Node Agent
Go service that runs on the NAS machine.
For the scaffold it does two things:
- serves `GET /health`
- serves a WebDAV export at `/dav/`
- optionally serves multiple configured exports at deterministic `/dav/exports/<slug>/` paths via `BETTERNAS_EXPORT_PATHS_JSON`
- registers itself with the control plane and syncs its exports when
`BETTERNAS_CONTROL_PLANE_URL` is configured
- uses `BETTERNAS_USERNAME` and `BETTERNAS_PASSWORD` both for control-plane login
and for local WebDAV basic auth
This is the first real storage-facing surface in the monorepo.
The user-facing binary should be distributed as `betternas-node`.
Install the latest release with:
```bash
curl -fsSL https://raw.githubusercontent.com/harivansh-afk/betterNAS/main/scripts/install-betternas-node.sh | sh
```
Then connect a machine to betterNAS with:
```bash
BETTERNAS_USERNAME=your-username \
BETTERNAS_PASSWORD=your-password \
BETTERNAS_EXPORT_PATH=/path/to/export \
BETTERNAS_NODE_DIRECT_ADDRESS=https://your-public-node-url \
betternas-node
```
If `BETTERNAS_CONTROL_PLANE_URL` is not set, the node defaults to
`https://api.betternas.com`.