godcrm/deploy/selfhost/env.example
GOD CRM Release 065f2edd23
Some checks failed
CI / Lint / Typecheck / Test / Build (push) Has been cancelled
CI / PostgreSQL Integration Tests (push) Has been cancelled
GOD CRM — public scrubbed snapshot (2026-08-30)
Refresh of the open-core distribution from the private tree.

Included since the previous snapshot:
- Mail module (ADR-158/159/160/169): composer, labels, scheduling,
  attachments, reply-tokens, IMAP/SMTP bridge + migrations 079-083
- Crawler-readable SSR for /blog and public spaces (ADR-190):
  blogSeo, publicDocsSeo, per-space SEO prefs, blog index/post pages
- Registration policy + referral/promo settings (ADR-183/188)
- Message translation + language detection (ADR-185)
- Reddit connector for the agent-tool surface

Excised from the public distribution (unchanged policy): infrastructure
topology and host config, internal ops scripts, DB cleanup snapshots,
business documents, throwaway debug scripts, and two private product
lines (SC-SIM simulator, personal one-off tools). Real host addresses
are replaced with placeholders; credential-shaped literals are redacted.

Frontend build verified green on this tree.
2026-08-30 15:13:28 +03:00

76 lines
3.2 KiB
Text

# GOD CRM self-host configuration.
# Copy to `.env` (cp env.example .env) and fill in.
# `install.sh` creates this file and generates the secrets for you.
# ---- How you reach the app ----
# Host port the CRM is published on.
APP_PORT=5000
# Public origin(s) the browser uses, comma-separated. MUST match how you open
# the app (a mismatch serves a white screen — CORS gates the static assets).
# Examples: http://localhost:5000 | https://crm.example.com
PUBLIC_URL=http://localhost:5000
# ---- Database (CRM) ----
POSTGRES_DB=godcrm
POSTGRES_USER=godcrm
# REQUIRED. Generate: openssl rand -hex 24
POSTGRES_PASSWORD=
# ---- Secrets (REQUIRED) ----
# Generate each: openssl rand -hex 32 (SECRETS_MASTER_KEY: openssl rand -base64 32)
JWT_SECRET=
SESSION_SECRET=
ENCRYPTION_KEY=
MASTER_ENCRYPTION_KEY=
SECRETS_MASTER_KEY=
CRM_CREDENTIAL_KEY=
# Postgres image for the CRM database. pgvector/pgvector:pg16 is stock
# Postgres 16 plus the `vector` extension — it is the default in every mode so
# that turning memory on later never means swapping the image under an
# existing data volume.
DB_IMAGE=pgvector/pgvector:pg16
# ---- RCLL memory (OPTIONAL) ----
# Three modes; `install.sh` asks and sets this for you.
# none — no memory at all. Nothing below is used.
# embedded — memory lives in schema MEMORY_SCHEMA inside the CRM database.
# One database to run and back up. Memory migrations are DDL
# against your CRM database — see MEMORY_RUN_MIGRATIONS.
# standalone — memory gets its own database, container and volume. Two
# databases to back up; the CRM database is never touched by
# memory DDL.
# Same image and the same data model either way — this is a placement choice,
# not a feature tier. Change it later by re-running with the other profile
# (the data does not move by itself: dump and load it).
MEMORY_MODE=none
# Memory image. NOT PUBLISHED YET — this path goes live with the first
# release; until then, enabling memory needs an image you built yourself.
# Pin a digest here if you want to freeze the version.
MEMORY_IMAGE=ghcr.io/holetron-lab/fleet-memory:0.1.0
# Where the CRM finds memory. Both topologies answer on the same alias —
# leave as-is unless you run memory outside this compose file.
HINDSIGHT_URL=http://hindsight:5100
# embedded only — the schema memory owns inside the CRM database. It is
# created and upgraded by memory's own migrations; nothing else writes there.
MEMORY_SCHEMA=hindsight_v2
# Run memory migrations on container start. A FRESH install needs this once to
# build the schema. In `embedded` mode this is DDL against your CRM database on
# every restart — once you are past the first boot, set it to false and run
# upgrades deliberately (after a backup).
MEMORY_RUN_MIGRATIONS=true
# standalone only — password for memory's own database. Generate: openssl rand -hex 24
HINDSIGHT_DB_PASSWORD=
# LLM used to CLASSIFY memories on write. The read path never calls a model.
# `none` is fully supported: writes still work, only classification quality
# degrades. Leave LLM_PROVIDER=none if you have no key — a real provider with
# an empty key fails to boot and restarts forever.
LLM_PROVIDER=none
LLM_API_KEY=
LLM_MODEL=gpt-4o-mini