Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. App Wishlist
  3. twenty - A Modern Open Source CRM

twenty - A Modern Open Source CRM

Scheduled Pinned Locked Moved App Wishlist
wishlistapp wishlist
55 Posts 20 Posters 9.7k Views 24 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Neiluj

    OK - Internally, this went from "looks cool" couple of days ago to "must have" a few moments ago.
    Beside with my unlimited gratitude and limited packaging skills and experience, is there any other way I can help make Twenty on Cloudron happen sooner than later?

    Z Online
    Z Online
    zonzonzon
    wrote on last edited by
    #29

    @Neiluj
    Currently, I am installing Twenty using Docker Compose as shown below, but I don’t understand what needs to be done when switching to Cloudron. I hope Twenty will be integrated into Cloudron soon. After using it for a while, I found that this CRM is very powerful and customizable to serve different business needs within an enterprise.

    version: '3.8'
    
    services:
      change-vol-ownership:
        image: 'ubuntu:latest'
        user: root
        volumes:
          - 'twenty-server-local-data:/tmp/server-local-data'
          - 'twenty-docker-data:/tmp/docker-data'
        command: |
          bash -c "
            chown -R 1000:1000 /tmp/server-local-data && 
            chown -R 1000:1000 /tmp/docker-data &&
            echo 'Volume ownership changed successfully'
          "
        restart: "no"
        networks:
          - twenty-network
    
      db:
        image: 'twentycrm/twenty-postgres-spilo:latest'
        container_name: twenty-db
        volumes:
          - 'twenty-db-data:/home/postgres/pgdata'
        environment:
          PGUSER: postgres
          POSTGRES_PASSWORD: ${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}
          POSTGRES_DB: postgres
          SPILO_ROLE: master
        networks:
          - twenty-network
        restart: unless-stopped
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres"]
          interval: 30s
          timeout: 10s
          retries: 5
          start_period: 60s
    
      redis:
        image: 'redis:7-alpine'
        container_name: twenty-redis
        volumes:
          - 'twenty-redis-data:/data'
        networks:
          - twenty-network
        restart: unless-stopped
        healthcheck:
          test: ["CMD", "redis-cli", "ping"]
          interval: 30s
          timeout: 10s
          retries: 5
          start_period: 10s
    
      server:
        image: 'twentycrm/twenty:v1.1'
        container_name: twenty-server
        depends_on:
          change-vol-ownership:
            condition: service_completed_successfully
          db:
            condition: service_healthy
          redis:
            condition: service_healthy
        volumes:
          - 'twenty-server-local-data:/app/packages/twenty-server/.local-storage'
          - 'twenty-docker-data:/app/docker-data'
        ports:
          - "${EXTERNAL_PORT:-3000}:3000"
        environment:
          NODE_PORT: 3000
          PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}@db:5432/postgres'
          SERVER_URL: '${SERVER_URL:-http://localhost:3000}'
          REDIS_URL: 'redis://redis:6379'
          APP_SECRET: '${APP_SECRET:-please-change-this-secret-key}'
          STORAGE_TYPE: '${STORAGE_TYPE:-local}'
          STORAGE_LOCAL_PATH: '${STORAGE_LOCAL_PATH:-.local-storage}'
          
          # Email Configuration
          EMAIL_DRIVER: '${EMAIL_DRIVER:-logger}'
          EMAIL_FROM_ADDRESS: '${EMAIL_FROM_ADDRESS:-noreply@localhost}'
          EMAIL_FROM_NAME: '${EMAIL_FROM_NAME:-Twenty CRM}'
          EMAIL_SMTP_HOST: '${EMAIL_SMTP_HOST:-}'
          EMAIL_SMTP_PORT: '${EMAIL_SMTP_PORT:-587}'
          EMAIL_SMTP_USER: '${EMAIL_SMTP_USER:-}'
          EMAIL_SMTP_PASSWORD: '${EMAIL_SMTP_PASSWORD:-}'
          EMAIL_SYSTEM_ADDRESS: '${EMAIL_SYSTEM_ADDRESS:-admin@localhost}'
          
          # AI Features
          IS_AI_ENABLED: '${IS_AI_ENABLED:-false}'
          OPENAI_API_KEY: '${OPENAI_API_KEY:-}'
          OPENAI_API_MODEL: '${OPENAI_API_MODEL:-gpt-4}'
          
          # Authentication
          AUTH_PASSWORD_ENABLED: '${AUTH_PASSWORD_ENABLED:-true}'
          IS_EMAIL_VERIFICATION_REQUIRED: '${IS_EMAIL_VERIFICATION_REQUIRED:-false}'
          IS_MULTIWORKSPACE_ENABLED: '${IS_MULTIWORKSPACE_ENABLED:-false}'
          
          # Rate Limiting
          API_RATE_LIMITING_LIMIT: '${API_RATE_LIMITING_LIMIT:-200}'
          API_RATE_LIMITING_TTL: '${API_RATE_LIMITING_TTL:-60}'
          
          # Tokens
          LOGIN_TOKEN_EXPIRES_IN: '${LOGIN_TOKEN_EXPIRES_IN:-30d}'
          PASSWORD_RESET_TOKEN_EXPIRES_IN: '${PASSWORD_RESET_TOKEN_EXPIRES_IN:-5m}'
          EMAIL_VERIFICATION_TOKEN_EXPIRES_IN: '${EMAIL_VERIFICATION_TOKEN_EXPIRES_IN:-24h}'
          
          # Message Queue
          MESSAGE_QUEUE_TYPE: '${MESSAGE_QUEUE_TYPE:-bull-mq}'
          
          # Features
          CALENDAR_PROVIDER_GOOGLE_ENABLED: '${CALENDAR_PROVIDER_GOOGLE_ENABLED:-false}'
          MESSAGING_PROVIDER_GMAIL_ENABLED: '${MESSAGING_PROVIDER_GMAIL_ENABLED:-false}'
          
          # OAuth (Optional)
          AUTH_GOOGLE_ENABLED: '${AUTH_GOOGLE_ENABLED:-false}'
          AUTH_GOOGLE_CLIENT_ID: '${AUTH_GOOGLE_CLIENT_ID:-}'
          AUTH_GOOGLE_CLIENT_SECRET: '${AUTH_GOOGLE_CLIENT_SECRET:-}'
          AUTH_GOOGLE_CALLBACK_URL: '${AUTH_GOOGLE_CALLBACK_URL:-}'
          
          AUTH_MICROSOFT_ENABLED: '${AUTH_MICROSOFT_ENABLED:-false}'
          AUTH_MICROSOFT_CLIENT_ID: '${AUTH_MICROSOFT_CLIENT_ID:-}'
          AUTH_MICROSOFT_CLIENT_SECRET: '${AUTH_MICROSOFT_CLIENT_SECRET:-}'
          AUTH_MICROSOFT_CALLBACK_URL: '${AUTH_MICROSOFT_CALLBACK_URL:-}'
          
        networks:
          - twenty-network
        restart: unless-stopped
        healthcheck:
          test: ["CMD-SHELL", "curl -f http://localhost:3000/healthz || exit 1"]
          interval: 30s
          timeout: 10s
          retries: 5
          start_period: 120s
    
      worker:
        image: 'twentycrm/twenty:v1.1'
        container_name: twenty-worker
        depends_on:
          db:
            condition: service_healthy
          redis:
            condition: service_healthy
          server:
            condition: service_started
        volumes:
          - 'twenty-server-local-data:/app/packages/twenty-server/.local-storage'
          - 'twenty-docker-data:/app/docker-data'
        environment:
          NODE_PORT: 3000
          PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}@db:5432/postgres'
          SERVER_URL: '${SERVER_URL:-http://localhost:3000}'
          REDIS_URL: 'redis://redis:6379'
          APP_SECRET: '${APP_SECRET:-please-change-this-secret-key}'
          STORAGE_TYPE: '${STORAGE_TYPE:-local}'
          STORAGE_LOCAL_PATH: '${STORAGE_LOCAL_PATH:-.local-storage}'
          
          # Email Configuration (same as server)
          EMAIL_DRIVER: '${EMAIL_DRIVER:-logger}'
          EMAIL_FROM_ADDRESS: '${EMAIL_FROM_ADDRESS:-noreply@localhost}'
          EMAIL_FROM_NAME: '${EMAIL_FROM_NAME:-Twenty CRM}'
          EMAIL_SMTP_HOST: '${EMAIL_SMTP_HOST:-}'
          EMAIL_SMTP_PORT: '${EMAIL_SMTP_PORT:-587}'
          EMAIL_SMTP_USER: '${EMAIL_SMTP_USER:-}'
          EMAIL_SMTP_PASSWORD: '${EMAIL_SMTP_PASSWORD:-}'
          
          # Features
          MESSAGE_QUEUE_TYPE: '${MESSAGE_QUEUE_TYPE:-bull-mq}'
          
        command: ["yarn", "worker:start"]
        networks:
          - twenty-network
        restart: unless-stopped
    
    volumes:
      twenty-db-data:
        driver: local
      twenty-redis-data:
        driver: local
      twenty-server-local-data:
        driver: local
      twenty-docker-data:
        driver: local
    
    networks:
      twenty-network:
        driver: bridge
        name: twenty-network
    
    timconsidineT N 2 Replies Last reply
    0
    • Z zonzonzon

      @Neiluj
      Currently, I am installing Twenty using Docker Compose as shown below, but I don’t understand what needs to be done when switching to Cloudron. I hope Twenty will be integrated into Cloudron soon. After using it for a while, I found that this CRM is very powerful and customizable to serve different business needs within an enterprise.

      version: '3.8'
      
      services:
        change-vol-ownership:
          image: 'ubuntu:latest'
          user: root
          volumes:
            - 'twenty-server-local-data:/tmp/server-local-data'
            - 'twenty-docker-data:/tmp/docker-data'
          command: |
            bash -c "
              chown -R 1000:1000 /tmp/server-local-data && 
              chown -R 1000:1000 /tmp/docker-data &&
              echo 'Volume ownership changed successfully'
            "
          restart: "no"
          networks:
            - twenty-network
      
        db:
          image: 'twentycrm/twenty-postgres-spilo:latest'
          container_name: twenty-db
          volumes:
            - 'twenty-db-data:/home/postgres/pgdata'
          environment:
            PGUSER: postgres
            POSTGRES_PASSWORD: ${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}
            POSTGRES_DB: postgres
            SPILO_ROLE: master
          networks:
            - twenty-network
          restart: unless-stopped
          healthcheck:
            test: ["CMD-SHELL", "pg_isready -U postgres"]
            interval: 30s
            timeout: 10s
            retries: 5
            start_period: 60s
      
        redis:
          image: 'redis:7-alpine'
          container_name: twenty-redis
          volumes:
            - 'twenty-redis-data:/data'
          networks:
            - twenty-network
          restart: unless-stopped
          healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            interval: 30s
            timeout: 10s
            retries: 5
            start_period: 10s
      
        server:
          image: 'twentycrm/twenty:v1.1'
          container_name: twenty-server
          depends_on:
            change-vol-ownership:
              condition: service_completed_successfully
            db:
              condition: service_healthy
            redis:
              condition: service_healthy
          volumes:
            - 'twenty-server-local-data:/app/packages/twenty-server/.local-storage'
            - 'twenty-docker-data:/app/docker-data'
          ports:
            - "${EXTERNAL_PORT:-3000}:3000"
          environment:
            NODE_PORT: 3000
            PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}@db:5432/postgres'
            SERVER_URL: '${SERVER_URL:-http://localhost:3000}'
            REDIS_URL: 'redis://redis:6379'
            APP_SECRET: '${APP_SECRET:-please-change-this-secret-key}'
            STORAGE_TYPE: '${STORAGE_TYPE:-local}'
            STORAGE_LOCAL_PATH: '${STORAGE_LOCAL_PATH:-.local-storage}'
            
            # Email Configuration
            EMAIL_DRIVER: '${EMAIL_DRIVER:-logger}'
            EMAIL_FROM_ADDRESS: '${EMAIL_FROM_ADDRESS:-noreply@localhost}'
            EMAIL_FROM_NAME: '${EMAIL_FROM_NAME:-Twenty CRM}'
            EMAIL_SMTP_HOST: '${EMAIL_SMTP_HOST:-}'
            EMAIL_SMTP_PORT: '${EMAIL_SMTP_PORT:-587}'
            EMAIL_SMTP_USER: '${EMAIL_SMTP_USER:-}'
            EMAIL_SMTP_PASSWORD: '${EMAIL_SMTP_PASSWORD:-}'
            EMAIL_SYSTEM_ADDRESS: '${EMAIL_SYSTEM_ADDRESS:-admin@localhost}'
            
            # AI Features
            IS_AI_ENABLED: '${IS_AI_ENABLED:-false}'
            OPENAI_API_KEY: '${OPENAI_API_KEY:-}'
            OPENAI_API_MODEL: '${OPENAI_API_MODEL:-gpt-4}'
            
            # Authentication
            AUTH_PASSWORD_ENABLED: '${AUTH_PASSWORD_ENABLED:-true}'
            IS_EMAIL_VERIFICATION_REQUIRED: '${IS_EMAIL_VERIFICATION_REQUIRED:-false}'
            IS_MULTIWORKSPACE_ENABLED: '${IS_MULTIWORKSPACE_ENABLED:-false}'
            
            # Rate Limiting
            API_RATE_LIMITING_LIMIT: '${API_RATE_LIMITING_LIMIT:-200}'
            API_RATE_LIMITING_TTL: '${API_RATE_LIMITING_TTL:-60}'
            
            # Tokens
            LOGIN_TOKEN_EXPIRES_IN: '${LOGIN_TOKEN_EXPIRES_IN:-30d}'
            PASSWORD_RESET_TOKEN_EXPIRES_IN: '${PASSWORD_RESET_TOKEN_EXPIRES_IN:-5m}'
            EMAIL_VERIFICATION_TOKEN_EXPIRES_IN: '${EMAIL_VERIFICATION_TOKEN_EXPIRES_IN:-24h}'
            
            # Message Queue
            MESSAGE_QUEUE_TYPE: '${MESSAGE_QUEUE_TYPE:-bull-mq}'
            
            # Features
            CALENDAR_PROVIDER_GOOGLE_ENABLED: '${CALENDAR_PROVIDER_GOOGLE_ENABLED:-false}'
            MESSAGING_PROVIDER_GMAIL_ENABLED: '${MESSAGING_PROVIDER_GMAIL_ENABLED:-false}'
            
            # OAuth (Optional)
            AUTH_GOOGLE_ENABLED: '${AUTH_GOOGLE_ENABLED:-false}'
            AUTH_GOOGLE_CLIENT_ID: '${AUTH_GOOGLE_CLIENT_ID:-}'
            AUTH_GOOGLE_CLIENT_SECRET: '${AUTH_GOOGLE_CLIENT_SECRET:-}'
            AUTH_GOOGLE_CALLBACK_URL: '${AUTH_GOOGLE_CALLBACK_URL:-}'
            
            AUTH_MICROSOFT_ENABLED: '${AUTH_MICROSOFT_ENABLED:-false}'
            AUTH_MICROSOFT_CLIENT_ID: '${AUTH_MICROSOFT_CLIENT_ID:-}'
            AUTH_MICROSOFT_CLIENT_SECRET: '${AUTH_MICROSOFT_CLIENT_SECRET:-}'
            AUTH_MICROSOFT_CALLBACK_URL: '${AUTH_MICROSOFT_CALLBACK_URL:-}'
            
          networks:
            - twenty-network
          restart: unless-stopped
          healthcheck:
            test: ["CMD-SHELL", "curl -f http://localhost:3000/healthz || exit 1"]
            interval: 30s
            timeout: 10s
            retries: 5
            start_period: 120s
      
        worker:
          image: 'twentycrm/twenty:v1.1'
          container_name: twenty-worker
          depends_on:
            db:
              condition: service_healthy
            redis:
              condition: service_healthy
            server:
              condition: service_started
          volumes:
            - 'twenty-server-local-data:/app/packages/twenty-server/.local-storage'
            - 'twenty-docker-data:/app/docker-data'
          environment:
            NODE_PORT: 3000
            PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}@db:5432/postgres'
            SERVER_URL: '${SERVER_URL:-http://localhost:3000}'
            REDIS_URL: 'redis://redis:6379'
            APP_SECRET: '${APP_SECRET:-please-change-this-secret-key}'
            STORAGE_TYPE: '${STORAGE_TYPE:-local}'
            STORAGE_LOCAL_PATH: '${STORAGE_LOCAL_PATH:-.local-storage}'
            
            # Email Configuration (same as server)
            EMAIL_DRIVER: '${EMAIL_DRIVER:-logger}'
            EMAIL_FROM_ADDRESS: '${EMAIL_FROM_ADDRESS:-noreply@localhost}'
            EMAIL_FROM_NAME: '${EMAIL_FROM_NAME:-Twenty CRM}'
            EMAIL_SMTP_HOST: '${EMAIL_SMTP_HOST:-}'
            EMAIL_SMTP_PORT: '${EMAIL_SMTP_PORT:-587}'
            EMAIL_SMTP_USER: '${EMAIL_SMTP_USER:-}'
            EMAIL_SMTP_PASSWORD: '${EMAIL_SMTP_PASSWORD:-}'
            
            # Features
            MESSAGE_QUEUE_TYPE: '${MESSAGE_QUEUE_TYPE:-bull-mq}'
            
          command: ["yarn", "worker:start"]
          networks:
            - twenty-network
          restart: unless-stopped
      
      volumes:
        twenty-db-data:
          driver: local
        twenty-redis-data:
          driver: local
        twenty-server-local-data:
          driver: local
        twenty-docker-data:
          driver: local
      
      networks:
        twenty-network:
          driver: bridge
          name: twenty-network
      
      timconsidineT Offline
      timconsidineT Offline
      timconsidine
      App Dev
      wrote on last edited by
      #30

      @zonzonzon Docker image from Dockerfile is different to using docker-compose - cannot usee docker-compose on Cloudron. Need to package Twenty in a Dockerfile

      1 Reply Last reply
      4
      • Z Online
        Z Online
        zonzonzon
        wrote on last edited by
        #31

        Release v1.3.0

        https://github.com/twentyhq/twenty/releases/tag/v1.3.0

        1 Reply Last reply
        2
        • gobenizzleG Offline
          gobenizzleG Offline
          gobenizzle
          wrote on last edited by gobenizzle
          #32

          best open source crm I have seen so far. Miles beyond espo already now.
          I would highly appreciate if this comes to cloudron!

          any word on any plans?

          1 Reply Last reply
          3
          • Z zonzonzon

            @Neiluj
            Currently, I am installing Twenty using Docker Compose as shown below, but I don’t understand what needs to be done when switching to Cloudron. I hope Twenty will be integrated into Cloudron soon. After using it for a while, I found that this CRM is very powerful and customizable to serve different business needs within an enterprise.

            version: '3.8'
            
            services:
              change-vol-ownership:
                image: 'ubuntu:latest'
                user: root
                volumes:
                  - 'twenty-server-local-data:/tmp/server-local-data'
                  - 'twenty-docker-data:/tmp/docker-data'
                command: |
                  bash -c "
                    chown -R 1000:1000 /tmp/server-local-data && 
                    chown -R 1000:1000 /tmp/docker-data &&
                    echo 'Volume ownership changed successfully'
                  "
                restart: "no"
                networks:
                  - twenty-network
            
              db:
                image: 'twentycrm/twenty-postgres-spilo:latest'
                container_name: twenty-db
                volumes:
                  - 'twenty-db-data:/home/postgres/pgdata'
                environment:
                  PGUSER: postgres
                  POSTGRES_PASSWORD: ${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}
                  POSTGRES_DB: postgres
                  SPILO_ROLE: master
                networks:
                  - twenty-network
                restart: unless-stopped
                healthcheck:
                  test: ["CMD-SHELL", "pg_isready -U postgres"]
                  interval: 30s
                  timeout: 10s
                  retries: 5
                  start_period: 60s
            
              redis:
                image: 'redis:7-alpine'
                container_name: twenty-redis
                volumes:
                  - 'twenty-redis-data:/data'
                networks:
                  - twenty-network
                restart: unless-stopped
                healthcheck:
                  test: ["CMD", "redis-cli", "ping"]
                  interval: 30s
                  timeout: 10s
                  retries: 5
                  start_period: 10s
            
              server:
                image: 'twentycrm/twenty:v1.1'
                container_name: twenty-server
                depends_on:
                  change-vol-ownership:
                    condition: service_completed_successfully
                  db:
                    condition: service_healthy
                  redis:
                    condition: service_healthy
                volumes:
                  - 'twenty-server-local-data:/app/packages/twenty-server/.local-storage'
                  - 'twenty-docker-data:/app/docker-data'
                ports:
                  - "${EXTERNAL_PORT:-3000}:3000"
                environment:
                  NODE_PORT: 3000
                  PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}@db:5432/postgres'
                  SERVER_URL: '${SERVER_URL:-http://localhost:3000}'
                  REDIS_URL: 'redis://redis:6379'
                  APP_SECRET: '${APP_SECRET:-please-change-this-secret-key}'
                  STORAGE_TYPE: '${STORAGE_TYPE:-local}'
                  STORAGE_LOCAL_PATH: '${STORAGE_LOCAL_PATH:-.local-storage}'
                  
                  # Email Configuration
                  EMAIL_DRIVER: '${EMAIL_DRIVER:-logger}'
                  EMAIL_FROM_ADDRESS: '${EMAIL_FROM_ADDRESS:-noreply@localhost}'
                  EMAIL_FROM_NAME: '${EMAIL_FROM_NAME:-Twenty CRM}'
                  EMAIL_SMTP_HOST: '${EMAIL_SMTP_HOST:-}'
                  EMAIL_SMTP_PORT: '${EMAIL_SMTP_PORT:-587}'
                  EMAIL_SMTP_USER: '${EMAIL_SMTP_USER:-}'
                  EMAIL_SMTP_PASSWORD: '${EMAIL_SMTP_PASSWORD:-}'
                  EMAIL_SYSTEM_ADDRESS: '${EMAIL_SYSTEM_ADDRESS:-admin@localhost}'
                  
                  # AI Features
                  IS_AI_ENABLED: '${IS_AI_ENABLED:-false}'
                  OPENAI_API_KEY: '${OPENAI_API_KEY:-}'
                  OPENAI_API_MODEL: '${OPENAI_API_MODEL:-gpt-4}'
                  
                  # Authentication
                  AUTH_PASSWORD_ENABLED: '${AUTH_PASSWORD_ENABLED:-true}'
                  IS_EMAIL_VERIFICATION_REQUIRED: '${IS_EMAIL_VERIFICATION_REQUIRED:-false}'
                  IS_MULTIWORKSPACE_ENABLED: '${IS_MULTIWORKSPACE_ENABLED:-false}'
                  
                  # Rate Limiting
                  API_RATE_LIMITING_LIMIT: '${API_RATE_LIMITING_LIMIT:-200}'
                  API_RATE_LIMITING_TTL: '${API_RATE_LIMITING_TTL:-60}'
                  
                  # Tokens
                  LOGIN_TOKEN_EXPIRES_IN: '${LOGIN_TOKEN_EXPIRES_IN:-30d}'
                  PASSWORD_RESET_TOKEN_EXPIRES_IN: '${PASSWORD_RESET_TOKEN_EXPIRES_IN:-5m}'
                  EMAIL_VERIFICATION_TOKEN_EXPIRES_IN: '${EMAIL_VERIFICATION_TOKEN_EXPIRES_IN:-24h}'
                  
                  # Message Queue
                  MESSAGE_QUEUE_TYPE: '${MESSAGE_QUEUE_TYPE:-bull-mq}'
                  
                  # Features
                  CALENDAR_PROVIDER_GOOGLE_ENABLED: '${CALENDAR_PROVIDER_GOOGLE_ENABLED:-false}'
                  MESSAGING_PROVIDER_GMAIL_ENABLED: '${MESSAGING_PROVIDER_GMAIL_ENABLED:-false}'
                  
                  # OAuth (Optional)
                  AUTH_GOOGLE_ENABLED: '${AUTH_GOOGLE_ENABLED:-false}'
                  AUTH_GOOGLE_CLIENT_ID: '${AUTH_GOOGLE_CLIENT_ID:-}'
                  AUTH_GOOGLE_CLIENT_SECRET: '${AUTH_GOOGLE_CLIENT_SECRET:-}'
                  AUTH_GOOGLE_CALLBACK_URL: '${AUTH_GOOGLE_CALLBACK_URL:-}'
                  
                  AUTH_MICROSOFT_ENABLED: '${AUTH_MICROSOFT_ENABLED:-false}'
                  AUTH_MICROSOFT_CLIENT_ID: '${AUTH_MICROSOFT_CLIENT_ID:-}'
                  AUTH_MICROSOFT_CLIENT_SECRET: '${AUTH_MICROSOFT_CLIENT_SECRET:-}'
                  AUTH_MICROSOFT_CALLBACK_URL: '${AUTH_MICROSOFT_CALLBACK_URL:-}'
                  
                networks:
                  - twenty-network
                restart: unless-stopped
                healthcheck:
                  test: ["CMD-SHELL", "curl -f http://localhost:3000/healthz || exit 1"]
                  interval: 30s
                  timeout: 10s
                  retries: 5
                  start_period: 120s
            
              worker:
                image: 'twentycrm/twenty:v1.1'
                container_name: twenty-worker
                depends_on:
                  db:
                    condition: service_healthy
                  redis:
                    condition: service_healthy
                  server:
                    condition: service_started
                volumes:
                  - 'twenty-server-local-data:/app/packages/twenty-server/.local-storage'
                  - 'twenty-docker-data:/app/docker-data'
                environment:
                  NODE_PORT: 3000
                  PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-ChangeThisPassword123!}@db:5432/postgres'
                  SERVER_URL: '${SERVER_URL:-http://localhost:3000}'
                  REDIS_URL: 'redis://redis:6379'
                  APP_SECRET: '${APP_SECRET:-please-change-this-secret-key}'
                  STORAGE_TYPE: '${STORAGE_TYPE:-local}'
                  STORAGE_LOCAL_PATH: '${STORAGE_LOCAL_PATH:-.local-storage}'
                  
                  # Email Configuration (same as server)
                  EMAIL_DRIVER: '${EMAIL_DRIVER:-logger}'
                  EMAIL_FROM_ADDRESS: '${EMAIL_FROM_ADDRESS:-noreply@localhost}'
                  EMAIL_FROM_NAME: '${EMAIL_FROM_NAME:-Twenty CRM}'
                  EMAIL_SMTP_HOST: '${EMAIL_SMTP_HOST:-}'
                  EMAIL_SMTP_PORT: '${EMAIL_SMTP_PORT:-587}'
                  EMAIL_SMTP_USER: '${EMAIL_SMTP_USER:-}'
                  EMAIL_SMTP_PASSWORD: '${EMAIL_SMTP_PASSWORD:-}'
                  
                  # Features
                  MESSAGE_QUEUE_TYPE: '${MESSAGE_QUEUE_TYPE:-bull-mq}'
                  
                command: ["yarn", "worker:start"]
                networks:
                  - twenty-network
                restart: unless-stopped
            
            volumes:
              twenty-db-data:
                driver: local
              twenty-redis-data:
                driver: local
              twenty-server-local-data:
                driver: local
              twenty-docker-data:
                driver: local
            
            networks:
              twenty-network:
                driver: bridge
                name: twenty-network
            
            N Offline
            N Offline
            Neiluj
            wrote on last edited by
            #33

            @zonzonzon the good word of @ekevu123 in a different thread:

            The biggest issue is that the deployment needs to happen in one docker container only.

            For postgres, you use this: https://docs.cloudron.io/packaging/addons/#postgresql

            For local storage, this:
            https://docs.cloudron.io/packaging/addons/#localstorage

            If you don't know how to use these add-ons, go here: https://docs.cloudron.io/packaging/manifest/

            But essentially, if you can package it in one dockerfile only, creating the cloudron manifest is piece of cake.

            Hopefully this helps a bit.

            marcusquinnM 1 Reply Last reply
            3
            • N Neiluj

              @zonzonzon the good word of @ekevu123 in a different thread:

              The biggest issue is that the deployment needs to happen in one docker container only.

              For postgres, you use this: https://docs.cloudron.io/packaging/addons/#postgresql

              For local storage, this:
              https://docs.cloudron.io/packaging/addons/#localstorage

              If you don't know how to use these add-ons, go here: https://docs.cloudron.io/packaging/manifest/

              But essentially, if you can package it in one dockerfile only, creating the cloudron manifest is piece of cake.

              Hopefully this helps a bit.

              marcusquinnM Offline
              marcusquinnM Offline
              marcusquinn
              wrote on last edited by marcusquinn
              #34

              Does look nice, and Typescript does seem to be the future for web apps.

              Screenshots:

              60c2a682-694c-43a9-a53e-1d4543d49406-image.png

              b669c3d9-c25f-482f-9095-61cf949429c2-image.png

              d53950bf-8722-4565-95a2-934ac9d1535a-image.png

              5b77c5ea-66b3-447f-b1b7-eca1b962ff31-image.png

              55454ffe-1a4e-4ba3-89ba-a0ea8ce96e60-image.png

              4ed811b8-ef16-485b-b100-3eee20beb0c2-image.png

              63331663-e053-44ae-a13a-4d0a75ed4c6d-image.png

              46f9339b-3070-4c21-b0e9-edfbfeb06422-image.png

              a18d8f58-0bf6-4320-af23-375febe7918b-image.png

              Web Design & Development: https://www.evergreen.je
              Technology & Apps: https://www.marcusquinn.com

              marcusquinnM 1 Reply Last reply
              3
              • marcusquinnM marcusquinn

                Does look nice, and Typescript does seem to be the future for web apps.

                Screenshots:

                60c2a682-694c-43a9-a53e-1d4543d49406-image.png

                b669c3d9-c25f-482f-9095-61cf949429c2-image.png

                d53950bf-8722-4565-95a2-934ac9d1535a-image.png

                5b77c5ea-66b3-447f-b1b7-eca1b962ff31-image.png

                55454ffe-1a4e-4ba3-89ba-a0ea8ce96e60-image.png

                4ed811b8-ef16-485b-b100-3eee20beb0c2-image.png

                63331663-e053-44ae-a13a-4d0a75ed4c6d-image.png

                46f9339b-3070-4c21-b0e9-edfbfeb06422-image.png

                a18d8f58-0bf6-4320-af23-375febe7918b-image.png

                marcusquinnM Offline
                marcusquinnM Offline
                marcusquinn
                wrote on last edited by marcusquinn
                #35

                Few open-source apps say to me; "these guys get it". This is definitely one of those that does.

                Giving this my seal of approval as a high-value app to have on Cloudron, and for attracting people to Cloudron.

                Web Design & Development: https://www.evergreen.je
                Technology & Apps: https://www.marcusquinn.com

                1 Reply Last reply
                4
                • Z Online
                  Z Online
                  zonzonzon
                  wrote on last edited by
                  #36

                  I’m trying out Twenty and really looking forward to seeing it available on Cloudron soon. Its interface is friendly and modern, and the recent updates have significantly improved loading speed. Its API is very easy to integrate with external apps. Another standout point is its data model, which lets us freely customize and create objects and fields, making it simple to tailor deeply to a company’s operations.

                  1 Reply Last reply
                  4
                  • D Offline
                    D Offline
                    david.opalia
                    wrote on last edited by
                    #37

                    We hope to see this app available soon. We are already using it in a self-hosted setup on our systems, but for convenience we would like to migrate it to Cloudron.
                    How can we help you make this happen?

                    1 Reply Last reply
                    4
                    • Z Online
                      Z Online
                      zonzonzon
                      wrote on last edited by
                      #38

                      Release v1.5.0

                      https://github.com/twentyhq/twenty/releases/tag/v1.5.0

                      1 Reply Last reply
                      4
                      • phillipwilhelmP Offline
                        phillipwilhelmP Offline
                        phillipwilhelm
                        wrote on last edited by
                        #39

                        I would love to see this added

                        1 Reply Last reply
                        1
                        • C Offline
                          C Offline
                          ccfu
                          wrote on last edited by
                          #40

                          +1 for this to be added to Cloudron

                          marcusquinnM 1 Reply Last reply
                          1
                          • C ccfu

                            +1 for this to be added to Cloudron

                            marcusquinnM Offline
                            marcusquinnM Offline
                            marcusquinn
                            wrote on last edited by
                            #41

                            Got someone working on this. Will share with Cloudron when ready to test.

                            Web Design & Development: https://www.evergreen.je
                            Technology & Apps: https://www.marcusquinn.com

                            jdaviescoatesJ C 2 Replies Last reply
                            10
                            • marcusquinnM marcusquinn

                              Got someone working on this. Will share with Cloudron when ready to test.

                              jdaviescoatesJ Offline
                              jdaviescoatesJ Offline
                              jdaviescoates
                              wrote on last edited by
                              #42

                              @marcusquinn said in twenty - A Modern Open Source CRM:

                              Got someone working on this. Will share with Cloudron when ready to test.

                              Great! Thanks! 👏 🙏

                              I use Cloudron with Gandi & Hetzner

                              1 Reply Last reply
                              2
                              • marcusquinnM marcusquinn

                                Got someone working on this. Will share with Cloudron when ready to test.

                                C Offline
                                C Offline
                                ccfu
                                wrote on last edited by
                                #43

                                @marcusquinn Fantastic!

                                1 Reply Last reply
                                3
                                • marcusquinnM Offline
                                  marcusquinnM Offline
                                  marcusquinn
                                  wrote on last edited by marcusquinn
                                  #44

                                  Hoping to have first test version this weekend, then once we're happy with it, perhaps the Cloudron team will pick it up from there.

                                  Web Design & Development: https://www.evergreen.je
                                  Technology & Apps: https://www.marcusquinn.com

                                  Z M 2 Replies Last reply
                                  5
                                  • marcusquinnM marcusquinn

                                    Hoping to have first test version this weekend, then once we're happy with it, perhaps the Cloudron team will pick it up from there.

                                    Z Online
                                    Z Online
                                    zonzonzon
                                    wrote on last edited by
                                    #45

                                    @marcusquinn This is awesome. I hope Twenty will appear soon in the Cloudron ecosystem. It's a highly customizable CRM with a modern interface that will be very useful for businesses.

                                    1 Reply Last reply
                                    2
                                    • marcusquinnM marcusquinn

                                      Hoping to have first test version this weekend, then once we're happy with it, perhaps the Cloudron team will pick it up from there.

                                      M Offline
                                      M Offline
                                      mashborn
                                      wrote on last edited by
                                      #46

                                      @marcusquinn I would upvote you, if I could! Twenty is what I'm waiting for.

                                      1 Reply Last reply
                                      1
                                      • C Offline
                                        C Offline
                                        ccfu
                                        wrote on last edited by ccfu
                                        #47

                                        The only reason I would not move immediately from EspoCRM is the current lack of pdf exports (because we really need them) and the not yet complete email implementation. The roadmap looks very promising though and I am keen to test it out.

                                        1 Reply Last reply
                                        3
                                        • G Offline
                                          G Offline
                                          growco
                                          wrote on last edited by
                                          #48

                                          Would be great to see twenty crm. Very clean and the best OS crm in my opinion.

                                          marcusquinnM 1 Reply Last reply
                                          1
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Bookmarks
                                          • Search