# Environment variables The server reads its configuration from environment variables (canonical) with an optional YAML overlay. Env wins over YAML so operators can tweak a single setting without rewriting the file. ## Server | Variable | Default | Meaning | |---------------------------|----------------------------------|---------| | `RM_LISTEN` | `:8080` | TCP listener for the HTTP server. | | `RM_DATA_DIR` | `/data` | Persistent state directory (SQLite, secret key, agent assets). | | `RM_BASE_URL` | (none) | Public URL clients use; required for OIDC redirects + cookie scope. | | `RM_SECRET_KEY_FILE` | `${RM_DATA_DIR}/secret.key` | Path to the AEAD key file. Auto-generated on first run. | | `RM_COOKIE_SECURE` | `true` | Set `false` only for local HTTP testing. Controls `Secure` on session cookies. | | `RM_TRUSTED_PROXY` | (none) | Comma-separated CIDRs trusted for `X-Forwarded-*`. | | `RM_BUNDLED_ASSETS_DIR` | `/opt/restic-manager/dist` | Read-only path with bundled agent binaries + install scripts (the docker image bakes them here). | | `RM_METRICS_TOKEN` | (off) | When set, `GET /metrics` requires `Authorization: Bearer `. | | `RM_METRICS_TRUSTED_CIDR` | (off) | When set, `GET /metrics` restricts source IPs (comma-CIDR). | OIDC variables (all optional; empty issuer disables OIDC): | Variable | Meaning | |--------------------------------|---------| | `RM_OIDC_ISSUER` | OIDC discovery URL (e.g. `https://auth.example.com`). | | `RM_OIDC_CLIENT_ID` | Client ID registered with the IdP. | | `RM_OIDC_CLIENT_SECRET` | Client secret (or use `RM_OIDC_CLIENT_SECRET_FILE`). | | `RM_OIDC_CLIENT_SECRET_FILE` | Path to a file holding the client secret. | | `RM_OIDC_DISPLAY_NAME` | Button label on the login page (e.g. "Authelia"). | | `RM_OIDC_ROLE_CLAIM` | Token claim that carries roles (default `groups`). | | `RM_OIDC_ROLE_MAPPING` | `idp-group=role` entries, comma-separated (e.g. `rm-admin=admin,rm-ops=operator`). | | `RM_OIDC_REDIRECT_URL` | Override for the redirect URL; defaults to `${RM_BASE_URL}/auth/oidc/callback`. | ## Agent | Variable | Default | Meaning | |----------------------|---------|---------| | `RM_AGENT_CONFIG` | `/etc/restic-manager/agent.yaml` (Linux) | Config file path. | The agent's other settings live in the YAML file (server URL, bearer token, optional cert pin). The install script writes that file for you at enrolment. ## Build-time The Makefile threads `-ldflags` from `git describe` into the `internal/version` package so `--version` and the dashboard footer show the right values: ``` -X gitea.dcglab.co.uk/steve/restic-manager/internal/version.Version=$(VERSION) -X gitea.dcglab.co.uk/steve/restic-manager/internal/version.Commit=$(COMMIT) ``` If you build with `go build` directly (no Makefile), `Version` falls back to `dev` and the agent-update comparison falls back to "always equal". Source-build deployments can still run; they just don't participate in the self-update flow.