feat: Add final stacks (Batch 3)

Added stacks:
- plex (Media server)
- pterodactyl-panel (Game server management)
- gotosocial (ActivityPub/Fediverse)
- backrest (Backup UI)

All stacks include:
- compose.yml with proper configuration
- README.md with deployment info
- stack.toml for Komodo Resource Sync

TOTAL: 21 stacks ready for Komodo deployment!
This commit is contained in:
nocci 2026-03-09 21:18:23 +00:00
parent 41b4381048
commit 0a0bea9584
12 changed files with 247 additions and 0 deletions

24
stacks/backrest/README.md Normal file
View file

@ -0,0 +1,24 @@
# Backrest
💾 Backup Management UI
## Deploy in Komodo
**Pfad:** `stacks/backrest/`
## Ports
- `8080` - Web UI
## Caddy
```caddyfile
backup.example.com {
reverse_proxy localhost:8080
}
```
## Notes
- UI für Restic Backups
- Backup-Pfad anpassen

View file

@ -0,0 +1,25 @@
services:
backrest:
image: ghcr.io/gabm/backrest:latest
container_name: backrest
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
volumes:
- backrest_config:/config
- /backups:/backups
networks:
- backrest-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
backrest_config:
networks:
backrest-network:
driver: bridge

View file

@ -0,0 +1,4 @@
[[stacks]]
name = "backrest"
description = "Backup Management UI"
compose_path = "compose.yml"

View file

@ -0,0 +1,24 @@
# GoToSocial
🐘 ActivityPub Server (Fediverse)
## Deploy in Komodo
**Pfad:** `stacks/gotosocial/`
## Ports
- `8080` - Web UI & API
## Caddy
```caddyfile
social.example.com {
reverse_proxy localhost:8080
}
```
## Notes
- ActivityPub-kompatibel (Mastodon, Pixelfed, etc.)
- SQLite Datenbank (einfach)

View file

@ -0,0 +1,27 @@
services:
gotosocial:
image: docker.homeserver.net/gotosocial/gotosocial:latest
container_name: gotosocial
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
volumes:
- gotosocial_data:/gotosocial
environment:
- GOTOSOCIAL_HOST=example.com
- GOTOSOCIAL_DB_TYPE=sqlite
networks:
- gotosocial-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/instance"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
volumes:
gotosocial_data:
networks:
gotosocial-network:
driver: bridge

View file

@ -0,0 +1,4 @@
[[stacks]]
name = "gotosocial"
description = "ActivityPub Server (Fediverse)"
compose_path = "compose.yml"

24
stacks/plex/README.md Normal file
View file

@ -0,0 +1,24 @@
# Plex
🎬 Media Server (Commercial)
## Deploy in Komodo
**Pfad:** `stacks/plex/`
## Ports
- `32400` - Web UI & API
## Caddy
```caddyfile
plex.example.com {
reverse_proxy localhost:32400
}
```
## Notes
- PLEX_CLAIM Token von plex.tv nötig
- Hardware Transcoding: `/dev/dri` mounten

31
stacks/plex/compose.yml Normal file
View file

@ -0,0 +1,31 @@
services:
plex:
image: plexinc/pms-docker:latest
container_name: plex
restart: unless-stopped
ports:
- "127.0.0.1:32400:32400"
volumes:
- plex_config:/config
- plex_transcode:/transcode
- /media:/media:ro
environment:
- PLEX_CLAIM=claim-token-from-plex.tv
devices:
- /dev/dri:/dev/dri
networks:
- plex-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:32400/identity"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
volumes:
plex_config:
plex_transcode:
networks:
plex-network:
driver: bridge

4
stacks/plex/stack.toml Normal file
View file

@ -0,0 +1,4 @@
[[stacks]]
name = "plex"
description = "Media Server (Commercial)"
compose_path = "compose.yml"

View file

@ -0,0 +1,25 @@
# Pterodactyl Panel
🎮 Game Server Management
## Deploy in Komodo
**Pfad:** `stacks/pterodactyl-panel/`
## Ports
- `8080` - HTTP
- `8443` - HTTPS
## Caddy
```caddyfile
panel.example.com {
reverse_proxy localhost:8080
}
```
## Notes
- Komplexes Setup mit MariaDB + Redis
- Benötigt Pterodactyl Wings auf Game-Servern

View file

@ -0,0 +1,51 @@
services:
pterodactyl-panel:
image: ghcr.io/pterodactyl/panel:latest
container_name: pterodactyl-panel
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
- "127.0.0.1:8443:443"
volumes:
- pterodactyl_panel_var:/var/www/pterodactyl/var
- pterodactyl_panel_nginx:/etc/ssl/pterodactyl
environment:
- TRUSTED_PROXIES=*
networks:
- pterodactyl-network
depends_on:
- pterodactyl-db
- pterodactyl-cache
pterodactyl-db:
image: mariadb:10.5
container_name: pterodactyl-db
restart: unless-stopped
volumes:
- pterodactyl_db:/var/lib/mysql
environment:
- MYSQL_DATABASE=panel
- MYSQL_USER=pterodactyl
- MYSQL_PASSWORD=pterodactyl
- MYSQL_ROOT_PASSWORD=rootpassword
networks:
- pterodactyl-network
pterodactyl-cache:
image: redis:alpine
container_name: pterodactyl-cache
restart: unless-stopped
volumes:
- pterodactyl_cache:/data
networks:
- pterodactyl-network
volumes:
pterodactyl_panel_var:
pterodactyl_panel_nginx:
pterodactyl_db:
pterodactyl_cache:
networks:
pterodactyl-network:
driver: bridge

View file

@ -0,0 +1,4 @@
[[stacks]]
name = "pterodactyl-panel"
description = "Game Server Management"
compose_path = "compose.yml"