feat: Initial stacks for testing
Added first test stacks:
- monitoring/prometheus
- monitoring/grafana
- monitoring/node-exporter
- communication/gotify
- communication/vaultwarden
All stacks:
- Use localhost ports only (for Caddy reverse proxy)
- Support Komodo Secrets via ${SECRET:secret-name}
- Include README with Caddy integration instructions
- Ready for Komodo v2 Resource Sync
This commit is contained in:
commit
f9fdea3a1f
11 changed files with 663 additions and 0 deletions
70
stacks/communication/gotify/README.md
Normal file
70
stacks/communication/gotify/README.md
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
# Gotify
|
||||
|
||||
📱 **Push-Benachrichtigungen selbst gehostet**
|
||||
|
||||
Gotify ist ein einfacher Server zum Senden und Empfangen von Push-Nachrichten.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
1. **In Komodo:** Stack auswählen → Deploy
|
||||
2. **Server wählen** wo Gotify laufen soll
|
||||
3. **Warten** bis Container läuft
|
||||
4. **Caddy Config** hinzufügen (siehe unten)
|
||||
5. **Öffnen** und Admin-Account erstellen
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Caddy Integration
|
||||
|
||||
Nach dem Deployen auf dem Server:
|
||||
|
||||
```bash
|
||||
ssh <server>
|
||||
sudo nano /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
Hinzufügen:
|
||||
```caddyfile
|
||||
gotify.example.com {
|
||||
reverse_proxy localhost:9091
|
||||
}
|
||||
```
|
||||
|
||||
Dann:
|
||||
```bash
|
||||
sudo systemctl reload caddy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Secrets (Komodo)
|
||||
|
||||
Folgende Secrets in Komodo anlegen **vor** dem Deployen:
|
||||
|
||||
| Secret Name | Beschreibung | Beispiel |
|
||||
|-------------|--------------|----------|
|
||||
| `gotify-admin-user` | Admin Username | `admin` |
|
||||
| `gotify-admin-pass` | Admin Password | `sicheres-passwort` |
|
||||
|
||||
In Komodo: **Settings → Secrets → Add Secret**
|
||||
|
||||
---
|
||||
|
||||
## 📁 Files
|
||||
|
||||
- `compose.yml` - Docker Compose Konfiguration
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
Gotify wird automatisch aktuell gehalten durch Komodo.
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Docs:** https://gotify.net/docs
|
||||
- **GitHub:** https://github.com/gotify/server
|
||||
27
stacks/communication/gotify/compose.yml
Normal file
27
stacks/communication/gotify/compose.yml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
services:
|
||||
gotify:
|
||||
image: gotify/server:latest
|
||||
container_name: gotify
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:9091:80"
|
||||
volumes:
|
||||
- gotify_data:/app/data
|
||||
environment:
|
||||
- GOTIFY_DEFAULTUSER_NAME=${SECRET:gotify-admin-user}
|
||||
- GOTIFY_DEFAULTUSER_PASS=${SECRET:gotify-admin-pass}
|
||||
networks:
|
||||
- gotify-network
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
volumes:
|
||||
gotify_data:
|
||||
|
||||
networks:
|
||||
gotify-network:
|
||||
driver: bridge
|
||||
67
stacks/communication/vaultwarden/README.md
Normal file
67
stacks/communication/vaultwarden/README.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# Vaultwarden
|
||||
|
||||
🔐 **Password Manager (Bitwarden-kompatibel)**
|
||||
|
||||
Vaultwarden ist eine inoffizielle Bitwarden API-Implementierung in Rust.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
1. **In Komodo:** Stack auswählen → Deploy
|
||||
2. **Server wählen**
|
||||
3. **Warten** bis Container läuft
|
||||
4. **Caddy Config** hinzufügen
|
||||
5. **Öffnen** und Organization erstellen
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Caddy Integration
|
||||
|
||||
```bash
|
||||
ssh <server>
|
||||
sudo nano /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
Hinzufügen:
|
||||
```caddyfile
|
||||
vault.example.com {
|
||||
reverse_proxy localhost:8080
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl reload caddy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Secrets (Komodo)
|
||||
|
||||
| Secret Name | Beschreibung | Beispiel |
|
||||
|-------------|--------------|----------|
|
||||
| `vaultwarden-admin-token` | Admin API Token | `zufälliger-string` |
|
||||
|
||||
**Wichtig:** Admin-Token generieren mit:
|
||||
```bash
|
||||
openssl rand -base64 48
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Files
|
||||
|
||||
- `compose.yml` - Docker Compose Konfiguration
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
Vaultwarden wird automatisch aktuell gehalten durch Komodo.
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Docs:** https://github.com/dani-garcia/vaultwarden
|
||||
- **Wiki:** https://github.com/dani-garcia/vaultwarden/wiki
|
||||
28
stacks/communication/vaultwarden/compose.yml
Normal file
28
stacks/communication/vaultwarden/compose.yml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
services:
|
||||
vaultwarden:
|
||||
image: vaultwarden/server:latest
|
||||
container_name: vaultwarden
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8080:80"
|
||||
volumes:
|
||||
- vaultwarden_data:/data
|
||||
environment:
|
||||
- ADMIN_TOKEN=${SECRET:vaultwarden-admin-token}
|
||||
- WEBSOCKET_ENABLED=true
|
||||
- SIGNUPS_ALLOWED=false
|
||||
networks:
|
||||
- vaultwarden-network
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/alive"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
volumes:
|
||||
vaultwarden_data:
|
||||
|
||||
networks:
|
||||
vaultwarden-network:
|
||||
driver: bridge
|
||||
74
stacks/monitoring/grafana/README.md
Normal file
74
stacks/monitoring/grafana/README.md
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# Grafana
|
||||
|
||||
📊 **Dashboards & Visualisierung**
|
||||
|
||||
Grafana ist eine Open-Source-Plattform für Datenvisualisierung.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
1. **In Komodo:** Stack auswählen → Deploy
|
||||
2. **Server wählen**
|
||||
3. **Warten** bis Container läuft
|
||||
4. **Caddy Config** hinzufügen
|
||||
5. **Öffnen** und einloggen (admin/admin)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Caddy Integration
|
||||
|
||||
```bash
|
||||
ssh <server>
|
||||
sudo nano /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
Hinzufügen:
|
||||
```caddyfile
|
||||
grafana.example.com {
|
||||
reverse_proxy localhost:3000
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl reload caddy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Secrets (Komodo)
|
||||
|
||||
| Secret Name | Beschreibung | Beispiel |
|
||||
|-------------|--------------|----------|
|
||||
| `grafana-admin-user` | Admin Username | `admin` |
|
||||
| `grafana-admin-pass` | Admin Password | `sicheres-passwort` |
|
||||
|
||||
---
|
||||
|
||||
## 📁 Files
|
||||
|
||||
- `compose.yml` - Docker Compose Konfiguration
|
||||
|
||||
---
|
||||
|
||||
## 📊 Datenquellen
|
||||
|
||||
Nach dem ersten Login:
|
||||
1. **Configuration → Data Sources**
|
||||
2. **Add data source**
|
||||
3. **Prometheus** auswählen
|
||||
4. URL: `http://prometheus:9090` (wenn auf gleichem Server: `http://localhost:9090`)
|
||||
5. **Save & Test**
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
Wird automatisch aktuell gehalten durch Komodo.
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Docs:** https://grafana.com/docs
|
||||
- **GitHub:** https://github.com/grafana/grafana
|
||||
30
stacks/monitoring/grafana/compose.yml
Normal file
30
stacks/monitoring/grafana/compose.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
services:
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:3000:3000"
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
- grafana_config:/etc/grafana
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=${SECRET:grafana-admin-user}
|
||||
- GF_SECURITY_ADMIN_PASSWORD=${SECRET:grafana-admin-pass}
|
||||
- GF_USERS_ALLOW_SIGN_UP=false
|
||||
networks:
|
||||
- monitoring
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget --spider -q http://localhost:3000/api/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
volumes:
|
||||
grafana_data:
|
||||
grafana_config:
|
||||
|
||||
networks:
|
||||
monitoring:
|
||||
driver: bridge
|
||||
63
stacks/monitoring/node-exporter/README.md
Normal file
63
stacks/monitoring/node-exporter/README.md
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# Node Exporter
|
||||
|
||||
📈 **System-Metriken für Prometheus**
|
||||
|
||||
Node Exporter sammelt Hardware- und Betriebssystem-Metriken.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
1. **In Komodo:** Stack auswählen → Deploy
|
||||
2. **Server wählen** (wo Prometheus läuft)
|
||||
3. **Warten** bis Container läuft
|
||||
4. **In Prometheus** als Target hinzufügen
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Prometheus Integration
|
||||
|
||||
In Prometheus Config (`prometheus.yml`):
|
||||
|
||||
```yaml
|
||||
scrape_configs:
|
||||
- job_name: 'node-exporter'
|
||||
static_configs:
|
||||
- targets: ['localhost:9100']
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Secrets
|
||||
|
||||
Keine Secrets erforderlich.
|
||||
|
||||
---
|
||||
|
||||
## 📁 Files
|
||||
|
||||
- `compose.yml` - Docker Compose Konfiguration
|
||||
|
||||
---
|
||||
|
||||
## 📊 Metriken
|
||||
|
||||
Node Exporter exposed Metriken auf Port 9100:
|
||||
- CPU Usage
|
||||
- Memory Usage
|
||||
- Disk I/O
|
||||
- Network I/O
|
||||
- System Load
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
Wird automatisch aktuell gehalten durch Komodo.
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **GitHub:** https://github.com/prometheus/node_exporter
|
||||
- **Docs:** https://prometheus.io/docs/guides/node-exporter/
|
||||
28
stacks/monitoring/node-exporter/compose.yml
Normal file
28
stacks/monitoring/node-exporter/compose.yml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
services:
|
||||
node-exporter:
|
||||
image: prom/node-exporter:latest
|
||||
container_name: node-exporter
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:9100:9100"
|
||||
volumes:
|
||||
- /proc:/host/proc:ro
|
||||
- /sys:/host/sys:ro
|
||||
- /:/rootfs:ro
|
||||
command:
|
||||
- '--path.procfs=/host/proc'
|
||||
- '--path.sysfs=/host/sys'
|
||||
- '--path.rootfs=/rootfs'
|
||||
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
|
||||
networks:
|
||||
- monitoring
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:9100/metrics"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
networks:
|
||||
monitoring:
|
||||
driver: bridge
|
||||
69
stacks/monitoring/prometheus/README.md
Normal file
69
stacks/monitoring/prometheus/README.md
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# Prometheus
|
||||
|
||||
📊 **Monitoring & Alerting**
|
||||
|
||||
Prometheus ist ein Open-Source-Monitoring- und Alerting-System.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
1. **In Komodo:** Stack auswählen → Deploy
|
||||
2. **Server wählen**
|
||||
3. **Warten** bis Container läuft
|
||||
4. **Caddy Config** hinzufügen
|
||||
5. **Öffnen** unter `prometheus.example.com`
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Caddy Integration
|
||||
|
||||
```bash
|
||||
ssh <server>
|
||||
sudo nano /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
Hinzufügen:
|
||||
```caddyfile
|
||||
prometheus.example.com {
|
||||
reverse_proxy localhost:9090
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl reload caddy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Secrets (Komodo)
|
||||
|
||||
Keine Secrets erforderlich für Basis-Installation.
|
||||
|
||||
---
|
||||
|
||||
## 📁 Files
|
||||
|
||||
- `compose.yml` - Docker Compose Konfiguration
|
||||
|
||||
---
|
||||
|
||||
## 📊 Prometheus UI
|
||||
|
||||
- **URL:** http://localhost:9090
|
||||
- **Query Browser:** `/graph`
|
||||
- **Alerts:** `/alerts`
|
||||
- **Targets:** `/targets`
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
Prometheus wird automatisch aktuell gehalten durch Komodo.
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Docs:** https://prometheus.io/docs
|
||||
- **GitHub:** https://github.com/prometheus/prometheus
|
||||
32
stacks/monitoring/prometheus/compose.yml
Normal file
32
stacks/monitoring/prometheus/compose.yml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:9090:9090"
|
||||
volumes:
|
||||
- prometheus_data:/prometheus
|
||||
- prometheus_config:/etc/prometheus
|
||||
command:
|
||||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||
- '--storage.tsdb.path=/prometheus'
|
||||
- '--storage.tsdb.retention.time=15d'
|
||||
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||||
- '--web.console.templates=/etc/prometheus/consoles'
|
||||
networks:
|
||||
- monitoring
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:9090/-/healthy"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
volumes:
|
||||
prometheus_data:
|
||||
prometheus_config:
|
||||
|
||||
networks:
|
||||
monitoring:
|
||||
driver: bridge
|
||||
Loading…
Add table
Add a link
Reference in a new issue