diff --git a/deploy/twenty-crm/.env.example b/deploy/twenty-crm/.env.example new file mode 100644 index 0000000..d467fae --- /dev/null +++ b/deploy/twenty-crm/.env.example @@ -0,0 +1,10 @@ +# Twenty CRM secrets +# Generate these before first deploy: +# APP_SECRET: openssl rand -hex 32 +# POSTGRES_PASSWORD: openssl rand -hex 16 + +POSTGRES_PASSWORD=changeme +APP_SECRET=changeme + +# Store these in Infisical (twenty-crm project) for production. +# The .env file is only used for initial bootstrap / local dev. diff --git a/deploy/twenty-crm/DEPLOY.md b/deploy/twenty-crm/DEPLOY.md new file mode 100644 index 0000000..ca2491d --- /dev/null +++ b/deploy/twenty-crm/DEPLOY.md @@ -0,0 +1,123 @@ +# Twenty CRM Deployment — commons-hub Lead Funnel + +## 1. Deploy Twenty CRM Stack on Netcup + +```bash +# SSH to server +ssh netcup-full + +# Create directory and copy files +mkdir -p /opt/twenty-crm +# (copy docker-compose.yml and .env from this directory) + +# Generate secrets +cd /opt/twenty-crm +cat > .env < { ]); }); +// ── CRM sub-route — dedicated iframe to Twenty CRM ── +routes.get("/crm", (c) => { + const space = c.req.param("space") || "demo"; + return c.html(renderExternalAppShell({ + title: `${space} — CRM | rSpace`, + moduleId: "rnetwork", + spaceSlug: space, + modules: getModuleInfoList(), + appUrl: "https://crm.rspace.online", + appName: "Twenty CRM", + theme: "dark", + })); +}); + // ── Page route ── routes.get("/", (c) => { const space = c.req.param("space") || "demo";