diff --git a/nodes/heimdall/homelab-registry-mcp/compose.yaml b/nodes/heimdall/homelab-registry-mcp/compose.yaml deleted file mode 100644 index 3c289b9..0000000 --- a/nodes/heimdall/homelab-registry-mcp/compose.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: homelab-registry-mcp -services: - registry-mcp: - image: registry.castaldifamily.com/homelab-registry-mcp:latest - container_name: homelab-registry-mcp - restart: unless-stopped - volumes: - - registry-data:/data - - /var/run/docker.sock:/var/run/docker.sock:ro - networks: - - proxy-net - labels: - - "traefik.enable=true" - - "traefik.http.routers.registry-mcp.rule=Host(`registry-mcp.castaldifamily.com`)" - - "traefik.http.routers.registry-mcp.entrypoints=websecure" - - "traefik.http.routers.registry-mcp.tls=true" - - "traefik.http.routers.registry-mcp.tls.certresolver=cloudflare" - - "traefik.http.services.registry-mcp.loadbalancer.server.port=8765" - -volumes: - registry-data: - -networks: - proxy-net: - external: true diff --git a/nodes/heimdall/recipesage/compose.yaml b/nodes/heimdall/recipesage/compose.yaml deleted file mode 100644 index 1dd37e4..0000000 --- a/nodes/heimdall/recipesage/compose.yaml +++ /dev/null @@ -1,141 +0,0 @@ -networks: - proxy-net: - external: true - recipesage-internal: - internal: true - -services: - proxy: - image: julianpoy/recipesage-selfhost-proxy:v4.0.0 - container_name: recipesage_proxy - restart: unless-stopped - networks: - - proxy-net - - recipesage-internal - depends_on: - static: - condition: service_started - api: - condition: service_started - pushpin: - condition: service_started - labels: - - "traefik.enable=true" - - "traefik.docker.network=proxy-net" - - # --- 1. Authenticated Router (Priority 10) --- - - "traefik.http.routers.recipesage.rule=Host(`${DOMAIN_NAME}`)" - - "traefik.http.routers.recipesage.entrypoints=websecure" - - "traefik.http.routers.recipesage.tls=true" - - "traefik.http.routers.recipesage.tls.certresolver=cloudflare" - # - "traefik.http.routers.recipesage.middlewares=authentik-auth@file" - - "traefik.http.routers.recipesage.priority=10" - - "traefik.http.routers.recipesage.service=recipesage-svc" - - # --- 2. Public Share Bypass Router (Priority 20) --- - - "traefik.http.routers.recipesage-public.rule=Host(`${DOMAIN_NAME}`) && (PathPrefix(`/share`) || PathPrefix(`/p/`) || PathPrefix(`/api/v1/share`) || PathPrefix(`/assets/`))" - - "traefik.http.routers.recipesage-public.entrypoints=websecure" - - "traefik.http.routers.recipesage-public.tls=true" - - "traefik.http.routers.recipesage-public.tls.certresolver=cloudflare" - - "traefik.http.routers.recipesage-public.priority=20" - - "traefik.http.routers.recipesage-public.service=recipesage-svc" - - # --- Service Target Port --- - - "traefik.http.services.recipesage-svc.loadbalancer.server.port=80" - - api: - image: julianpoy/recipesage-selfhost:api-v3.0.10 - container_name: recipesage_api - restart: unless-stopped - networks: - - recipesage-internal - depends_on: - postgres: - condition: service_healthy - typesense: - condition: service_started - pushpin: - condition: service_started - browserless: - condition: service_started - command: sh -c "npx prisma migrate deploy; npx nx seed prisma; npx ts-node --swc --project packages/backend/tsconfig.json packages/backend/src/bin/www" - environment: - - STORAGE_TYPE=filesystem - - FILESYSTEM_STORAGE_PATH=/rs-media - - NODE_ENV=selfhost - - VERBOSE=false - - VERSION=selfhost - - POSTGRES_DB=${POSTGRES_DB} - - POSTGRES_USER=${POSTGRES_USER} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - - POSTGRES_PORT=5432 - - POSTGRES_HOST=postgres - - POSTGRES_SSL=false - - POSTGRES_LOGGING=false - - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?schema=public - - JWT_SECRET=${JWT_SECRET} - - DISABLE_REGISTRATION=${DISABLE_REGISTRATION} - - GRIP_URL=http://pushpin:5561/ - - GRIP_KEY=changeme - - SEARCH_PROVIDER=typesense - - 'TYPESENSE_NODES=[{"host": "typesense", "port": 8108, "protocol": "http"}]' - - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - - BROWSERLESS_URL=http://browserless:3000 - - PUSHPIN_URL=http://pushpin:7999 - - OPENAI_API_KEY=${OPENAI_API_KEY:-} - - OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL:-} - volumes: - - /mnt/appdata/recipesage/data/uploads:/rs-media - - static: - image: julianpoy/recipesage-selfhost:static-v3.0.10 - container_name: recipesage_static - restart: unless-stopped - networks: - - recipesage-internal - - typesense: - image: typesense/typesense:26.0 - container_name: recipesage_typesense - restart: unless-stopped - networks: - - recipesage-internal - environment: - - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - - TYPESENSE_DATA_DIR=/usr/share/typesense/data - volumes: - - /mnt/appdata/recipesage/data/typesense:/usr/share/typesense/data - - pushpin: - image: fanout/pushpin:1.37.0 - container_name: recipesage_pushpin - restart: unless-stopped - networks: - - recipesage-internal - - browserless: - image: ghcr.io/browserless/chromium:latest - container_name: recipesage_browserless - restart: unless-stopped - networks: - - recipesage-internal - environment: - - MAX_CONCURRENT_SESSIONS=5 - - postgres: - image: postgres:15-alpine - container_name: recipesage_postgres - restart: unless-stopped - networks: - - recipesage-internal - environment: - - POSTGRES_DB=${POSTGRES_DB} - - POSTGRES_USER=${POSTGRES_USER} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - volumes: - - /mnt/appdata/recipesage/data/postgres:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] - interval: 5s - timeout: 5s - retries: 5 \ No newline at end of file diff --git a/nodes/watchtower/README.md b/nodes/watchtower/README.md deleted file mode 100644 index c4efe07..0000000 --- a/nodes/watchtower/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Watchtower - -> **Primary Services:** Komodo Periphery -> **IP Address:** 10.0.0.200 - -## Hardware Specifications - -| Component | Details | -|-----------|--------| -| **Platform** | Raspberry Pi 5 | -| **CPU** | ARM Cortex-A76 (4 cores, aarch64) | -| **Memory** | 16 GB | -| **Storage** | 32 GB microSD (mmcblk0) | -| **Operating System** | Debian GNU/Linux 13 (Trixie) | -| **Kernel** | 6.12.75+rpt-rpi-2712 | -| **Network** | 10.0.0.200 (primary), Docker networks | -| **Additional IPs** | 10.0.0.80, 10.0.0.79 | - -## Role - -Periphery node for Komodo distributed container management. diff --git a/nodes/watchtower/compose.yaml b/nodes/watchtower/compose.yaml deleted file mode 100644 index 26e5ee0..0000000 --- a/nodes/watchtower/compose.yaml +++ /dev/null @@ -1,85 +0,0 @@ -name: node-tools -services: - # 🔒 Local Security Layer for this Node - docker-socket-proxy: - image: tecnativa/docker-socket-proxy:latest - container_name: docker-socket-proxy - userns_mode: "host" - user: "0:0" - security_opt: - - apparmor=unconfined - privileged: true - networks: - - node-net - ports: - - "127.0.0.1:2375:2375" # Expose on localhost for host-mode periphery - group_add: - - "988" - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro - environment: - - CONTAINERS=1 - - NETWORKS=1 - - IMAGES=1 - - INFO=1 - - POST=1 - - ALLOW_START=1 - - ALLOW_STOP=1 - # Added for Stack Management - - SERVICES=1 # Required for stack/service operations - - TASKS=1 # Required for stack task management - - VOLUMES=1 # Required if stacks use volumes - - CONFIGS=1 # Required for Docker configs - - SECRETS=1 # Required for Docker secrets - - # 🦎 Komodo Periphery - periphery: - image: ghcr.io/moghtech/komodo-periphery:2 - container_name: komodo-perihery-watchtower - network_mode: host # Use host networking to access external IPs - depends_on: - - docker-socket-proxy - environment: - - DOCKER_HOST=tcp://127.0.0.1:2375 # Access via localhost - - PERIPHERY_CORE_ADDRESS=ws://10.0.0.151:9120 - - PERIPHERY_CONNECT_AS=Watchtower - - PERIPHERY_ONBOARDING_KEY=O_VegHtPxiQKrzsAd8MqlrJEs2WLxZ_O - volumes: - - /proc:/proc - - /mnt/appdata/komodo/watchtower/keys:/config/keys - - /mnt/appdata/komodo/watchtower/work:/etc/komodo - # ✅ Added for Stack Deployments - - /mnt/appdata/komodo/watchtower/stacks:/etc/komodo/stacks - # ✅ Added for Git-linked Stacks - - /mnt/appdata/komodo/watchtower/repos:/etc/komodo/repos - - # 🔍 Traefik-KOP (Kubernetes Operator for Traefik Discovery) - traefik-kop: - image: ghcr.io/jittering/traefik-kop:0.19.4 - container_name: traefik-kop - restart: unless-stopped - depends_on: - - docker-socket-proxy - networks: - - node-net - environment: - - DOCKER_HOST=tcp://docker-socket-proxy:2375 - - REDIS_ADDR=10.0.0.151:6379 - - BIND_IP=10.0.0.200 - - KOP_HOSTNAME=watchtower - # Optional: Enable debug logging - # - VERBOSE=true - -# 📜 Dozzle Agent -# dozzle: -# image: amir20/dozzle:latest -# depends_on: -# - docker-socket-proxy -# networks: -# - node-net -# environment: -# - DOCKER_HOST=tcp://docker-socket-proxy:2375 - -networks: - node-net: - driver: bridge