Sign inSign up

stealthcat128/nasitron

By stealthcat128

•Updated about 2 hours ago

SSH-based OpenZFS monitoring, alerts and guarded storage management for Ubuntu NAS servers.

Image
Databases & storage
Monitoring & observability
0

75

stealthcat128/nasitron repository overview

⁠NASitron

OpenZFS monitoring and storage management for Ubuntu NAS servers.

NASitron is a self-hosted web dashboard that connects to one or more NAS hosts over SSH. Monitor storage and host health, keep historical metrics, receive alerts, and review supported ZFS maintenance actions from one workspace.

⁠Features

  • Pools and topology: health, capacity, fragmentation, vdev roles, error counters, scrub/resilver progress, throughput and IOPS.
  • Drives: inventory, physical bay assignments, SMART health, temperature, power-on age and reported NVMe health metrics.
  • Host and cache health: memory, swap, load, uptime, ARC/L2ARC statistics and collection failures.
  • History and alerts: retained telemetry, configurable thresholds, deduplicated alert state, acknowledgements and SMTP notifications.
  • Storage workspace: expansion planning, datasets, snapshots, reviewed recovery actions, scheduled snapshots/replication/scrubs/SMART tests and an event timeline.
  • Guarded administration: supported ZFS disk and pool actions use command previews, typed confirmation, live identity checks and maintenance history. Privileged remote actions run through the root-owned NASitron helper with a narrowly scoped sudo rule.

Monitoring and diagnostic collection are read-only. Separately authorized maintenance actions can change storage. NASitron does not expose a remote shell or arbitrary command arguments.

⁠Image and tags

Repository: stealthcat128/nasitron

Select an image tag shown on this repository's Tags tab. The release publisher is configured to produce version tags in X.Y.Z format and a latest alias for the current latest stable GitHub release, with linux/amd64 and linux/arm64 builds. Check the selected tag's manifest for its actual available platforms.

Pin a specific version or digest for repeatable deployments.

Use the project's Compose stack⁠. It includes Caddy for HTTPS, keeps NASitron's application port private, and persists application and certificate state.

git clone https://github.com/StealthCat/NASitron.git
cd NASitron
cp .env.example .env
openssl rand -hex 32

Edit .env:

  • Set NASITRON_SECRET_KEY to the generated random value. Keep it stable and back it up: it encrypts stored SSH and SMTP secrets.
  • Set NASITRON_WEB_USERNAME and a unique NASITRON_WEB_PASSWORD of at least 12 characters.
  • Set the hostname/IP and timezone for your deployment.

To use this Docker Hub image, replace build: . in the nasitron service with image: stealthcat128/nasitron:YOUR_PUBLISHED_TAG, using a real tag from this repository. Keep the rest of the supplied Compose configuration, including its Caddy service and volumes.

docker compose pull
docker compose up -d

Alternatively, leave the Compose file unchanged and build the checked-out source with docker compose up -d --build.

Caddy publishes ports 80/TCP, 443/TCP and 443/UDP by default. NASitron listens on 8080/TCP inside the Compose network; this port is not published by the supplied stack. The initial certificate is issued by Caddy's internal CA. Trust that CA for your management environment, or configure an uploaded certificate or ACME under Settings → TLS Certificate Management.

⁠Persistent data and configuration

SettingPurpose
/dataPersistent application state, including SQLite database and SSH known-hosts data. The supplied Compose volume is nasitron_data.
NASITRON_SECRET_KEYRequired, stable encryption-key material; minimum 32 characters.
NASITRON_WEB_USERNAMERequired administrator sign-in username.
NASITRON_WEB_PASSWORDRequired administrator sign-in password; minimum 12 characters.
NASITRON_TIMEZONEDisplay timezone; application default UTC.
NASITRON_TLS_HOSTBootstrap/default TLS hostname or IP; default localhost.
NASITRON_LISTEN_IPHost bind address for Caddy; default 0.0.0.0.
NASITRON_HTTP_PORT / NASITRON_HTTPS_PORTHost HTTP/HTTPS ports; defaults 80 / 443.
NASITRON_SESSION_TTL_SECONDSWeb-session lifetime; default 43200 seconds.

The image runs as the non-root nasitron user and includes a /healthz health check. Keep one application process/replica per data directory; the supplied image and Compose stack use WEB_CONCURRENCY=1. Back up the persistent data volume and encryption key together before upgrades. The Compose stack also persists Caddy certificate and account state in caddy_data and caddy_config.

For deployments behind another reverse proxy, use HTTPS and trust forwarded headers only from that proxy. Keep application port 8080 unreachable by untrusted clients. Leave NASITRON_ALLOW_INSECURE_HTTP and NASITRON_ALLOW_INSECURE_MAINTENANCE disabled for normal deployments.

See .env.example⁠ and the configuration guide⁠ for the full settings.

⁠Connect a NAS

Prepare each monitored Ubuntu/OpenZFS host using the bundled remote installer. Add Server and Settings → NAS Installer provide the installer download and commands for the current NASitron instance. The installer configures a dedicated SSH account, the root-owned helper and a helper-only sudo policy.

Verify the NAS SSH host-key fingerprint through a trusted channel and enable strict verification after enrollment. Prefer dedicated SSH keys and do not grant unrestricted passwordless sudo. Update the remote helper on each managed NAS when required by an application upgrade.

⁠Documentation and support

Tag summary

Content type

Image

Digest

sha256:f000f4bee…

Size

71 MB

Last updated

about 2 hours ago

docker pull stealthcat128/nasitron