From 0ffba45517194d09198da21a39826e43f0f051c5 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 15 May 2024 09:46:31 +0200 Subject: [PATCH] chore: Update twenty CRM template with environment variables and dependencies --- templates/compose/twenty.yaml | 61 ++++++++++++++++++++++---------- templates/service-templates.json | 13 +++++++ 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/templates/compose/twenty.yaml b/templates/compose/twenty.yaml index 39fa8275d..a36675cba 100644 --- a/templates/compose/twenty.yaml +++ b/templates/compose/twenty.yaml @@ -2,29 +2,43 @@ # slogan: Twenty is a CRM designed to fit your unique business needs. # tags: crm, self-hosted, dashboard # logo: svgs/twenty.svg +# port: 3000 services: twenty: image: 'twentycrm/twenty:latest' environment: - SERVER_URL: $SERVICE_FQDN_TWENTY_3000 - FRONT_BASE_URL: $SERVICE_FQDN_TWENTY_3000 - ENABLE_DB_MIGRATIONS: true - SIGN_IN_PREFILLED: false + - SERVICE_FQDN_TRIGGER_3000 + - SERVER_URL=$SERVICE_FQDN_TWENTY + - FRONT_BASE_URL=$SERVICE_FQDN_TWENTY + - ENABLE_DB_MIGRATIONS=true + - SIGN_IN_PREFILLED=false - STORAGE_TYPE: ${STORAGE_TYPE:-local} - STORAGE_S3_REGION: $STORAGE_S3_REGION - STORAGE_S3_NAME: $STORAGE_S3_NAME - STORAGE_S3_ENDPOINT: $STORAGE_S3_ENDPOINT + - STORAGE_TYPE=${STORAGE_TYPE:-local} + - STORAGE_S3_REGION=$STORAGE_S3_REGION + - STORAGE_S3_NAME=$STORAGE_S3_NAME + - STORAGE_S3_ENDPOINT=$STORAGE_S3_ENDPOINT - ACCESS_TOKEN_SECRET: $SERVICE_BASE64_32_ACCESS - LOGIN_TOKEN_SECRET: $SERVICE_BASE64_32_LOGIN - REFRESH_TOKEN_SECRET: $SERVICE_BASE64_32_REFRESH - FILE_TOKEN_SECRET: $SERVICE_BASE64_32_FILE - POSTGRES_ADMIN_PASSWORD: $SERVICE_PASSWORD_POSTGRES - PG_DATABASE_URL: postgres://postgres:$SERVICE_PASSWORD_POSTGRES@postgres:5432/default - ports: - - "3000:3000" + - ACCESS_TOKEN_SECRET=$SERVICE_BASE64_32_ACCESS + - LOGIN_TOKEN_SECRET=$SERVICE_BASE64_32_LOGIN + - REFRESH_TOKEN_SECRET=$SERVICE_BASE64_32_REFRESH + - FILE_TOKEN_SECRET=$SERVICE_BASE64_32_FILE + - POSTGRES_ADMIN_PASSWORD=$SERVICE_PASSWORD_POSTGRES + - PG_DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@postgres:5432/default + + - EMAIL_FROM_ADDRESS=$EMAIL_FROM_ADDRESS + - EMAIL_FROM_NAME=$EMAIL_FROM_NAME + - EMAIL_SYSTEM_ADDRESS=$EMAIL_SYSTEM_ADDRESS + - EMAIL_DRIVER=${EMAIL_DRIVER:-logger} + - EMAIL_SMTP_HOST=$EMAIL_SMTP_HOST + - EMAIL_SMTP_PORT=$EMAIL_SMTP_PORT + - EMAIL_SMTP_USER=$EMAIL_SMTP_USER + - EMAIL_SMTP_PASSWORD=$EMAIL_SMTP_PASSWORD + + - TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false} + - CACHE_STORAGE_TYPE=${CACHE_STORAGE_TYPE:-redis} + - REDIS_HOST=redis + - REDIS_PORT=6379 depends_on: postgres: condition: service_healthy @@ -36,9 +50,9 @@ services: postgres: image: "twentycrm/twenty-postgres:latest" environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: $SERVICE_PASSWORD_POSTGRES - POSTGRES_DB: default + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES + - POSTGRES_DB=default volumes: - pg-data:/bitnami/postgresql healthcheck: @@ -46,3 +60,12 @@ services: interval: 5s timeout: 20s retries: 10 + redis: + image: "redis:latest" + volumes: + - "redis-data:/data" + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 20s + retries: 10 diff --git a/templates/service-templates.json b/templates/service-templates.json index 5b3fd2b93..ee1b02a35 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -948,6 +948,19 @@ "minversion": "0.0.0", "port": "3000" }, + "twenty": { + "documentation": "https:\/\/docs.twenty.com", + "slogan": "Twenty is a CRM designed to fit your unique business needs.", + "compose": "c2VydmljZXM6CiAgdHdlbnR5OgogICAgaW1hZ2U6ICd0d2VudHljcm0vdHdlbnR5OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9UUklHR0VSXzMwMDAKICAgICAgLSBTRVJWRVJfVVJMPSRTRVJWSUNFX0ZRRE5fVFdFTlRZCiAgICAgIC0gRlJPTlRfQkFTRV9VUkw9JFNFUlZJQ0VfRlFETl9UV0VOVFkKICAgICAgLSBFTkFCTEVfREJfTUlHUkFUSU9OUz10cnVlCiAgICAgIC0gU0lHTl9JTl9QUkVGSUxMRUQ9ZmFsc2UKICAgICAgLSAnU1RPUkFHRV9UWVBFPSR7U1RPUkFHRV9UWVBFOi1sb2NhbH0nCiAgICAgIC0gU1RPUkFHRV9TM19SRUdJT049JFNUT1JBR0VfUzNfUkVHSU9OCiAgICAgIC0gU1RPUkFHRV9TM19OQU1FPSRTVE9SQUdFX1MzX05BTUUKICAgICAgLSBTVE9SQUdFX1MzX0VORFBPSU5UPSRTVE9SQUdFX1MzX0VORFBPSU5UCiAgICAgIC0gQUNDRVNTX1RPS0VOX1NFQ1JFVD0kU0VSVklDRV9CQVNFNjRfMzJfQUNDRVNTCiAgICAgIC0gTE9HSU5fVE9LRU5fU0VDUkVUPSRTRVJWSUNFX0JBU0U2NF8zMl9MT0dJTgogICAgICAtIFJFRlJFU0hfVE9LRU5fU0VDUkVUPSRTRVJWSUNFX0JBU0U2NF8zMl9SRUZSRVNICiAgICAgIC0gRklMRV9UT0tFTl9TRUNSRVQ9JFNFUlZJQ0VfQkFTRTY0XzMyX0ZJTEUKICAgICAgLSBQT1NUR1JFU19BRE1JTl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQR19EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly9wb3N0Z3JlczokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlczo1NDMyL2RlZmF1bHQnCiAgICAgIC0gRU1BSUxfRlJPTV9BRERSRVNTPSRFTUFJTF9GUk9NX0FERFJFU1MKICAgICAgLSBFTUFJTF9GUk9NX05BTUU9JEVNQUlMX0ZST01fTkFNRQogICAgICAtIEVNQUlMX1NZU1RFTV9BRERSRVNTPSRFTUFJTF9TWVNURU1fQUREUkVTUwogICAgICAtICdFTUFJTF9EUklWRVI9JHtFTUFJTF9EUklWRVI6LWxvZ2dlcn0nCiAgICAgIC0gRU1BSUxfU01UUF9IT1NUPSRFTUFJTF9TTVRQX0hPU1QKICAgICAgLSBFTUFJTF9TTVRQX1BPUlQ9JEVNQUlMX1NNVFBfUE9SVAogICAgICAtIEVNQUlMX1NNVFBfVVNFUj0kRU1BSUxfU01UUF9VU0VSCiAgICAgIC0gRU1BSUxfU01UUF9QQVNTV09SRD0kRU1BSUxfU01UUF9QQVNTV09SRAogICAgICAtICdURUxFTUVUUllfRU5BQkxFRD0ke1RFTEVNRVRSWV9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ0NBQ0hFX1NUT1JBR0VfVFlQRT0ke0NBQ0hFX1NUT1JBR0VfVFlQRTotcmVkaXN9JwogICAgICAtIFJFRElTX0hPU1Q9cmVkaXMKICAgICAgLSBSRURJU19QT1JUPTYzNzkKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9oZWFsdGh6JwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3R3ZW50eWNybS90d2VudHktcG9zdGdyZXM6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj1wb3N0Z3JlcwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfREI9ZGVmYXVsdAogICAgdm9sdW1lczoKICAgICAgLSAncGctZGF0YTovYml0bmFtaS9wb3N0Z3Jlc3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==", + "tags": [ + "crm", + "self-hosted", + "dashboard" + ], + "logo": "svgs\/twenty.svg", + "minversion": "0.0.0", + "port": "3000" + }, "umami": { "documentation": "https:\/\/umami.is", "slogan": "Umami is web analytics platform which provides insights into visitor behavior without compromising user privacy.",