diff --git a/docker/ss-atlas/templates/stack-template.yml b/docker/ss-atlas/templates/stack-template.yml index 0f33c68..744d8f7 100644 --- a/docker/ss-atlas/templates/stack-template.yml +++ b/docker/ss-atlas/templates/stack-template.yml @@ -1,11 +1,14 @@ # ============================================================================= -# CUSTOMER STACK TEMPLATE +# CUSTOMER STACK TEMPLATE — Uptime Kuma # ============================================================================= # This is the Docker Swarm stack that gets deployed for each paying customer. # It defines what product/service they receive when they subscribe. # -# REPLACE the `web` service image (currently traefik/whoami as a placeholder) -# with the actual application you are selling. +# PRODUCT: Uptime Kuma — a self-hosted uptime/monitoring dashboard. +# Each customer gets their own isolated instance at their subdomain. +# +# To sell a different product, replace the `web` service image and adjust +# the port in the Traefik loadbalancer label accordingly. # # Template variables (injected at deploy time by swarm/client.go): # {{.ID}} - customer's username (used for unique resource naming) @@ -21,9 +24,9 @@ version: "3.8" services: web: - image: traefik/whoami:latest - environment: - WHOAMI_NAME: "{{.Subdomain}}" + image: louislam/uptime-kuma:1 + volumes: + - uptime_data:/app/data networks: - traefik_net deploy: @@ -35,19 +38,7 @@ services: traefik.http.routers.customer-{{.ID}}-web.entrypoints: "websecure" traefik.http.routers.customer-{{.ID}}-web.tls: "true" traefik.http.routers.customer-{{.ID}}-web.middlewares: "authelia-auth@swarm" - traefik.http.services.customer-{{.ID}}-web.loadbalancer.server.port: "80" - restart_policy: - condition: on-failure - - redis: - image: redis:7-alpine - command: redis-server --appendonly yes - volumes: - - redis_data:/data - networks: - - backend - deploy: - replicas: 1 + traefik.http.services.customer-{{.ID}}-web.loadbalancer.server.port: "3001" restart_policy: condition: on-failure @@ -55,9 +46,7 @@ networks: traefik_net: external: true name: "atlas_{{.TraefikNetwork}}" - backend: - driver: overlay volumes: - redis_data: + uptime_data: driver: local