feat: Restructure to subdirectories with compose.yml

Each stack now has its own directory with standard compose.yml:
- stacks/gotify/compose.yml
- stacks/prometheus/compose.yml
- stacks/grafana/compose.yml
- stacks/vaultwarden/compose.yml
- stacks/node-exporter/compose.yml

Benefits:
- Cleaner structure
- Easier to maintain
- Works with Komodo manual stack creation
- README.md for each stack with deployment info

Usage in Komodo:
1. Stacks → Add Stack
2. Source: Git Repo (nocci/komodo-stacks)
3. Path: stacks/<stack-name>/ (the folder!)
4. Deploy to server
This commit is contained in:
nocci 2026-03-09 19:51:35 +00:00
parent f0bcf8c70c
commit b37541bb7a
16 changed files with 155 additions and 233 deletions

168
README.md
View file

@ -1,8 +1,6 @@
# Komodo Stacks
🦎 **Docker Compose Stacks für Komodo Platform**
Diese Stacks sind für den Einsatz mit **Komodo Core v2** optimiert.
🦎 Docker Compose Stacks für Komodo Platform
---
@ -10,56 +8,73 @@ Diese Stacks sind für den Einsatz mit **Komodo Core v2** optimiert.
```
komodo-stacks/
├── stacks/
│ ├── monitoring/ # Prometheus, Grafana, Node Exporter
│ ├── communication/ # Vaultwarden, Gotify, Ntfy
│ ├── collaboration/ # Nextcloud, Forgejo, WordPress
│ ├── media/ # Immich, Jellyfin, Plex
│ ├── infrastructure/ # WireGuard, Portainer
│ ├── security/ # Authentik, Tinyauth
│ ├── social/ # GoToSocial, Sharkey
│ ├── gaming/ # Pterodactyl
│ ├── utilities/ # SearXNG, Plausible
│ └── backup/ # Backrest, Karakeep
└── README.md
└── stacks/
├── gotify/
│ ├── compose.yml
│ └── README.md
├── prometheus/
│ ├── compose.yml
│ └── README.md
├── grafana/
│ ├── compose.yml
│ └── README.md
├── vaultwarden/
│ ├── compose.yml
│ └── README.md
└── node-exporter/
├── compose.yml
└── README.md
```
---
## 🚀 Verwendung in Komodo
1. **Settings → Resources → Add Resource**
2. **Git URL:** `https://git.sky-net.it/nocci/komodo-stacks.git`
3. **Path:** `stacks/`
4. **Sync** klicken
### Manuelle Stack-Erstellung (empfohlen):
1. **Stacks → Add Stack**
2. **Name:** `gotify` (oder anderer Stack-Name)
3. **Quelle:** Git Repository
4. **Repo:** `nocci/komodo-stacks`
5. **Pfad:** `stacks/gotify/` (der Ordner!)
6. **Deploy** auf gewünschtem Server
### Für jeden Stack:
| Stack | Pfad |
|-------|------|
| Gotify | `stacks/gotify/` |
| Prometheus | `stacks/prometheus/` |
| Grafana | `stacks/grafana/` |
| Vaultwarden | `stacks/vaultwarden/` |
| Node Exporter | `stacks/node-exporter/` |
---
## 📋 Stacks deployen
## 🔐 Secrets
1. **Ressources** im Komodo Dashboard öffnen
2. **Stack auswählen**
3. **Server wählen** (wo Periphery läuft)
4. **Deploy** klicken
5. **Warten** bis Container laufen
Secrets werden in Komodo verwaltet:
1. **Settings → Secrets**
2. **Add Secret**
3. **Name und Wert** eingeben
4. **Beim Stack-Deploy** auswählen
---
## 🔧 Caddy Integration
## 🌐 Caddy Integration
**WICHTIG:** Stacks hören nur auf `localhost:PORT`!
Nach dem Deployen, Caddy Config auf dem Server bearbeiten:
Jeder Stack hört auf `localhost:PORT`. Caddy Config auf dem Server bearbeiten:
```bash
ssh <server>
sudo nano /etc/caddy/Caddyfile
```
Beispiel für Prometheus:
Beispiel für Gotify:
```caddyfile
prometheus.example.com {
reverse_proxy localhost:9090
gotify.example.com {
reverse_proxy localhost:9091
}
```
@ -70,99 +85,24 @@ sudo systemctl reload caddy
---
## 🔐 Secrets
Secrets werden über **Komodo Secrets** verwaltet.
Im `compose.yml`:
```yaml
environment:
- ADMIN_PASSWORD=${SECRET:my-admin-password}
```
In Komodo:
1. **Settings → Secrets**
2. **Add Secret**
3. Name: `my-admin-password`
4. Wert: sicheres Passwort
---
## 📦 Verfügbare Stacks
### Monitoring
- [prometheus](stacks/monitoring/prometheus/) - Prometheus Monitoring
- [grafana](stacks/monitoring/grafana/) - Grafana Dashboards
- [node-exporter](stacks/monitoring/node-exporter/) - System Metrics
- [promtail](stacks/monitoring/promtail/) - Log Collector
- [loki](stacks/monitoring/loki/) - Log Aggregation
- **prometheus** - Monitoring & Alerting
- **grafana** - Dashboards & Visualisierung
- **node-exporter** - System-Metriken
### Communication
- [vaultwarden](stacks/communication/vaultwarden/) - Password Manager
- [gotify](stacks/communication/gotify/) - Push Notifications
- [ntfy](stacks/communication/ntfy/) - Notification Service
### Collaboration
- [nextcloud-aio](stacks/collaboration/nextcloud-aio/) - Cloud Storage
- [forgejo](stacks/collaboration/forgejo/) - Git Server
- [wordpress](stacks/collaboration/wordpress/) - CMS
### Media
- [immich](stacks/media/immich/) - Photo Backup
- [jellyfin](stacks/media/jellyfin/) - Media Server
### Infrastructure
- [wireguard](stacks/infrastructure/wireguard/) - VPN Server
- [portainer](stacks/infrastructure/portainer/) - Docker UI
- **gotify** - Push-Benachrichtigungen
### Security
- [authentik](stacks/security/authentik/) - SSO Provider
- [tinyauth](stacks/security/tinyauth/) - Simple Auth
### Social
- [gotosocial](stacks/social/gotosocial/) - ActivityPub Server
- [sharkey](stacks/social/sharkey/) - Fediverse Server
### Gaming
- [pterodactyl-panel](stacks/gaming/pterodactyl-panel/) - Game Panel
- [pterodactyl-wings](stacks/gaming/pterodactyl-wings/) - Game Daemon
### Utilities
- [searxng](stacks/utilities/searxng/) - Meta Search Engine
- [plausible](stacks/utilities/plausible/) - Web Analytics
- [webcheck](stacks/utilities/webcheck/) - Uptime Monitor
### Backup
- [backrest](stacks/backup/backrest/) - Backup Server
- [karakeep](stacks/backup/karakeep/) - Bookmark Manager
- **vaultwarden** - Password Manager
---
## 🛠️ Troubleshooting
## 🛠️ Eigene Stacks hinzufügen
### Stack wird nicht angezeigt
1. **Resource Sync** im Dashboard manuell ausführen
2. **Git URL prüfen**
3. **Path prüfen** (muss `stacks/` sein)
### Container starten nicht
1. **Logs prüfen** im Komodo Dashboard
2. **Secrets konfiguriert?**
3. **Ports belegt?**
### Caddy Proxy funktioniert nicht
1. **Caddy Config prüfen:** `sudo caddy validate`
2. **DNS Records** zeigen auf Server-IP?
3. **Firewall** Ports 80/443 offen?
---
## 📝 Eigene Stacks hinzufügen
1. **Ordner erstellen:** `stacks/<category>/<stack-name>/`
1. **Ordner erstellen:** `stacks/<stack-name>/`
2. **compose.yml** erstellen
3. **README.md** mit Infos
4. **Commit & Push**

