services...

This commit is contained in:
plasmagoat 2025-07-30 00:22:33 +02:00
parent 73d2f44d74
commit 8552656731
15 changed files with 918 additions and 490 deletions

View file

@ -20,7 +20,7 @@ This documentation is automatically generated from your colmena flake configurat
## 🚀 Quick Actions
### View Current Status
\`\`\`bash
```bash
# Service status across fleet (if homelab CLI is available)
homelab services --global
@ -29,22 +29,22 @@ homelab backups --global
# Overall status
homelab status
\`\`\`
```
### Update Documentation
\`\`\`bash
```bash
# Regenerate all documentation
homelab-generate-docs ./docs
# Generate in different directory
homelab-generate-docs /path/to/output
\`\`\`
```
## 📋 Quick Stats
- **Total Nodes**: 2
- **Homelab-Enabled Nodes**: 2
- **Generated**: tir 29 jul 16:57:16 CEST 2025
- **Generated**: ons 30 jul 00:20:46 CEST 2025
## 🛠️ Management Tools

View file

@ -11,15 +11,15 @@
|--------|-------|
| Total Nodes | 2 |
| Homelab-Enabled Nodes | 2 |
| Unique Services | 1 |
| Service Instances | 1 |
| Unique Services | 4 |
| Service Instances | 4 |
## Node Status
| Node | Homelab | Environment | Services | Monitoring | Backups | Proxy |
|------|---------|-------------|----------|------------|---------|-------|
| `photos` | ✅ | production | 1 | ✅ | ❌ | ❌ |
| `sandbox` | ✅ | production | 0 | ✅ | ✅ | ❌ |
| `sandbox` | ✅ | production | 3 | ✅ | ✅ | ❌ |
---

View file

@ -26,7 +26,7 @@
| Node | Service Count | Services |
|------|---------------|----------|
| `photos` | 1 | minio |
| `sandbox` | 0 | |
| `sandbox` | 3 | gatus, grafana, prometheus |
---

View file

@ -61,10 +61,10 @@
| Service | Enabled | Port | Description | Tags |
|---------|---------|------|-------------|------|
| `gatus` | | 8080 | Gatus Status Page | |
| `grafana` | | 3000 | Grafana Metrics Dashboard | |
| `gatus` | | 8080 | Gatus Status Page | |
| `grafana` | | 3000 | Grafana Metrics Dashboard | |
| `minio` | ❌ | 9000 | minio | |
| `prometheus` | | 9090 | Prometheus Monitoring Server | |
| `prometheus` | | 9090 | Prometheus Monitoring Server | |
---

View file

