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
37 Posts 16 Posters 5.7k Views 20 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
    #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 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 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 last edited by
                                      #33

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

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

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

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

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

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

                                      Hopefully this helps a bit.

                                      marcusquinnM 1 Reply Last reply
                                      3
                                      • N Neiluj

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

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

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

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

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

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

                                        Hopefully this helps a bit.

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

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

                                        Screenshots:

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

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

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

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

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

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

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

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

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

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

                                        marcusquinnM 1 Reply Last reply
                                        3
                                        • marcusquinnM marcusquinn

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

                                          Screenshots:

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

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

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

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

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

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

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

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

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

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

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

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

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

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