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
  • 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
30 Posts 13 Posters 4.6k Views 16 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.
  • 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 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
              2
              • 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 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
                2
                • N Offline
                  N Offline
                  Neiluj
                  wrote 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 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
                    0
                    • 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 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 1 Reply 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 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
                        2
                        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