# 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 ── # DNS is managed via the Hetzner Cloud API (api.hetzner.cloud/v1/zones). # The legacy dns.hetzner.com API was shut down in May 2026. HETZNER_DNS_TOKEN=JhZMOBTMeWvXz91KVPxRh0U4UMFqkSNCMHJKiQS9kUjHIwCkWCc8ViZTm64MyaOp # Zone ID of dfmpanel.eu (found via: GET https://api.hetzner.cloud/v1/zones) HETZNER_ZONE_ID=1669672 # If true, a single *.dfmpanel.eu wildcard A record handles all subdomains. # If false, a per-instance A record is created/deleted with each instance. USE_WILDCARD_DNS=false # ── Dokploy Server ── # IP of the Dokploy server (A record target for instance subdomains). # Found from the existing @ and www A records of dfmpanel.eu. DOKPLOY_SERVER_IP=92.206.22.59 # ── 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 # ── Graphify (tenant codebase knowledge graph) ── # Graphify MCP HTTP service (Docker container). When configured, new tenant # instances trigger a background graph build, and the support ticket AI # queries the codebase before generating a summary. # Run: docker run -p 8080:8080 -v ./data/graphify:/data graphify serve # --transport http --host 0.0.0.0 --api-key # GRAPHIFY_URL=http://localhost:8080 # GRAPHIFY_API_KEY=your-graphify-api-key