diff --git a/stacks/authentik/README.md b/stacks/authentik/README.md new file mode 100644 index 0000000..0d2533b --- /dev/null +++ b/stacks/authentik/README.md @@ -0,0 +1,25 @@ +# Authentik + +🔐 SSO / Identity Provider + +## Deploy in Komodo + +**Pfad:** `stacks/authentik/` + +## Ports + +- `9000` - HTTP Interface +- `9443` - HTTPS Interface + +## Caddy + +```caddyfile +auth.example.com { + reverse_proxy localhost:9000 +} +``` + +## Notes + +- Komplexes Setup mit PostgreSQL + Redis +- SECRET_KEY ändern vor erstem Start! diff --git a/stacks/authentik/compose.yml b/stacks/authentik/compose.yml new file mode 100644 index 0000000..d5c906c --- /dev/null +++ b/stacks/authentik/compose.yml @@ -0,0 +1,55 @@ +services: + authentik: + image: ghcr.io/goauthentik/server:latest + container_name: authentik + restart: unless-stopped + ports: + - "127.0.0.1:9000:9000" + - "127.0.0.1:9443:9443" + volumes: + - authentik_media:/media + - authentik_custom:/custom-templates + environment: + - AUTHENTIK_SECRET_KEY=change-me-to-random-secret + - AUTHENTIK_REDIS__HOST=authentik-redis + - AUTHENTIK_POSTGRESQL__HOST=authentik-db + - AUTHENTIK_POSTGRESQL__USER=authentik + - AUTHENTIK_POSTGRESQL__NAME=authentik + - AUTHENTIK_POSTGRESQL__PASSWORD=authentik + depends_on: + - authentik-db + - authentik-redis + networks: + - authentik-network + + authentik-db: + image: postgres:15 + container_name: authentik-db + restart: unless-stopped + volumes: + - authentik_db:/var/lib/postgresql/data + environment: + - POSTGRES_USER=authentik + - POSTGRES_PASSWORD=authentik + - POSTGRES_DB=authentik + networks: + - authentik-network + + authentik-redis: + image: redis:alpine + container_name: authentik-redis + restart: unless-stopped + volumes: + - authentik_redis:/data + networks: + - authentik-network + +volumes: + authentik_media: + authentik_custom: + authentik_db: + authentik_redis: + +networks: + authentik-network: + driver: bridge diff --git a/stacks/authentik/stack.toml b/stacks/authentik/stack.toml new file mode 100644 index 0000000..55f74db --- /dev/null +++ b/stacks/authentik/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "authentik" +description = "SSO / Identity Provider" +compose_path = "compose.yml" diff --git a/stacks/jellyfin/README.md b/stacks/jellyfin/README.md new file mode 100644 index 0000000..36fa127 --- /dev/null +++ b/stacks/jellyfin/README.md @@ -0,0 +1,24 @@ +# Jellyfin + +🎬 Media Server + +## Deploy in Komodo + +**Pfad:** `stacks/jellyfin/` + +## Ports + +- `8096` - Web UI + +## Caddy + +```caddyfile +media.example.com { + reverse_proxy localhost:8096 +} +``` + +## Notes + +- Hardware Transcoding: `/dev/dri` mounten +- Medien-Pfad anpassen (`/media`) diff --git a/stacks/jellyfin/compose.yml b/stacks/jellyfin/compose.yml new file mode 100644 index 0000000..0074f60 --- /dev/null +++ b/stacks/jellyfin/compose.yml @@ -0,0 +1,31 @@ +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + ports: + - "127.0.0.1:8096:8096" + volumes: + - jellyfin_config:/config + - jellyfin_cache:/cache + - /media:/media:ro + devices: + - /dev/dri:/dev/dri + group_add: + - video + networks: + - jellyfin-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8096/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + +volumes: + jellyfin_config: + jellyfin_cache: + +networks: + jellyfin-network: + driver: bridge diff --git a/stacks/jellyfin/stack.toml b/stacks/jellyfin/stack.toml new file mode 100644 index 0000000..be4f09a --- /dev/null +++ b/stacks/jellyfin/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "jellyfin" +description = "Media Server" +compose_path = "compose.yml" diff --git a/stacks/nextcloud-aio/README.md b/stacks/nextcloud-aio/README.md new file mode 100644 index 0000000..86baa68 --- /dev/null +++ b/stacks/nextcloud-aio/README.md @@ -0,0 +1,24 @@ +# Nextcloud AIO + +☁️ Cloud Storage & Collaboration + +## Deploy in Komodo + +**Pfad:** `stacks/nextcloud-aio/` + +## Ports + +- `8080` - Web UI + +## Caddy + +```caddyfile +cloud.example.com { + reverse_proxy localhost:8080 +} +``` + +## Notes + +- All-In-One Image mit Apache, PHP, DB +- Erster Start dauert länger (Setup) diff --git a/stacks/nextcloud-aio/compose.yml b/stacks/nextcloud-aio/compose.yml new file mode 100644 index 0000000..67dfefb --- /dev/null +++ b/stacks/nextcloud-aio/compose.yml @@ -0,0 +1,29 @@ +services: + nextcloud-aio: + image: nextcloud/all-in-one:latest + container_name: nextcloud-aio + restart: unless-stopped + ports: + - "127.0.0.1:8080:8080" + volumes: + - nextcloud_data:/var/www/html + - nextcloud_apps:/var/www/html/custom_apps + environment: + - APACHE_PORT=8080 + - NEXTCLOUD_DATADIR=/var/www/html/data + networks: + - nextcloud-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/status.php"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + +volumes: + nextcloud_data: + nextcloud_apps: + +networks: + nextcloud-network: + driver: bridge diff --git a/stacks/nextcloud-aio/stack.toml b/stacks/nextcloud-aio/stack.toml new file mode 100644 index 0000000..0257c1b --- /dev/null +++ b/stacks/nextcloud-aio/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "nextcloud-aio" +description = "Cloud Storage & Collaboration" +compose_path = "compose.yml" diff --git a/stacks/searxng/README.md b/stacks/searxng/README.md new file mode 100644 index 0000000..4b1a0be --- /dev/null +++ b/stacks/searxng/README.md @@ -0,0 +1,24 @@ +# SearXNG + +🔍 Privacy Meta Search Engine + +## Deploy in Komodo + +**Pfad:** `stacks/searxng/` + +## Ports + +- `8080` - Web UI + +## Caddy + +```caddyfile +search.example.com { + reverse_proxy localhost:8080 +} +``` + +## Notes + +- Sucht in mehreren Suchmaschinen gleichzeitig +- Keine Trackung der Suchanfragen diff --git a/stacks/searxng/compose.yml b/stacks/searxng/compose.yml new file mode 100644 index 0000000..ad9d11e --- /dev/null +++ b/stacks/searxng/compose.yml @@ -0,0 +1,26 @@ +services: + searxng: + image: searxng/searxng:latest + container_name: searxng + restart: unless-stopped + ports: + - "127.0.0.1:8080:8080" + volumes: + - searxng_config:/etc/searxng + environment: + - SEARXNG_BASE_URL=https://searxng.example.com + networks: + - searxng-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/healthz"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + +volumes: + searxng_config: + +networks: + searxng-network: + driver: bridge diff --git a/stacks/searxng/stack.toml b/stacks/searxng/stack.toml new file mode 100644 index 0000000..57aeee1 --- /dev/null +++ b/stacks/searxng/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "searxng" +description = "Privacy Meta Search Engine" +compose_path = "compose.yml" diff --git a/stacks/wordpress/README.md b/stacks/wordpress/README.md new file mode 100644 index 0000000..1dbe226 --- /dev/null +++ b/stacks/wordpress/README.md @@ -0,0 +1,24 @@ +# WordPress + +📝 CMS / Blog Platform + +## Deploy in Komodo + +**Pfad:** `stacks/wordpress/` + +## Ports + +- `8080` - Web UI + +## Caddy + +```caddyfile +blog.example.com { + reverse_proxy localhost:8080 +} +``` + +## Notes + +- Inklusive MySQL Datenbank +- Passwort ändern nach erstem Login! diff --git a/stacks/wordpress/compose.yml b/stacks/wordpress/compose.yml new file mode 100644 index 0000000..44324d3 --- /dev/null +++ b/stacks/wordpress/compose.yml @@ -0,0 +1,40 @@ +services: + wordpress: + image: wordpress:latest + container_name: wordpress + restart: unless-stopped + ports: + - "127.0.0.1:8080:80" + volumes: + - wordpress_data:/var/www/html + environment: + - WORDPRESS_DB_HOST=wordpress-db + - WORDPRESS_DB_USER=wordpress + - WORDPRESS_DB_PASSWORD=wordpress + - WORDPRESS_DB_NAME=wordpress + depends_on: + - wordpress-db + networks: + - wordpress-network + + wordpress-db: + image: mysql:8.0 + container_name: wordpress-db + restart: unless-stopped + volumes: + - wordpress_db:/var/lib/mysql + environment: + - MYSQL_DATABASE=wordpress + - MYSQL_USER=wordpress + - MYSQL_PASSWORD=wordpress + - MYSQL_ROOT_PASSWORD=rootpassword + networks: + - wordpress-network + +volumes: + wordpress_data: + wordpress_db: + +networks: + wordpress-network: + driver: bridge diff --git a/stacks/wordpress/stack.toml b/stacks/wordpress/stack.toml new file mode 100644 index 0000000..432b437 --- /dev/null +++ b/stacks/wordpress/stack.toml @@ -0,0 +1,4 @@ +[[stacks]] +name = "wordpress" +description = "CMS / Blog Platform" +compose_path = "compose.yml"