243 lines
8.8 KiB
YAML
243 lines
8.8 KiB
YAML
name: k1412-agent
|
|
|
|
services:
|
|
web:
|
|
image: ${WEB_IMAGE:?WEB_IMAGE is required}
|
|
platform: linux/amd64
|
|
container_name: k1412-agent-web
|
|
restart: unless-stopped
|
|
init: true
|
|
ports:
|
|
- "${WEB_PORT:-12004}:8080"
|
|
environment:
|
|
WEBUI_URL: ${WEBUI_URL:-https://agent.k1412.top}
|
|
WEBUI_NAME: K1412 Agent
|
|
K1412_REMOVE_UPSTREAM_BRANDING: ${K1412_REMOVE_UPSTREAM_BRANDING:-false}
|
|
WEBUI_FAVICON_URL: /static/favicon.png
|
|
CORS_ALLOW_ORIGIN: ${CORS_ALLOW_ORIGIN:-https://agent.k1412.top}
|
|
WEBUI_AUTH: "true"
|
|
WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:?WEBUI_SECRET_KEY is required}
|
|
WEBUI_ADMIN_EMAIL: ${WEBUI_ADMIN_EMAIL:?WEBUI_ADMIN_EMAIL is required}
|
|
WEBUI_ADMIN_PASSWORD: ${WEBUI_ADMIN_PASSWORD:?WEBUI_ADMIN_PASSWORD is required}
|
|
WEBUI_ADMIN_NAME: Administrator
|
|
WEBUI_SESSION_COOKIE_SAME_SITE: lax
|
|
WEBUI_SESSION_COOKIE_SECURE: "true"
|
|
WEBUI_AUTH_COOKIE_SAME_SITE: lax
|
|
WEBUI_AUTH_COOKIE_SECURE: "true"
|
|
JWT_EXPIRES_IN: 7d
|
|
ENABLE_SIGNUP: "true"
|
|
DEFAULT_USER_ROLE: pending
|
|
ENABLE_SIGNUP_PASSWORD_CONFIRMATION: "true"
|
|
ENABLE_FORWARD_USER_INFO_HEADERS: "true"
|
|
FORWARD_USER_INFO_HEADER_JWT_SECRET: ${OPENWEBUI_FORWARD_JWT_SECRET:?OPENWEBUI_FORWARD_JWT_SECRET is required}
|
|
FORWARD_USER_INFO_HEADER_JWT_EXPIRES_SECONDS: "300"
|
|
K1412_GATEWAY_URL: http://gateway:8001
|
|
K1412_GATEWAY_KEY: ${INTERNAL_GATEWAY_KEY:?INTERNAL_GATEWAY_KEY is required}
|
|
OPENAI_API_BASE_URL: http://runtime:8000/v1
|
|
OPENAI_API_KEY: ${INTERNAL_PROVIDER_KEY:?INTERNAL_PROVIDER_KEY is required}
|
|
DEFAULT_MODELS: chat-medium
|
|
TASK_MODEL: chat-light
|
|
ENABLE_TITLE_GENERATION: "false"
|
|
ENABLE_FOLLOW_UP_GENERATION: "false"
|
|
ENABLE_OLLAMA_API: "false"
|
|
ENABLE_DIRECT_CONNECTIONS: "false"
|
|
ENABLE_PERSISTENT_CONFIG: "false"
|
|
ENABLE_VERSION_UPDATE_CHECK: "false"
|
|
SAFE_MODE: "true"
|
|
ENABLE_COMMUNITY_SHARING: "false"
|
|
ENABLE_WEB_SEARCH: "false"
|
|
ENABLE_IMAGE_GENERATION: "false"
|
|
ENABLE_CODE_EXECUTION: "false"
|
|
ENABLE_CODE_INTERPRETER: "false"
|
|
ENABLE_MEMORIES: "false"
|
|
ENABLE_NOTES: "false"
|
|
ENABLE_CHANNELS: "false"
|
|
ENABLE_CALENDAR: "false"
|
|
ENABLE_AUTOMATIONS: "false"
|
|
ENABLE_EVALUATION_ARENA_MODELS: "false"
|
|
ENABLE_USER_STATUS: "false"
|
|
RAG_EMBEDDING_ENGINE: openai
|
|
RAG_EMBEDDING_MODEL: disabled
|
|
RAG_OPENAI_API_BASE_URL: http://runtime:8000/v1
|
|
RAG_OPENAI_API_KEY: ${INTERNAL_PROVIDER_KEY:?INTERNAL_PROVIDER_KEY is required}
|
|
RAG_EMBEDDING_MODEL_AUTO_UPDATE: "false"
|
|
RAG_RERANKING_MODEL_AUTO_UPDATE: "false"
|
|
ENABLE_RAG_HYBRID_SEARCH: "false"
|
|
BYPASS_EMBEDDING_AND_RETRIEVAL: "true"
|
|
VECTOR_DB: disabled
|
|
STORAGE_PROVIDER: local
|
|
USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS: "false"
|
|
USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS: "false"
|
|
USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS: "false"
|
|
USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS: "false"
|
|
USER_PERMISSIONS_WORKSPACE_SKILLS_ACCESS: "false"
|
|
USER_PERMISSIONS_CHAT_CONTROLS: "false"
|
|
USER_PERMISSIONS_CHAT_VALVES: "false"
|
|
USER_PERMISSIONS_CHAT_SYSTEM_PROMPT: "false"
|
|
USER_PERMISSIONS_CHAT_PARAMS: "false"
|
|
USER_PERMISSIONS_CHAT_MULTIPLE_MODELS: "false"
|
|
USER_PERMISSIONS_CHAT_SHARE: "false"
|
|
USER_PERMISSIONS_CHAT_ALLOW_PUBLIC_SHARING: "false"
|
|
USER_PERMISSIONS_FEATURES_DIRECT_TOOL_SERVERS: "false"
|
|
USER_PERMISSIONS_FEATURES_WEB_SEARCH: "false"
|
|
USER_PERMISSIONS_FEATURES_IMAGE_GENERATION: "false"
|
|
USER_PERMISSIONS_FEATURES_CODE_INTERPRETER: "false"
|
|
USER_PERMISSIONS_FEATURES_API_KEYS: "false"
|
|
USER_PERMISSIONS_FEATURES_MEMORIES: "false"
|
|
USER_PERMISSIONS_FEATURES_AUTOMATIONS: "false"
|
|
USER_PERMISSIONS_FEATURES_CHANNELS: "false"
|
|
USER_PERMISSIONS_FEATURES_CALENDAR: "false"
|
|
USER_PERMISSIONS_FEATURES_NOTES: "false"
|
|
USER_PERMISSIONS_SETTINGS_INTERFACE: "false"
|
|
DATABASE_URL: postgresql+psycopg://${POSTGRES_USER:-agent}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@postgres:5432/${POSTGRES_DB:-agent}
|
|
REDIS_URL: redis://redis:6379/0
|
|
volumes:
|
|
- openwebui-data:/app/backend/data
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
runtime:
|
|
condition: service_healthy
|
|
networks:
|
|
- internal
|
|
- public
|
|
healthcheck:
|
|
test: ["CMD", "curl", "--silent", "--fail", "http://127.0.0.1:8080/health"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
runtime:
|
|
image: ${RUNTIME_IMAGE:?RUNTIME_IMAGE is required}
|
|
platform: linux/amd64
|
|
container_name: k1412-agent-runtime
|
|
restart: unless-stopped
|
|
init: true
|
|
environment:
|
|
MODEL_API_BASE_URL: ${MODEL_API_BASE_URL:-https://api.k1412.top}
|
|
MODEL_API_KEY: ${MODEL_API_KEY:?MODEL_API_KEY is required}
|
|
OPENWEBUI_FORWARD_JWT_SECRET: ${OPENWEBUI_FORWARD_JWT_SECRET:?OPENWEBUI_FORWARD_JWT_SECRET is required}
|
|
INTERNAL_PROVIDER_KEY: ${INTERNAL_PROVIDER_KEY:?INTERNAL_PROVIDER_KEY is required}
|
|
INTERNAL_GATEWAY_KEY: ${INTERNAL_GATEWAY_KEY:?INTERNAL_GATEWAY_KEY is required}
|
|
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-agent}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@postgres:5432/${POSTGRES_DB:-agent}
|
|
GATEWAY_URL: http://gateway:8001
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
gateway:
|
|
condition: service_healthy
|
|
networks:
|
|
- internal
|
|
- egress
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:rw,noexec,nosuid,size=128m
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
|
|
gateway:
|
|
image: ${GATEWAY_IMAGE:?GATEWAY_IMAGE is required}
|
|
platform: linux/amd64
|
|
container_name: k1412-agent-gateway
|
|
restart: unless-stopped
|
|
init: true
|
|
environment:
|
|
OPENWEBUI_FORWARD_JWT_SECRET: ${OPENWEBUI_FORWARD_JWT_SECRET:?OPENWEBUI_FORWARD_JWT_SECRET is required}
|
|
INTERNAL_GATEWAY_KEY: ${INTERNAL_GATEWAY_KEY:?INTERNAL_GATEWAY_KEY is required}
|
|
EXECUTION_PROVIDER: ${EXECUTION_PROVIDER:-local-docker}
|
|
WORKSPACE_IMAGE: ${WORKSPACE_IMAGE:?WORKSPACE_IMAGE is required}
|
|
WORKSPACE_NETWORK_ENABLED: ${WORKSPACE_NETWORK_ENABLED:-true}
|
|
WORKSPACE_MEMORY_LIMIT: ${WORKSPACE_MEMORY_LIMIT:-2g}
|
|
WORKSPACE_CPU_LIMIT: ${WORKSPACE_CPU_LIMIT:-2}
|
|
WORKSPACE_PIDS_LIMIT: ${WORKSPACE_PIDS_LIMIT:-512}
|
|
WORKSPACE_SSH_HOST: ${WORKSPACE_SSH_HOST:-}
|
|
WORKSPACE_DOWNLOAD_MAX_BYTES: ${WORKSPACE_DOWNLOAD_MAX_BYTES:-134217728}
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
networks:
|
|
- internal
|
|
- egress
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:rw,noexec,nosuid,size=128m
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
|
|
bootstrap:
|
|
image: ${RUNTIME_IMAGE:?RUNTIME_IMAGE is required}
|
|
platform: linux/amd64
|
|
container_name: k1412-agent-bootstrap
|
|
restart: "no"
|
|
command: ["python", "-m", "agent_platform.bootstrap"]
|
|
environment:
|
|
OPENWEBUI_INTERNAL_URL: http://web:8080
|
|
WEBUI_ADMIN_EMAIL: ${WEBUI_ADMIN_EMAIL:?WEBUI_ADMIN_EMAIL is required}
|
|
WEBUI_ADMIN_PASSWORD: ${WEBUI_ADMIN_PASSWORD:?WEBUI_ADMIN_PASSWORD is required}
|
|
INTERNAL_GATEWAY_KEY: ${INTERNAL_GATEWAY_KEY:?INTERNAL_GATEWAY_KEY is required}
|
|
GATEWAY_URL: http://gateway:8001
|
|
depends_on:
|
|
web:
|
|
condition: service_healthy
|
|
gateway:
|
|
condition: service_healthy
|
|
networks:
|
|
- internal
|
|
|
|
postgres:
|
|
image: postgres:17-alpine@sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193
|
|
platform: linux/amd64
|
|
container_name: k1412-agent-postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-agent}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
|
|
POSTGRES_DB: ${POSTGRES_DB:-agent}
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
networks:
|
|
- internal
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-agent} -d ${POSTGRES_DB:-agent}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
redis:
|
|
image: redis:8-alpine@sha256:8096655e437712b07503796fb64d81359256cfcff0ab29d95a7da72863786efb
|
|
platform: linux/amd64
|
|
container_name: k1412-agent-redis
|
|
restart: unless-stopped
|
|
command: ["redis-server", "--save", "60", "1", "--appendonly", "yes"]
|
|
volumes:
|
|
- redis-data:/data
|
|
networks:
|
|
- internal
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 20
|
|
|
|
workspace-image:
|
|
image: ${WORKSPACE_IMAGE:?WORKSPACE_IMAGE is required}
|
|
platform: linux/amd64
|
|
command: ["true"]
|
|
profiles: ["build-only"]
|
|
|
|
networks:
|
|
public:
|
|
egress:
|
|
internal:
|
|
internal: true
|
|
|
|
volumes:
|
|
openwebui-data:
|
|
postgres-data:
|
|
redis-data:
|