View file

@ -1,25 +0,0 @@
[stack]
name = "Gotify"
description = "Push-Benachrichtigungen selbst gehostet"
version = "1.0.0"
category = "communication"
author = "nocci"
[compose]
file = "gotify-compose.yml"
[variables.secrets]
gotify-admin-user = "Admin Username"
gotify-admin-pass = "Admin Password"
[ports]
gotify = "80"
[volumes]
gotify_data = "/app/data"
[healthcheck]
endpoint = "http://localhost:80/health"
interval = "30s"
timeout = "10s"
retries = 3

20
stacks/gotify/README.md Normal file
View file

@ -0,0 +1,20 @@
# Gotify
📱 Push-Benachrichtigungen selbst gehostet
## Deploy in Komodo
**Pfad:** `stacks/gotify/`
## Secrets
- `GOTIFY_DEFAULTUSER_NAME` - Admin Username
- `GOTIFY_DEFAULTUSER_PASS` - Admin Password
## Caddy
```caddyfile
gotify.example.com {
reverse_proxy localhost:9091
}
```

View file

@ -1,25 +0,0 @@
[stack]
name = "Grafana"
description = "Grafana Dashboards & Visualisierung"
version = "1.0.0"
category = "monitoring"
author = "nocci"
[compose]
file = "grafana-compose.yml"
[variables.secrets]
grafana-admin-user = "Admin Username"
grafana-admin-pass = "Admin Password"
[ports]
grafana = "3000"
[volumes]
grafana_data = "/var/lib/grafana"
[healthcheck]
endpoint = "http://localhost:3000/api/health"
interval = "30s"
timeout = "10s"
retries = 3

