A community based topic aggregation platform built on atproto
1# Coves Production Environment Variables
2# Copy to .env.prod and fill in real values
3# NEVER commit .env.prod to git!
4
5# =============================================================================
6# PostgreSQL (AppView Database)
7# =============================================================================
8POSTGRES_DB=coves_prod
9POSTGRES_USER=coves_user
10POSTGRES_PASSWORD=CHANGE_ME_SECURE_PASSWORD_HERE
11
12# =============================================================================
13# PDS (Personal Data Server)
14# =============================================================================
15# Generate with: openssl rand -hex 32
16PDS_JWT_SECRET=CHANGE_ME_64_HEX_CHARS
17
18# Admin password for PDS management
19PDS_ADMIN_PASSWORD=CHANGE_ME_SECURE_ADMIN_PASSWORD
20
21# K256 private key for DID rotation
22# Generate with: openssl rand -hex 32
23PDS_ROTATION_KEY=CHANGE_ME_64_HEX_CHARS
24
25# Optional: Email configuration for account recovery
26# PDS_EMAIL_SMTP_URL=smtp://user:pass@smtp.example.com:587
27# PDS_EMAIL_FROM_ADDRESS=noreply@coves.me
28
29# =============================================================================
30# JWT Authentication
31# =============================================================================
32# Coves supports two JWT verification methods:
33#
34# 1. HS256 (shared secret) - For your own PDS
35# - Fast, no network calls needed
36# - Requires shared PDS_JWT_SECRET
37# - Only for PDSes you control
38#
39# 2. ES256 (DID resolution) - For federated users
40# - Works with any PDS (bsky.social, etc.)
41# - Resolves user's DID document to get public key
42# - No shared secret needed
43#
44# HS256_ISSUERS: Comma-separated list of PDS URLs allowed to use HS256
45# These PDSes MUST share the same PDS_JWT_SECRET with Coves
46# Example: HS256_ISSUERS=https://pds.coves.social,https://pds.example.com
47HS256_ISSUERS=https://pds.coves.me
48
49# PLC Directory URL for DID resolution (optional)
50# Defaults to https://plc.directory if not set
51# PLC_DIRECTORY_URL=https://plc.directory
52
53# Skip JWT signature verification (DEVELOPMENT ONLY!)
54# Set to false in production for proper security
55AUTH_SKIP_VERIFY=false
56
57# =============================================================================
58# AppView OAuth (for mobile app authentication)
59# =============================================================================
60OAUTH_CLIENT_ID=https://coves.social/client-metadata.json
61OAUTH_REDIRECT_URI=https://coves.social/oauth/callback
62
63# Generate EC P-256 private key in JWK format
64# See: https://atproto.com/specs/oauth#client-metadata
65OAUTH_PRIVATE_JWK={"kty":"EC","crv":"P-256","x":"...","y":"...","d":"..."}
66
67# =============================================================================
68# AppView Encryption
69# =============================================================================
70# For encrypting community credentials in database
71# Generate with: openssl rand -base64 32
72ENCRYPTION_KEY=CHANGE_ME_BASE64_ENCODED_KEY
73
74# =============================================================================
75# Cloudflare (for wildcard SSL certificates)
76# =============================================================================
77# Required for *.coves.social wildcard certificate
78# Create at: Cloudflare Dashboard → My Profile → API Tokens → Create Token
79# Template: "Edit zone DNS" with permissions for coves.social zone
80CLOUDFLARE_API_TOKEN=CHANGE_ME_CLOUDFLARE_TOKEN
81
82# =============================================================================
83# Optional: Versioning
84# =============================================================================
85VERSION=latest