From 0a0bea95845a79931233659a762db79a9c944fb8 Mon Sep 17 00:00:00 2001 From: nocci Date: Mon, 9 Mar 2026 21:18:23 +0000 Subject: [PATCH] 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! --- stacks/backrest/README.md | 24 +++++++++++++ stacks/backrest/compose.yml | 25 ++++++++++++++ stacks/backrest/stack.toml | 4 +++ stacks/gotosocial/README.md | 24 +++++++++++++ stacks/gotosocial/compose.yml | 27 +++++++++++++++ stacks/gotosocial/stack.toml | 4 +++ stacks/plex/README.md | 24 +++++++++++++ stacks/plex/compose.yml | 31 +++++++++++++++++ stacks/plex/stack.toml | 4 +++ stacks/pterodactyl-panel/README.md | 25 ++++++++++++++ stacks/pterodactyl-panel/compose.yml | 51 ++++++++++++++++++++++++++++ stacks/pterodactyl-panel/stack.toml | 4 +++ 12 files changed, 247 insertions(+) create mode 100644 stacks/backrest/README.md create mode 100644 stacks/backrest/compose.yml create mode 100644 stacks/backrest/stack.toml create mode 100644 stacks/gotosocial/README.md create mode 100644 stacks/gotosocial/compose.yml create mode 100644 stacks/gotosocial/stack.toml create mode 100644 stacks/plex/README.md create mode 100644 stacks/plex/compose.yml create mode 100644 stacks/plex/stack.toml create mode 100644 stacks/pterodactyl-panel/README.md create mode 100644 stacks/pterodactyl-panel/compose.yml create mode 100644 stacks/pterodactyl-panel/stack.toml diff --git a/stacks/backrest/README.md b/stacks/backrest/README.md new file mode 100644 index 0000000..23d0cc7 --- /dev/null +++ b/stacks/backrest/README.md @@ -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 diff --git a/stacks/backrest/compose.yml b/stacks/backrest/compose.yml new file mode 100644 index 0000000..496ae70 --- /dev/null +++ b/stacks/backrest/compose.yml @@ -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 diff --git a/stacks/backrest/stack.toml b/stacks/backrest/stack.toml new file mode 100644 index 0000000..4122523 --- /dev/null +++ b/stacks/backrest/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "backrest" +description = "Backup Management UI" +compose_path = "compose.yml" diff --git a/stacks/gotosocial/README.md b/stacks/gotosocial/README.md new file mode 100644 index 0000000..af28724 --- /dev/null +++ b/stacks/gotosocial/README.md @@ -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) diff --git a/stacks/gotosocial/compose.yml b/stacks/gotosocial/compose.yml new file mode 100644 index 0000000..0870e13 --- /dev/null +++ b/stacks/gotosocial/compose.yml @@ -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 diff --git a/stacks/gotosocial/stack.toml b/stacks/gotosocial/stack.toml new file mode 100644 index 0000000..5742a3c --- /dev/null +++ b/stacks/gotosocial/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "gotosocial" +description = "ActivityPub Server (Fediverse)" +compose_path = "compose.yml" diff --git a/stacks/plex/README.md b/stacks/plex/README.md new file mode 100644 index 0000000..362450e --- /dev/null +++ b/stacks/plex/README.md @@ -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 diff --git a/stacks/plex/compose.yml b/stacks/plex/compose.yml new file mode 100644 index 0000000..b0ec436 --- /dev/null +++ b/stacks/plex/compose.yml @@ -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 diff --git a/stacks/plex/stack.toml b/stacks/plex/stack.toml new file mode 100644 index 0000000..15c7837 --- /dev/null +++ b/stacks/plex/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "plex" +description = "Media Server (Commercial)" +compose_path = "compose.yml" diff --git a/stacks/pterodactyl-panel/README.md b/stacks/pterodactyl-panel/README.md new file mode 100644 index 0000000..3a04482 --- /dev/null +++ b/stacks/pterodactyl-panel/README.md @@ -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 diff --git a/stacks/pterodactyl-panel/compose.yml b/stacks/pterodactyl-panel/compose.yml new file mode 100644 index 0000000..cbfe60b --- /dev/null +++ b/stacks/pterodactyl-panel/compose.yml @@ -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 diff --git a/stacks/pterodactyl-panel/stack.toml b/stacks/pterodactyl-panel/stack.toml new file mode 100644 index 0000000..f05a32c --- /dev/null +++ b/stacks/pterodactyl-panel/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "pterodactyl-panel" +description = "Game Server Management" +compose_path = "compose.yml"