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
31 Posts 13 Posters 5.4k 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 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 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 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
                    4
                    • Z Offline
                      Z Offline
                      zonzonzon
                      wrote last edited by
                      #31

                      Release v1.3.0

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

                      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