24
stacks/grafana/README.md Normal file
View file

@ -0,0 +1,24 @@
# Grafana
📊 Dashboards & Visualisierung
## Deploy in Komodo
**Pfad:** `stacks/grafana/`
## Secrets
- `GF_SECURITY_ADMIN_USER` - Admin Username
- `GF_SECURITY_ADMIN_PASSWORD` - Admin Password
## Ports
- `3000` - Web UI
## Caddy
```caddyfile
grafana.example.com {
reverse_proxy localhost:3000
}
```

View file

@ -1,21 +0,0 @@
[stack]
name = "Node Exporter"
description = "System-Metriken für Prometheus"
version = "1.0.0"
category = "monitoring"
author = "nocci"
[compose]
file = "node-exporter-compose.yml"
[variables]
# Keine Secrets erforderlich
[ports]
node_exporter = "9100"
[healthcheck]
endpoint = "http://localhost:9100/metrics"
interval = "30s"
timeout = "10s"
retries = 3

View file

@ -0,0 +1,15 @@
# Node Exporter
📈 System-Metriken für Prometheus
## Deploy in Komodo
**Pfad:** `stacks/node-exporter/`
## Ports
- `9100` - Metrics Endpoint
## Notes
Keine Secrets erforderlich. Auf jedem Server installieren der überwacht werden soll.

View file

@ -1,24 +0,0 @@
[stack]
name = "Prometheus"
description = "Prometheus Monitoring & Alerting System"
version = "1.0.0"
category = "monitoring"
author = "nocci"
[compose]
file = "prometheus-compose.yml"
[variables]
# Keine Secrets erforderlich
[ports]
prometheus = "9090"
[volumes]
prometheus_data = "/prometheus"
[healthcheck]
endpoint = "http://localhost:9090/-/healthy"
interval = "30s"
timeout = "10s"
retries = 3

View file

@ -0,0 +1,19 @@
# Prometheus
📊 Monitoring & Alerting System
## Deploy in Komodo
**Pfad:** `stacks/prometheus/`
## Ports
- `9090` - Web UI
## Caddy
```caddyfile
prometheus.example.com {
reverse_proxy localhost:9090
}
```

View file

@ -1,24 +0,0 @@
[stack]
name = "Vaultwarden"
description = "Password Manager (Bitwarden-kompatibel)"
version = "1.0.0"
category = "security"
author = "nocci"
[compose]
file = "vaultwarden-compose.yml"
[variables.secrets]
vaultwarden-admin-token = "Admin API Token (openssl rand -base64 48)"
[ports]
vaultwarden = "80"
[volumes]
vaultwarden_data = "/data"
[healthcheck]
endpoint = "http://localhost:80/alive"
interval = "30s"
timeout = "10s"
retries = 3

View file

@ -0,0 +1,23 @@
# Vaultwarden
🔐 Password Manager (Bitwarden-kompatibel)
## Deploy in Komodo
**Pfad:** `stacks/vaultwarden/`
## Secrets
- `ADMIN_TOKEN` - Admin API Token (openssl rand -base64 48)
## Ports
- `8080` - Web UI
## Caddy
```caddyfile
vault.example.com {
reverse_proxy localhost:8080
}
```