# AOS — Agency Operating System Environment (dev) # --- Database --- DATABASE_URL=file:/home/z/my-project/db/custom.db # --- Encryption (AES-256-GCM for secrets at rest) --- ENCRYPTION_KEY=UrEE757ABMzqcME/AQfef9XDPSaBlgIhVDOy8BIpbSY= # --- Auth --- AUTH_SECRET=zB7wxxn7xDnClPUlwoKG4VwHDaIqvtAz3DW3Bn43GlM= # --- Leads Finder Providers --- TAVILY_API_KEY=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 FIRECRAWL_API_KEY=fc-2ddabe84274a44b39da31a49d1624700 SERPAPI_API_KEY=5e1d045575cc29b705c53e8303b6ada506e8a3ef382fca78a2964c7e25751ba1 APIFY_API_TOKEN=apify_api_YUsr1w7L0qFpvzwDirjv1oWHToT2xu3lhJt7 # --- App --- NODE_ENV=development PORT=3000 # ── Stripe ── STRIPE_PUBLISHABLE_KEY=pk_test_51TWfTxDGcQIOgPxeHVZh5ilWEc61bK7MBuBez4fGV5XrjRGwRXsXJp5rm1eAsWHGzQ20NBXRG7Nmp0pJRJfUflImA003OoDaSQt STRIPE_SECRET_KEY=sk_test_51TWfTxDGcQIOgPxej8AvcfLMt6a7IEgZk3L34WLnOCNw2AAAyqORQtgJLjEaj3Ygm014ZAo3oByvDSdJVFwYLHmk0048mdLZH4 RESTRICTED_KEY=rk_test_51TWfTxDGcQIOgPxeGPSfA6ske0A6xPde23jfOJKbUfFOrEWl4bTIHv4MSOBwlQpravXk4mxKAjKdmkGb3asZqOVJ0048mdLZH4 # ── License Server (B2B SaaS) ── LICENSE_PRICE_STARTER_CENTS=2900 LICENSE_PRICE_PRO_CENTS=5000 LICENSE_PRICE_ENTERPRISE_CENTS=15000 LICENSE_TRIAL_DAYS=14 LICENSE_NOTICE_PERIOD_DAYS=90 LICENSE_YEARLY_DISCOUNT_PCT=10 LICENSE_OFFLINE_GRACE_HOURS=72 # ── Agency / Reseller ── AGENCY_DISCOUNT_MIN_PCT=0 AGENCY_DISCOUNT_MAX_PCT=20 AGENCY_DISCOUNT_DEFAULT_PCT=10 # ── Platform Domain ── # The domain AOS runs on. Tenant instances get subdomains of this domain. PLATFORM_DOMAIN=dfmpanel.eu # Public URL of the AOS instance (used by license-server SDK + email links) AOS_PUBLIC_URL=https://dfmpanel.eu # ── Dokploy (tenant instance provisioning) ── # Dokploy server URL + API key for managing tenant instances. DOKPLOY_URL=https://cp.project-url.eu DOKPLOY_API_KEY=CEIqJlWVtmSNgffNWywTJmEeuvUJBndinBzudretwiuzVWPxuvUNmoQaHUwRwUBy # The Dokploy server ID to deploy to (default "default" if not set) # DOKPLOY_SERVER_ID=default # The Dokploy project to group tenant applications under # DOKPLOY_PROJECT_ID=default # The IP of the Dokploy server (used for Hetzner DNS A records) # DOKPLOY_SERVER_IP=123.456.789.012 # ── Hetzner Cloud DNS ── # API token scoped to the platform zone (dfmpanel.eu) # HETZNER_DNS_TOKEN=your-hetzner-dns-token # Zone ID of the platform domain (find via: GET https://dns.hetzner.com/api/v1/zones) # HETZNER_ZONE_ID=your-zone-id # If true, a single *.dfmpanel.eu wildcard A record handles all subdomains # (recommended — avoids per-instance DNS records + Let's Encrypt rate limits) USE_WILDCARD_DNS=true # ── Cron Job ── # Shared secret for the cleanup cron job (POST /api/aos/instances/cleanup) # The cron job (Dokploy cron or GitHub Action) must send this as: # Authorization: Bearer # CRON_SECRET=your-cron-secret # ── Instance Defaults ── # Default Git repo + branch for new tenant instances INSTANCE_GIT_REPO=https://github.com/cetinmustafa83/restov1 INSTANCE_GIT_BRANCH=main # Demo instance duration in days INSTANCE_DEMO_DAYS=14 # Grace period after demo expiry or subscription cancellation (days) INSTANCE_GRACE_DAYS=7