控制器會讀取環境變數,也可以讀取工作目錄或 server/ 下的 .env。Docker Compose 則讀取該專案的 .env,並將支援的值傳入容器。
時間長度使用 Go 語法,例如 250ms、5s、30m 或 168h。布林值使用 true 或 false。機密值必須保持穩定、彼此不同,而且不能放進版本控制。
Compose 部署變數
這些值用來選擇映像檔與主機對外開放方式,不會直接設定控制器。
| 變數 | 預設值 | 用途 |
|---|---|---|
NETSTAMP_IMAGE | yorukot/netstamp | 控制器映像檔儲存庫 |
NETSTAMP_VERSION | latest | 控制器與遷移映像檔的標籤 |
TIMESCALEDB_IMAGE | timescale/timescaledb:latest-pg16 | 資料庫映像檔 |
NETSTAMP_PORT | 3000 | 對外映射至控制器 8080 連接埠的主機連接埠 |
正式環境應固定映像檔版本。Compose volume 的邏輯名稱是 netstamp-postgres;Docker 通常會在實際名稱前加上 Compose 專案名稱。
控制器核心設定
| 變數 | 預設值 | 用途 |
|---|---|---|
APP_ENV | local | 執行環境;不是 local 時會啟用安全工作階段 cookie 行為 |
DEMO_MODE | false | 啟用後端示範模式限制 |
SERVICE_NAME | controller | 日誌與遙測使用的服務識別名稱 |
APP_VERSION | 0.1.0 | 回報的應用程式版本;Compose 會將 NETSTAMP_VERSION 對應到這裡 |
API_VERSION | v1 | 掛載在 /api/<version> 下的版本路徑 |
LOG_LEVEL | info | debug、info、warn、error、dpanic、panic 或 fatal |
LOG_PSEUDONYM_KEY | development placeholder | 將敏感日誌識別資訊去識別化時使用的穩定金鑰 |
SYSTEM_SETTINGS_ENCRYPTION_KEY | development placeholder | 加密系統管理機密設定時使用的穩定金鑰 |
SHUTDOWN_TIMEOUT | 10s | 控制器正常關閉的期限 |
所有非本機部署都必須更換這兩個開發用預留金鑰。變更設定加密金鑰可能使已儲存的 SMTP 機密值無法解密。
HTTP 與公開來源網址
| 變數 | 預設值 | 用途 |
|---|---|---|
BACKEND_BASE_URL | empty | 回呼、電子郵件與探測器安裝網址使用的公開控制器來源網址 |
PUBLIC_WEB_BASE_URL | empty | 使用者連結使用的公開瀏覽器來源網址 |
HTTP_ADDR | :8080 | 控制器監聽位址 |
WEB_DIR | empty | 建置後的前端目錄;正式映像檔設為 /app/web |
REQUEST_TIMEOUT | 10s | 請求內容的逾時時間 |
HTTP_READ_HEADER_TIMEOUT | 5s | 讀取標頭的逾時時間 |
HTTP_READ_TIMEOUT | 15s | 讀取請求的逾時時間 |
HTTP_WRITE_TIMEOUT | 15s | 寫入回應的逾時時間 |
HTTP_IDLE_TIMEOUT | 60s | keep-alive 連線閒置逾時時間 |
HTTP_TRUSTED_PROXIES | empty | 以逗號分隔的 Proxy IP 位址或 CIDR 前綴 |
來源網址只能包含 http 或 https 通訊協定與主機名稱。啟用外部驗證時,BACKEND_BASE_URL 不可為空。
資料庫
| 變數 | 預設值 | 用途 |
|---|---|---|
DATABASE_HOST | localhost | PostgreSQL 主機;Compose 使用 postgres |
DATABASE_PORT | 5432 | PostgreSQL 連接埠 |
DATABASE_USER | netstamp | 資料庫使用者 |
DATABASE_PASSWORD | netstamp | 資料庫密碼 |
DATABASE_NAME | netstamp | 資料庫名稱 |
DATABASE_SSLMODE | disable | PostgreSQL SSL 模式 |
DB_MAX_CONNS | 10 | 連線池上限 |
DB_MIN_CONNS | 0 | 連線池最少閒置連線數量 |
DB_MAX_CONN_LIFETIME | 1h | 連線池中連線的最長存活時間 |
DB_MAX_CONN_IDLE_TIME | 30m | 連線池中連線的最長閒置時間 |
資料庫連線若會通過不受信任的網路,請啟用 TLS 驗證。標準 Compose 環境會將資料庫流量留在私有網路內。
工作階段、密碼與權杖
| 變數 | 預設值 | 用途 |
|---|---|---|
AUTH_SESSION_HASH_KEY | development placeholder | 不透明工作階段權杖使用的 HMAC/雜湊金鑰 |
AUTH_API_TOKEN_HASH_KEY | development placeholder | 個人 API 權杖使用的 HMAC/雜湊金鑰 |
AUTH_SESSION_IDLE_TTL | 24h | 工作階段閒置期限 |
AUTH_SESSION_ABSOLUTE_TTL | 168h | 工作階段最長存活時間 |
AUTH_SESSION_TOUCH_INTERVAL | 5m | 兩次寫入工作階段活動狀態的最短間隔 |
AUTH_SUDO_TTL | 5m | 敏感操作所需的近期驗證有效時間 |
AUTH_REGISTRATION_ENABLED | true | 本機帳號註冊政策的環境變數備援值 |
AUTH_EXTERNAL_FLOW_TTL | 10m | OAuth/OIDC 驗證流程存活時間 |
AUTH_PASSWORD_RESET_TOKEN_TTL | 30m | 密碼重設連結有效時間 |
AUTH_PASSWORD_RESET_RATE_LIMIT_WINDOW | 1h | 密碼重設速率限制的時間範圍 |
AUTH_PASSWORD_RESET_IP_LIMIT | 10 | 時間範圍內每個 IP 可發出的請求數 |
AUTH_PASSWORD_RESET_EMAIL_LIMIT | 3 | 時間範圍內每個電子郵件地址可發出的請求數 |
AUTH_ARGON2ID_MEMORY_KIB | 65536 | Argon2id 記憶體成本 |
AUTH_ARGON2ID_ITERATIONS | 3 | Argon2id 迭代成本 |
AUTH_ARGON2ID_PARALLELISM | 4 | Argon2id 平行處理數 |
系統管理介面中儲存的設定可以覆蓋註冊政策。變更雜湊金鑰會使受該金鑰保護的既有憑證失效。
通用 OIDC
| 變數 | 預設值 | 用途 |
|---|---|---|
AUTH_OIDC_ENABLED | false | 啟用通用 OIDC |
AUTH_OIDC_ISSUER_URL | empty | OIDC 簽發者與探索服務來源網址 |
AUTH_OIDC_CLIENT_ID | empty | 用戶端 ID |
AUTH_OIDC_CLIENT_SECRET | empty | 用戶端密鑰 |
AUTH_OIDC_DISPLAY_NAME | Single sign-on | 登入按鈕標籤 |
AUTH_OIDC_JIT_PROVISIONING_ENABLED | false | 為身分有效但尚未存在的使用者建立帳號 |
Google 驗證
| 變數 | 預設值 | 用途 |
|---|---|---|
AUTH_GOOGLE_ENABLED | false | 啟用 Google OpenID Connect |
AUTH_GOOGLE_CLIENT_ID | empty | Google 用戶端 ID |
AUTH_GOOGLE_CLIENT_SECRET | empty | Google 用戶端密鑰 |
AUTH_GOOGLE_DISPLAY_NAME | Google | 登入按鈕標籤 |
AUTH_GOOGLE_JIT_PROVISIONING_ENABLED | false | 為接受的 Google 身分建立新使用者 |
AUTH_GOOGLE_ALLOWED_HOSTED_DOMAINS | empty | 以逗號分隔的 Workspace 託管網域允許清單 |
GitHub 驗證
| 變數 | 預設值 | 用途 |
|---|---|---|
AUTH_GITHUB_ENABLED | false | 啟用 GitHub OAuth |
AUTH_GITHUB_CLIENT_ID | empty | GitHub OAuth 用戶端 ID |
AUTH_GITHUB_CLIENT_SECRET | empty | GitHub OAuth 用戶端密鑰 |
AUTH_GITHUB_DISPLAY_NAME | GitHub | 登入按鈕標籤 |
AUTH_GITHUB_JIT_PROVISIONING_ENABLED | false | 為接受的 GitHub 身分建立新使用者 |
AUTH_GITHUB_ALLOW_SIGNUP | true | 允許透過 GitHub OAuth 流程註冊 GitHub 帳號 |
指派、警示與通知背景工作
| 變數 | 預設值 | 用途 |
|---|---|---|
ASSIGNMENT_REFRESH_WORKER_ENABLED | true | 重試已排入佇列的指派更新工作 |
ASSIGNMENT_REFRESH_WORKER_INTERVAL | 5s | 指派更新背景工作的輪詢間隔 |
ASSIGNMENT_REFRESH_WORKER_BATCH_SIZE | 25 | 每次更新週期取得的工作數量 |
ASSIGNMENT_REFRESH_WORKER_STALE_TIMEOUT | 1m | 中斷的更新工作可被重新取得前的逾時時間 |
ALERT_EVALUATION_ENABLED | true | 執行指標門檻警示評估 |
NOTIFICATION_WORKER_ENABLED | true | 傳送已排入佇列的事件通知 |
NOTIFICATION_WORKER_INTERVAL | 5s | 通知寄件匣的輪詢間隔 |
NOTIFICATION_WORKER_BATCH_SIZE | 25 | 每次週期取得的通知傳送工作數量 |
NOTIFICATION_WORKER_STALE_TIMEOUT | 1m | 中斷的傳送工作可被重新取得前的逾時時間 |
NOTIFICATION_HTTP_TIMEOUT | 10s | Webhook、Slack、Discord 與 Telegram 的 HTTP 逾時 |
停用背景工作只會暫停處理,不會刪除設定或已排入佇列的工作。
SMTP
| 變數 | 預設值 | 用途 |
|---|---|---|
SMTP_HOST | empty | SMTP 主機;主機或寄件者為空時,電子郵件功能視為尚未設定 |
SMTP_PORT | 587 | SMTP 連接埠 |
SMTP_USERNAME | empty | 選用的 SMTP AUTH 使用者名稱 |
SMTP_PASSWORD | empty | 選用的 SMTP AUTH 密碼 |
SMTP_FROM | empty | 信封寄件者地址 |
SMTP_TLS_MODE | starttls | starttls、implicit 或 none |
SMTP_TIMEOUT | 10s | 連線與寄送逾時時間 |
儲存在系統管理介面中的 SMTP 設定會覆蓋這些環境變數備援值。
Tracing
| 變數 | 預設值 | 用途 |
|---|---|---|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | empty | 接收 OTLP HTTP trace 的端點 |
程式碼儲存庫提供的可觀測性 Compose 環境會將這個值指向 VictoriaTraces。保留空值即可停用匯出。
探測器 agent
Systemd 安裝程式會寫入前三個值,其餘都是本機執行參數的覆寫值。
| 變數 | 預設值 | 用途 |
|---|---|---|
NETSTAMP_PROBE_CONTROLLER_URL | required | 控制器來源網址,不含 /api/v1 |
NETSTAMP_PROBE_ID | required | 探測器 UUID |
NETSTAMP_PROBE_SECRET | required | 探測器執行階段金鑰 |
NETSTAMP_PROBE_HTTP_TIMEOUT | 10s | 執行階段 API 請求逾時時間 |
NETSTAMP_PROBE_MAX_WORKERS | 128 | 同時執行的背景工作數量上限 |
NETSTAMP_PROBE_RESULT_QUEUE_SIZE | 10000 | 可暫存的結果數量 |
NETSTAMP_PROBE_RESULT_BATCH_SIZE | 100 | 單次提交的批次上限 |
NETSTAMP_PROBE_RESULT_FLUSH_INTERVAL | 5s | 提交未滿批次前的最長等待時間 |
NETSTAMP_PROBE_ASSIGNMENT_TTL | 10m | 本機指派資料的有效期限 |
NETSTAMP_PROBE_SHUTDOWN_TIMEOUT | 10s | Agent 正常關閉的期限 |
NETSTAMP_PROBE_HEARTBEAT_INTERVAL | 30s | 心跳訊號間隔 |
NETSTAMP_PROBE_ASSIGNMENT_POLL_INTERVAL | 30s | 指派輪詢間隔 |
NETSTAMP_PROBE_INITIAL_BACKOFF | 1s | 執行階段重試的初始延遲 |
NETSTAMP_PROBE_MAX_BACKOFF | 30s | 執行階段重試的最長延遲 |
NETSTAMP_PROBE_MAX_ATTEMPTS | 5 | 目前重試週期判定失敗前的嘗試次數 |
NETSTAMP_PROBE_METRICS_ADDR | empty | 選用的 Prometheus 監聽位址,例如 127.0.0.1:9091 |
NETSTAMP_PROBE_PPROF_ADDR | empty | 選用的 pprof 監聽位址,例如 127.0.0.1:6060 |
NETSTAMP_PROBE_LOG_LEVEL | info | debug、info、warn 或 error |
所有數值容量與時間長度都必須大於零。最大退避時間不得小於初始退避時間。
Web 應用程式建置變數
這些值會編譯進靜態前端。容器啟動後再變更執行環境,不會修改已建置的程式套件。
| 變數 | 預設值 | 用途 |
|---|---|---|
VITE_NETSTAMP_API_BASE_URL | /api/v1 | 瀏覽器 API 基底網址 |
VITE_NETSTAMP_API_PROXY_TARGET | http://localhost:8080 | Vite 開發用反向代理目標 |
VITE_NETSTAMP_REGISTRATION_ENABLED | true | 後端政策允許時顯示註冊 UI |
VITE_NETSTAMP_PROJECT_CREATION_ENABLED | true | 顯示建立專案 UI |
VITE_NETSTAMP_USER_CREDENTIAL_CHANGES_ENABLED | true | 顯示憑證管理介面 |
VITE_NETSTAMP_DEMO_MODE | false | 啟用唯讀示範模式 |
VITE_NETSTAMP_DEMO_EMAIL | empty | 選用的示範帳號電子郵件 |
VITE_NETSTAMP_DEMO_PASSWORD | empty | 選用的示範帳號密碼 |
分析服務整合都是選用功能:VITE_NETSTAMP_GA_MEASUREMENT_ID、VITE_NETSTAMP_GOOGLE_TAG_ID、VITE_NETSTAMP_CLARITY_PROJECT_ID、VITE_NETSTAMP_META_PIXEL_ID 或其 FACEBOOK 別名、VITE_NETSTAMP_POSTHOG_KEY 與主機、VITE_NETSTAMP_PLAUSIBLE_DOMAIN 與指令碼 URL,以及 VITE_NETSTAMP_UMAMI_WEBSITE_ID 與指令碼 URL。
VITE_NETSTAMP_TRACKING_CONSENT_MODE 接受 regional、always 或 never;VITE_NETSTAMP_TRACKING_CONSENT_COUNTRIES 則是區域適用國家清單。
說明文件建置變數
| 變數 | 預設值 | 用途 |
|---|---|---|
PUBLIC_SITE_URL | https://netstamp.dev | 說明文件的標準來源網址 |
PUBLIC_NETSTAMP_APP_BASE_URL | https://app.netstamp.dev | 說明文件連往產品應用程式的 URL |
說明文件支援相同的選用追蹤服務與同意控制,但前綴使用 PUBLIC_NETSTAMP_*,而不是 VITE_NETSTAMP_*。