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:
parent
f0bcf8c70c
commit
b37541bb7a
16 changed files with 155 additions and 233 deletions
168
README.md
168
README.md
|
|
@ -1,8 +1,6 @@
|
||||||
# Komodo Stacks
|
# Komodo Stacks
|
||||||
|
|
||||||
🦎 **Docker Compose Stacks für Komodo Platform**
|
🦎 Docker Compose Stacks für Komodo Platform
|
||||||
|
|
||||||
Diese Stacks sind für den Einsatz mit **Komodo Core v2** optimiert.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -10,56 +8,73 @@ Diese Stacks sind für den Einsatz mit **Komodo Core v2** optimiert.
|
||||||
|
|
||||||
```
|
```
|
||||||
komodo-stacks/
|
komodo-stacks/
|
||||||
├── stacks/
|
└── stacks/
|
||||||
│ ├── monitoring/ # Prometheus, Grafana, Node Exporter
|
├── gotify/
|
||||||
│ ├── communication/ # Vaultwarden, Gotify, Ntfy
|
│ ├── compose.yml
|
||||||
│ ├── collaboration/ # Nextcloud, Forgejo, WordPress
|
│ └── README.md
|
||||||
│ ├── media/ # Immich, Jellyfin, Plex
|
├── prometheus/
|
||||||
│ ├── infrastructure/ # WireGuard, Portainer
|
│ ├── compose.yml
|
||||||
│ ├── security/ # Authentik, Tinyauth
|
│ └── README.md
|
||||||
│ ├── social/ # GoToSocial, Sharkey
|
├── grafana/
|
||||||
│ ├── gaming/ # Pterodactyl
|
│ ├── compose.yml
|
||||||
│ ├── utilities/ # SearXNG, Plausible
|
│ └── README.md
|
||||||
│ └── backup/ # Backrest, Karakeep
|
├── vaultwarden/
|
||||||
└── README.md
|
│ ├── compose.yml
|
||||||
|
│ └── README.md
|
||||||
|
└── node-exporter/
|
||||||
|
├── compose.yml
|
||||||
|
└── README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Verwendung in Komodo
|
## 🚀 Verwendung in Komodo
|
||||||
|
|
||||||
1. **Settings → Resources → Add Resource**
|
### Manuelle Stack-Erstellung (empfohlen):
|
||||||
2. **Git URL:** `https://git.sky-net.it/nocci/komodo-stacks.git`
|
|
||||||
3. **Path:** `stacks/`
|
1. **Stacks → Add Stack**
|
||||||
4. **Sync** klicken
|
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
|
Secrets werden in Komodo verwaltet:
|
||||||
2. **Stack auswählen**
|
|
||||||
3. **Server wählen** (wo Periphery läuft)
|
1. **Settings → Secrets**
|
||||||
4. **Deploy** klicken
|
2. **Add Secret**
|
||||||
5. **Warten** bis Container laufen
|
3. **Name und Wert** eingeben
|
||||||
|
4. **Beim Stack-Deploy** auswählen
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔧 Caddy Integration
|
## 🌐 Caddy Integration
|
||||||
|
|
||||||
**WICHTIG:** Stacks hören nur auf `localhost:PORT`!
|
Jeder Stack hört auf `localhost:PORT`. Caddy Config auf dem Server bearbeiten:
|
||||||
|
|
||||||
Nach dem Deployen, Caddy Config auf dem Server bearbeiten:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh <server>
|
ssh <server>
|
||||||
sudo nano /etc/caddy/Caddyfile
|
sudo nano /etc/caddy/Caddyfile
|
||||||
```
|
```
|
||||||
|
|
||||||
Beispiel für Prometheus:
|
Beispiel für Gotify:
|
||||||
```caddyfile
|
```caddyfile
|
||||||
prometheus.example.com {
|
gotify.example.com {
|
||||||
reverse_proxy localhost:9090
|
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
|
## 📦 Verfügbare Stacks
|
||||||
|
|
||||||
### Monitoring
|
### Monitoring
|
||||||
- [prometheus](stacks/monitoring/prometheus/) - Prometheus Monitoring
|
- **prometheus** - Monitoring & Alerting
|
||||||
- [grafana](stacks/monitoring/grafana/) - Grafana Dashboards
|
- **grafana** - Dashboards & Visualisierung
|
||||||
- [node-exporter](stacks/monitoring/node-exporter/) - System Metrics
|
- **node-exporter** - System-Metriken
|
||||||
- [promtail](stacks/monitoring/promtail/) - Log Collector
|
|
||||||
- [loki](stacks/monitoring/loki/) - Log Aggregation
|
|
||||||
|
|
||||||
### Communication
|
### Communication
|
||||||
- [vaultwarden](stacks/communication/vaultwarden/) - Password Manager
|
- **gotify** - Push-Benachrichtigungen
|
||||||
- [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
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
- [authentik](stacks/security/authentik/) - SSO Provider
|
- **vaultwarden** - Password Manager
|
||||||
- [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
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🛠️ Troubleshooting
|
## 🛠️ Eigene Stacks hinzufügen
|
||||||
|
|
||||||
### Stack wird nicht angezeigt
|
1. **Ordner erstellen:** `stacks/<stack-name>/`
|
||||||
|
|
||||||
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>/`
|
|
||||||
2. **compose.yml** erstellen
|
2. **compose.yml** erstellen
|
||||||
3. **README.md** mit Infos
|
3. **README.md** mit Infos
|
||||||
4. **Commit & Push**
|
4. **Commit & Push**
|
||||||
|
|
|
||||||
|
|
@ -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
20
stacks/gotify/README.md
Normal 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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -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
24
stacks/grafana/README.md
Normal 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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -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
|
|
||||||
15
stacks/node-exporter/README.md
Normal file
15
stacks/node-exporter/README.md
Normal 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.
|
||||||
|
|
@ -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
|
|
||||||
19
stacks/prometheus/README.md
Normal file
19
stacks/prometheus/README.md
Normal 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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -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
|
|
||||||
23
stacks/vaultwarden/README.md
Normal file
23
stacks/vaultwarden/README.md
Normal 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
|
||||||
|
}
|
||||||
|
```
|
||||||
Loading…
Add table
Add a link
Reference in a new issue