visionA/.env.stage.example
jim800121chen 7575d4f8ee chore(stage): 補 Phase 0.8 conversion 環境變數設定範例
- VISIONA_CONVERTER_BASE_URL / VISIONA_FAA_BASE_URL(轉檔服務端點)
- VISIONA_SERVICE_CLIENT_ID / VISIONA_SERVICE_CLIENT_SECRET(service token)
- 對齊 .autoflow/04-architecture/conversion.md §5.3 啟用判定邏輯
2026-05-04 16:55:17 +08:00

138 lines
6.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# visionA — stage 環境變數範本
#
# 使用方式:
# 1. 在 stage host 上:
# cp .env.stage.example .env.stage
# nano .env.stage # 填入 secrets見下方說明
# 2. .env.stage 與 docker-compose.stage.yml 同目錄
# 3. ⚠️ 不進 git.gitignore 已排除)
#
# Secret 產生方式:
# openssl rand -hex 32
#
# 對齊:
# - visionA-backend/internal/config/config.goA1 後 ClientSecret 變選填、預留 ServiceClient*
# - .autoflow/04-architecture/oidc-tdd.md §13.1
# - .autoflow/progress.md Phase 0.7 → S6OIDC public PKCE-only client
# ============================================================
# OIDC — Member Center @ stage
# ============================================================
# Issuer URL — 結尾斜線**必要**MC discovery 回的 issuer 帶 slash否則 client init reject
VISIONA_OIDC_ISSUER_URL=https://stage-9527.innovedus.com:7850/
# Login clientpublic PKCE-only — 無 secret
VISIONA_OIDC_CLIENT_ID=b8093fea1a504a5d8f0e04bee9f78f2e
# 留空 → backend 走 PKCE-only modeA1 後支援;見 ADR-013
VISIONA_OIDC_CLIENT_SECRET=
# Service-to-service clientclient_credentials grant
# Phase 0.7 預留,不啟用;填入也不會被 main.go wire見 config.go ServiceClientID 註解)
# ⚠️ 兩個值都禁止寫死進 git tracked 檔;只在 stage host 的 .env.stage 才填入真值
VISIONA_OIDC_SERVICE_CLIENT_ID=
VISIONA_OIDC_SERVICE_CLIENT_SECRET=
# Callback URL — 必須與 MC 端 client 設定的 redirect_uri 完全一致
VISIONA_OIDC_REDIRECT_URL=https://stage-9527.innovedus.com:9527/api/auth/callback
# Frontend URL — OIDC callback 完成後 302 回的目標(同 host 同 port
VISIONA_FRONTEND_URL=https://stage-9527.innovedus.com:9527
# ============================================================
# Cookie sessionOIDC 登入後在 browser 端的 session cookie
# ============================================================
# Cookie HMAC 簽章金鑰 — **必須換掉**
# 產生openssl rand -hex 32
VISIONA_SESSION_SECRET=CHANGE_ME_OPENSSL_RAND_HEX_32
# CookieDomain留空 = host-only cookie推薦stage 只有單一 host
# 若未來要跨子網域共享 session 才設成 .innovedus.com 之類
VISIONA_SESSION_COOKIE_DOMAIN=
# CookieSecurestage 走 HTTPS → 必須 true
VISIONA_SESSION_COOKIE_SECURE=true
# Session TTL預設值。如要改去掉註解填值
# VISIONA_SESSION_ABSOLUTE_TTL=168h
# VISIONA_SESSION_IDLE_TTL=24h
# ============================================================
# Server — port 都對齊 nginx.stage.conf
# ============================================================
VISIONA_HOST=0.0.0.0
VISIONA_API_PORT=3721
VISIONA_TUNNEL_PORT=3800
VISIONA_PROXY_INTERNAL_PORT=3801
VISIONA_PROXY_INTERNAL_URL=http://127.0.0.1:3801
# api-server 端的 SessionStore backendproxy-client = 透過 internal HTTP 查 remote-proxy
# remote-proxy 端的 SessionStore backendinmemory = 自己持有 yamux session
# 兩個 binary 共讀此 .env但各自只看自己需要的欄位
VISIONA_SESSION_BACKEND=proxy-client
# Agent 連 tunnel 用的對外 URL/api/pairing/exchange 回給 agent
# 注意 ws→wss、host:port 與對外 HTTPS 一致
VISIONA_RELAY_PUBLIC_URL=wss://stage-9527.innovedus.com:9527
# ============================================================
# CORS — stage 同 host 同源frontend 與 backend 都從 :9527 出來),不需放
# ============================================================
VISIONA_CORS_ALLOWED_ORIGINS=
# ============================================================
# Storage — 雛形 LocalFShost 的 /opt/visiona/data/ 掛進 container
# ============================================================
VISIONA_STORAGE_BACKEND=localfs
VISIONA_STORAGE_LOCALFS_ROOT=/data/storage
# presigned URL 對外可達 base與公司 host nginx 對外一致
VISIONA_STORAGE_LOCALFS_BASE_URL=https://stage-9527.innovedus.com:9527/storage
# presigned URL HMAC secret — **必須換掉**
# 產生openssl rand -hex 32
VISIONA_STORAGE_SIGNING_SECRET=CHANGE_ME_OPENSSL_RAND_HEX_32
# ============================================================
# Model upload
# ============================================================
# 模型上傳大小上限MB— 注意要與 nginx.stage.conf 的 client_max_body_size 對齊
# 目前 nginx 設 100M這裡也 100要改大兩處要一起改
VISIONA_MODEL_MAX_SIZE_MB=100
# ============================================================
# Pairing token雛形留空 = 動態配發;填值 = 寫死)
# 對齊 .autoflow/02-prd/feature-pairing-token.md
# ============================================================
VISIONA_PAIRING_TOKEN=
# ============================================================
# Misc
# ============================================================
VISIONA_LOG_LEVEL=info
# stage 不塞 demo data避免 storage 被假資料污染)
VISIONA_SEED_DEMO_DATA=false
# Phase 0.7 security audit (2026-05-01) 後 stage/prod 不再讀此值;
# 已從 api.Deps 移除(見 .autoflow/05-implementation/review/phase-0.7-security-audit.md C1
# 留註解作為 audit trailstage 部署不需設定 VISIONA_STATIC_USER_ID。
# ============================================================
# Phase 0.8 — 轉檔功能整合converter / FAA / MC service token
# ============================================================
# 對齊 .autoflow/04-architecture/conversion.md §5.3
#
# 啟用判定:當 ConverterBaseURL 與 FAABaseURL 都非空,且 ServiceClientID/Secret 都非空時,
# main.go 才會 wire conversion.Service任一缺 → 5 個 /api/conversion/* endpoint 回 501。
# kneron_model_converter task-scheduler base URLstage 公司內網)
VISIONA_CONVERTER_BASE_URL=http://192.168.0.130:9501
# File Access Agent base URL
VISIONA_FAA_BASE_URL=http://192.168.0.130:5081
# 服務對服務 clientclient_credentials grantscope: converter:job.write/read +
# files:download.read/delegate— stage 已配,不 rotate測試環境
VISIONA_OIDC_SERVICE_CLIENT_ID=
VISIONA_OIDC_SERVICE_CLIENT_SECRET=
# Tenant ID給 MC delegated download token request 用)
VISIONA_CONVERSION_TENANT_ID=visionA