betterNAS/apps/node-agent
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
..
cmd/node-agent Add install script, CI workflows, and release pipeline 2026-04-01 20:37:40 -04:00
Dockerfile setup agent runtime requirements (#7) 2026-04-01 00:37:15 -04:00
go.mod init (#5) 2026-03-31 23:50:51 -04:00
go.sum init (#5) 2026-03-31 23:50:51 -04:00
package.json user-owned DAVs (#14) 2026-04-01 20:26:44 -04:00
README.md Add install script, CI workflows, and release pipeline 2026-04-01 20:37:40 -04:00

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:

curl -fsSL https://raw.githubusercontent.com/harivansh-afk/betterNAS/main/scripts/install-betternas-node.sh | sh

Then connect a machine to betterNAS with:

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.