Ctrl K
ComunidadGuías…

compose.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# exomem — remote compose deployment.
#
# Usage (see docs/docker.md for the full walkthrough):
#
#   Local/debug, no public ingress:
#     docker compose up -d
#     # uncomment the `ports:` line below first if you want 127.0.0.1:8765 bound
#
#   Public ingress via Cloudflare Tunnel:
#     docker compose --profile cloudflared up -d
#
#   Public ingress via ngrok:
#     docker compose --profile ngrok up -d
#
# With no --profile flag, only the `exomem` service starts: no host port
# published, no tunnel sidecar running (design.md D9).

services:
  exomem:
    image: ghcr.io/artexis10/exomem:latest
    # Uncomment to build locally instead of pulling the published image:
    # build: {context: ., target: lean}
    env_file: .env
    environment:
      # Container-internal path — always /vault, regardless of what EXOMEM_VAULT_PATH
      # is set to in .env for a non-container install.
      EXOMEM_VAULT_PATH: /vault
    volumes:
      - "${EXOMEM_VAULT_HOST_PATH:?set in .env}:/vault"
      - exomem-data:/data
    # Uncomment for local/debug access at 127.0.0.1:8765. No host port is
    # published by default — a tunnel profile (below) or this line are the
    # only ways to reach the service. Note: the http transport ALWAYS requires
    # the GitHub OAuth env vars, tunnel or not — without them the container
    # exits at boot (and `restart: unless-stopped` will loop it).
    # ports:
    #   - "127.0.0.1:8765:8765"
    healthcheck:
      # Reuses the existing unauthenticated OAuth-discovery route (design.md
      # D4) — no dedicated /health endpoint exists anywhere in the system.
      test:
        [
          "CMD",
          "python",
          "-c",
          "import sys,urllib.request; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8765/.well-known/oauth-protected-resource', timeout=5).status == 200 else 1)",
        ]
      interval: 30s
      start_period: 15s
    restart: unless-stopped

  cloudflared:
    image: cloudflare/cloudflared:latest
    command: tunnel run --token ${CLOUDFLARE_TUNNEL_TOKEN}
    depends_on:
      - exomem
    profiles: ["cloudflared"]

  ngrok:
    image: ngrok/ngrok:latest
    command: http exomem:8765 --url https://${NGROK_DOMAIN}
    environment:
      NGROK_AUTHTOKEN: ${NGROK_AUTHTOKEN}
    profiles: ["ngrok"]

volumes:
  exomem-data: