我在 AWS EC2 - t2.small(1 核 CPU / 2GB RAM)和 Ubuntu 24LTS 版本上部署了二十.com CRM。
我使用了 https://twenty.com/developers/section/self-hosting/docker-compose 进行部署 -
选项 1:一行脚本
bash <(curl -sL https://git.new/20)
这安装了必要的 docker 镜像
这是我的.env -
TAG=latest
#PGPASSWORD_SUPERUSER=replace_me_with_a_strong_password
#PG_DATABASE_HOST=db
#REDIS_URL=redis:/<my-ip>:3000
SERVER_URL=http://<my-ip>:3000
STORAGE_TYPE=local
#STORAGE_S3_REGION=us-east-1
#STORAGE_S3_NAME=twenty-dev
# STORAGE_S3_ENDPOINT=
# === Randomly generated secrets ===
APP_SECRET=6quXyee0XghNqm57RZstATdcYohAGST62W2TejdStZ8=
PGPASSWORD_SUPERUSER=1958ef2f5fd4b3495d4d867e35e0738d
当我访问他的网址时 - http://:3000/
我看到这个->
这是 docker compose 的日志 - >
Exception Captured
server-1 | {
server-1 | operation: { name: 'GetClientConfig', type: 'query' },
server-1 | document: 'query GetClientConfig {\n' +
server-1 | ' clientConfig {\n' +
server-1 | ' billing {\n' +
server-1 | ' isBillingEnabled\n' +
server-1 | ' billingUrl\n' +
server-1 | ' billingFreeTrialDurationInDays\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' authProviders {\n' +
server-1 | ' google\n' +
server-1 | ' password\n' +
server-1 | ' microsoft\n' +
server-1 | ' sso {\n' +
server-1 | ' id\n' +
server-1 | ' name\n' +
server-1 | ' type\n' +
server-1 | ' status\n' +
server-1 | ' issuer\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' signInPrefilled\n' +
server-1 | ' isMultiWorkspaceEnabled\n' +
server-1 | ' isSSOEnabled\n' +
server-1 | ' defaultSubdomain\n' +
server-1 | ' frontDomain\n' +
server-1 | ' debugMode\n' +
server-1 | ' analyticsEnabled\n' +
server-1 | ' support {\n' +
server-1 | ' supportDriver\n' +
server-1 | ' supportFrontChatId\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' sentry {\n' +
server-1 | ' dsn\n' +
server-1 | ' environment\n' +
server-1 | ' release\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' captcha {\n' +
server-1 | ' provider\n' +
server-1 | ' siteKey\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' api {\n' +
server-1 | ' mutationMaximumAffectedRecords\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | ' chromeExtensionId\n' +
server-1 | ' __typename\n' +
server-1 | ' }\n' +
server-1 | '}',
server-1 | user: undefined,
server-1 | workspace: {
server-1 | id: undefined,
server-1 | displayName: undefined,
server-1 | createdAt: undefined,
server-1 | activationStatus: undefined
server-1 | }
server-1 | }
server-1 | [
server-1 | Error: Boolean cannot represent a non boolean value: ""
server-1 | at completeLeafValue (/app/node_modules/@graphql-tools/executor/cjs/execution/execute.js:620:19)
server-1 | at completeValue (/app/node_modules/@graphql-tools/executor/cjs/execution/execute.js:451:16)
server-1 | at completeValue (/app/node_modules/@graphql-tools/executor/cjs/execution/execute.js:434:27)
server-1 | at /app/node_modules/@graphql-tools/executor/cjs/execution/execute.js:327:49
server-1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
server-1 | at async /app/node_modules/@graphql-tools/executor/cjs/execution/promiseForObject.js:18:35
server-1 | at async Promise.all (index 2) {
server-1 | path: undefined,
server-1 | locations: undefined,
server-1 | extensions: {
server-1 | code: 'INTERNAL_SERVER_ERROR',
server-1 | response: 'Boolean cannot represent a non boolean value: ""'
server-1 | }
server-1 | }
server-1 | ]
帮我解决这个问题 -
将其添加到 .env 解决了问题 -
SIGN_IN_PREFILLED=假