# ScreenTinker server, running ON a BrightSign player. # # On first boot this file is copied to /server.env and read from there. Edit THAT copy # on the device — it lives with the data, so a package update replaces the code and leaves your # settings alone. # # Anything the BrightScript launcher passes through roNodeJs wins over this file, so autorun.brs # stays the authority for DATA_DIR and PORT. # # ⚠️ NO SECRETS IN HERE, and none are needed. The JWT signing secret is generated on first boot and # persisted to /certs/.jwt_secret (server/config.js), so every player gets its own. A # secret shipped inside a package would be the same on every device that ever installs it, which is # the same as having none. # This is a self-hosted install: the first registered user becomes admin, and there is no billing. SELF_HOSTED=true HIDE_BILLING=true # 8181 rather than 80/443 — the player's own DWS owns those, and taking them removes the way in if # this goes wrong. # Not 8080: it is the most contended unprivileged port there is, and a collision here presents as # "the server did not start" with nothing pointing at the cause. PORT=8181 # Local by design. The server is reachable on the LAN at the address the screen shows; nothing here # dials out. Set these only if you actually want outbound mail. # GRAPH_TENANT_ID= # GRAPH_CLIENT_ID= # GRAPH_CLIENT_SECRET= # Off by default on a player: it is an outbound call from a device that is meant to be self-contained. # TELEMETRY_COLLECTOR= # The dependency preflight guards a NATIVE better-sqlite3. This build has none — it reaches SQLite # through node:sqlite — so the check has nothing to verify and refuses to boot if left on. ST_SKIP_DEP_PREFLIGHT=1