export SERVER_IP=""
export DEPLOY_MODE=nomad # nomad or k8s
# --- Basic variables ---
export ENVIRONMENT=local
export DOMAIN_NAME=localhost
export GCP_ZONE=dc1
export CONSUL_ACL_TOKEN=
export NOMAD_ACL_TOKEN=
export SERVER_IPS="$SERVER_IP"
export NUM_SERVERS=1
export CONSUL_VERSION=1.21.4
export NOMAD_VERSION=1.10.4
export SANDBOX_STORAGE_BACKEND=redis
export ORCHESTRATOR_DIR=/home
# --- Database / Redis / Harbor ---
# Registry address required
export HARBOR_HTTP_PORT=2900
export HARBOR_HTTPS_PORT=30443
export HARBOR_DATA_DIR=/data/harbor  # 镜像仓库数据存储目录
export HARBOR_CERTS_DIR=/etc/harbor/certs
export REGISTRY_PROJECT=e2b-orchestration
# PostgreSQL 组件开关：true 部署内置 postgres（默认）；false 跳过部署，使用外部实例（POSTGRES_CONNECTION_STRING 指向外部地址）
export ENABLE_POSTGRES=true
# Redis 组件开关：true 部署内置 redis（默认）；false 跳过部署，组件降级运行（REDIS_URL 置空触发代码内 ErrRedisDisabled 降级；SANDBOX_STORAGE_BACKEND 自动降为 memory）
export ENABLE_REDIS=true
# PostgreSQL address required
export POSTGRES_CONNECTION_STRING="postgresql://postgres:local@$SERVER_IP:5432/mydatabase?sslmode=disable"
# k8s 模式下 API/迁移器访问 postgres 的地址（默认内置 Service；ENABLE_POSTGRES=false 时改为外部实例地址）
export POSTGRES_URL=${POSTGRES_URL:-postgres.e2b.svc.cluster.local}
export POSTGRES_DOCKER_IMAGE=postgres
export POSTGRES_PORT=5432
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=local
export POSTGRES_RESOURCES_CPU_COUNT=2000
export POSTGRES_RESOURCES_MEMORY_MB=2048
export POSTGRES_LIMITS_CPU_COUNT=4000
export POSTGRES_LIMITS_MEMORY_MB=4096
export REDIS_URL="redis.service.consul"
export REDIS_CLUSTER_URL=""
export MINIO_ENDPOINT="$SERVER_IP:9000"
export MINIO_ACCESS_KEY="minioadmin"
export MINIO_SECRET_KEY="minioadmin"

# --- Other secrets ---
# No longer use SUPABASE; connect to self-hosted PostgreSQL
export SUPABASE_JWT_SECRETS=
export POSTHOG_API_KEY=
# ANALYTICS_COLLECTOR is an internal component of api service; token is custom
export ANALYTICS_COLLECTOR_HOST=http://localhost:2901
export ANALYTICS_COLLECTOR_API_TOKEN=token
# Launch Darkly for experimental new features, not yet enabled
export LAUNCH_DARKLY_API_KEY=""
export API_ADMIN_TOKEN=dev_admin
# --- Mooncake ---
export GLOG_logtostderr="1"  # 节点本机IP
export MOONCAKE_MASTER_ADDR="141.61.17.196:50055"  # 集群Master地址（固定节点）
export MOONCAKE_METADATA_SERVER="http://141.61.17.196:8015/metadata"  # 元数据服务地址（固定节点）
export MOONCAKE_LOCAL_BUFFER_SIZE="536870912"  # 缓存、分片、协议相关配置
export MOONCAKE_GLOBAL_SEGMENT_SIZE="0"
export MOONCAKE_PROTOCOL="ub"
export MC_URMA_TRANS_MODE="RM"
export MOONCAKE_DEVICE_NAME="bonding_dev_0"
export MC_LOG_ENABLE="1"  # 日志配置
export MC_LOG_DIR="/orchestrator"
export MC_LOG_LEVEL="TRACE"
export MC_STORE_LOCAL_HOT_CACHE_USE_SHM="0"  # 本地热缓存配置
export MC_STORE_LOCAL_HOT_BLOCK_SIZE="67108864"
export MC_STORE_LOCAL_HOT_ADMISSION_THRESHOLD="1"
export MC_SLICE_SIZE="1048576"  # 分片与工作线程配置
export MC_WORKERS_PER_CTX="8"
export MC_MAX_WR="4"
export MC_URMA_BONDING_MULTIPATH_ENABLE="on"  # URMA bonding 多路径开关
export MC_UB_NUMA_AFFINITY_ENABLE="on"  # UB NUMA 亲和开关
# 层文件（COPY）上传：CLI 直连 template-manager 的 HTTP 通道（端口同 GRPC_PORT，默认 5008）
export MOONCAKE_UPLOAD_PUBLIC_ENDPOINT="http://$SERVER_IP:5008"  # 须为 CLI 可达地址，端口需与 TEMPLATE_MANAGER_PORT 一致；多构建节点且共用一个入口时，改为该入口地址
export MOONCAKE_UPLOAD_SIGNING_SECRET=""  # 可选，默认进程内随机；多副本共享同一入口时必须显式配置且各节点一致
export MOONCAKE_UPLOAD_MAX_BYTES=""  # 可选，单次上传上限（字节），默认 10GiB

