Spaces:
Sleeping
Sleeping
File size: 7,123 Bytes
059ec0d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | #!/usr/bin/env bash
# Generate all production secrets for MicProtocol self-hosted integrations
# Run this once during initial setup. Save output to .env.production
set -euo pipefail
echo "# ============================================================"
echo "# MicProtocol Production Secrets - Generated $(date -u +%Y-%m-%dT%H:%M:%SZ)"
echo "# ============================================================"
echo "# IMPORTANT: Save this output securely. Do not commit to git."
echo "# ============================================================"
echo ""
# Core Infrastructure
echo "# βββ Core Infrastructure βββββββββββββββββββββββββββββββββββ"
POSTGRES_PASSWORD=$(openssl rand -base64 32 | tr -d '/+=' | cut -c1-32)
REDIS_PASSWORD=$(openssl rand -base64 32 | tr -d '/+=' | cut -c1-32)
MEILISEARCH_API_KEY=$(openssl rand -base64 32 | tr -d '/+=' | cut -c1-32)
MINIO_ROOT_USER="micprotocol_admin"
MINIO_ROOT_PASSWORD=$(openssl rand -base64 32 | tr -d '/+=' | cut -c1-32)
echo "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}"
echo "REDIS_PASSWORD=${REDIS_PASSWORD}"
echo "MEILISEARCH_API_KEY=${MEILISEARCH_API_KEY}"
echo "MINIO_ROOT_USER=${MINIO_ROOT_USER}"
echo "MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}"
echo ""
# JWT/Encryption Keys (NEVER ROTATE THESE - data loss if rotated)
echo "# βββ Encryption Keys (NEVER ROTATE) ββββββββββββββββββββββββ"
ENCRYPTION_KEY=$(openssl rand -hex 32)
JWT_SECRET=$(openssl rand -base64 64 | tr -d '/+=' | cut -c1-64)
NEXTAUTH_SECRET=$(openssl rand -base64 32)
echo "ENCRYPTION_KEY=${ENCRYPTION_KEY}"
echo "JWT_SECRET=${JWT_SECRET}"
echo "NEXTAUTH_SECRET=${NEXTAUTH_SECRET}"
echo ""
# Chatwoot
echo "# βββ Chatwoot (Customer Support) ββββββββββββββββββββββββββ"
CHATWOOT_SECRET_KEY_BASE=$(openssl rand -hex 64)
CHATWOOT_WEBHOOK_SECRET=$(openssl rand -hex 32)
echo "CHATWOOT_SECRET_KEY_BASE=${CHATWOOT_SECRET_KEY_BASE}"
echo "CHATWOOT_WEBHOOK_SECRET=${CHATWOOT_WEBHOOK_SECRET}"
echo "# Generate these in Chatwoot UI after setup:"
echo "# CHATWOOT_INBOX_ID=<from Settings β Inboxes β Website>"
echo "# NEXT_PUBLIC_CHATWOOT_WEBSITE_TOKEN=<from Settings β Inboxes β Website β Configuration>"
echo ""
# Cal.com
echo "# βββ Cal.com (Scheduling) ββββββββββββββββββββββββββββββββββ"
CALCOM_NEXTAUTH_SECRET=$(openssl rand -base64 32)
CALCOM_ENCRYPTION_KEY=$(openssl rand -hex 12) # 24 chars, NEVER ROTATE
CALCOM_WEBHOOK_SECRET=$(openssl rand -hex 32)
echo "CALCOM_NEXTAUTH_SECRET=${CALCOM_NEXTAUTH_SECRET}"
echo "CALCOM_ENCRYPTION_KEY=${CALCOM_ENCRYPTION_KEY}"
echo "CALCOM_WEBHOOK_SECRET=${CALCOM_WEBHOOK_SECRET}"
echo "# Generate in Cal.com Admin β API Keys:"
echo "# CALCOM_API_KEY=cal_live_..."
echo ""
# Formbricks (v4 - 5 containers)
echo "# βββ Formbricks (Surveys & Feedback) ββββββββββββββββββββββ"
FORMBRICKS_NEXTAUTH_SECRET=$(openssl rand -base64 32)
FORMBRICKS_ENCRYPTION_KEY=$(openssl rand -hex 32) # NEVER ROTATE
FORMBRICKS_CRON_SECRET=$(openssl rand -base64 16)
FORMBRICKS_HUB_API_KEY=$(openssl rand -hex 32)
FORMBRICKS_CUBE_API_SECRET=$(openssl rand -hex 32)
FORMBRICKS_WEBHOOK_SECRET=$(openssl rand -hex 32)
echo "FORMBRICKS_NEXTAUTH_SECRET=${FORMBRICKS_NEXTAUTH_SECRET}"
echo "FORMBRICKS_ENCRYPTION_KEY=${FORMBRICKS_ENCRYPTION_KEY}"
echo "FORMBRICKS_CRON_SECRET=${FORMBRICKS_CRON_SECRET}"
echo "FORMBRICKS_HUB_API_KEY=${FORMBRICKS_HUB_API_KEY}"
echo "FORMBRICKS_CUBE_API_SECRET=${FORMBRICKS_CUBE_API_SECRET}"
echo "FORMBRICKS_WEBHOOK_SECRET=${FORMBRICKS_WEBHOOK_SECRET}"
echo "# Generate in Formbricks UI after setup:"
echo "# NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID=<from Settings β Environments>"
echo "# FORMBRICKS_API_KEY=<from Settings β API Keys>"
echo ""
# Listmonk
echo "# βββ Listmonk (Email Marketing) βββββββββββββββββββββββββββ"
LISTMONK_ADMIN_PASSWORD=$(openssl rand -base64 24 | tr -d '/+=' | cut -c1-24)
echo "LISTMONK_ADMIN_PASSWORD=${LISTMONK_ADMIN_PASSWORD}"
echo "# Generate in Listmonk Admin β Settings β API:"
echo "# LISTMONK_API_TOKEN=<from API Keys page>"
echo "# Create a list in Listmonk Admin β Lists β Copy UUID:"
echo "# NEXT_PUBLIC_LISTMONK_LIST_UUID=<list-uuid>"
echo ""
# Documenso (if used)
echo "# βββ Documenso (E-Signatures) βββββββββββββββββββββββββββββ"
DOCUMENSO_NEXTAUTH_SECRET=$(openssl rand -base64 32)
DOCUMENSO_ENCRYPTION_KEY=$(openssl rand -hex 32) # NEVER ROTATE
DOCUMENSO_WEBHOOK_SECRET=$(openssl rand -hex 32)
echo "DOCUMENSO_NEXTAUTH_SECRET=${DOCUMENSO_NEXTAUTH_SECRET}"
echo "DOCUMENSO_ENCRYPTION_KEY=${DOCUMENSO_ENCRYPTION_KEY}"
echo "DOCUMENSO_WEBHOOK_SECRET=${DOCUMENSO_WEBHOOK_SECRET}"
echo "# Generate in Documenso Admin β Settings β API:"
echo "# DOCUMENSO_API_KEY=<from API Keys>"
echo ""
# LiveKit
echo "# βββ LiveKit (Recording Studio) βββββββββββββββββββββββββββ"
LIVEKIT_API_KEY="devkey"
LIVEKIT_API_SECRET=$(openssl rand -base64 32 | tr -d '/+=' | cut -c1-32)
LIVEKIT_WEBHOOK_SECRET=$(openssl rand -hex 32)
echo "LIVEKIT_API_KEY=${LIVEKIT_API_KEY}"
echo "LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET}"
echo "LIVEKIT_WEBHOOK_SECRET=${LIVEKIT_WEBHOOK_SECRET}"
echo ""
# Email (SMTP)
echo "# βββ Email (SMTP) βββββββββββββββββββββββββββββββββββββββββ"
echo "# Configure your production SMTP provider:"
echo "# SMTP_HOST=smtp.sendgrid.net"
echo "# SMTP_PORT=587"
echo "# SMTP_USER=apikey"
echo "# SMTP_PASSWORD=SG.xxx"
echo "# EMAIL_FROM=MicProtocol <noreply@yourdomain.com>"
echo ""
# Clerk (Auth)
echo "# βββ Clerk (Authentication) βββββββββββββββββββββββββββββββ"
echo "# Get from Clerk Dashboard β API Keys:"
echo "# NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_..."
echo "# CLERK_SECRET_KEY=sk_live_..."
echo "# CLERK_WEBHOOK_SECRET=whsec_... (from Clerk β Webhooks)"
echo ""
# Sentry (Optional)
echo "# βββ Sentry (Error Tracking) ββββββββββββββββββββββββββββββ"
echo "# SENTRY_DSN=https://xxx@sentry.io/xxx"
echo "# SENTRY_ORG=your-org"
echo "# SENTRY_PROJECT=micprotocol"
echo "# SENTRY_AUTH_TOKEN=xxx (for source maps upload)"
echo ""
# Umami (Analytics)
echo "# βββ Umami (Analytics) ββββββββββββββββββββββββββββββββββββ"
UMAMI_APP_SECRET=$(openssl rand -base64 32)
echo "UMAMI_APP_SECRET=${UMAMI_APP_SECRET}"
echo "# Generate in Umami UI after setup:"
echo "# NEXT_PUBLIC_UMAMI_WEBSITE_ID=<website-id>"
echo ""
echo "# ============================================================"
echo "# End of generated secrets"
echo "# ============================================================" |