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

1.1 KiB

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.