Files
naxos-api/README.md
T
2026-09-04 09:04:46 +02:00

50 lines
3.1 KiB
Markdown

# NaxOS Management Daemon & API (`naxos-api`)
[![Gitea Actions](https://git.lholz.de/naxos/naxos-api/actions/workflows/ci.yaml/badge.svg)](https://git.lholz.de/naxos/naxos-api/actions)
The **NaxOS Management Daemon** serves as the core orchestration brain of the NaxOS storage appliance. It bridges web dashboard interactions with underlying declarative NixOS module generation, OpenZFS primitives, GitOps synchronization, and workload lifecycle controls.
## Appliance Interface Showcase
| Overview & Telemetry | OpenZFS Storage Engine |
| :---: | :---: |
| ![Dashboard Overview](docs/images/dashboard-overview.png) | ![Storage Management](docs/images/storage-management.png) |
| **CNCF Perses Analytics** | **App Store & Runtimes** |
| ![Perses Analytics](docs/images/perses-analytics.png) | ![App Store](docs/images/app-store.png) |
## Core Capabilities
- **Declarative NixOS Compiler**: Translates REST API actions directly into standard NixOS module syntax (`generated-naxos-config.nix`), validated before activating via `nixos-rebuild switch`.
- **GitOps Synchronization Engine**: Every configuration modification creates an atomic local Git commit and automatically pushes to the remote repository (e.g. Gitea) with instant 1-click rollback capability.
- **Native OpenZFS Management**: Full REST API for pools, vdevs, datasets, quotas, snapshots, scrubs, and TRIM.
- **Foreign Pool Migration**: Zero-data-loss safe discovery and import of foreign ZFS pools from TrueNAS or raw NixOS setups like `nixos-lukas`.
- **Tri-Tier Workload Engine**: Manages native NixOS systemd services (e.g., Immich with Intel QuickSync / OpenCL hardware acceleration), rootless Docker Compose, and lightweight K3s clusters.
- **Native Perses Analytics & SSE Logs**: Serves embedded Perses dashboard configurations and streams real-time journald logs.
## REST API Overview
| Endpoint | Method | Description |
| :--- | :--- | :--- |
| `/api/v1/system/status` | `GET` | Appliance health, CPU, RAM, ARC hit ratio |
| `/api/v1/system/rebuild` | `POST` | Triggers declarative rebuild; streams output via SSE |
| `/api/v1/storage/pools` | `GET`, `POST` | List and create ZFS pools |
| `/api/v1/storage/unimported` | `GET` | Scan for unimported foreign pools |
| `/api/v1/storage/import` | `POST` | Safely import foreign pool without data loss |
| `/api/v1/storage/datasets` | `GET`, `POST` | Manage ZFS datasets, quotas, recordsize |
| `/api/v1/storage/snapshots` | `GET`, `POST` | Snapshot creation and instant rollback |
| `/api/v1/shares/smb` | `GET`, `POST` | Samba shares and Time Machine configurations |
| `/api/v1/shares/nfs` | `GET`, `POST` | NFS exports and CIDR rules |
| `/api/v1/apps/catalog` | `GET` | Catalog of deployable applications |
| `/api/v1/apps/installed` | `GET`, `POST` | Install and manage active app workloads |
| `/api/v1/gitops/status` | `GET` | Remote synchronization and commit state |
| `/api/v1/gitops/rollback` | `POST` | Instant rollback to arbitrary commit SHA |
| `/api/v1/logs/stream` | `GET` | Real-time Server-Sent Events journald stream |
## Development & Testing
```bash
npm install
npm test
npm run build
npm start
```