-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
139 lines (128 loc) · 4.38 KB
/
Copy pathdocker-compose.yml
File metadata and controls
139 lines (128 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
version: '3.8'
services:
# OpenClaw Gateway - proxied for users; loopback-exposed for local node pairing
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw-gateway
restart: unless-stopped
networks:
- openclaw-internal
environment:
# OpenClaw configuration
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- OPENCLAW_TRUSTED_PROXIES=${OPENCLAW_TRUSTED_PROXIES:-172.20.0.0/16}
- OPENCLAW_TAILSCALE_AUTH_ENABLED=false
# AI provider API keys
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
volumes:
- ./openclaw-config:/tmp/openclaw-seed:ro
- openclaw-home:/home/node/.openclaw
- openclaw-workspace:/tmp/shared-workspace
- /c/Users/Ritam Kumarb Kundu:/host-home
user: root
entrypoint: ["/bin/sh", "-c", "mkdir -p /home/node/.openclaw /tmp/shared-workspace && chown -R 1000:1000 /home/node/.openclaw /tmp/shared-workspace && su -s /bin/sh node -c 'cp /tmp/openclaw-seed/openclaw.json /home/node/.openclaw/openclaw.json && cp /tmp/openclaw-seed/workspace/*.md /tmp/shared-workspace/ 2>/dev/null; exec node /app/openclaw.mjs gateway --port 18789'"]
ports:
- "127.0.0.1:${OPENCLAW_HOST_PORT:-18789}:18789"
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:18789/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
# AuthSec OpenClaw Proxy - exposed for client connections
proxy:
build:
context: ../..
dockerfile: Dockerfile.proxy
# Alternative: use a published image
# image: ghcr.io/authsec-ai/authsec-openclaw-proxy:latest
container_name: authsec-openclaw-proxy
restart: unless-stopped
networks:
- openclaw-internal
- public
ports:
- "${PROXY_HTTP_PORT:-8080}:8080"
environment:
# Proxy configuration
- PROXY_PUBLIC_BASE_URL=${PROXY_PUBLIC_BASE_URL}
- PROXY_LISTEN_ADDR=:8080
# OpenClaw connection
- OPENCLAW_UPSTREAM_URL=${OPENCLAW_UPSTREAM_URL:-http://openclaw:18789}
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
# Session security
- SESSION_HMAC_SECRET=${SESSION_HMAC_SECRET}
- SESSION_SECURE_COOKIE=${SESSION_SECURE_COOKIE:-false}
# AuthSec configuration
- AUTHSEC_MODE=${AUTHSEC_MODE:-sdk}
- AUTHSEC_ISSUER_URL=${AUTHSEC_ISSUER_URL}
- AUTHSEC_CLIENT_ID=${AUTHSEC_CLIENT_ID}
- AUTHSEC_CLIENT_SECRET=${AUTHSEC_CLIENT_SECRET}
- AUTHSEC_AUDIENCE=${AUTHSEC_AUDIENCE:-}
- AUTHSEC_ADMIN_EMAIL=${AUTHSEC_ADMIN_EMAIL:-}
- AUTHSEC_JWT_SECRET=${AUTHSEC_JWT_SECRET:-}
- AUTHSEC_BASE_URL=${AUTHSEC_BASE_URL:-}
- AUTHSEC_LOGIN_URL=${AUTHSEC_LOGIN_URL:-}
# Multi-tenant configuration (optional)
- TENANT_ROUTING_MODE=${TENANT_ROUTING_MODE:-host}
- TENANT_CONFIG_JSON=${TENANT_CONFIG_JSON:-}
# Logging
- LOG_LEVEL=${LOG_LEVEL:-info}
volumes:
- openclaw-workspace:/tmp/shared-workspace
depends_on:
openclaw:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/healthz"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
# Caddy - optional TLS termination for production/secure context
# Enable by uncommenting this service
caddy:
image: caddy:2-alpine
container_name: authsec-caddy
restart: unless-stopped
networks:
- public
ports:
- "${CADDY_HTTP_PORT:-80}:80"
- "${CADDY_HTTPS_PORT:-443}:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
environment:
- PROXY_HOST=${PROXY_HOST:-proxy:8080}
- PUBLIC_DOMAIN=${PUBLIC_DOMAIN:-localhost}
depends_on:
- proxy
profiles:
- tls # Only start when explicitly enabled: docker compose --profile tls up
healthcheck:
test: ["CMD", "caddy", "version"]
interval: 30s
timeout: 10s
retries: 3
networks:
# Internal network - only accessible between services
openclaw-internal:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
# Public network - exposed to host
public:
driver: bridge
volumes:
openclaw-workspace:
driver: local
openclaw-home:
driver: local
caddy-data:
driver: local
caddy-config:
driver: local