GitHunt
TU

Turbootzz/Nimbus

Open-source customizable homelab dashboard

☁️ Nimbus

Your Homelab, Beautifully Organized

License: AGPL v3
Go Version
Next.js
Docker

A modern, self-hosted dashboard for monitoring and managing your homelab services.
Multi-user support, real-time health checks, beautiful themes, and Prometheus metrics.


Nimbus Dashboard

Quick Start · Features · Configuration · Contributing


✨ Features

🔐 Authentication & Security

  • Local accounts with JWT
  • OAuth2 (Google, GitHub, Discord)
  • Role-based access control
  • Admin panel for user management

📊 Service Monitoring

  • Real-time health checks
  • Response time tracking
  • Smart self-signed cert handling
  • Status history & uptime graphs

🎨 Personalization

  • Custom backgrounds per user
  • Light/dark mode toggle
  • Accent color themes
  • Drag & drop service tiles

📈 Metrics & Integration

  • Configurable check intervals
  • Prometheus metrics export
  • Mobile responsive design

🚀 Quick Start

Deploy Nimbus in under 30 seconds with Docker. Zero configuration required!

1. Create docker-compose.yml

mkdir nimbus && cd nimbus
curl -O https://raw.githubusercontent.com/Turbootzz/Nimbus/main/docker-compose.yml

Or create it manually:

docker-compose.yml
services:
  db:
    image: turboot/nimbus-postgres:18
    container_name: nimbus-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: nimbus
      POSTGRES_USER: nimbus
      POSTGRES_PASSWORD: ${DB_PASSWORD:-nimbus-default-password}
      PGDATA: /var/lib/postgresql/data
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U nimbus -d nimbus"]
      interval: 10s
      timeout: 5s
      retries: 5

  nimbus:
    image: turboot/nimbus:latest
    container_name: nimbus
    restart: unless-stopped
    environment:
      DB_PASSWORD: ${DB_PASSWORD:-nimbus-default-password}
      JWT_SECRET: ${JWT_SECRET:-}
    volumes:
      - uploads_data:/app/backend/uploads
    ports:
      - "3000:3000"
    depends_on:
      db:
        condition: service_healthy

volumes:
  postgres_data:
  uploads_data:

2. Start Nimbus

docker-compose up -d

3. Open your browser

Navigate to http://localhost:3000 and create your first account!

Note: Secrets are auto-generated on first run. For production, see Configuration to set custom passwords.

Upgrading from separate container images? See our Migration Guide for step-by-step instructions. PostgreSQL data migrates automatically!


⚙️ Configuration

Nimbus uses convention over configuration — sensible defaults are applied automatically.

Variable Default Description
DB_PASSWORD nimbus-default-password PostgreSQL password
JWT_SECRET auto-generated Auth secret (persisted in volume)
DB_HOST db Database hostname
DB_PORT 5432 Database port
DB_USER nimbus Database username
DB_NAME nimbus Database name

For production, set custom secrets in a .env file:

DB_PASSWORD=your-secure-password
JWT_SECRET=your-32-char-secret

Need OAuth, Prometheus, or custom domains? See the Advanced Configuration Guide.

Advanced: Separate Container Deployment

For users who prefer separate frontend/backend containers (e.g., for custom reverse proxy setups), use docker-compose.deprecated.yml:

docker-compose -f docker-compose.deprecated.yml up -d

This requires configuring CORS_ORIGINS and NEXT_PUBLIC_API_URL manually.


☁️ Don't want to self-host?

Nimbus Cloud is a managed hosting option for €5/month — same Nimbus, zero setup.

  • No Docker, no server — just sign up and go
  • Automatic SSL certificates & updates
  • Your own subdomain (you.nimbusapp.dev)
  • All features included, same as self-hosted

Nimbus is and will always be free and open source. Nimbus Cloud is simply for those who prefer a hosted solution.

Get Started →


💻 Local Development

Prerequisites

  • Node.js 24+ / Go 1.25+ / PostgreSQL

Quick Start

# Clone and setup
git clone https://github.com/Turbootzz/Nimbus.git
cd nimbus
make setup

# Create 'nimbus' database in PostgreSQL
# Update .env with your credentials

# Start development
make dev-backend    # Terminal 1
make dev-frontend   # Terminal 2

Run make help for all available commands.


🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📚 Documentation

Document Description
Configuration Guide All environment variables, OAuth setup, Prometheus
README.md Information about Nimbus
DEVELOPMENT.md 5-minute development setup

📋 Roadmap

  • JWT & OAuth2 authentication
  • Real-time health monitoring
  • User themes & customization
  • Admin panel & RBAC
  • Prometheus metrics export
  • Mobile responsive design
  • Service groups
  • Card resizing & dashboard scaling
  • List view mode
  • Custom service icons (image uploads)
  • Uptime webhook notifications
  • Optional landing page
  • Zero-config Docker deployment
  • Widget/plugin system
  • PWA support

📄 License

GNU Affero General Public License v3


Inspired by Dashy, Homarr, and Homer

Made for the homelab community

Turbootzz/Nimbus | GitHunt