BeaconAuth

Configuration

Environment variables and CLI options for BeaconAuth.

Server configuration (beacon)

Use CLI flags or environment variables. The canonical reference is:

beacon serve --help

Core options

OptionEnvDefaultNotes
--database-urlDATABASE_URLsqlite://./beacon_auth.db?mode=rwcSQLite by default.
--bind-addressBIND_ADDRESS127.0.0.1:8080HTTP bind address.
--control-socketCONTROL_SOCKETbeacon-auth (Windows) / /tmp/beacon-auth.sock (Unix)Control socket for local admin tasks.
--cors-originsCORS_ORIGINShttp://localhost:3000,http://localhost:5173Comma-separated list.
--jwt-expirationJWT_EXPIRATION3600Access token expiration (seconds).
--log-levelRUST_LOGinfoLog level filter.
--base-urlBASE_URLhttps://beaconauth.pages.devUsed for issuer, OAuth redirects, WebAuthn RP origin.
--jwt-kidJWT_KIDbeacon-auth-key-1JWT kid header value.
--redis-urlREDIS_URL(empty)Optional Redis for WebAuthn ceremony state.
--jwks-urlJWKS_URL(empty)Optional advertised JWKS URL for jku.

OAuth options

OptionEnvNotes
--github-client-idGITHUB_CLIENT_IDGitHub OAuth client ID.
--github-client-secretGITHUB_CLIENT_SECRETGitHub OAuth client secret.
--google-client-idGOOGLE_CLIENT_IDGoogle OAuth client ID.
--google-client-secretGOOGLE_CLIENT_SECRETGoogle OAuth client secret.
--microsoft-client-idMICROSOFT_CLIENT_IDMicrosoft Entra ID client ID.
--microsoft-client-secretMICROSOFT_CLIENT_SECRETMicrosoft Entra ID client secret.
--microsoft-tenantMICROSOFT_TENANTDefaults to common.

Administrative commands

beacon migrate --database-url sqlite://./beacon_auth.db
beacon create-user --username admin --password your_password
beacon list-users
beacon delete-user --username admin

Example .env

DATABASE_URL=sqlite://./beacon_auth.db?mode=rwc
BIND_ADDRESS=0.0.0.0:8080
CORS_ORIGINS=http://localhost:3000,http://localhost:5173
JWT_EXPIRATION=3600
RUST_LOG=info
BASE_URL=https://auth.example.com
JWT_KID=beacon-auth-key-1

# Optional
REDIS_URL=
JWKS_URL=

# OAuth providers
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
MICROSOFT_TENANT=common

Cloudflare Worker configuration

The Worker is configured via wrangler.workers.jsonc and deployment-time variables.

Variables defined in wrangler.workers.jsonc

VariablePurpose
LIBSQL_URLlibSQL/Turso database endpoint.
BASE_URLPublic base URL for issuer + OAuth redirects.
JWKS_URLOptional advertised JWKS URL.
JKU_ALLOWED_HOST_PATTERNSAllowed hosts for JWT jku fetches.
JWT_KIDJWT key id in headers.
ACCESS_TOKEN_EXPIRATIONAccess token lifetime (seconds).
REFRESH_TOKEN_EXPIRATIONRefresh token lifetime (seconds).
JWT_EXPIRATIONGeneral JWT expiration (seconds).

Secrets (Worker)

The deployment workflow can optionally sync these secrets:

  • GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET
  • GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET
  • MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT
  • LIBSQL_AUTH_TOKEN (for libSQL/Turso)