diff --git a/README.md b/README.md index df21f46..322b422 100644 --- a/README.md +++ b/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 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///` +1. **Ordner erstellen:** `stacks//` 2. **compose.yml** erstellen 3. **README.md** mit Infos 4. **Commit & Push** diff --git a/stacks/gotify.toml b/stacks/gotify.toml deleted file mode 100644 index 4d60ac8..0000000 --- a/stacks/gotify.toml +++ /dev/null @@ -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 diff --git a/stacks/gotify/README.md b/stacks/gotify/README.md new file mode 100644 index 0000000..9845fed --- /dev/null +++ b/stacks/gotify/README.md @@ -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 +} +``` diff --git a/stacks/gotify-compose.yml b/stacks/gotify/compose.yml similarity index 100% rename from stacks/gotify-compose.yml rename to stacks/gotify/compose.yml diff --git a/stacks/grafana.toml b/stacks/grafana.toml deleted file mode 100644 index b3e5b3f..0000000 --- a/stacks/grafana.toml +++ /dev/null @@ -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 diff --git a/stacks/grafana/README.md b/stacks/grafana/README.md new file mode 100644 index 0000000..1652a42 --- /dev/null +++ b/stacks/grafana/README.md @@ -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 +} +``` diff --git a/stacks/grafana-compose.yml b/stacks/grafana/compose.yml similarity index 100% rename from stacks/grafana-compose.yml rename to stacks/grafana/compose.yml diff --git a/stacks/node-exporter.toml b/stacks/node-exporter.toml deleted file mode 100644 index 19086af..0000000 --- a/stacks/node-exporter.toml +++ /dev/null @@ -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 diff --git a/stacks/node-exporter/README.md b/stacks/node-exporter/README.md new file mode 100644 index 0000000..c5253c2 --- /dev/null +++ b/stacks/node-exporter/README.md @@ -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. diff --git a/stacks/node-exporter-compose.yml b/stacks/node-exporter/compose.yml similarity index 100% rename from stacks/node-exporter-compose.yml rename to stacks/node-exporter/compose.yml diff --git a/stacks/prometheus.toml b/stacks/prometheus.toml deleted file mode 100644 index a9de2f8..0000000 --- a/stacks/prometheus.toml +++ /dev/null @@ -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 diff --git a/stacks/prometheus/README.md b/stacks/prometheus/README.md new file mode 100644 index 0000000..31c4f8b --- /dev/null +++ b/stacks/prometheus/README.md @@ -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 +} +``` diff --git a/stacks/prometheus-compose.yml b/stacks/prometheus/compose.yml similarity index 100% rename from stacks/prometheus-compose.yml rename to stacks/prometheus/compose.yml diff --git a/stacks/vaultwarden.toml b/stacks/vaultwarden.toml deleted file mode 100644 index 5e240e3..0000000 --- a/stacks/vaultwarden.toml +++ /dev/null @@ -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 diff --git a/stacks/vaultwarden/README.md b/stacks/vaultwarden/README.md new file mode 100644 index 0000000..bfa4487 --- /dev/null +++ b/stacks/vaultwarden/README.md @@ -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 +} +``` diff --git a/stacks/vaultwarden-compose.yml b/stacks/vaultwarden/compose.yml similarity index 100% rename from stacks/vaultwarden-compose.yml rename to stacks/vaultwarden/compose.yml