--- # homeai-infra/docker/docker-compose.yml # P1 — Infrastructure services # # Provides: Uptime Kuma, code-server, n8n # # NOTE: Home Assistant, Portainer, and Gitea are pre-existing instances # and are NOT managed here. Point .env.services at their existing URLs. # # Prerequisites: # - Docker installed and running # - `homeai` Docker network exists (created by setup.sh) # - .env file present (copy from .env.example) # # Usage: # docker compose -f docker/docker-compose.yml up -d # docker compose -f docker/docker-compose.yml down name: homeai-infra # Linux compatibility: host.docker.internal:host-gateway resolves host IP # On macOS this is already defined; on Linux it maps to the Docker bridge gateway. x-host-gateway: &host-gateway extra_hosts: - "host.docker.internal:host-gateway" services: # ─── Uptime Kuma ───────────────────────────────────────────────────────────── uptime-kuma: container_name: homeai-uptime-kuma image: louislam/uptime-kuma:latest restart: unless-stopped ports: - "3001:3001" volumes: - ${DATA_DIR:-~/homeai-data}/uptime-kuma:/app/data networks: - homeai labels: - homeai.service=uptime-kuma - homeai.url=http://localhost:3001 # ─── code-server (browser VS Code) ─────────────────────────────────────────── code-server: container_name: homeai-code-server image: codercom/code-server:latest restart: unless-stopped ports: - "8090:8080" # Note: exposed on 8090 to avoid conflict with OpenClaw (8080) volumes: - ${DATA_DIR:-~/homeai-data}/code-server:/home/coder/.config - ${HOME}:/home/coder/host:rw # Mount home dir for file access environment: - PASSWORD=${CODE_SERVER_PASSWORD:-changeme123} <<: *host-gateway networks: - homeai labels: - homeai.service=code-server - homeai.url=http://localhost:8090 # ─── n8n (workflow automation) ─────────────────────────────────────────────── n8n: container_name: homeai-n8n image: n8nio/n8n:latest restart: unless-stopped ports: - "5678:5678" volumes: - ${DATA_DIR:-~/homeai-data}/n8n:/home/node/.n8n environment: - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER:-admin} - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD:-changeme123} - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY:-changeme} - N8N_HOST=0.0.0.0 - N8N_PORT=5678 - N8N_PROTOCOL=http - WEBHOOK_URL=http://localhost:5678/ <<: *host-gateway networks: - homeai labels: - homeai.service=n8n - homeai.url=http://localhost:5678 networks: homeai: external: true name: homeai