包含本地/远程部署脚本、AI Agent 服务、Dashboard 与 QA 验证。 Co-authored-by: Cursor <cursoragent@cursor.com>
108 lines
3.6 KiB
Bash
108 lines
3.6 KiB
Bash
# deploy/local/.env.template — Plane v1.3.0 (community self-host) + AI Agent
|
|
# Copy to .env, replace every CHANGEME_* with a real value, then chmod 600 .env.
|
|
# Do NOT commit .env to git.
|
|
|
|
# ---- Release pin (DO NOT change without rerunning pull-plane.sh) ----
|
|
APP_RELEASE=v1.3.0
|
|
APP_DOMAIN=localhost
|
|
|
|
# ---- Listening ports (host-side; we expose ONLY proxy via override) ----
|
|
LISTEN_HTTP_PORT=80
|
|
LISTEN_HTTPS_PORT=443
|
|
|
|
# ---- Plane URLs (must match host-mapped port from override.yml) ----
|
|
WEB_URL=http://localhost:8090
|
|
CORS_ALLOWED_ORIGINS=http://localhost:8090
|
|
API_BASE_URL=http://api:8000
|
|
SITE_ADDRESS=:80
|
|
TRUSTED_PROXIES=0.0.0.0/0
|
|
|
|
# ---- Postgres ----
|
|
PGHOST=plane-db
|
|
PGDATABASE=plane
|
|
POSTGRES_USER=plane
|
|
POSTGRES_PASSWORD=CHANGEME_POSTGRES_STRONG_PASSWORD
|
|
POSTGRES_DB=plane
|
|
POSTGRES_PORT=5432
|
|
PGDATA=/var/lib/postgresql/data
|
|
DATABASE_URL=postgresql://plane:CHANGEME_POSTGRES_STRONG_PASSWORD@plane-db/plane
|
|
|
|
# ---- Redis ----
|
|
REDIS_HOST=plane-redis
|
|
REDIS_PORT=6379
|
|
REDIS_URL=redis://plane-redis:6379/
|
|
|
|
# ---- RabbitMQ ----
|
|
RABBITMQ_HOST=plane-mq
|
|
RABBITMQ_PORT=5672
|
|
RABBITMQ_USER=plane
|
|
RABBITMQ_PASSWORD=CHANGEME_RABBITMQ_STRONG_PASSWORD
|
|
RABBITMQ_VHOST=plane
|
|
AMQP_URL=amqp://plane:CHANGEME_RABBITMQ_STRONG_PASSWORD@plane-mq:5672/plane
|
|
|
|
# ---- Django ----
|
|
SECRET_KEY=CHANGEME_DJANGO_SECRET_KEY_AT_LEAST_50_CHARS
|
|
DEBUG=0
|
|
GUNICORN_WORKERS=1
|
|
|
|
# ---- MinIO / S3 ----
|
|
USE_MINIO=1
|
|
AWS_REGION=
|
|
AWS_ACCESS_KEY_ID=CHANGEME_MINIO_ACCESS_KEY
|
|
AWS_SECRET_ACCESS_KEY=CHANGEME_MINIO_SECRET_KEY
|
|
AWS_S3_ENDPOINT_URL=http://plane-minio:9000
|
|
AWS_S3_BUCKET_NAME=uploads
|
|
FILE_SIZE_LIMIT=5242880
|
|
MINIO_ENDPOINT_SSL=0
|
|
|
|
# ---- Live collab server ----
|
|
LIVE_SERVER_SECRET_KEY=CHANGEME_LIVE_SECRET_KEY_AT_LEAST_32_CHARS
|
|
|
|
# ---- Replicas (single-host local) ----
|
|
WEB_REPLICAS=1
|
|
SPACE_REPLICAS=1
|
|
ADMIN_REPLICAS=1
|
|
API_REPLICAS=1
|
|
WORKER_REPLICAS=1
|
|
BEAT_WORKER_REPLICAS=1
|
|
LIVE_REPLICAS=1
|
|
|
|
# ---- Cert (unused locally, leave blank) ----
|
|
CERT_EMAIL=
|
|
CERT_ACME_CA=https://acme-v02.api.letsencrypt.org/directory
|
|
CERT_ACME_DNS=
|
|
|
|
# ---- API rate ----
|
|
API_KEY_RATE_LIMIT=60/minute
|
|
|
|
# ---- AI Agent (FastAPI; gptproto OpenAI-compatible aggregator) ----
|
|
GPTPROTO_API_KEY=CHANGEME_GPTPROTO_API_KEY
|
|
GPTPROTO_BASE_URL=https://gptproto.com/v1
|
|
GPTPROTO_MODEL=claude-sonnet-4-6
|
|
PLANE_API_BASE=http://api:8000
|
|
PLANE_API_TOKEN=CHANGEME_PLANE_API_TOKEN
|
|
|
|
# ============================================================
|
|
# 反遥测 / 反回拨锁定 (LOCKDOWN) — 不要清空这些开关!
|
|
# 设计原则:env-gated 开关,上游源码完整保留,不残废任何逻辑
|
|
# 详见 deploy/local/patches/README.md
|
|
# ============================================================
|
|
# [核心开关] 阻止 OpenTelemetry 把 instance trace (用户数 / issue 数等)
|
|
# 发到 https://telemetry.plane.so —— 新建 Instance 时 is_telemetry_enabled 默认置 False,
|
|
# 上游的 if instance.is_telemetry_enabled: 守卫会直接跳过整个 trace 上报逻辑
|
|
DISABLE_TELEMETRY=1
|
|
# [核心开关] 阻止 register_instance 每次启动 GET api.github.com/.../releases/latest
|
|
DISABLE_GITHUB_VERSION_CHECK=1
|
|
# 防御纵深:把 OTLP exporter endpoint 指向本机不存在端口
|
|
# 即使将来上游改了 telemetry 流程,数据也只能发去黑洞
|
|
OTLP_ENDPOINT=http://127.0.0.1:1
|
|
# PostHog 事件追踪 (USER_INVITED / WORKSPACE_DELETED) —— 留空即禁用 (上游默认就是空)
|
|
POSTHOG_API_KEY=
|
|
POSTHOG_HOST=
|
|
# Microsoft Clarity 前端会话录制 —— 留空即禁用 (上游默认就是空)
|
|
VITE_SESSION_RECORDER_KEY=
|
|
# Intercom 客服 widget (会加载 widget.intercom.io) —— 0 即禁用
|
|
IS_INTERCOM_ENABLED=0
|
|
# Unsplash 图片搜索 (按需调 api.unsplash.com,不主动外发数据) —— 留空即关
|
|
UNSPLASH_ACCESS_KEY=
|