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