# Recommended to randomly generate; used as api access token
export SANDBOX_ACCESS_TOKEN_HASH_SEED=dadbb9c5-7c79-7bb1-f58c-e0fa61d49c57
export LOGS_COLLECTOR_ADDRESS=localhost:30006
export OTEL_COLLECTOR_GRPC_ENDPOINT=localhost:4317
export LOCAL_CLUSTER_ENDPOINT=localhost:3001
export API_PORT_NAME=api
export NOMAD_TOKEN=

# --- ClickHouse (optional) ---
export CLICKHOUSE_SERVER_COUNT=0   # Set 0 if not needed locally
export CLICKHOUSE_BACKUPS_BUCKET_NAME=
export CLICKHOUSE_USERNAME=e2b
export CLICKHOUSE_PASSWORD=clickity-clicky-click
export CLICKHOUSE_DATABASE=default
export CLICKHOUSE_VERSION=25.4
export CLICKHOUSE_RESOURCES_CPU_COUNT=40000
export CLICKHOUSE_RESOURCES_MEMORY_MB=40960
export CLICKHOUSE_SERVER_SECRET=123456789
export CLICKHOUSE_HOST=127.0.0.1

# --- Loki / Logs collector ---
export LOGS_COLLECTOR_PUBLIC_IP=127.0.0.1
export LOGS_COLLECTOR_VERSION=0.50.0-alpine

# --- docker-reverse-proxy ---
export HARBOR_HOST=$SERVER_IP:$HARBOR_HTTP_PORT
export HARBOR_PROJECT=e2b-orchestration
export HARBOR_USERNAME=admin
export HARBOR_PASSWORD=Harbor12345
export DOMAIN_NAME=domain_name
export DOCKER_REVERSE_PROXY_PORT_NAME=docker-reverse-proxy

# --- edge ---
# edge（client-proxy）组件开关：true 部署（默认）；false 跳过部署，沙箱域名路由（*.e2b.app）不可用，API 直连功能不受影响
export ENABLE_EDGE=true
# api 组件开关：true 部署内置 api（默认）；false 跳过部署，helm 不渲染 api Deployment/Service（API 由外部承载，仅 k8s 模式生效）
export ENABLE_API=true
export CLIENT_PROXY_COUNT=1
export EDGE_PROXY_PORT_NAME=session
export EDGE_API_PORT_NAME=edge-api
export CLIENT_PROXY_RESOURCES_CPU_COUNT=40000
export CLIENT_PROXY_RESOURCES_MEMORY_MB=40960
export CLIENT_PROXY_MAX_RESOURCES_MEMORY_MB=61440
export EDGE_API_SECRET=dadbb9c5-7c79-7bb1-f58c-e0fa61d49c57
export LOKI_URL=127.0.0.1:3100
export API_GRPC_ADDRESS=localhost:5009

# --- api ---
export API_RESOURCES_CPU_COUNT=20000
export API_RESOURCES_MEMORY_MB=20480
export API_LIMITS_CPU_COUNT=20000
export API_LIMITS_MEMORY_MB=40960

# --- loki ---
export LOKI_SERVICE_PORT_NAME=loki
export LOKI_BUCKET_NAME=default
export LOKI_RESOURCES_CPU_COUNT=40000
export LOKI_PROXY_RESOURCES_MEMORY_MB=40960
export LOKI_PROXY_MAX_RESOURCES_MEMORY_MB=61440
export LOKI_VERSION=2.9.3

