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 19 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N 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 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 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 https://www.evergreen.je
                  Development https://brandlight.org
                  Life https://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 https://www.evergreen.je
                    Development https://brandlight.org
                    Life https://marcusquinn.com

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

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

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

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

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


                        • Login

                        • Don't have an account? Register

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