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
|
||||
|
||||
🦎 **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**
|
||||
|
|
|
|||
|
|
@ -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