feat: Add 10 new stacks (Batch 1)
Added stacks: - ntfy (Push notifications) - promtail (Log collector) - loki (Log aggregation) - forgejo (Git server) - immich (Photo backup) - wireguard (VPN) - portainer (Docker UI) All stacks include: - compose.yml with proper configuration - README.md with deployment info - stack.toml for Komodo Resource Sync
This commit is contained in:
parent
606a3ed72c
commit
03977fae5e
21 changed files with 363 additions and 0 deletions
20
stacks/forgejo/README.md
Normal file
20
stacks/forgejo/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Forgejo
|
||||||
|
|
||||||
|
🔨 Git Server (Gitea Fork)
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/forgejo/`
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
|
||||||
|
- `3000` - Web UI
|
||||||
|
- `2222` - SSH (externer Port)
|
||||||
|
|
||||||
|
## Caddy
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
git.example.com {
|
||||||
|
reverse_proxy localhost:3000
|
||||||
|
}
|
||||||
|
```
|
||||||
30
stacks/forgejo/compose.yml
Normal file
30
stacks/forgejo/compose.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:latest
|
||||||
|
container_name: forgejo
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:3000:3000"
|
||||||
|
- "127.0.0.1:2222:22"
|
||||||
|
volumes:
|
||||||
|
- forgejo_data:/data
|
||||||
|
- forgejo_config:/etc/forgejo
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
networks:
|
||||||
|
- forgejo-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
forgejo_data:
|
||||||
|
forgejo_config:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
forgejo-network:
|
||||||
|
driver: bridge
|
||||||
4
stacks/forgejo/stack.toml
Normal file
4
stacks/forgejo/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "forgejo"
|
||||||
|
description = "Git Server (Gitea Fork)"
|
||||||
|
compose_path = "compose.yml"
|
||||||
24
stacks/immich/README.md
Normal file
24
stacks/immich/README.md
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Immich
|
||||||
|
|
||||||
|
📸 Photo Backup (Google Photos Alternative)
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/immich/`
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
|
||||||
|
- `2283` - Web UI (muss noch in compose.yml hinzugefügt werden)
|
||||||
|
|
||||||
|
## Caddy
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
photos.example.com {
|
||||||
|
reverse_proxy localhost:2283
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Benötigt viel Speicherplatz für Photos
|
||||||
|
- Machine Learning optional deaktiviert
|
||||||
52
stacks/immich/compose.yml
Normal file
52
stacks/immich/compose.yml
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
services:
|
||||||
|
immich-server:
|
||||||
|
image: ghcr.io/immich-app/immich-server:latest
|
||||||
|
container_name: immich-server
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- immich_upload:/usr/src/app/upload
|
||||||
|
- immich_config:/usr/src/app/config
|
||||||
|
environment:
|
||||||
|
- IMMICH_MACHINE_LEARNING_ENABLED=false
|
||||||
|
- DB_HOSTNAME=immich-postgres
|
||||||
|
- DB_USERNAME=postgres
|
||||||
|
- DB_PASSWORD=postgres
|
||||||
|
- DB_DATABASE_NAME=immich
|
||||||
|
- REDIS_HOSTNAME=immich-redis
|
||||||
|
depends_on:
|
||||||
|
- immich-postgres
|
||||||
|
- immich-redis
|
||||||
|
networks:
|
||||||
|
- immich-network
|
||||||
|
|
||||||
|
immich-postgres:
|
||||||
|
image: tensorchord/pgvecto-rs:pg14-v0.2.0
|
||||||
|
container_name: immich-postgres
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- immich_db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
- POSTGRES_DB=immich
|
||||||
|
networks:
|
||||||
|
- immich-network
|
||||||
|
|
||||||
|
immich-redis:
|
||||||
|
image: redis:latest
|
||||||
|
container_name: immich-redis
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- immich_redis:/data
|
||||||
|
networks:
|
||||||
|
- immich-network
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
immich_upload:
|
||||||
|
immich_config:
|
||||||
|
immich_db:
|
||||||
|
immich_redis:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
immich-network:
|
||||||
|
driver: bridge
|
||||||
4
stacks/immich/stack.toml
Normal file
4
stacks/immich/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "immich"
|
||||||
|
description = "Photo Backup (Google Photos Alternative)"
|
||||||
|
compose_path = "compose.yml"
|
||||||
19
stacks/loki/README.md
Normal file
19
stacks/loki/README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Loki
|
||||||
|
|
||||||
|
📊 Log Aggregation System
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/loki/`
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
|
||||||
|
- `3100` - Loki API
|
||||||
|
|
||||||
|
## Caddy
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
loki.example.com {
|
||||||
|
reverse_proxy localhost:3100
|
||||||
|
}
|
||||||
|
```
|
||||||
27
stacks/loki/compose.yml
Normal file
27
stacks/loki/compose.yml
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
services:
|
||||||
|
loki:
|
||||||
|
image: grafana/loki:latest
|
||||||
|
container_name: loki
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:3100:3100"
|
||||||
|
volumes:
|
||||||
|
- loki_data:/loki
|
||||||
|
- loki_config:/etc/loki
|
||||||
|
command: -config.file=/etc/loki/config.yml
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3100/ready"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
loki_data:
|
||||||
|
loki_config:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
monitoring:
|
||||||
|
driver: bridge
|
||||||
4
stacks/loki/stack.toml
Normal file
4
stacks/loki/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "loki"
|
||||||
|
description = "Log Aggregation System"
|
||||||
|
compose_path = "compose.yml"
|
||||||
19
stacks/ntfy/README.md
Normal file
19
stacks/ntfy/README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# ntfy
|
||||||
|
|
||||||
|
📬 Push-Benachrichtigungen per HTTP
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/ntfy/`
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
|
||||||
|
- `8080` - Web UI & API
|
||||||
|
|
||||||
|
## Caddy
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
ntfy.example.com {
|
||||||
|
reverse_proxy localhost:8080
|
||||||
|
}
|
||||||
|
```
|
||||||
30
stacks/ntfy/compose.yml
Normal file
30
stacks/ntfy/compose.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
services:
|
||||||
|
ntfy:
|
||||||
|
image: binwiederhier/ntfy:latest
|
||||||
|
container_name: ntfy
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8080:80"
|
||||||
|
volumes:
|
||||||
|
- ntfy_cache:/var/cache/ntfy
|
||||||
|
- ntfy_data:/var/lib/ntfy
|
||||||
|
environment:
|
||||||
|
- NTFY_BASE_URL=https://ntfy.example.com
|
||||||
|
- NTFY_UPSTREAM=https://ntfy.sh
|
||||||
|
- NTFY_UPSTREAM_SUBSCRIBE_ENABLED=true
|
||||||
|
networks:
|
||||||
|
- ntfy-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:80/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 10s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
ntfy_cache:
|
||||||
|
ntfy_data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
ntfy-network:
|
||||||
|
driver: bridge
|
||||||
4
stacks/ntfy/stack.toml
Normal file
4
stacks/ntfy/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "ntfy"
|
||||||
|
description = "Push-Benachrichtigungen per HTTP"
|
||||||
|
compose_path = "compose.yml"
|
||||||
19
stacks/portainer/README.md
Normal file
19
stacks/portainer/README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Portainer
|
||||||
|
|
||||||
|
🐳 Docker Management UI
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/portainer/`
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
|
||||||
|
- `9000` - Web UI
|
||||||
|
|
||||||
|
## Caddy
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
portainer.example.com {
|
||||||
|
reverse_proxy localhost:9000
|
||||||
|
}
|
||||||
|
```
|
||||||
25
stacks/portainer/compose.yml
Normal file
25
stacks/portainer/compose.yml
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
services:
|
||||||
|
portainer:
|
||||||
|
image: portainer/portainer-ce:latest
|
||||||
|
container_name: portainer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:9000:9000"
|
||||||
|
volumes:
|
||||||
|
- portainer_data:/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
networks:
|
||||||
|
- portainer-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9000/api/version"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
portainer_data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
portainer-network:
|
||||||
|
driver: bridge
|
||||||
4
stacks/portainer/stack.toml
Normal file
4
stacks/portainer/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "portainer"
|
||||||
|
description = "Docker Management UI"
|
||||||
|
compose_path = "compose.yml"
|
||||||
12
stacks/promtail/README.md
Normal file
12
stacks/promtail/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Promtail
|
||||||
|
|
||||||
|
📝 Log Collector für Loki
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/promtail/`
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Benötigt Loki Server
|
||||||
|
- Liest Logs von `/var/log` und Docker Containers
|
||||||
19
stacks/promtail/compose.yml
Normal file
19
stacks/promtail/compose.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
services:
|
||||||
|
promtail:
|
||||||
|
image: grafana/promtail:latest
|
||||||
|
container_name: promtail
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /var/log:/var/log:ro
|
||||||
|
- /var/lib/docker/containers:/var/lib/docker/containers:ro
|
||||||
|
- promtail_data:/tmp
|
||||||
|
command: -config.file=/etc/promtail/config.yml
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
promtail_data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
monitoring:
|
||||||
|
driver: bridge
|
||||||
4
stacks/promtail/stack.toml
Normal file
4
stacks/promtail/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "promtail"
|
||||||
|
description = "Log Collector für Loki"
|
||||||
|
compose_path = "compose.yml"
|
||||||
13
stacks/wireguard/README.md
Normal file
13
stacks/wireguard/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# WireGuard
|
||||||
|
|
||||||
|
🔒 VPN Server
|
||||||
|
|
||||||
|
## Deploy in Komodo
|
||||||
|
|
||||||
|
**Pfad:** `stacks/wireguard/`
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Benötigt `NET_ADMIN` und `SYS_MODULE` Capabilities
|
||||||
|
- Config wird in `/config` gespeichert
|
||||||
|
- Clients müssen manuell konfiguriert werden
|
||||||
26
stacks/wireguard/compose.yml
Normal file
26
stacks/wireguard/compose.yml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
services:
|
||||||
|
wireguard:
|
||||||
|
image: linuxserver/wireguard:latest
|
||||||
|
container_name: wireguard
|
||||||
|
restart: unless-stopped
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
- SYS_MODULE
|
||||||
|
volumes:
|
||||||
|
- wireguard_config:/config
|
||||||
|
- /lib/modules:/lib/modules
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=UTC
|
||||||
|
networks:
|
||||||
|
- wireguard-network
|
||||||
|
sysctls:
|
||||||
|
- net.ipv4.conf.all.src_valid_mark=1
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
wireguard_config:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
wireguard-network:
|
||||||
|
driver: bridge
|
||||||
4
stacks/wireguard/stack.toml
Normal file
4
stacks/wireguard/stack.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[[stacks]]
|
||||||
|
name = "wireguard"
|
||||||
|
description = "VPN Server"
|
||||||
|
compose_path = "compose.yml"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue