[[resource_sync]] name = "github-lovelace" [resource_sync.config] repo = "gjhenrique/home-server" branch = "master" resource_path = ["komodo-lovelace.toml"] [[server]] name = "lovelace" tags = ["lovelace"] [server.config] enabled = true address = "https://periphery:8120" [[procedure]] name = "Deploy stacks" [[procedure.config.stage]] name = "Sync private github repo" enabled = true executions = [ { execution.type = "RunSync", execution.params.sync = "github-lovelace-private", enabled = true } ] [[procedure.config.stage]] name = "Sync github repo" enabled = true executions = [ { execution.type = "RunSync", execution.params.sync = "github-lovelace", enabled = true } ] [[procedure.config.stage]] name = "Pull stacks" enabled = true executions = [ { execution.type = "BatchPullStack", execution.params.pattern = "*", enabled = true } ] [[procedure.config.stage]] name = "Deploy stacks" enabled = true executions = [ # Explicit list keeps lovelace-openclaw disabled; add new Lovelace stacks here. { execution.type = "BatchDeployStackIfChanged", execution.params.pattern = "lovelace-syncthing,lovelace-mosquitto,lovelace-emby,lovelace-subnet-router,lovelace-caddy,lovelace-homepage,lovelace-samba,lovelace-photos,lovelace-paperless,lovelace-actual,lovelace-ghostfolio,lovelace-system-exporters,lovelace-health-exporters,lovelace-backup,lovelace-prometheus,lovelace-n8n,lovelace-grafana,lovelace-mere-medical,lovelace-donetick,lovelace-3dprint,lovelace-hermes,lovelace-mealie", enabled = true } ] [[stack]] name = "lovelace-syncthing" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/syncthing" branch = "master" environment = """ EXT_PATH: /mnt/tank """ [[stack]] name = "lovelace-mosquitto" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/mosquitto" branch = "master" environment = """ EXT_PATH: /mnt/tank """ [[stack]] name = "lovelace-emby" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/emby" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" EMBY_HTTP_PORT: 8096 EMBY_HTTPS_PORT: 8097 EMBY_UDP_PORT_1: 7359 EMBY_UDP_PORT_2: 1900 """ [[stack]] name = "lovelace-subnet-router" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/subnet-router" branch = "master" environment = """ EXT_PATH: /mnt/tank TS_OAUTH_SECRET: "[[SUBNET_ROUTER_TS_OAUTH_SECRET]]" TS_TAG: "[[SUBNET_ROUTER_TS_TAG]]" TS_HOSTNAME: "[[SUBNET_ROUTER_TS_HOSTNAME]]" TS_ROUTES: "[[SUBNET_ROUTER_TS_ROUTES]]" """ [[stack]] name = "lovelace-caddy" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks" branch = "master" file_paths = ["caddy/compose.yaml"] environment = """ EXT_PATH: /mnt/tank GOOGLE_CLIENT_ID: "[[CADDY_GOOGLE_CLIENT_ID]]" GOOGLE_CLIENT_SECRET: "[[CADDY_GOOGLE_CLIENT_SECRET]]" JWT_SHARED_KEY: "[[CADDY_JWT_SHARED_KEY]]" DOMAIN: "[[CADDY_DOMAIN]]" ALLOWED_EMAILS: "[[CADDY_ALLOWED_EMAILS]]" CLOUDFLARE_API_TOKEN: "[[CADDY_CLOUDFLARE_API_TOKEN]]" """ [[stack]] name = "lovelace-homepage" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/homepage" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" TZ: Europe/Berlin """ [[stack]] name = "lovelace-samba" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/samba" branch = "master" environment = """ EXT_PATH: /mnt/tank PHOTOS_PASSWORD: "[[SAMBA_PHOTOS_PASSWORD]]" TORRENT_PASSWORD: "[[SAMBA_TORRENT_PASSWORD]]" PAPERLESS_PASSWORD: "[[SAMBA_PAPERLESS_PASSWORD]]" TV_PASSWORD: "[[SAMBA_TV_PASSWORD]]" """ [[stack]] name = "lovelace-photos" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks" branch = "master" file_paths = ["photos/compose.yaml", "photos/compose-ml.yaml"] environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" DB_PASSWORD: "[[IMMICH_DATABASE_PASSWORD]]" """ [[stack]] name = "lovelace-paperless" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/paperless" branch = "master" file_paths = ["compose.yaml", "compose.ai.yaml"] environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" PAPERLESS_URL: "[[PAPERLESS_URL]]" PAPERLESS_SECRET_KEY: "[[PAPERLESS_SECRET_KEY]]" PAPERLESS_OPENROUTER_API_KEY: "[[PAPERLESS_OPENROUTER_API_KEY]]" """ [[stack]] name = "lovelace-actual" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/actual" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" """ [[stack]] name = "lovelace-ghostfolio" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/ghostfolio" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" GHOSTFOLIO_POSTGRES_DB: ghostfolio-db GHOSTFOLIO_POSTGRES_USER: ghostfolio GHOSTFOLIO_POSTGRES_PASSWORD: "[[GHOSTFOLIO_POSTGRES_PASSWORD]]" GHOSTFOLIO_REDIS_PASSWORD: "[[GHOSTFOLIO_REDIS_PASSWORD]]" GHOSTFOLIO_ACCESS_TOKEN_SALT: "[[GHOSTFOLIO_ACCESS_TOKEN_SALT]]" GHOSTFOLIO_JWT_SECRET_KEY: "[[GHOSTFOLIO_JWT_SECRET_KEY]]" """ [[stack]] name = "lovelace-system-exporters" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/system-exporters" branch = "master" environment = """ EXT_PATH: /mnt/tank ADGUARD_USERNAME: "[[ADGUARD_USERNAME]]" ADGUARD_PASSWORD: "[[ADGUARD_PASSWORD]]" """ [[stack]] name = "lovelace-health-exporters" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/health-exporters" branch = "master" environment = """ EXT_PATH: /mnt/tank OW_CITY: "[[OW_CITY]]" OW_APIKEY: "[[OW_APIKEY]]" """ [[stack]] name = "lovelace-backup" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks" branch = "master" file_paths = ["backup/compose.yaml"] environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" """ [[stack]] name = "lovelace-prometheus" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks" branch = "master" file_paths = ["prometheus/compose.yaml"] environment = """ EXT_PATH: /mnt/tank PROMETHEUS_RETENTION: 750d PROMETHEUS_CONFIG_FILE: custom/prometheus.yml ALERTMANAGER_CONFIG_FILE: custom/alertmanager.yml """ [[stack]] name = "lovelace-n8n" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/n8n" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" N8N_ENCRYPTION_KEY: "[[N8N_ENCRYPTION_KEY]]" POSTGRES_USER: "[[N8N_POSTGRES_USER]]" POSTGRES_PASSWORD: "[[N8N_POSTGRES_PASSWORD]]" POSTGRES_DB: "[[N8N_POSTGRES_DB]]" POSTGRES_NON_ROOT_USER: "[[N8N_POSTGRES_NON_ROOT_USER]]" POSTGRES_NON_ROOT_PASSWORD: "[[N8N_POSTGRES_NON_ROOT_PASSWORD]]" TZ: Europe/Berlin """ [[stack]] name = "lovelace-grafana" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/grafana" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" GRAFANA_ADMIN_PASSWORD: "[[GRAFANA_ADMIN_PASSWORD]]" TZ: Europe/Berlin """ [[stack]] name = "lovelace-mere-medical" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/mere-medical" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" PUBLIC_URL: "https://health.[[CADDY_DOMAIN]]" """ [[stack]] name = "lovelace-donetick" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/donetick" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" DONETICK_JWT_SECRET: "[[DONETICK_JWT_SECRET]]" TZ: Europe/Berlin """ [[stack]] name = "lovelace-3dprint" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/3dprint" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" TZ: Europe/Berlin PORT: "8002" """ [[stack]] name = "lovelace-openclaw" tags = ["lovelace"] deploy = false [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/openclaw" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" OPENCLAW_GATEWAY_TOKEN: "[[OPENCLAW_GATEWAY_TOKEN]]" OPENROUTER_API_KEY: "[[OPENROUTER_API_KEY]]" TZ: Europe/Berlin """ [[stack]] name = "lovelace-hermes" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/hermes" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" TZ: Europe/Berlin """ [[stack]] name = "lovelace-mealie" tags = ["lovelace"] [stack.config] server = "lovelace" repo = "gjhenrique/home-server" run_directory = "stacks/mealie" branch = "master" environment = """ EXT_PATH: /mnt/tank DOMAIN: "[[CADDY_DOMAIN]]" # OpenAI/OpenRouter configuration for recipe parsing and image analysis MEALIE_OPENAI_KEY: "[[MEALIE_OPENAI_KEY]]" MEALIE_OPENAI_BASE_URL: "[[MEALIE_OPENAI_BASE_URL]]" MEALIE_OPENAI_MODEL: "[[MEALIE_OPENAI_MODEL]]" MEALIE_OPENAI_ENABLE_IMAGE_SERVICES: "[[MEALIE_OPENAI_ENABLE_IMAGE_SERVICES]]" TZ: Europe/Berlin """