1# Required: Relay API and managed tunnel domains
2# Production adopts retained DNS zones in your Cloudflare account. The API
3# zone serves relay.<zone> in production and relay-<stage>.<zone> for personal
4# stages. Managed environment endpoints are provisioned below the tunnel zone.
5RELAY_API_ZONE_NAME=example.com
6RELAY_TUNNEL_ZONE_NAME=tunnels.example.com
7
8# Optional: inactive tunnel cleanup. Start with dry-run, verify the cleanup
9# logs, then set enabled. Unset and off both disable cleanup.
10# RELAY_TUNNEL_CLEANUP_MODE=off
11# Optional: cleanup for tunnels whose host never registered recovery, once they
12# have been down for 30 days. Same values, independent of the mode above.
13# RELAY_LEGACY_TUNNEL_CLEANUP_MODE=off
14# Canary stages only: shorten the 30-day legacy grace period, in minutes.
15# Ignored on prod.
16# RELAY_LEGACY_TUNNEL_GRACE_MINUTES=10
17
18# Optional: Relay domain override
19# Set this only when the derived relay hostname should not be used.
20# RELAY_DOMAIN=relay.example.com
21
22# Required: Clerk
23# Get the keys from the Clerk Dashboard under API keys. Set the JWT audience to
24# the `aud` claim configured on the `t3-relay` JWT template.
25CLERK_PUBLISHABLE_KEY=pk_test_...
26CLERK_SECRET_KEY=sk_test_...
27CLERK_JWT_AUDIENCE=t3-code-relay
28
29# Apple Push Notification service (required unless APNS_ENABLED=false)
30# Set APNS_ENABLED=false for an Android-only development relay.
31# Get these values from your Apple Developer account. Use `sandbox` for
32# development APNs credentials and `production` for production credentials.
33APNS_ENVIRONMENT=sandbox
34APNS_TEAM_ID=...
35APNS_KEY_ID=...
36APNS_BUNDLE_ID=...
37APNS_PRIVATE_KEY=...
38
39# Optional: Android push. Set this secret to the service account JSON from
40# Firebase Project settings > Service accounts. Never put it in an app build.
41# FCM_SERVICE_ACCOUNT={...}