Configuration Reference
The settings that control how a device behaves, and where they live.
A device's behaviour is controlled by two separate layers: environment variables in
.env (identity, credentials, and runtime flags), and a YAML config file
(config_production.yaml) for everything else — timezone, display language, timing, and
messages. This page is a reference for both.
Environment (.env)
.env holds values that are either secret or environment-specific — they're read once at
process startup via EnvironmentFile in the systemd unit.
| Variable | Purpose |
|---|---|
BYTEGATE_STORE_ID | The device's location ID (a UUID) in the Cloud Platform. The name says Store for backward compatibility with the wire protocol, but it identifies your location from the dashboard. Set automatically by register_device.py. |
BYTEGATE_DEVICE_SECRET | The device's authentication secret for the Cloud Platform, used for JWT token exchange. Set automatically by register_device.py — never commit it or set it by hand. |
DOOR_ACCESS_ENV | production or development. Selects which data/log directories the device uses and how verbose logging is. If unset, it's auto-detected from the hostname. |
USB_ENABLED | true (default) for real relay hardware, false to use a mock relay — useful for development or testing without hardware attached. |
SHOW_UI_LOGS | true/false (default false). Shows debug log lines in the kiosk GUI window — a troubleshooting aid, not something to leave on in normal operation. |
BYTEKEY_EDGE_QR_SYNC_TOKEN | Optional Bytekey QR sync bearer token when the feature is explicitly provisioned. It must be edge-scoped and must never be Bytekey INTERNAL_AUTH_TOKEN. See Bytekey QR Sync. |
Field tip
BYTEGATE_STORE_ID and BYTEGATE_DEVICE_SECRET are written for you by
register_device.py during registration — you shouldn't need to
edit them by hand. See that page if a device needs to be re-registered.
Config file (config_production.yaml)
Everything that isn't identity or a runtime flag lives in the environment config file —
config_production.yaml on a production device. Two settings are the ones you'll actually
touch after initial setup:
| Key | Purpose |
|---|---|
system.timezone | An IANA timezone name, e.g. Europe/Zurich. Used for logging and display — it does not affect audit log timestamps, which are always strict UTC regardless of this setting. |
ui.language | Display language for generated kiosk messages (closed-hours, coming-soon). Supported values are en and de; region forms like de-CH are recognised and normalized to de. Unknown or missing values fall back to en. |
bytekey_qr_sync | Disabled-by-default Bytekey QR sync block for API base URL, token source, device/location IDs, cache directory, and timeout. Configure only after the Bytekey API snapshot route and an edge-scoped credential are ready. |
To change either one, edit the value directly in config_production.yaml on the device,
then restart the service for it to take effect:
sudo systemctl restart bytegate-edgeField tip
Config file edits are read once at startup. After changing ui.language or
system.timezone, restart with sudo systemctl restart bytegate-edge — the running
process won't pick up the new value on its own.
Last updated on