@ -1,10 +1,13 @@
# Service Catalog
> Available services and their configuration options
> Complete service documentation with core options, feature integrations, and smart defaults
>
> Generated on: $(date)
This document catalogs all available homelab services, their configuration options, and integration capabilities.
This document provides comprehensive documentation for homelab services, organized by:
- **Core Service Options**: The main service configuration
- **Feature Integrations**: Available monitoring, logging, and proxy features
- **Service Defaults**: What this service configures by default for each feature
## Overview
@ -12,142 +15,252 @@ This document catalogs all available homelab services, their configuration optio
## Service Integration Matrix
| Service | Monitoring | Logging | Proxy | Auth Default |
|---------|------------|---------|-------|--------------|
| `gatus` | ❌ | ❌ | ❌ | 🌐 |
| `grafana` | ❌ | ❌ | ❌ | 🌐 |
| `minio` | ❌ | ❌ | ❌ | 🌐 |
| `prometheus` | ❌ | ❌ | ❌ | 🌐 |
| Service | Core Options | Monitoring | Logging | Proxy | Deployments |
|---------|--------------|------------|---------|-------|-------------|
| `gatus` | 11 | 📊 | 📝 | 🔀 | 1 |
| `grafana` | 3 | 📊 | 📝 | 🔀 | 1 |
| `minio` | 4 | ❌ | ❌ | ❌ | 1 |
| `prometheus` | 12 | 📊 | 📝 | 🔀 | 1 |
**Legend:** ✅ = Enabled by default, ❌ = Available but disabled, 🔒 = Auth required, 🌐 = Public access
**Legend:** 📊📝🔀 = Feature available, ❌ = Feature not available
## Service Reference
## Service Documentation
### gatus
**Description:** Gatus Status Page
**Deployment Status:** 1/2 nodes have this service enabled
**Default Port:** `8080`
#### Core Service Options
**Current Deployments:** 0 instance(s) on:
#### Default Integration Status
| Integration | Status | Default Configuration |
|-------------|--------|----------------------|
| 📊 Monitoring | ❌ Disabled | Available but requires `monitoring.enable = true` |
| 📝 Logging | ❌ Disabled | Available but requires `logging.enable = true` |
| 🔀 Proxy | ❌ Disabled | Available but requires `proxy.enable = true` |
#### Core Configuration
The main configuration options for gatus:
```nix
homelab.services.gatus = {
enable = true;
port = 8080;
description = "Gatus Status Page";
# Default integrations (adjust as needed)
# monitoring.enable = true; # ❌ Disabled by default
# logging.enable = true; # ❌ Disabled by default
# proxy.enable = true; # ❌ Disabled by default
alerting = {}; # Gatus alerting configuration
description = Gatus Status Page; # No description
enable = false; # Whether to enable Gatus Status Page.
extraConfig = {}; # Additional Gatus configuration options
port = 8080; # No description
storage = {
"type": "memory"
}; # Gatus storage configuration
ui.buttons = [
{
"link": "https://grafana.procopius.dk",
"name": "Grafana"
},
{
"link": "https://prometheus.procopius.dk",
"name": "Prometheus"
}
]; # Navigation buttons in the Gatus interface
ui.header = Homelab Services Status; # Header text for the Gatus interface
ui.link = https://status.procopius.dk; # Link in the Gatus header
ui.title = Homelab Status; # Title for the Gatus web interface
web.address = 0.0.0.0; # Web interface bind address
};
```
#### Service-Specific Options
#### Feature Integrations
Available configuration options for gatus:
##### 📊 Monitoring Integration
Available monitoring options:
```nix
homelab.services.gatus = {
# ... core options above ...
# Service-specific configuration
alerting = {};
extraConfig = {};
storage = {"type":"memory"};
ui = {"buttons":[{"link":"https://grafana.procopius.dk","name":"Grafana"},{"link":"https://prometheus.procopius.dk","name":"Prometheus"}],"header":"Homelab Services Status","link":"https://status.procopius.dk","title":"Homelab Status"};
web = {"address":"0.0.0.0"};
monitoring.enable = true; # Enable monitoring for gatus
monitoring.extraLabels = {}; # No description
monitoring.healthCheck.conditions = [
"[STATUS] == 200"
]; # Health check conditions. Setting conditions enables health checks.
monitoring.healthCheck.enable = true; # No description
monitoring.healthCheck.extraChecks = []; # Additional health checks. Adding checks enables health monitoring.
# monitoring.healthCheck.path = <null or string>; # Health check endpoint path. Setting this enables health checks.
monitoring.metrics.enable = false; # No description
monitoring.metrics.extraEndpoints = []; # Additional metrics endpoints. Adding endpoints enables metrics collection.
# monitoring.metrics.path = <null or string>; # Metrics endpoint path. Setting this enables metrics collection.
};
```
**gatus sets these monitoring defaults:**
```nix
enable = true;
extraLabels = {};
healthCheck = {"conditions":["[STATUS] == 200"],"enable":true,"extraChecks":[],"path":null};
metrics = {"enable":false,"extraEndpoints":[],"path":null};
```
##### 📝 Logging Integration
Available logging options:
```nix
homelab.services.gatus = {
# ... core options above ...
logging.enable = false; # Enable logging for gatus
logging.extraLabels = {}; # No description
logging.extraSources = []; # No description
logging.files = []; # No description
# logging.multiline = <null or (submodule)>; # No description
logging.parsing.extractFields = []; # No description
# logging.parsing.regex = <null or string>; # No description
};
```
**gatus sets these logging defaults:**
```nix
enable = false;
extraLabels = {};
extraSources = [];
files = [];
multiline = null;
parsing = {"extractFields":[],"regex":null};
```
##### 🔀 Proxy Integration
Available proxy options:
```nix
homelab.services.gatus = {
# ... core options above ...
proxy.additionalSubdomains = []; # No description
proxy.enable = true; # Enable reverse proxy for gatus
proxy.enableAuth = false; # No description
proxy.subdomain = gatus; # No description
};
```
**gatus sets these proxy defaults:**
```nix
additionalSubdomains = [];
enable = true;
enableAuth = false;
subdomain = gatus;
```
---
### grafana
**Description:** Grafana Metrics Dashboard
**Deployment Status:** 1/2 nodes have this service enabled
**Default Port:** `3000`
#### Core Service Options
**Current Deployments:** 0 instance(s) on:
#### Default Integration Status
| Integration | Status | Default Configuration |
|-------------|--------|----------------------|
| 📊 Monitoring | ❌ Disabled | Available but requires `monitoring.enable = true` |
| 📝 Logging | ❌ Disabled | Available but requires `logging.enable = true` |
| 🔀 Proxy | ❌ Disabled | Available but requires `proxy.enable = true` |
#### Core Configuration
The main configuration options for grafana:
```nix
homelab.services.grafana = {
enable = true;
port = 3000;
description = "Grafana Metrics Dashboard";
# Default integrations (adjust as needed)
# monitoring.enable = true; # ❌ Disabled by default
# logging.enable = true; # ❌ Disabled by default
# proxy.enable = true; # ❌ Disabled by default
description = Grafana Metrics Dashboard; # No description
enable = false; # Whether to enable Grafana Dashboard.
port = 3000; # No description
};
```
#### Feature Integrations
##### 📊 Monitoring Integration
Available monitoring options:
```nix
homelab.services.grafana = {
# ... core options above ...
monitoring.enable = true; # Enable monitoring for grafana
monitoring.extraLabels = {}; # No description
monitoring.healthCheck.conditions = [
"[STATUS] == 200"
]; # Health check conditions. Setting conditions enables health checks.
monitoring.healthCheck.enable = true; # No description
monitoring.healthCheck.extraChecks = []; # Additional health checks. Adding checks enables health monitoring.
# monitoring.healthCheck.path = <null or string>; # Health check endpoint path. Setting this enables health checks.
monitoring.metrics.enable = false; # No description
monitoring.metrics.extraEndpoints = []; # Additional metrics endpoints. Adding endpoints enables metrics collection.
# monitoring.metrics.path = <null or string>; # Metrics endpoint path. Setting this enables metrics collection.
};
```
**grafana sets these monitoring defaults:**
```nix
enable = true;
extraLabels = {};
healthCheck = {"conditions":["[STATUS] == 200"],"enable":true,"extraChecks":[],"path":null};
metrics = {"enable":false,"extraEndpoints":[],"path":null};
```
##### 📝 Logging Integration
Available logging options:
```nix
homelab.services.grafana = {
# ... core options above ...
logging.enable = false; # Enable logging for grafana
logging.extraLabels = {}; # No description
logging.extraSources = []; # No description
logging.files = []; # No description
# logging.multiline = <null or (submodule)>; # No description
logging.parsing.extractFields = []; # No description
# logging.parsing.regex = <null or string>; # No description
};
```
**grafana sets these logging defaults:**
```nix
enable = false;
extraLabels = {};
extraSources = [];
files = [];
multiline = null;
parsing = {"extractFields":[],"regex":null};
```
##### 🔀 Proxy Integration
Available proxy options:
```nix
homelab.services.grafana = {
# ... core options above ...
proxy.additionalSubdomains = []; # No description
proxy.enable = true; # Enable reverse proxy for grafana
proxy.enableAuth = false; # No description
proxy.subdomain = grafana; # No description
};
```
**grafana sets these proxy defaults:**
```nix
additionalSubdomains = [];
enable = true;
enableAuth = false;
subdomain = grafana;
```
---
### minio
**Description:** minio
**Deployment Status:** 1/2 nodes have this service enabled
**Default Port:** `9000`
#### Core Service Options
**Current Deployments:** 1 instance(s) on: photos
#### Default Integration Status
| Integration | Status | Default Configuration |
|-------------|--------|----------------------|
| 📊 Monitoring | ❌ Disabled | Available but requires `monitoring.enable = true` |
| 📝 Logging | ❌ Disabled | Available but requires `logging.enable = true` |
| 🔀 Proxy | ❌ Disabled | Available but requires `proxy.enable = true` |
#### Core Configuration
The main configuration options for minio:
```nix
homelab.services.minio = {
enable = true;
port = 9000;
description = "minio";
# Default integrations (adjust as needed)
# monitoring.enable = true; # ❌ Disabled by default
# logging.enable = true; # ❌ Disabled by default
# proxy.enable = true; # ❌ Disabled by default
};
```
#### Service-Specific Options
Available configuration options for minio:
```nix
homelab.services.minio = {
# ... core options above ...
# Service-specific configuration
openFirewall = true;
webPort = 9001;
enable = false; # Whether to enable Minio Object Storage.
openFirewall = true; # Whether to open the ports specified in `port` and `webPort` in the firewall.
port = 9000; # Port of the server.
webPort = 9001; # Port of the web UI (console).
};
```
@ -155,75 +268,132 @@ homelab.services.minio = {
### prometheus
**Description:** Prometheus Monitoring Server
**Deployment Status:** 1/2 nodes have this service enabled
**Default Port:** `9090`
#### Core Service Options
**Current Deployments:** 0 instance(s) on:
#### Default Integration Status
| Integration | Status | Default Configuration |
|-------------|--------|----------------------|
| 📊 Monitoring | ❌ Disabled | Available but requires `monitoring.enable = true` |
| 📝 Logging | ❌ Disabled | Available but requires `logging.enable = true` |
| 🔀 Proxy | ❌ Disabled | Available but requires `proxy.enable = true` |
#### Core Configuration
The main configuration options for prometheus:
```nix
homelab.services.prometheus = {
enable = true;
port = 9090;
description = "Prometheus Monitoring Server";
# Default integrations (adjust as needed)
# monitoring.enable = true; # ❌ Disabled by default
# logging.enable = true; # ❌ Disabled by default
# proxy.enable = true; # ❌ Disabled by default
alertmanager.enable = true; # Enable integration with Alertmanager
alertmanager.url = alertmanager.lab:9093; # Alertmanager URL
description = Prometheus Monitoring Server; # No description
enable = false; # Whether to enable Prometheus Monitoring Server.
extraAlertingRules = []; # Additional alerting rules
extraFlags = []; # Extra command line flags
extraScrapeConfigs = []; # Additional scrape configurations
globalConfig = {
"evaluation_interval": "15s",
"scrape_interval": "15s"
}; # Global Prometheus configuration
port = 9090; # No description
retention = 15d; # How long to retain metrics data
ruleFiles = []; # Additional rule files to load
systemdServices = [
"prometheus.service",
"prometheus"
]; # Systemd services to monitor
};
```
#### Service-Specific Options
#### Feature Integrations
Available configuration options for prometheus:
##### 📊 Monitoring Integration
Available monitoring options:
```nix
homelab.services.prometheus = {
# ... core options above ...
# Service-specific configuration
alertmanager = {"enable":true,"url":"alertmanager.lab:9093"};
extraAlertingRules = [];
extraFlags = [];
extraScrapeConfigs = [];
globalConfig = {"evaluation_interval":"15s","scrape_interval":"15s"};
retention = 15d;
ruleFiles = [];
systemdServices = ["prometheus.service","prometheus"];
monitoring.enable = true; # Enable monitoring for prometheus
monitoring.extraLabels = {}; # No description
monitoring.healthCheck.conditions = [
"[STATUS] == 200"
]; # Health check conditions. Setting conditions enables health checks.
monitoring.healthCheck.enable = true; # No description
monitoring.healthCheck.extraChecks = []; # Additional health checks. Adding checks enables health monitoring.
# monitoring.healthCheck.path = <null or string>; # Health check endpoint path. Setting this enables health checks.
monitoring.metrics.enable = false; # No description
monitoring.metrics.extraEndpoints = []; # Additional metrics endpoints. Adding endpoints enables metrics collection.
# monitoring.metrics.path = <null or string>; # Metrics endpoint path. Setting this enables metrics collection.
};
```
**prometheus sets these monitoring defaults:**
```nix
enable = true;
extraLabels = {};
healthCheck = {"conditions":["[STATUS] == 200"],"enable":true,"extraChecks":[],"path":null};
metrics = {"enable":false,"extraEndpoints":[],"path":null};
```
##### 📝 Logging Integration
Available logging options:
```nix
homelab.services.prometheus = {
# ... core options above ...
logging.enable = false; # Enable logging for prometheus
logging.extraLabels = {}; # No description
logging.extraSources = []; # No description
logging.files = []; # No description
# logging.multiline = <null or (submodule)>; # No description
logging.parsing.extractFields = []; # No description
# logging.parsing.regex = <null or string>; # No description
};
```
**prometheus sets these logging defaults:**
```nix
enable = false;
extraLabels = {};
extraSources = [];
files = [];
multiline = null;
parsing = {"extractFields":[],"regex":null};
```
##### 🔀 Proxy Integration
Available proxy options:
```nix
homelab.services.prometheus = {
# ... core options above ...
proxy.additionalSubdomains = []; # No description
proxy.enable = true; # Enable reverse proxy for prometheus
proxy.enableAuth = false; # No description
proxy.subdomain = prometheus; # No description
};
```
**prometheus sets these proxy defaults:**
```nix
additionalSubdomains = [];
enable = true;
enableAuth = false;
subdomain = prometheus;
```
---
## Integration Summary
## Feature Reference
### Available Integration Types
### Integration Features
| Integration | Purpose | Default Behavior | Configuration |
|-------------|---------|------------------|---------------|
| **📊 Monitoring** | Prometheus metrics + health checks | Service-dependent | `monitoring.enable = true` |
| **📝 Logging** | Centralized log collection | Service-dependent | `logging.enable = true` |
| **🔀 Proxy** | Reverse proxy with SSL + auth | Service-dependent | `proxy.enable = true` |
Homelab services can integrate with three main features:
### Integration Benefits
- **📊 Monitoring**: Prometheus metrics and health checks
- **📝 Logging**: Centralized log collection with Promtail/Loki
- **🔀 Proxy**: Reverse proxy with SSL and authentication
- **🔄 Automatic Discovery:** Enabled integrations are automatically discovered by fleet-wide services
- **📊 Unified Monitoring:** All metrics and health checks appear in Prometheus/Grafana
- **📝 Centralized Logging:** All logs are collected and indexed in Loki
- **🌐 Consistent Access:** All services get consistent subdomain access with SSL
- **🎯 Smart Defaults:** Each service comes with sensible default configurations
Each service can import these features and set service-specific defaults.
---
*This service catalog is generated from actual service configurations across your homelab fleet.*
*This documentation is generated from actual NixOS module evaluations.*