# --- orchestrator ---
export ORCHESTRATOR_PORT_NAME=orchestrator
export ORCHESTRATOR_PROXY_PORT_NAME=orchestrator-proxy
export OTEL_TRACING_PRINT=false
export ENVD_TIMEOUT=60s
export TEMPLATE_BUCKET_NAME=e2b-dev-fc-templates
export ALLOW_SANDBOX_INTERNET=true
export SHARED_CHUNK_CACHE_PATH=
export DOMAIN_NAME=

# --- otel-collector ---
export OTEL_COLLECTOR_RESOURCES_CPU_COUNT=40000
export OTEL_COLLECTOR_PROXY_RESOURCES_MEMORY_MB=40960
export OTEL_COLLECTOR_PROXY_MAX_RESOURCES_MEMORY_MB=61440
export GRAFANA_USERNAME=
export GRAFANA_OTEL_COLLECTOR_TOKEN=
export GRAFANA_OTLP_URL=
export OTEL_COLLECTOR_VERSION=0.119.0


# --- redis ---
export REDIS_PORT_NAME=redis
export REDIS_VERSION=7.4.4-alpine

# --- template-manager ---
export BUILD_CACHE_BUCKET_NAME=e2b-dev-fc-cache
export E2B_FC_NETNS_EXEC_HELPER=/opt/e2b-infra/bin/fc-netns-exec
export E2B_USE_FC_NETNS_EXEC_HELPER=true
export TEMPLATE_MANAGER_RESOURCES_CPU_COUNT=20480
export TEMPLATE_MANAGER_RESOURCES_MEMORY_MB=65536
export TEMPLATE_MANAGER_LIMITS_CPU_COUNT=20480
export TEMPLATE_MANAGER_LIMITS_MEMORY_MB=65536

# --- Ports ---
export API_PORT=3000
export API_GRPC_PORT=5009
export EDGE_API_PORT=3001
export EDGE_PROXY_PORT=3002
export EDGE_HEALTH_PORT=3003
export ORCHESTRATOR_PORT=5008
export TEMPLATE_MANAGER_HOST=template-manager.service.consul:5008
export ORCHESTRATOR_PROXY_PORT=5007
export TEMPLATE_MANAGER_PORT=5008
export REDIS_PORT=6379
# 组件注入用的完整 Redis 地址（host:port）；ENABLE_REDIS=false 时部署脚本自动置空，无需手工修改
export REDIS_ENDPOINT=${REDIS_ENDPOINT:-"${REDIS_URL}:${REDIS_PORT}"}
export DOCKER_REVERSE_PROXY_PORT=5000
export LOKI_SERVICE_PORT=3100
export LOGS_PROXY_PORT=30006
export LOGS_HEALTH_PROXY_PORT=44313
export OTEL_COLLECTOR_GRPC_PORT=4317
export CLICKHOUSE_SERVER_PORT=9010
export CLICKHOUSE_METRICS_PORT=9363
export DNS_PORT=5353

# --- Images ---
export API_DOCKER_IMAGE=api
export DB_MIGRATOR_DOCKER_IMAGE=db-migrator
export DOCKER_REVERSE_PROXY_DOCKER_IMAGE=docker-reverse-proxy
export CLIENT_PROXY_DOCKER_IMAGE=client-proxy
export BUSYBOX_IMAGE=busybox
export WEBHOOK_DOCKER_IMAGE=e2b-webhook
# e2b-webhook 开关：true 部署，false 不部署（默认）
export ENABLE_WEBHOOK=false

# Manual specification required for installation
export STORAGE_PROVIDER=Local
export ARTIFACTS_REGISTRY_PROVIDER=Local

export API_NODE_POOL=api
export CLICKHOUSE_NODE_POOL=api
export BUILD_NODE_POOL=api
# Orchestrator 启动方式：默认容器化（nomad 模式=nomad job，k8s 模式=DaemonSet）
# 取消注释并填 systemd 时，由节点 e2b-orchestrator.service 承载
# export ORCHESTRATOR_TYPE=systemd
# API 静态发现清单（ORCHESTRATOR_TYPE=systemd 时必填）：
# 格式 "nodeName1=InternalIP1,nodeName2=InternalIP2"，nodeName 必须与 K8s Node 名一致；
# 新增/下线节点后手动更新本项并重跑 deploy.sh
export ORCHESTRATOR_STATIC_NODES=""
