5.5 KiB
5.5 KiB
XControl Docker role
This role provisions the XControl stack (Postgres, account service, RAG server, dashboard, Redis, and Nginx proxy with Certbot assets). Templates from templates/ and static assets from files/ are rendered into {{ xcontrol_workspace }} and the Docker Compose stack is started.
Layout
files/
├── docker-compose.yaml
├── config/
│ ├── account.yaml
│ └── server.yaml
├── certbot/
│ ├── conf/
│ └── www/
├── nginx/
│ ├── conf.d/
│ │ ├── accounts.conf
│ │ ├── artifact.conf
│ │ ├── bootstrap-nginx.conf
│ │ ├── default.conf
│ │ ├── homepage.conf
│ │ └── rag-server.conf
│ └── nginx.conf
└── run.sh
Defaults
xcontrol_deploy_dir:/opt/xcontrolxcontrol_workspace:{{ xcontrol_deploy_dir }}xcontrol_certbot_domains:svc.plus(comma-separated)xcontrol_certbot_email:manbuzhe2009@qq.comxcontrol_homepage_domain:{{ xcontrol_primary_domain }}xcontrol_homepage_alias_domain:www.{{ xcontrol_primary_domain }}xcontrol_homepage_cn_domain:cn-homepage.{{ xcontrol_primary_domain }}xcontrol_accounts_domain:accounts.{{ xcontrol_primary_domain }}xcontrol_rag_domain:rag-server.{{ xcontrol_primary_domain }}xcontrol_rag_api_domain:api.{{ xcontrol_primary_domain }}xcontrol_artifact_domain:dl.{{ xcontrol_primary_domain }}xcontrol_artifact_cn_domain:cn-dl.{{ xcontrol_primary_domain }}xcontrol_db_host:dbxcontrol_db_port:5432xcontrol_db_name:xcontrolxcontrol_db_user:xcontrolxcontrol_db_password:xcontrolxcontrol_account_mode:server-agentxcontrol_account_log_level:infoxcontrol_account_auth_enable:truexcontrol_account_public_token:xcontrol-public-token-2024xcontrol_account_refresh_secret:xcontrol-refresh-secret-2024xcontrol_account_access_secret:xcontrol-access-secret-2024xcontrol_account_access_expiry:1hxcontrol_account_refresh_expiry:168hxcontrol_account_server_addr::8080xcontrol_account_read_timeout:15sxcontrol_account_write_timeout:15sxcontrol_account_public_url:https://accounts.{{ xcontrol_primary_domain }}xcontrol_account_tls_enabled:falsexcontrol_account_tls_redirect_http:falsexcontrol_account_store_driver:postgresxcontrol_account_db_name:{{ xcontrol_db_name }}xcontrol_account_db_sslmode:disablexcontrol_account_db_max_open_conns:30xcontrol_account_db_max_idle_conns:10xcontrol_account_session_ttl:24hxcontrol_account_session_cache:memoryxcontrol_account_smtp_host:smtp.example.comxcontrol_account_smtp_port:587xcontrol_account_smtp_username:apikeyxcontrol_account_smtp_password:change-mexcontrol_account_smtp_from:XControl Account <no-reply@example.com>xcontrol_account_smtp_timeout:10sxcontrol_account_smtp_tls_mode:autoxcontrol_account_smtp_tls_insecure_skip_verify:falsexcontrol_account_xray_sync_enabled:falsexcontrol_account_xray_sync_interval:5mxcontrol_account_xray_output_path:/usr/local/etc/xray/config.jsonxcontrol_account_xray_template_path:account/config/xray.config.template.jsonxcontrol_account_xray_validate_command:[]xcontrol_account_xray_restart_command:["systemctl", "restart", "xray.service"]xcontrol_account_agent_id:account-primaryxcontrol_rag_server_addr::8090xcontrol_rag_read_timeout:120sxcontrol_rag_write_timeout:120sxcontrol_rag_public_url:https://{{ xcontrol_rag_api_domain }}xcontrol_rag_allowed_origins:["https://{{ xcontrol_rag_api_domain }}", "https://{{ xcontrol_homepage_alias_domain }}", "https://{{ xcontrol_homepage_domain }}", "https://{{ xcontrol_accounts_domain }}", "http://localhost:3000", "http://127.0.0.1:3000"]xcontrol_rag_auth_enable:falsexcontrol_rag_auth_url:https://{{ xcontrol_accounts_domain }}xcontrol_rag_api_base_url:https://{{ xcontrol_rag_api_domain }}xcontrol_rag_public_token:xcontrol-public-token-2025xcontrol_rag_redis_addr:""xcontrol_rag_redis_password:""xcontrol_rag_vectordb_db_name:ragxcontrol_rag_vectordb_sslmode:disablexcontrol_rag_vectordb_pgurl:postgres://{{ xcontrol_db_user }}:{{ xcontrol_db_password }}@{{ xcontrol_db_host }}:{{ xcontrol_db_port }}/{{ xcontrol_rag_vectordb_db_name }}?sslmode={{ xcontrol_rag_vectordb_sslmode }}xcontrol_rag_datasources:[{"name": "XControl", "repo": "https://github.com/svc-design/XControl", "path": "docs"}]xcontrol_rag_sync_repo_proxy:""xcontrol_rag_embedder_provider:chutesxcontrol_rag_embedder_models:["bge-m3"]xcontrol_rag_embedder_baseurl:http://127.0.0.1:9000xcontrol_rag_embedder_endpoint:http://127.0.0.1:9000/v1/embeddingsxcontrol_rag_generator_provider:chutesxcontrol_rag_generator_models:["deepseek-r1:8b"]xcontrol_rag_generator_baseurl:http://127.0.0.1:11434xcontrol_rag_generator_endpoint:http://127.0.0.1:11434/v1/chat/completionsxcontrol_rag_embedding_max_batch:64xcontrol_rag_embedding_dimension:1024
RUN
ansible-playbook -i inventory.ini deploy_XControl_docker.yaml -e "domain=svc.plus" -D -C -l svc.plus
ansible-playbook -i inventory.ini deploy_XControl_docker.yaml -e "domain=svc.plus" -D -l svc.plus