-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
89 lines (79 loc) · 4.32 KB
/
Copy path.env.example
File metadata and controls
89 lines (79 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# ── Received from /api/nodes/claim during node setup ─────────────────────────
NODE_ID=
NODE_API_KEY=
REST_API_URL=
SUPABASE_URL=
TOKEN_ENCRYPTION_KEY=
# BusID of this node's one physical GPU, computed once by scripts/install.sh
# (from nvidia-smi) and stored in the database at claim time -- never hand-
# edit this, it just needs to exist here so docker-compose.yml's gpu-xserver
# service can read it.
GPU_BUSID=
# S3-compatible storage — received from /api/nodes/claim during node setup
S3_ENDPOINT=
S3_ACCESS_KEY=
S3_SECRET_KEY=
S3_BUCKET=
S3_REGION=
# ── Service config ────────────────────────────────────────────────────────────
PORT=3000
# Tailscale IP of this node -- docker-compose.yml binds the API port to
# loopback (for the Cloudflare Tunnel on this box) and to this address (for
# tailnet hosts), so it is never exposed on the LAN or a public interface.
# scripts/install.sh fills it in after the node joins the tailnet; by hand:
# tailscale ip -4. Compose refuses to start while this is blank. For local
# dev in a checkout, 127.0.0.1 works.
TAILSCALE_IP=
CADVISOR_URL=http://cadvisor:8080
PANEL_ORIGIN=https://streamwizard.org,https://staging.streamwizard.org
DEBUG=
# Blank by default -- docker-compose.yml falls back to :latest. Set this to pin
# the node to a specific build (e.g. sha-abc1234) without editing
# docker-compose.yml.
OBS_IMAGE_TAG=
# The obs-auto-switcher's public /obs command route authenticates with this
# node's per-node obs_command key, whose hash is fetched from GET /api/nodes/me
# at boot (no env var needed — it rides the existing NODE_API_KEY channel).
# How long this node's own row (capacity + hardware specs, from GET
# /api/nodes/me) is held in memory. Defaults to 1h — the row is write-once in
# practice, and everything that needs a guaranteed-fresh read (capacity gate,
# command-key rotation) bypasses the TTL anyway. Leave unset unless you are
# debugging staleness — lowering it costs rest-api requests on every metrics
# tick, which is exactly what this cache exists to avoid.
NODE_CACHE_TTL_MS=
# How long to keep serving the cached row after a failed refresh before trying
# again. Defaults to 10s. Stops a rest-api outage turning the 3s dashboard
# ticks into a retry storm.
NODE_CACHE_ERROR_BACKOFF_MS=
# This node's instance list, cached in memory. Kept correct by invalidation:
# every local mutation busts it, and the 60s OBS-watcher sync's live read
# refreshes it. The TTL is only a failsafe for a dead sync loop — defaults to
# 90s; the backoff (default 10s) matches NODE_CACHE_ERROR_BACKOFF_MS's job.
INSTANCE_CACHE_TTL_MS=
INSTANCE_CACHE_ERROR_BACKOFF_MS=
# ── ws-server lifecycle broadcast (optional) ──────────────────────────────────
# Pushes container start/stop/delete/crash events to the owning user's browser
# clients via the main ws-server's /internal/broadcast fan-out. Both must be set
# to enable; omit or leave blank to disable (the DB row stays source of truth,
# browsers just pick up the new state on their next fetch). CONSUMER_SECRET must
# match the ws-server's CONSUMER_SECRET. WS_SERVER_URL accepts ws(s):// or
# http(s):// (ws is normalized to http automatically).
WS_SERVER_URL=
CONSUMER_SECRET=
# ── InfluxDB (optional) ───────────────────────────────────────────────────────
# Time-series sink for node/instance metrics (CPU/RAM/GPU/bandwidth). All four
# vars must be set to enable; omit or leave blank to disable metrics entirely.
# One shared InfluxDB instance across environments — set BUCKET to
# streamwizard-dev / streamwizard-staging / streamwizard-prod to match this
# node's environment.
INFLUXDB_URL=
INFLUXDB_TOKEN=
INFLUXDB_ORG=
INFLUXDB_BUCKET=
# ── OBS config ────────────────────────────────────────────────────────────────
OBS_NETWORK=obs-net
OBS_CONFIG_BASE=/data/obs-configs
OBS_TEMPLATES_PREFIX=obs-templates/
OBS_DEFAULT_TEMPLATE=default
OBS_WEBSOCKET_PORT=4455
PLUGINS_PATH=/data/obs-plugins