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
54 Posts 20 Posters 9.1k 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.
  • jdaviescoatesJ Offline
    jdaviescoatesJ Offline
    jdaviescoates
    wrote on last edited by
    #14

    It's still in beta with v0.42.0 being the latest release, but it seems they make a new release every couple of weeks or so https://github.com/twentyhq/twenty/releases

    I use Cloudron with Gandi & Hetzner

    Z 1 Reply Last reply
    2
    • jdaviescoatesJ jdaviescoates

      It's still in beta with v0.42.0 being the latest release, but it seems they make a new release every couple of weeks or so https://github.com/twentyhq/twenty/releases

      Z Offline
      Z Offline
      zonzonzon
      wrote on last edited by
      #15

      @jdaviescoates They have updated to version v0.43.0.

      https://github.com/twentyhq/twenty/releases

      1 Reply Last reply
      2
      • Z Offline
        Z Offline
        zonzonzon
        wrote on last edited by
        #16

        V0.44.0

        https://github.com/twentyhq/twenty/releases

        1 Reply Last reply
        1
        • Z Offline
          Z Offline
          zonzonzon
          wrote on last edited by
          #17

          v0.50.0

          https://github.com/twentyhq/twenty/releases

          1 Reply Last reply
          0
          • Z Offline
            Z Offline
            zonzonzon
            wrote on last edited by
            #18

            v0.51.0

            https://github.com/twentyhq/twenty/releases

            1 Reply Last reply
            0
            • robiR Offline
              robiR Offline
              robi
              wrote on last edited by
              #19

              Wow, well done @zonzonzon - your posts have been so regular that I thought this was an update for the App Store 🤣

              Perhaps someone will be inspired to start a package for it..

              Conscious tech

              1 Reply Last reply
              2
              • Z Offline
                Z Offline
                zonzonzon
                wrote on last edited by
                #20

                0.52.0

                https://twenty.com/releases

                https://github.com/twentyhq/twenty/releases

                1 Reply Last reply
                0
                • girishG girish

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

                  https://github.com/twentyhq/twenty#what-you-can-do-with-twenty says:

                  We're currently in the development phase of Twenty's alpha version.
                  

                  This is still there... Also, https://twenty.com/pricing says "Keep in mind we are still in alpha so version updates could be a challenge." . Best to wait.

                  Z Offline
                  Z Offline
                  zonzonzon
                  wrote on last edited by
                  #21

                  @girish
                  Can you review it one more time? The software version has improved - it's now stable and receives regular updates. It has moved beyond the Beta testing phase.

                  Screenshot 2025-05-20 200310.png

                  1 Reply Last reply
                  3
                  • Z Offline
                    Z Offline
                    zonzonzon
                    wrote on last edited by zonzonzon
                    #22

                    @girish

                    Twenty already has version 1.0. Please integrate it into Cloudron. Cloudron’s ecosystem will be much more powerful and excellent when this ecosystem is added. Twenty is finally out of beta!

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

                    https://twenty.com/releases

                    1 Reply Last reply
                    2
                    • jdaviescoatesJ Offline
                      jdaviescoatesJ Offline
                      jdaviescoates
                      wrote on last edited by jdaviescoates
                      #23

                      Self hosting instructions here https://twenty.com/developers/section/self-hosting/docker-compose

                      I use Cloudron with Gandi & Hetzner

                      1 Reply Last reply
                      2
                      • N Offline
                        N Offline
                        Neiluj
                        wrote on last edited by
                        #24
                        This post is deleted!
                        1 Reply Last reply
                        0
                        • N Offline
                          N Offline
                          Neiluj
                          wrote on last edited by
                          #25

                          Reaching v1.0 seems like the milestone that should bring packaging this app for Cloudron into consideration no?
                          This, as a modern CRM, would be a great and worthy addition to Cloudron I feel.

                          jdaviescoatesJ 1 Reply Last reply
                          3
                          • N Neiluj

                            Reaching v1.0 seems like the milestone that should bring packaging this app for Cloudron into consideration no?
                            This, as a modern CRM, would be a great and worthy addition to Cloudron I feel.

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

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

                            Reaching v1.0 seems like the milestone that should bring packaging this app for Cloudron into consideration no?
                            This, as a modern CRM, would be a great and worthy addition to Cloudron I feel.

                            đź’Ż

                            This would be great to have.

                            I use Cloudron with Gandi & Hetzner

                            1 Reply Last reply
                            3
                            • N Offline
                              N Offline
                              Neiluj
                              wrote on last edited by
                              #27

                              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 1 Reply Last reply
                              2
                              • Z Offline
                                Z Offline
                                zonzonzon
                                wrote on last edited by
                                #28

                                Latest Releases : 1.2.0 Jul 28th

                                Import Relations
                                When importing records, you can now import relations between records. For example, you can import a CSV file that includes a column for related records, such as linking contacts to companies or tasks to projects.

                                Any Field filter
                                We’ve added an "any field search" filter that lets you search across all fields at once. For example, it can allow you to locate a customer by their phone number, whether it's stored in the "Mobile," "Office," or "Direct Line" field.

                                https://twenty.com/releases

                                1 Reply Last reply
                                1
                                • 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 Offline
                                  Z Offline
                                  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 Offline
                                      Z Offline
                                      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
                                          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