Go 1.22 · React 18 · MIT License
Nimbus NAS Panel
// Panel administracyjny dla domowego serwera NAS / home lab
Kompletny panel do zarządzania serwerem domowym. Backend w Go bez zewnętrznych zależności, frontend w React 18. Jeden endpoint zamiast 14 osobnych żądań. Działa na x86_64 i arm64.
~300
endpointów API
1
zależność zewnętrzna*
180KB
bundle.js (gzip)
14
modułów zarządzania
Dashboard w czasie rzeczywistym
Jeden endpoint /api/dashboard zbiera dane z 14 handlerów równolegle (sync.WaitGroup) — zero blokowania HTTP
localhost:80 — Nimbus NAS Panel
online
CPU
23%
RAM
61%
ZFS pool
3.2TB
Uptime
14d 7h
CPU / RAM — historia (próbka co 10s)
— CPU — RAM
Docker — kontenery
jellyfin
2.1%
sonarr
0.8%
radarr
0.4%
portainer
0.1%
nextcloud
stopped
Usługi plików
Samba (SMB)
ON
NFS server
ON
SSH
ON
FTP/SFTP
OFF
ZFS Pools
tank (RAID-Z)
ONLINE
ssd-cache
ONLINE
3.2 TB użyte7.1 TB wolne
Serwery mediów
Jellyfin
ON
Navidrome
ON
Plex
OFF
Emby
OFF
Co znajdziesz w panelu
Każdy moduł działa niezależnie — panel uruchamia się nawet bez zainstalowanych narzędzi
💾
Dyski i ZFS
ZFS pools, S.M.A.R.T. z PASSED/WARN, I/O stats. statfs() z timeout 2s — zawieszone NFS nie blokuje serwera.
🐳
Docker
Kontenery, obrazy, sieci, wolumeny. Live CPU/RAM każdego kontenera dzięki background stats pollerowi co 2s.
🌐
Reverse Proxy
Wbudowany httputil.ReverseProxy. Konfiguracja przez panel → proxy-routes.json → aktywne natychmiast. Bez nginx.
🔌
Usługi plików
Samba, SSH, FTP/SFTP, WebDAV — toggle i konfiguracja. NFS serwer i klient ze skanem sieci i mountem.
🖥️
Serwery zdalne
Zarządzanie zdalnymi hostami SSH — CPU/RAM/dyski/procesy na żywo. golang.org/x/crypto — jedyna zewnętrzna zależność.
🔔
Powiadomienia
Email, Telegram, Discord, Slack — reguły alertów i powiadomień. Cron scheduler z edytorem zadań.
Szybki start — jedna komenda
Instalator automatycznie wykrywa architekturę (x86_64 / arm64) i instaluje Go + esbuild jeśli brak
terminal — instalacja
# Klonuj i zainstaluj
$ git clone https://github.com/gekomod/nimbus
$ cd nimbus
$ sudo bash install.sh
✓ Go 1.22 OK
✓ esbuild zainstalowany
✓ bundle.js skompilowany (182KB gz)
✓ nimbus.service aktywny
✓ Panel dostępny: http://localhost:80
make targets
make all # JS (gzip) + Go binary
make dev # JSX z source mapami
make watch # tryb watch
make clean # usuń artefakty
Opcje instalatora
--port 8585
Uruchom panel na innym porcie niż domyślny 80. Przydatne gdy port 80 jest zajęty przez inny serwis.
--update
Aktualizacja istniejącej instalacji z automatycznym backupem konfiguracji do /var/backups/nimbus-TIMESTAMP/
--skip-build
Użyj gotowych skompilowanych plików (bundle.js.gz + binary) bez przebudowywania. Szybka reinstalacja.
Wymagania systemowe
Ubuntu 22.04+ / Debian 12+ · x86_64 lub arm64
Go 1.22+, esbuild (auto-install)
Opcjonalnie: zfsutils, docker.io, ufw, wireguard
Jak to działa pod spodem
Zero zewnętrznych zależności w backendzie (poza golang.org/x/crypto dla SSH)
Backend — Go 1.22
/api/dashboard — jeden endpoint zbiera dane z 14 handlerów równolegle przez sync.WaitGroup
statfs() z timeout 2s — zawieszone NFS z opcją "hard" w fstab nie blokuje odpowiedzi serwera
CPUPercent() z cache — background goroutine co 2s, HTTP zwraca natychmiast bez blokowania
Docker stats poller — zbiera dane w tle co 2s, zero blokowania przy zapytaniach HTTP
Reverse proxy — httputil.ReverseProxy jako middleware przed mux, trasy w pamięci
Frontend — React 18
React 18 UMD — bez node_modules, JSX kompilowany przez esbuild do bundle.js
bundle.js.gz — ~180KB vs 800KB bez kompresji, serwowany automatycznie z Cache-Control: max-age=3600
Polling co 5s — jeden request /api/dashboard zamiast 14 osobnych. Zdecydowanie mniej obciążenia sieci
SSE streaming — aktualizacje apt przez Server-Sent Events, live logi z journald
Web terminal — bash w przeglądarce, xterm.js zintegrowany bez zależności npm