☁️ Nimbus
May 11, 2026 · View on GitHub
☁️ Nimbus
Your Homelab, Beautifully Organized
A modern, self-hosted dashboard for monitoring and managing your homelab services. Multi-user support, real-time health checks, beautiful themes, and Prometheus metrics.
✨ Features
|
🔐 Authentication & Security
📊 Service Monitoring
|
🎨 Personalization
📈 Metrics & Integration
|
🚀 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.
💻 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
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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
🎨 Icon attributions
When you click "Auto-fetch icon", Nimbus may download an SVG from the following open-source icon collection via the jsDelivr CDN. The icon is cached in your uploads/service-icons/ volume; the origin is never re-fetched for rendering.
- Dashboard Icons — Apache License 2.0
You can point the curated lookup at a self-hosted mirror or disable it entirely with the DASHBOARD_ICONS_BASE_URL env var (see .env.example).
📄 License
GNU Affero General Public License v3