Code Monkey home page Code Monkey logo

charts's Introduction

Chat dashboard dark mode

Chat dashboard


Chatwoot

Customer engagement suite, an open-source alternative to Intercom, Zendesk, Salesforce Service Cloud etc.

Deploy Deploy to DO

Maintainability CircleCI Badge Docker Pull Badge Docker Build Badge Commits-per-month Discord uptime response time Artifact HUB

Chat dashboard dark mode

Chat dashboard

Chatwoot is an open-source, self-hosted customer engagement suite. Chatwoot lets you view and manage your customer data, communicate with them irrespective of which medium they use, and re-engage them based on their profile.

Features

Chatwoot supports the following conversation channels:

  • Website: Talk to your customers using our live chat widget and make use of our SDK to identify a user and provide contextual support.
  • Facebook: Connect your Facebook pages and start replying to the direct messages to your page.
  • Instagram: Connect your Instagram profile and start replying to the direct messages.
  • Twitter: Connect your Twitter profiles and reply to direct messages or the tweets where you are mentioned.
  • Telegram: Connect your Telegram bot and reply to your customers right from a single dashboard.
  • WhatsApp: Connect your WhatsApp business account and manage the conversation in Chatwoot.
  • Line: Connect your Line account and manage the conversations in Chatwoot.
  • SMS: Connect your Twilio SMS account and reply to the SMS queries in Chatwoot.
  • API Channel: Build custom communication channels using our API channel.
  • Email: Forward all your email queries to Chatwoot and view it in our integrated dashboard.

And more.

Other features include:

  • CRM: Save all your customer information right inside Chatwoot, use contact notes to log emails, phone calls, or meeting notes.
  • Custom Attributes: Define custom attribute attributes to store information about a contact or a conversation and extend the product to match your workflow.
  • Shared multi-brand inboxes: Manage multiple brands or pages using a shared inbox.
  • Private notes: Use @mentions and private notes to communicate internally about a conversation.
  • Canned responses (Saved replies): Improve the response rate by adding saved replies for frequently asked questions.
  • Conversation Labels: Use conversation labels to create custom workflows.
  • Auto assignment: Chatwoot intelligently assigns a ticket to the agents who have access to the inbox depending on their availability and load.
  • Conversation continuity: If the user has provided an email address through the chat widget, Chatwoot will send an email to the customer under the agent name so that the user can continue the conversation over the email.
  • Multi-lingual support: Chatwoot supports 10+ languages.
  • Powerful API & Webhooks: Extend the capability of the software using Chatwoot’s webhooks and APIs.
  • Integrations: Chatwoot natively integrates with Slack right now. Manage your conversations in Slack without logging into the dashboard.

Documentation

Detailed documentation is available at chatwoot.com/help-center.

Translation process

The translation process for Chatwoot web and mobile app is managed at https://translate.chatwoot.com using Crowdin. Please read the translation guide for contributing to Chatwoot.

Branching model

We use the git-flow branching model. The base branch is develop. If you are looking for a stable version, please use the master or tags labelled as v1.x.x.

Deployment

Heroku one-click deploy

Deploying Chatwoot to Heroku is a breeze. It's as simple as clicking this button:

Deploy

Follow this link to understand setting the correct environment variables for the app to work with all the features. There might be breakages if you do not set the relevant environment variables.

DigitalOcean 1-Click Kubernetes deployment

Chatwoot now supports 1-Click deployment to DigitalOcean as a kubernetes app.

Deploy to DO

Other deployment options

For other supported options, checkout our deployment page.

Security

Looking to report a vulnerability? Please refer our SECURITY.md file.

Community? Questions? Support ?

If you need help or just want to hang out, come, say hi on our Discord server.

Contributors ✨

Thanks goes to all these wonderful people:

Chatwoot © 2017-2024, Chatwoot Inc - Released under the MIT License.

charts's People

Contributors

alidavodimehr avatar cortopy avatar davidspek avatar marcelloceschia avatar maximegaillard avatar mxsxs2 avatar nickmonad avatar pranavrajs avatar razorman8669 avatar theirritainer avatar thundersparkf avatar vishnu-narayanan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

charts's Issues

Missing dependency

Reproduce:

Custom values:

nodeSelector:
  environment: support
postgresql:
  enabled: false
redis:
  enabled: false

Apply

helm upgrade --install  --version 1.1.3 --wait --timeout 300s --debug --dry-run -f values.yaml chatwoot chatwoot/chatwoot

Output:

history.go:56: [debug] getting history for release chatwoot
Release "chatwoot" does not exist. Installing it now.
install.go:214: [debug] Original chart version: "1.1.3"
install.go:231: [debug] CHART PATH: /home/arch/.cache/helm/repository/chatwoot-1.1.3.tgz

Error: template: chatwoot/templates/tests/test-connection.yaml:19:20: executing "chatwoot/templates/tests/test-connection.yaml" at <include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $)>: error calling include: template: no template "common.tplvalues.render" associated with template "gotpl"
helm.go:84: [debug] template: chatwoot/templates/tests/test-connection.yaml:19:20: executing "chatwoot/templates/tests/test-connection.yaml" at <include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $)>: error calling include: template: no template "common.tplvalues.render" associated with template "gotpl"

#115

Error with connection to AWS Redis

Hello!
I did whate you wrote:
redis:
enabled: false
#auth:
#password: redis
# when defined the password field is ignored
# existingSecret: secret-name
# existingSecretPasswordKey: ""

The following variables are only used when internal Redis is disabled

host: redis

Just omit the password field if your redis cluster doesn't use password

password: redis

port: 6379

And i'm getting error with connection to AWS Redis
Caused by:
RedisClient::CommandError: ERR AUTH called without any password configured for the default user. Are you sure your configuration is correct?

YAML error

Screenshot 2021-09-08 at 3 58 24 PM

So its been a while since we've upgraded chatwoot and now that we did, after changing the values file etc according to latest template this error is popping up.

Service does not have load balancer ingress IP address

I am trying to setup chatwoot on a local Kubernetes cluster using helm charts, and the debug mode shows the following output periodically:

ready.go:258: [debug] Service does not have load balancer ingress IP address: default/chatwoot

The kubectl versions are as follows:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.5", GitCommit:"c285e781331a3785a7f436042c65c5641ce8a9e9", GitTreeState:"archive", BuildDate:"2022-03-17T21:14:47Z", GoVersion:"go1.18", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.4", GitCommit:"e6c093d87ea4cbb530a7b2ae91e54c0842d8308a", GitTreeState:"clean", BuildDate:"2022-03-06T21:32:53Z", GoVersion:"go1.17.7", Compiler:"gc", Platform:"linux/amd64"}

How to fix this debug message?

error with REDIS_URL

when I deploy the chart I am getting failures like:

+ exec bundle exec rails s -p 3000 -b 0.0.0.0
=> Booting Puma
=> Rails 6.1.6.1 application starting in production 
=> Run `bin/rails server --help` for more startup options
Exiting
/usr/local/lib/ruby/3.0.0/uri/rfc3986_parser.rb:67:in `split': bad URI(is not URI?): "redis://:$(REDIS_PASSWORD)@cache.chat.svc.cluster.local:<no value>" (URI::InvalidURIError)
	from /usr/local/lib/ruby/3.0.0/uri/rfc3986_parser.rb:72:in `parse'
	from /usr/local/lib/ruby/3.0.0/uri/common.rb:171:in `parse'
	from /gems/ruby/3.0.0/gems/sidekiq-6.4.2/lib/sidekiq/redis_connection.rb:102:in `log_info'
	from /gems/ruby/3.0.0/gems/sidekiq-6.4.2/lib/sidekiq/redis_connection.rb:32:in `create'
	from /gems/ruby/3.0.0/gems/sidekiq-6.4.2/lib/sidekiq.rb:136:in `redis='
	from /app/config/initializers/sidekiq.rb:6:in `block in <main>'
	from /gems/ruby/3.0.0/gems/sidekiq-6.4.2/lib/sidekiq.rb:83:in `configure_client'
	from /app/config/initializers/sidekiq.rb:5:in `<main>'
	from /gems/ruby/3.0.0/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:39:in `load'
	from /gems/ruby/3.0.0/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:39:in `load'
	from /gems/ruby/3.0.0/gems/activesupport-6.1.6.1/lib/active_support/dependencies.rb:326:in `block in load'
	from /gems/ruby/3.0.0/gems/activesupport-6.1.6.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	from /gems/ruby/3.0.0/gems/activesupport-6.1.6.1/lib/active_support/dependencies.rb:326:in `load'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/engine.rb:681:in `block in load_config_initializer'
	from /gems/ruby/3.0.0/gems/activesupport-6.1.6.1/lib/active_support/notifications.rb:205:in `instrument'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/engine.rb:680:in `load_config_initializer'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/engine.rb:634:in `block (2 levels) in <class:Engine>'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/engine.rb:633:in `each'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/engine.rb:633:in `block in <class:Engine>'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:32:in `instance_exec'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:32:in `run'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:50:in `each'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:50:in `tsort_each_child'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `call'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `each_strongly_connected_component_from'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:347:in `each'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:347:in `call'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
	from /usr/local/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:60:in `run_initializers'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/application.rb:391:in `initialize!'
	from /app/config/environment.rb:5:in `<main>'
	from config.ru:3:in `require_relative'
	from config.ru:3:in `block in <main>'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb:116:in `eval'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb:116:in `new_from_string'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb:105:in `load_file'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb:66:in `parse_file'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb:349:in `build_app_and_options_from_config'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb:249:in `app'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb:422:in `wrapped_app'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb:312:in `block in start'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb:379:in `handle_profiling'
	from /gems/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb:311:in `start'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/commands/server/server_command.rb:39:in `start'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/commands/server/server_command.rb:144:in `block in perform'
	from <internal:kernel>:90:in `tap'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/commands/server/server_command.rb:135:in `perform'
	from /gems/ruby/3.0.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
	from /gems/ruby/3.0.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
	from /gems/ruby/3.0.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/command/base.rb:69:in `perform'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/command.rb:48:in `invoke'
	from /gems/ruby/3.0.0/gems/railties-6.1.6.1/lib/rails/commands.rb:18:in `<main>'
	from /gems/ruby/3.0.0/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from /gems/ruby/3.0.0/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'

Inbound emails via Postfix or Exim

I would love to see support for a local relay, based on Postfix or Exim, to accept emails and post them to the endpoint provided by Action Mailbox: https://guides.rubyonrails.org/v6.0/action_mailbox_basics.html#postfix

This would simplify setups in which emails are sent to Google Workspace, Microsoft 365, or a self-hosted mail server, as one could simply set up a routing rule to forward the messages meant for Chatwoot to the Postfix/Exim relay and eliminate the need for an external service.
To secure the relay, one could use IP ranges of the service/server accepting the messages and/or a secret local alias.

429 Too Many Requests

Hello everyone!

Thanks for this amazing project.

I have created an instance in Kubernetes using Helm and created an inbox inside that is used by a website running with Ghost.

But only the first log in work after I always have in the Ghost console website:
Failed to load resource: the server responded with a status of 429 (Too Many Requests)

redis user

We use kvrocks as a drop-in replacement for redis. kvrocks does have username and password to connect. Currently the helm chart doesn't have any user_name for redis. It only assumes password and redis host. Can you please add support for taking username also for redis URL?

Connection to AWS RDS and AWS ElastiCache Redis by TLS/SSL

Describe the bug

Hello!
I have tried to connect to both AWS products RDS and Redis by TLS/SSL
But first I can't find any documentation this and the second is this possible ?
Can you help ?
Thank you

To Reproduce

Chatwoot running in kubernetes by your official chart
And i can't connect by TLS/SSL to Redis and RDS

Expected behavior

No response

Environment

Kubernetes

Cloud Provider

AWS

Platform

None

Operating system

No response

Browser and version

No response

Docker (if applicable)

No response

Additional context

No response

global var affinity not working

i can see in template affinity is not utilized to use with web & worker deployments.

Use Case:- chatwoot don't have arm based docker image , so helpfull in pod scheduling in amd64 based node groups

Upgrade broken: Duplicate value: "chatwoot"

Error: Command failed: /tmp/.mount_Lens-2ygw8Fg/resources/x64/helm upgrade mywoot chatwoot/chatwoot --version 1.0.10 --values /tmp/dfd79a845ebbb7ba234e5349dc0c4604/values.yaml --namespace woot --kubeconfig /tmp/kubeconfig-c98c68b5fd67d453a90b0076edf39f54
coalesce.go:202: warning: destination for initContainers is a table. Ignoring non-table value []
coalesce.go:202: warning: destination for sidecars is a table. Ignoring non-table value []
Error: UPGRADE FAILED: cannot patch "mywoot-chatwoot" with kind Service: Service "mywoot-chatwoot" is invalid: spec.ports[1].name: Duplicate value: "chatwoot"

When using `nodeSelector` it throws error calling include: template: no template "common.tplvalues.render"

When a nodeSelector value is present, the templates call a function that's not present.

error calling include: template: no template "common.tplvalues.render"

Details -

│ Error: malformed chart or values:
│ 	templates/: template: chatwoot/charts/chatwoot/templates/tests/test-connection.yaml:19:20: executing "chatwoot/charts/chatwoot/templates/tests/test-connection.yaml" at <include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $)>: error calling include: template: no template "common.tplvalues.render" associated with template "gotpl"

Chart Upgrade issues

I ended up blowing away the release and starting from scratch, but there have been a handful of issues over the last few months that keep breaking the upgrade path in helm.

Screenshot from 2022-12-21 08-02-53

Support for IPv6 in Chatwoot Helm Chart Deployment

Is your feature or enhancement related to a problem? Please describe.

A significant challenge we're facing is the integration of Chatwoot, particularly due to its current limitation in the Helm chart (web-deployment.yaml), which only supports IPv4 (specified as 0.0.0.0)

Our infrastructure primarily relies on IPv6, and the lack of IPv6 support in Chatwoot's Helm chart deployment is hindering our ability to effectively incorporate Chatwoot into our IPv6-based network environment. This limitation is a crucial barrier for seamless integration and full utilization of Chatwoot in our setup.

Describe the solution you'd like

Make an update in Chatwoot Helm chart to support IPv6 addressing. This can be achieved by modifying the web-deployment.yaml to allow configuration for IPv6 addresses or by automatically detecting and adapting to the network environment (IPv4 or IPv6). The ideal solution would provide flexibility in specifying the IP version in the deployment configurations."

Suggestion
web-deployment.yaml

spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
        - args:
            - bundle
            - exec
            - rails
            - s
            - -p
            - {{ .Values.services.internalPort | quote}}
            - -b
            - {{ .Values.services.internalHost | quote}}

and in values.yaml, we can specify internalHost value to be either 0.0.0.0 (for IPv4) and :: (for IPv6)

Currently (on v1.1.7)

spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
        - args:
            - bundle
            - exec
            - rails
            - s
            - -p
            - {{ .Values.services.internalPort | quote}}
            - -b
            - 0.0.0.0

Describe alternatives you've considered

No response

Additional context

No response

fix security issues in charts

Fix security issues reported from artifacthub scans

  • upgrade postgres
  • upgrade redis
  • upgrade busybox
  • fix chatwoot docker image and upgrade

Add variables for turning on SSL

Hello!
Can you add variables for turning on SSL for connection to RDS postgres and add variable for user REDIS instead of using default user ?

Because your solution add to ENV REDIS_URL and DATABASE_URL looks bad
Thank you

Upgrade fails using helm on 3.1.0 and 3.1.1

Describe the bug

When issuing the helm upgrade command, I get:

init-postgres pgb-pgbouncer.ops:5432 - accepting connections                                                                                                                                                                        │
│ init-postgres Database ready to accept connections.                                                                                                                                                                                 │
│ Stream closed EOF for support/chatwoot-migrate-dgd7r (init-postgres)                                                                                                                                                                │
│ Stream closed EOF for support/chatwoot-migrate-dgd7r (init-redis)                                                                                                                                                                   │
│ db-migrate-job fatal: not a git repository (or any of the parent directories): .git                                                                                                                                                 │
│ db-migrate-job I, [2023-09-27T12:13:35.132167 chatwoot/chatwoot#1]  INFO -- : Migrating to UpdateReportingEventsFirstResponseTime (20230302054408)                                                                                                   │
│ db-migrate-job == 20230302054408 UpdateReportingEventsFirstResponseTime: migrating ===========                                                                                                                                      │
│ db-migrate-job rails aborted!                                                                                                                                                                                                       │
│ db-migrate-job StandardError: An error has occurred, this and all later migrations canceled:                                                                                                                                        │
│ db-migrate-job                                                                                                                                                                                                                      │
│ db-migrate-job PG::SyntaxError: ERROR:  zero-length delimited identifier at or near """"                                                                                                                                            │
│ db-migrate-job LINE 1: ... "accounts".* FROM "accounts" ORDER BY "accounts"."" ASC LIM...                                                                                                                                           │
│ db-migrate-job                                                              ^                                                                                                                                                       │
│ db-migrate-job /app/db/migrate/20230302054408_update_reporting_events_first_response_time.rb:3:in `change'                                                                                                                          │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:26:in `block (3 levels) in <main>'                                                                                                                                               │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:18:in `each'                                                                                                                                                                     │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:18:in `block (2 levels) in <main>'                                                                                                                                               │
│ db-migrate-job                                                                                                                                                                                                                      │
│ db-migrate-job Caused by:                                                                                                                                                                                                           │
│ db-migrate-job ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  zero-length delimited identifier at or near """"                                                                                                            │
│ db-migrate-job LINE 1: ... "accounts".* FROM "accounts" ORDER BY "accounts"."" ASC LIM...                                                                                                                                           │
│ db-migrate-job                                                              ^                                                                                                                                                       │
│ db-migrate-job /app/db/migrate/20230302054408_update_reporting_events_first_response_time.rb:3:in `change'                                                                                                                          │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:26:in `block (3 levels) in <main>'                                                                                                                                               │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:18:in `each'                                                                                                                                                                     │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:18:in `block (2 levels) in <main>'                                                                                                                                               │
│ db-migrate-job                                                                                                                                                                                                                      │
│ db-migrate-job Caused by:                                                                                                                                                                                                           │
│ db-migrate-job PG::SyntaxError: ERROR:  zero-length delimited identifier at or near """"                                                                                                                                            │
│ db-migrate-job LINE 1: ... "accounts".* FROM "accounts" ORDER BY "accounts"."" ASC LIM...                                                                                                                                           │
│ db-migrate-job                                                              ^                                                                                                                                                       │
│ db-migrate-job /app/db/migrate/20230302054408_update_reporting_events_first_response_time.rb:3:in `change'                                                                                                                          │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:26:in `block (3 levels) in <main>'                                                                                                                                               │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:18:in `each'                                                                                                                                                                     │
│ db-migrate-job /app/lib/tasks/db_enhancements.rake:18:in `block (2 levels) in <main>'                                                                                                                                               │
│ db-migrate-job Tasks: TOP => db:migrate                                                                                                                                                                                             │
│ db-migrate-job (See full trace by running task with --trace)

To Reproduce

  1. try to upgrade to 3.1.0
  2. use helm upgrade
  3. get logs of migration jobs

Expected behavior

No response

Environment

Kubernetes

Cloud Provider

Other [please specify in the description]

Platform

None

Operating system

No response

Browser and version

No response

Docker (if applicable)

  • k8s 1.28.0

Additional context

No response

Can't connect Twitter account - Error "no implicit conversion of String into Integer"

Hi guys 👋! Can you give me hand ? I am trying to test chatwoot for our company, but I can't connect our twitter account.

Chat version: 1.0.19
Chatwoot (docker version): 2.16.0-ce

Error:

INFO -- : Started GET "/twitter/callback?oauth_token=[FILTERED]&oauth_verifier=[FILTERED]" for 181.43.242.56 at 2023-05-24 13:36:00 +0000
DEBUG -- : source=rack-timeout id=4b81052d-ed27-4114-90c9-5454389febda timeout=15000ms service=1ms state=active
INFO -- : Processing by Twitter::CallbacksController#show as HTML
INFO -- : Parameters: {"oauth_token"=>"[FILTERED]", "oauth_verifier"=>"[FILTERED]"}
DEBUG -- : TRANSACTION (0.5ms)  BEGIN
DEBUG -- : Account Load (0.4ms)  SELECT "accounts".* FROM "accounts" WHERE "accounts"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
DEBUG -- : Channel::TwitterProfile Exists? (0.9ms)  SELECT 1 AS one FROM "channel_twitter_profiles" WHERE "channel_twitter_profiles"."profile_id" = $1 AND "channel_twitter_profiles"."account_id" = $2 LIMIT $3  [["profile_id", "1633846729178255360"], ["account_id", 2], ["LIMIT", 1]]
DEBUG -- : Channel::TwitterProfile Create (0.6ms)  INSERT INTO "channel_twitter_profiles" ("profile_id", "twitter_access_token", "twitter_access_token_secret", "account_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["profile_id", "1234567890"], ["twitter_access_token", "aaabbb-cccddd"], ["twitter_access_token_secret", "twitteraccesssecrettoken"], ["account_id", 2], ["created_at", "2023-05-24 13:36:01.316407"], ["updated_at", "2023-05-24 13:36:01.316407"]]
DEBUG -- : Inbox Load (0.5ms)  SELECT "inboxes".* FROM "inboxes" WHERE "inboxes"."channel_id" = $1 AND "inboxes"."channel_type" = $2 LIMIT $3  [["channel_id", 10], ["channel_type", "Channel::TwitterProfile"], ["LIMIT", 1]]
DEBUG -- : Inbox Create (0.6ms)  INSERT INTO "inboxes" ("channel_id", "account_id", "name", "created_at", "updated_at", "channel_type") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["channel_id", 10], ["account_id", 2], ["name", "PatagonLabs"], ["created_at", "2023-05-24 13:36:01.319793"], ["updated_at", "2023-05-24 13:36:01.319793"], ["channel_type", "Channel::TwitterProfile"]]
DEBUG -- :  WorkingHour Create (0.6ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "closed_all_day", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 0], ["closed_all_day", true], ["created_at", "2023-05-24 13:36:01.321623"], ["updated_at", "2023-05-24 13:36:01.321623"]]
DEBUG -- :  WorkingHour Create (0.6ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "open_hour", "open_minutes", "close_hour", "close_minutes", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 1], ["open_hour", 9], ["open_minutes", 0], ["close_hour", 17], ["close_minutes", 0], ["created_at", "2023-05-24 13:36:01.323981"], ["updated_at", "2023-05-24 13:36:01.323981"]]
DEBUG -- :  WorkingHour Create (0.5ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "open_hour", "open_minutes", "close_hour", "close_minutes", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 2], ["open_hour", 9], ["open_minutes", 0], ["close_hour", 17], ["close_minutes", 0], ["created_at", "2023-05-24 13:36:01.326315"], ["updated_at", "2023-05-24 13:36:01.326315"]]
DEBUG -- :  WorkingHour Create (0.5ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "open_hour", "open_minutes", "close_hour", "close_minutes", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 3], ["open_hour", 9], ["open_minutes", 0], ["close_hour", 17], ["close_minutes", 0], ["created_at", "2023-05-24 13:36:01.328460"], ["updated_at", "2023-05-24 13:36:01.328460"]]
DEBUG -- :  WorkingHour Create (0.5ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "open_hour", "open_minutes", "close_hour", "close_minutes", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 4], ["open_hour", 9], ["open_minutes", 0], ["close_hour", 17], ["close_minutes", 0], ["created_at", "2023-05-24 13:36:01.330657"], ["updated_at", "2023-05-24 13:36:01.330657"]]
DEBUG -- :  WorkingHour Create (0.5ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "open_hour", "open_minutes", "close_hour", "close_minutes", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 5], ["open_hour", 9], ["open_minutes", 0], ["close_hour", 17], ["close_minutes", 0], ["created_at", "2023-05-24 13:36:01.333223"], ["updated_at", "2023-05-24 13:36:01.333223"]]
DEBUG -- : WorkingHour Create (0.4ms)  INSERT INTO "working_hours" ("inbox_id", "account_id", "day_of_week", "closed_all_day", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["inbox_id", 15], ["account_id", 2], ["day_of_week", 6], ["closed_all_day", true], ["created_at", "2023-05-24 13:36:01.334970"], ["updated_at", "2023-05-24 13:36:01.334970"]]
DEBUG -- : Inbox Load (0.7ms)  SELECT "inboxes".* FROM "inboxes" WHERE "inboxes"."id" = $1 LIMIT $2  [["id", 15], ["LIMIT", 1]]
DEBUG -- : Channel::TwitterProfile Load (0.5ms)  SELECT "channel_twitter_profiles".* FROM "channel_twitter_profiles" WHERE "channel_twitter_profiles"."id" = $1 LIMIT $2  [["id", 10], ["LIMIT", 1]]
DEBUG -- :  TRANSACTION (0.6ms)  ROLLBACK
ERROR -- : no implicit conversion of String into Integer
INFO -- : Redirected to https://chatwoot.patagon.dev/app/accounts/2/settings/inboxes/new/twitter
INFO -- : Completed 302 Found in 643ms (ActiveRecord: 8.8ms | Allocations: 12809)

The error seems similar to #1796, but I have configure the FRONTEND_URL with my custom domain already. (screenrecording)

Not sure what to do now... appreciate any hint/advice 🙏. Thanks !

This is the custom values.yaml we are using to deploy the chart:

image:
  repository: chatwoot/chatwoot
  tag: v2.16.0-ce
  pullPolicy: Always

ingress:
  enabled: enable
  annotations: 
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/router.entrypoints: websecure
    cert-manager.io/issuer: http-issuer
  hosts:
    - host: "chatwoot.patagon.dev"
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: chatwoot
              port:
                number: 3000
  tls: true
  tls:
    - secretName: chatwoot.patagon.dev
      hosts:
        - chatwoot.patagon.dev

redis:
  enabled: true
  architecture: standalone
  nameOverride: chatwoot-redis
  image:
    tag: 7.0.11-debian-11-r7
  auth:
    password: "redis"
  master:
    persistence:
      enabled: true

# ENVIRONMENT VARIABLES
env:
  ACTIVE_STORAGE_SERVICE: amazon
  AWS_ACCESS_KEY_ID: "xxxyyy"
  AWS_REGION: "us-east-1"
  AWS_SECRET_ACCESS_KEY: "xxxyyyzzz"
  ENABLE_ACCOUNT_SIGNUP: true
  FORCE_SSL: false
  FRONTEND_URL: "https://chatwoot.patagon.dev"
  INSTALLATION_ENV: helm
  LOG_LEVEL: debug
  LOG_SIZE: 500
  RAILS_ENV: production
  S3_BUCKET_NAME: "mybucket"
  SECRET_KEY_BASE: xxxyyyzzzaaabbb
  TWITTER_APP_ID: "1234567"
  TWITTER_CONSUMER_KEY: "aaaabbbcccddd"
  TWITTER_CONSUMER_SECRET: "mysecret"
  TWITTER_ENVIRONMENT: ""
  USE_INBOX_AVATAR_FOR_BOT: true

dev mode using helm chart

Describe the bug

i am unable to run chatwoot stack on k8s using helm chart in development mode

To Reproduce

image:
    repository: chatwoot/chatwoot
    tag: v3.0.0
    pullPolicy: IfNotPresent

autoscaling:
    apiVersion: autoscaling/v2

services:
    name: chatwoot
    internalPort: 3000
    targetPort: 3000
    type: ClusterIP

serviceAccount:
    create: true

service:
    type: ClusterIP
    port: 80


postgresql:
    enabled: false
    auth:
        username: .........
        postgresPassword: ...............
        database: chatwoot_dev
    postgresqlHost:........................
    postgresqlPort: 5432

redis:
    enabled: true
    nameOverride: chatwoot-redis
    auth:
        password: redis
    master:
        persistence:
            enabled: false
    replica:
        replicaCount: 1

hooks:
    affinity: {}
    migrate:
        env: []
        resources:
            limits:
                memory: 100Mi
            requests:
                memory: 100Mi
        hookAnnotation: "post-install,post-upgrade"

env:
    ACTIVE_STORAGE_SERVICE: local
    ANDROID_BUNDLE_ID: com.chatwoot.app
    ANDROID_SHA256_CERT_FINGERPRINT: "AC:73:8E:DE:EB:56:EA:CC:10:87:02:A7:65:37:7B:38:D4:5D:D4:53:F8:3B:FB:D3:C6:28:64:1D:AA:08:1E:D8"
    ENABLE_ACCOUNT_SIGNUP: false
    FORCE_SSL: false
    FRONTEND_URL: "*..*.com"
    INSTALLATION_ENV: helm
    IOS_APP_ID: 6C953F3RX2.com.chatwoot.app
    LOG_LEVEL: info
    LOG_SIZE: 500
    RAILS_ENV: development
    RAILS_LOG_TO_STDOUT: true
    RAILS_MAX_THREADS: 5
    REDIS_TLS: false
    SECRET_KEY_BASE: 1vbpySIMyz720flTsnOELWVcFlZpjNGUw==

Expected behavior

it is working if i switch RAILS_ENV production

& it should work if i switch back RAILS_ENV to devlopment

Environment

Kubernetes

Cloud Provider

AWS

Platform

None

Operating system

i am using custom k8s deployed on aws ec2

Browser and version

No response

Docker (if applicable)

No response

Additional context

log of chatwoot-web pod

10566534Z Using web-push 3.0.0
2023-09-07T09:46:10.211475477Z Using webpacker 5.4.4
2023-09-07T09:46:10.212098375Z Using wisper 2.0.0
2023-09-07T09:46:10.212839615Z Using working_hours 1.4.1
2023-09-07T09:46:10.248566357Z Bundle complete! 123 Gemfile dependencies, 245 gems now installed.
2023-09-07T09:46:10.248684028Z Gems in the groups 'development' and 'test' were not installed.
2023-09-07T09:46:10.248767419Z Bundled gems are installed into `/gems`
2023-09-07T09:46:10.257619861Z + BUNDLE='bundle check'
2023-09-07T09:46:10.257667382Z + bundle check
2023-09-07T09:46:10.708885707Z The Gemfile's dependencies are satisfied
2023-09-07T09:46:10.712534957Z + exec bundle exec rails s -p 3000 -b 0.0.0.0
2023-09-07T09:46:16.778826349Z => Booting Puma
2023-09-07T09:46:16.778845299Z => Rails 7.0.5.1 application starting in development 
2023-09-07T09:46:16.778869579Z => Run `bin/rails server --help` for more startup options
2023-09-07T09:46:16.798705582Z Exiting
2023-09-07T09:46:16.869913691Z <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- listen (LoadError)
2023-09-07T09:46:16.869957472Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.869962112Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require'
2023-09-07T09:46:16.869965652Z  from /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T09:46:16.869969222Z  from /gems/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/evented_file_update_checker.rb:6:in `<main>'
2023-09-07T09:46:16.869972442Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.869975032Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.869977692Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
2023-09-07T09:46:16.869980342Z  from /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T09:46:16.869983442Z  from /app/config/environments/development.rb:61:in `block in <main>'
2023-09-07T09:46:16.869986092Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/railtie.rb:257:in `instance_eval'
2023-09-07T09:46:16.869988742Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/railtie.rb:257:in `configure'
2023-09-07T09:46:16.869992042Z  from /app/config/environments/development.rb:1:in `<main>'
2023-09-07T09:46:16.869995052Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.869997822Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.870000442Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
2023-09-07T09:46:16.870003013Z  from /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T09:46:16.870006073Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:562:in `block (2 levels) in <class:Engine>'
2023-09-07T09:46:16.870008623Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:561:in `each'
2023-09-07T09:46:16.870019853Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:561:in `block in <class:Engine>'
2023-09-07T09:46:16.870022743Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `instance_exec'
2023-09-07T09:46:16.870025513Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `run'
2023-09-07T09:46:16.870028413Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:61:in `block in run_initializers'
2023-09-07T09:46:16.870030933Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:228:in `block in tsort_each'
2023-09-07T09:46:16.870033543Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
2023-09-07T09:46:16.870036273Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
2023-09-07T09:46:16.870038943Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:431:in `each_strongly_connected_component_from'
2023-09-07T09:46:16.870041833Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
2023-09-07T09:46:16.870044733Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:50:in `each'
2023-09-07T09:46:16.870047363Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:50:in `tsort_each_child'
2023-09-07T09:46:16.870049973Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:415:in `call'
2023-09-07T09:46:16.870055893Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:415:in `each_strongly_connected_component_from'
2023-09-07T09:46:16.870059363Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:349:in `block in each_strongly_connected_component'
2023-09-07T09:46:16.870062073Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `each'
2023-09-07T09:46:16.870065303Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `call'
2023-09-07T09:46:16.870068313Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `each_strongly_connected_component'
2023-09-07T09:46:16.870071943Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:226:in `tsort_each'
2023-09-07T09:46:16.870075114Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:205:in `tsort_each'
2023-09-07T09:46:16.870078444Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:60:in `run_initializers'
2023-09-07T09:46:16.870081194Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:372:in `initialize!'
2023-09-07T09:46:16.870084524Z  from /app/config/environment.rb:5:in `<main>'
2023-09-07T09:46:16.870087244Z  from config.ru:3:in `require_relative'
2023-09-07T09:46:16.870089864Z  from config.ru:3:in `block in <main>'
2023-09-07T09:46:16.870092944Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/builder.rb:116:in `eval'
2023-09-07T09:46:16.870095784Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/builder.rb:116:in `new_from_string'
2023-09-07T09:46:16.870098634Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/builder.rb:105:in `load_file'
2023-09-07T09:46:16.870101544Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/builder.rb:66:in `parse_file'
2023-09-07T09:46:16.870109494Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/server.rb:349:in `build_app_and_options_from_config'
2023-09-07T09:46:16.870112694Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/server.rb:249:in `app'
2023-09-07T09:46:16.870115354Z  from /gems/ruby/3.2.0/gems/rack-2.2.8/lib/rack/server.rb:422:in `wrapped_app'
2023-09-07T09:46:16.870118224Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
2023-09-07T09:46:16.870121474Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/commands/server/server_command.rb:36:in `start'
2023-09-07T09:46:16.870124174Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/commands/server/server_command.rb:143:in `block in perform'
2023-09-07T09:46:16.870131614Z  from <internal:kernel>:90:in `tap'
2023-09-07T09:46:16.870134534Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/commands/server/server_command.rb:134:in `perform'
2023-09-07T09:46:16.870137334Z  from /gems/ruby/3.2.0/gems/thor-1.2.2/lib/thor/command.rb:27:in `run'
2023-09-07T09:46:16.870140094Z  from /gems/ruby/3.2.0/gems/thor-1.2.2/lib/thor/invocation.rb:127:in `invoke_command'
2023-09-07T09:46:16.870142994Z  from /gems/ruby/3.2.0/gems/thor-1.2.2/lib/thor.rb:392:in `dispatch'
2023-09-07T09:46:16.870145805Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/command/base.rb:87:in `perform'
2023-09-07T09:46:16.870148515Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/command.rb:48:in `invoke'
2023-09-07T09:46:16.870151425Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/commands.rb:18:in `<main>'
2023-09-07T09:46:16.870154165Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.870156915Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:46:16.870159605Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
2023-09-07T09:46:16.870162885Z  from bin/rails:4:in `<main>'

log of migration pod

2023-09-07T09:57:12.386468810Z rails aborted!
2023-09-07T09:57:12.386563131Z LoadError: cannot load such file -- annotate
2023-09-07T09:57:12.386854034Z <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:57:12.386861874Z <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T09:57:12.386865204Z /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require'
2023-09-07T09:57:12.386868334Z /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T09:57:12.386871154Z /app/lib/tasks/auto_annotate_models.rake:5:in `<main>'
2023-09-07T09:57:12.386873944Z /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:661:in `load'
2023-09-07T09:57:12.386876584Z /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:661:in `block in run_tasks_blocks'
2023-09-07T09:57:12.386879705Z /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:661:in `each'
2023-09-07T09:57:12.386885445Z /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:661:in `run_tasks_blocks'
2023-09-07T09:57:12.386888665Z /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:501:in `run_tasks_blocks'

log of worker node

2023-09-07T10:02:05.264453503Z bundler: failed to load command: sidekiq (/gems/ruby/3.2.0/bin/sidekiq)
2023-09-07T10:02:05.271858633Z <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- listen (LoadError)
2023-09-07T10:02:05.271874483Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271877273Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require'
2023-09-07T10:02:05.271879673Z  from /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T10:02:05.271882123Z  from /gems/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/evented_file_update_checker.rb:6:in `<main>'
2023-09-07T10:02:05.271884284Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271886414Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271888624Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
2023-09-07T10:02:05.271890804Z  from /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T10:02:05.271893384Z  from /app/config/environments/development.rb:61:in `block in <main>'
2023-09-07T10:02:05.271895894Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/railtie.rb:257:in `instance_eval'
2023-09-07T10:02:05.271898124Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/railtie.rb:257:in `configure'
2023-09-07T10:02:05.271914504Z  from /app/config/environments/development.rb:1:in `<main>'
2023-09-07T10:02:05.271917124Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271919334Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271921494Z  from /gems/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
2023-09-07T10:02:05.271923624Z  from /gems/ruby/3.2.0/gems/zeitwerk-2.6.9/lib/zeitwerk/kernel.rb:38:in `require'
2023-09-07T10:02:05.271926044Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:562:in `block (2 levels) in <class:Engine>'
2023-09-07T10:02:05.271928204Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:561:in `each'
2023-09-07T10:02:05.271930314Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/engine.rb:561:in `block in <class:Engine>'
2023-09-07T10:02:05.271932474Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `instance_exec'
2023-09-07T10:02:05.271934624Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `run'
2023-09-07T10:02:05.271936764Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:61:in `block in run_initializers'
2023-09-07T10:02:05.271938934Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:228:in `block in tsort_each'
2023-09-07T10:02:05.271941044Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
2023-09-07T10:02:05.271943174Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
2023-09-07T10:02:05.271945414Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:431:in `each_strongly_connected_component_from'
2023-09-07T10:02:05.271947534Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
2023-09-07T10:02:05.271949684Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:50:in `each'
2023-09-07T10:02:05.271951844Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:50:in `tsort_each_child'
2023-09-07T10:02:05.271960855Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:415:in `call'
2023-09-07T10:02:05.271963255Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:415:in `each_strongly_connected_component_from'
2023-09-07T10:02:05.271965515Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:349:in `block in each_strongly_connected_component'
2023-09-07T10:02:05.271967815Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `each'
2023-09-07T10:02:05.271970085Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `call'
2023-09-07T10:02:05.271972215Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:347:in `each_strongly_connected_component'
2023-09-07T10:02:05.271974375Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:226:in `tsort_each'
2023-09-07T10:02:05.271976515Z  from /usr/local/lib/ruby/3.2.0/tsort.rb:205:in `tsort_each'
2023-09-07T10:02:05.271978645Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:60:in `run_initializers'
2023-09-07T10:02:05.271980845Z  from /gems/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:372:in `initialize!'
2023-09-07T10:02:05.271983035Z  from /app/config/environment.rb:5:in `<top (required)>'
2023-09-07T10:02:05.271985155Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271987265Z  from <internal:/usr/local/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
2023-09-07T10:02:05.271989505Z  from /gems/ruby/3.2.0/gems/sidekiq-7.1.2/lib/sidekiq/cli.rb:303:in `boot_application'
2023-09-07T10:02:05.271991625Z  from /gems/ruby/3.2.0/gems/sidekiq-7.1.2/lib/sidekiq/cli.rb:42:in `run'
2023-09-07T10:02:05.271993765Z  from /gems/ruby/3.2.0/gems/sidekiq-7.1.2/bin/sidekiq:31:in `<top (required)>'
2023-09-07T10:02:05.271999865Z  from /gems/ruby/3.2.0/bin/sidekiq:25:in `load'
2023-09-07T10:02:05.272002225Z  from /gems/ruby/3.2.0/bin/sidekiq:25:in `<top (required)>'
2023-09-07T10:02:05.272004395Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
2023-09-07T10:02:05.272006545Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
2023-09-07T10:02:05.272008685Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
2023-09-07T10:02:05.272010815Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
2023-09-07T10:02:05.272012915Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
2023-09-07T10:02:05.272015005Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
2023-09-07T10:02:05.272017205Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
2023-09-07T10:02:05.272019335Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
2023-09-07T10:02:05.272021455Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
2023-09-07T10:02:05.272023595Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
2023-09-07T10:02:05.272025735Z  from /usr/local/bundle/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
2023-09-07T10:02:05.272027865Z  from /usr/local/bundle/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
2023-09-07T10:02:05.272030085Z  from /usr/local/bundle/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
2023-09-07T10:02:05.272032326Z  from /usr/local/bundle/bin/bundle:25:in `load'
2023-09-07T10:02:05.272034566Z  from /usr/local/bundle/bin/bundle:25:in `<main>'

redis instances are running. & i have tested the connection to external postgres by changing RAILS_ENV to production

feat: ssl/tls support

  • default install should support generating certs and serving chatwoot over SSL

Look into

  • cert-manager
  • nginx ingress controller

Add option to disable prepared statements.

The helm chart doesn't work out of the box when using PgBouncer in transaction pooling mode because it doesn't support prepared statements. An issue I've encountered is that the page would reload multiple times when trying to login, due to PG error in the background.
I've tested the solution suggested in here and this solves the login issue for me. Having a parameter to configure these values would be nice.

Is there a way to use existing volumes or volume claims?

Hi,

When deploying the helm chart, I want to use the existing persistent volumes. For example, if I want to delete and redeploy the chart, or restore from a backup, I will have to move the existing data from previous volumes to the newly created ones. I checked the values.yaml, but couldn't find a relevant configuration option, Is the chart configurable for such a case?

Another failed upgrade: cannot unmarshal string into Go struct field PodSpec.spec.template.spec.imagePullSecrets of type v1.LocalObjectReference

I dread ChatWoot upgrades.
I haven't had a clean upgrade since we started using it.
There's always something being changed in the chart that breaks things.

This time it's something about imagePullSecrets.

Error: Command failed: /tmp/.mount_Lens-2EH4iuK/resources/x64/helm upgrade caitwoot chatwoot/chatwoot --version 1.1.8 --values /tmp/14d923a3-b9c6-43fd-b3ad-aa1326fd1162-values.yaml --namespace woot --kubeconfig /tmp/kubeconfig-c98c68b5fd67d453a90b0076edf39f54
Error: UPGRADE FAILED: cannot patch "caitwoot-chatwoot-web" with kind Deployment: "" is invalid: patch: Invalid value: "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{\"deployment.kubernetes.io/revision\":\"20\",\"meta.helm.sh/release-name\":\"caitwoot\",\"meta.helm.sh/release-namespace\":\"woot\"},\"creationTimestamp\":\"2022-12-21T16:11:08Z\",\"generation\":21,\"labels\":{\"app\":\"caitwoot-chatwoot\",\"app.kubernetes.io/managed-by\":\"Helm\",\"chart\":\"chatwoot-1.1.8\",\"heritage\":\"Helm\",\"release\":\"caitwoot\"},\"managedFields\":[{\"manager\":\"node-fetch\",\"operation\":\"Update\",\"apiVersion\":\"apps/v1\",\"time\":\"2023-02-13T15:08:34Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:spec\":{\"f:template\":{\"f:metadata\":{\"f:annotations\":{\"f:kubectl.kubernetes.io/restartedAt\":{}}}}}}},{\"manager\":\"helm\",\"operation\":\"Update\",\"apiVersion\":\"apps/v1\",\"time\":\"2024-02-28T14:58:25Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:meta.helm.sh/release-name\":{},\"f:meta.helm.sh/release-namespace\":{}},\"f:labels\":{\".\":{},\"f:app\":{},\"f:app.kubernetes.io/managed-by\":{},\"f:chart\":{},\"f:heritage\":{},\"f:release\":{}}},\"f:spec\":{\"f:progressDeadlineSeconds\":{},\"f:replicas\":{},\"f:revisionHistoryLimit\":{},\"f:selector\":{},\"f:strategy\":{\"f:rollingUpdate\":{\".\":{},\"f:maxSurge\":{},\"f:maxUnavailable\":{}},\"f:type\":{}},\"f:template\":{\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:checksum/config\":{}},\"f:labels\":{\".\":{},\"f:app\":{},\"f:release\":{},\"f:role\":{}}},\"f:spec\":{\"f:containers\":{\"k:{\\\"name\\\":\\\"chatwoot-web\\\"}\":{\".\":{},\"f:args\":{},\"f:command\":{},\"f:envFrom\":{},\"f:image\":{},\"f:imagePullPolicy\":{},\"f:name\":{},\"f:ports\":{\".\":{},\"k:{\\\"containerPort\\\":3000,\\\"protocol\\\":\\\"TCP\\\"}\":{\".\":{},\"f:containerPort\":{},\"f:protocol\":{}}},\"f:resources\":{},\"f:terminationMessagePath\":{},\"f:terminationMessagePolicy\":{},\"f:volumeMounts\":{\".\":{},\"k:{\\\"mountPath\\\":\\\"/app/tmp\\\"}\":{\".\":{},\"f:mountPath\":{},\"f:name\":{}}}}},\"f:dnsPolicy\":{},\"f:restartPolicy\":{},\"f:schedulerName\":{},\"f:securityContext\":{},\"f:serviceAccount\":{},\"f:serviceAccountName\":{},\"f:terminationGracePeriodSeconds\":{},\"f:volumes\":{\".\":{},\"k:{\\\"name\\\":\\\"cache\\\"}\":{\".\":{},\"f:emptyDir\":{},\"f:name\":{}}}}}}}},{\"manager\":\"kube-controller-manager\",\"operation\":\"Update\",\"apiVersion\":\"apps/v1\",\"time\":\"2024-03-18T17:55:50Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:metadata\":{\"f:annotations\":{\"f:deployment.kubernetes.io/revision\":{}}},\"f:status\":{\"f:availableReplicas\":{},\"f:conditions\":{\".\":{},\"k:{\\\"type\\\":\\\"Available\\\"}\":{\".\":{},\"f:lastTransitionTime\":{},\"f:lastUpdateTime\":{},\"f:message\":{},\"f:reason\":{},\"f:status\":{},\"f:type\":{}},\"k:{\\\"type\\\":\\\"Progressing\\\"}\":{\".\":{},\"f:lastTransitionTime\":{},\"f:lastUpdateTime\":{},\"f:message\":{},\"f:reason\":{},\"f:status\":{},\"f:type\":{}}},\"f:observedGeneration\":{},\"f:readyReplicas\":{},\"f:replicas\":{},\"f:updatedReplicas\":{}}},\"subresource\":\"status\"}],\"name\":\"caitwoot-chatwoot-web\",\"namespace\":\"woot\",\"resourceVersion\":\"384969638\",\"uid\":\"4f2d70d5-2948-4694-8e80-18735ed1bb57\"},\"spec\":{\"progressDeadlineSeconds\":600,\"replicas\":1,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app\":\"caitwoot-chatwoot\",\"release\":\"caitwoot\",\"role\":\"web\"}},\"strategy\":{\"type\":\"RollingUpdate\",\"rollingUpdate\":{\"maxUnavailable\":\"25%!\(MISSING)",\"maxSurge\":\"25%!\(MISSING)"}},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"e013226117bca079b0bafe2427a0acfd4ec5feb680f512ee6239ad3ca22ecd61\",\"kubectl.kubernetes.io/restartedAt\":\"2023-02-13T15:08:34Z\"},\"creationTimestamp\":null,\"labels\":{\"app\":\"caitwoot-chatwoot\",\"release\":\"caitwoot\",\"role\":\"web\"}},\"spec\":{\"containers\":[{\"args\":[\"bundle\",\"exec\",\"rails\",\"s\",\"-p\",\"3000\",\"-b\",\"0.0.0.0\"],\"command\":[\"docker/entrypoints/rails.sh\"],\"envFrom\":[{\"secretRef\":{\"name\":\"caitwoot-chatwoot-env\"}}],\"image\":\"chatwoot/chatwoot:v3.7.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"chatwoot-web\",\"ports\":[{\"containerPort\":3000}],\"volumeMounts\":[{\"mountPath\":\"/app/tmp\",\"name\":\"cache\"}]}],\"dnsPolicy\":\"ClusterFirst\",\"imagePullSecrets\":[\"docker-io-key\"],\"restartPolicy\":\"Always\",\"schedulerName\":\"default-scheduler\",\"securityContext\":{},\"serviceAccount\":\"caitwoot-chatwoot\",\"serviceAccountName\":\"caitwoot-chatwoot\",\"terminationGracePeriodSeconds\":30,\"volumes\":[{\"name\":\"cache\",\"emptyDir\":{}}]}}},\"status\":{\"observedGeneration\":21,\"replicas\":1,\"updatedReplicas\":1,\"readyReplicas\":1,\"availableReplicas\":1,\"conditions\":[{\"type\":\"Progressing\",\"status\":\"True\",\"lastUpdateTime\":\"2024-02-28T14:59:27Z\",\"lastTransitionTime\":\"2023-04-11T23:28:26Z\",\"reason\":\"NewReplicaSetAvailable\",\"message\":\"ReplicaSet \\\"caitwoot-chatwoot-web-6988b4897b\\\" has successfully progressed.\"},{\"type\":\"Available\",\"status\":\"True\",\"lastUpdateTime\":\"2024-03-18T17:55:50Z\",\"lastTransitionTime\":\"2024-03-18T17:55:50Z\",\"reason\":\"MinimumReplicasAvailable\",\"message\":\"Deployment has minimum availability.\"}]}}": json: cannot unmarshal string into Go struct field PodSpec.spec.template.spec.imagePullSecrets of type v1.LocalObjectReference && cannot patch "caitwoot-chatwoot-worker" with kind Deployment: "" is invalid: patch: Invalid value: "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{\"deployment.kubernetes.io/revision\":\"20\",\"meta.helm.sh/release-name\":\"caitwoot\",\"meta.helm.sh/release-namespace\":\"woot\"},\"creationTimestamp\":\"2022-12-21T16:11:08Z\",\"generation\":20,\"labels\":{\"app\":\"caitwoot-chatwoot\",\"app.kubernetes.io/managed-by\":\"Helm\",\"chart\":\"chatwoot-1.1.8\",\"heritage\":\"Helm\",\"release\":\"caitwoot\"},\"managedFields\":[{\"manager\":\"node-fetch\",\"operation\":\"Update\",\"apiVersion\":\"apps/v1\",\"time\":\"2023-02-13T15:08:37Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:spec\":{\"f:template\":{\"f:metadata\":{\"f:annotations\":{\"f:kubectl.kubernetes.io/restartedAt\":{}}}}}}},{\"manager\":\"helm\",\"operation\":\"Update\",\"apiVersion\":\"apps/v1\",\"time\":\"2024-02-28T14:58:25Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:meta.helm.sh/release-name\":{},\"f:meta.helm.sh/release-namespace\":{}},\"f:labels\":{\".\":{},\"f:app\":{},\"f:app.kubernetes.io/managed-by\":{},\"f:chart\":{},\"f:heritage\":{},\"f:release\":{}}},\"f:spec\":{\"f:progressDeadlineSeconds\":{},\"f:replicas\":{},\"f:revisionHistoryLimit\":{},\"f:selector\":{},\"f:strategy\":{\"f:rollingUpdate\":{\".\":{},\"f:maxSurge\":{},\"f:maxUnavailable\":{}},\"f:type\":{}},\"f:template\":{\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:checksum/config\":{}},\"f:labels\":{\".\":{},\"f:app\":{},\"f:release\":{},\"f:role\":{}}},\"f:spec\":{\"f:containers\":{\"k:{\\\"name\\\":\\\"chatwoot-workers\\\"}\":{\".\":{},\"f:args\":{},\"f:envFrom\":{},\"f:image\":{},\"f:imagePullPolicy\":{},\"f:name\":{},\"f:resources\":{},\"f:terminationMessagePath\":{},\"f:terminationMessagePolicy\":{},\"f:volumeMounts\":{\".\":{},\"k:{\\\"mountPath\\\":\\\"/app/tmp\\\"}\":{\".\":{},\"f:mountPath\":{},\"f:name\":{}}}}},\"f:dnsPolicy\":{},\"f:restartPolicy\":{},\"f:schedulerName\":{},\"f:securityContext\":{},\"f:serviceAccount\":{},\"f:serviceAccountName\":{},\"f:terminationGracePeriodSeconds\":{},\"f:volumes\":{\".\":{},\"k:{\\\"name\\\":\\\"cache\\\"}\":{\".\":{},\"f:emptyDir\":{},\"f:name\":{}}}}}}}},{\"manager\":\"kube-controller-manager\",\"operation\":\"Update\",\"apiVersion\":\"apps/v1\",\"time\":\"2024-03-18T18:02:27Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:metadata\":{\"f:annotations\":{\"f:deployment.kubernetes.io/revision\":{}}},\"f:status\":{\"f:availableReplicas\":{},\"f:conditions\":{\".\":{},\"k:{\\\"type\\\":\\\"Available\\\"}\":{\".\":{},\"f:lastTransitionTime\":{},\"f:lastUpdateTime\":{},\"f:message\":{},\"f:reason\":{},\"f:status\":{},\"f:type\":{}},\"k:{\\\"type\\\":\\\"Progressing\\\"}\":{\".\":{},\"f:lastTransitionTime\":{},\"f:lastUpdateTime\":{},\"f:message\":{},\"f:reason\":{},\"f:status\":{},\"f:type\":{}}},\"f:observedGeneration\":{},\"f:readyReplicas\":{},\"f:replicas\":{},\"f:updatedReplicas\":{}}},\"subresource\":\"status\"}],\"name\":\"caitwoot-chatwoot-worker\",\"namespace\":\"woot\",\"resourceVersion\":\"384977169\",\"uid\":\"f8d4c4d3-b741-4a6c-a501-93ce5b47e86f\"},\"spec\":{\"progressDeadlineSeconds\":600,\"replicas\":2,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app\":\"caitwoot-chatwoot\",\"release\":\"caitwoot\",\"role\":\"worker\"}},\"strategy\":{\"type\":\"RollingUpdate\",\"rollingUpdate\":{\"maxUnavailable\":\"25%!\(MISSING)",\"maxSurge\":\"25%!\(MISSING)"}},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"e013226117bca079b0bafe2427a0acfd4ec5feb680f512ee6239ad3ca22ecd61\",\"kubectl.kubernetes.io/restartedAt\":\"2023-02-13T15:08:37Z\"},\"creationTimestamp\":null,\"labels\":{\"app\":\"caitwoot-chatwoot\",\"release\":\"caitwoot\",\"role\":\"worker\"}},\"spec\":{\"containers\":[{\"args\":[\"bundle\",\"exec\",\"sidekiq\",\"-C\",\"config/sidekiq.yml\"],\"envFrom\":[{\"secretRef\":{\"name\":\"caitwoot-chatwoot-env\"}}],\"image\":\"chatwoot/chatwoot:v3.7.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"chatwoot-workers\",\"volumeMounts\":[{\"mountPath\":\"/app/tmp\",\"name\":\"cache\"}]}],\"dnsPolicy\":\"ClusterFirst\",\"imagePullSecrets\":[\"docker-io-key\"],\"restartPolicy\":\"Always\",\"schedulerName\":\"default-scheduler\",\"securityContext\":{},\"serviceAccount\":\"caitwoot-chatwoot\",\"serviceAccountName\":\"caitwoot-chatwoot\",\"terminationGracePeriodSeconds\":30,\"volumes\":[{\"name\":\"cache\",\"emptyDir\":{}}]}}},\"status\":{\"observedGeneration\":20,\"replicas\":2,\"updatedReplicas\":2,\"readyReplicas\":2,\"availableReplicas\":2,\"conditions\":[{\"type\":\"Progressing\",\"status\":\"True\",\"lastUpdateTime\":\"2024-02-28T15:00:28Z\",\"lastTransitionTime\":\"2023-04-11T23:28:26Z\",\"reason\":\"NewReplicaSetAvailable\",\"message\":\"ReplicaSet \\\"caitwoot-chatwoot-worker-7ff456dc5b\\\" has successfully progressed.\"},{\"type\":\"Available\",\"status\":\"True\",\"lastUpdateTime\":\"2024-03-18T18:02:26Z\",\"lastTransitionTime\":\"2024-03-18T18:02:26Z\",\"reason\":\"MinimumReplicasAvailable\",\"message\":\"Deployment has minimum availability.\"}]}}": json: cannot unmarshal string into Go struct field PodSpec.spec.template.spec.imagePullSecrets of type v1.LocalObjectReference

I have it defined and the secret exists:

imagePullSecrets:
  - docker-io-key

Removing it allows the upgrade to continue...right into the brick wall that is docker.io rate-limiting.

Chart version 1.1.8.

Chat doesn't update with reply

Describe the bug

We run a self hosted Chatwoot in Kubernetes installed with helm chart.

It used to work well up until 3.0 (we use 3.5.1 now). Since the update everything works well for about 7 days. Then when we receive a message form a user we get the email and we can see the message in the chat. When we send the reply to the user it shows as sent but the user does not receive it and if the user writes more messages we don't receive it either. If the user refreshes the webpage then they will see all the messages but not new ones. It is the same on the agent side as well.

The only solution I found for this is to remove the chart and reinstall it with the same config. After that it works okay for 7 days and the issue starts again.

Here is a recording that may explain it better:
20240130_135306

Thanks!

To Reproduce

  1. Install helm chart
  2. Wait a week
  3. Chats are not updating

Expected behavior

Chats updating when a message sent

Environment

Kubernetes

Cloud Provider

Other [please specify in the description]

Platform

Browser

Operating system

Windows 11

Browser and version

Chrome 120.0.6099.225

Docker (if applicable)

docker version:

Client:
Version: 19.03.6
API version: 1.40
Go version: go1.12.17
Git commit: 369ce74a3c
Built: Fri Dec 18 12:21:44 2020
OS/Arch: linux/amd64
Experimental: false

Server:
Engine:
Version: 19.03.6
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: 369ce74a3c
Built: Thu Dec 10 13:23:49 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.3-0ubuntu1~18.04.4
GitCommit:
runc:
Version: spec: 1.0.1-dev
GitCommit:
docker-init:
Version: 0.18.0
GitCommit:

kubectl version:

Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:27:39Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:23:01Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}

helm -n chatwoot list:

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
chatwoot chatwoot 1 2024-01-30 15:11:53.475189328 +0100 CET deployed chatwoot-1.1.7 v3.5.1

Additional context

My config file for the chart is:

postgresql:
  primary:
    persistence:
      storageClass: chatwoot-postgresql-standard
      size: 8Gi
redis:
  master:
    persistence:
      enabled: false
  replica:
    persistence:
      enabled: false

services:
  type: ClusterIP

ingress:
  enabled: ture
  ingressClassName: nginx
  annotations:
    nginx.org/proxy-body-size: "100m"
    nginx.org/client-max-body-size: "100m"
    nginx.org/location-snippets: |
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-Proto https;
  hosts:
    - host: xxxxxxxxxx
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: chatwoot
            port:
              number: 3000

env:
  FRONTEND_URL: 'https://xxxxxxxxxxx'
  DISABLE_TELEMETRY: true
  FORCE_SSL: false
  SMTP_ADDRESS: xxxxxxxxx
  SMTP_PORT: xxxxxxx
  MAILER_SENDER_EMAIL: xxxxxxxxxxx
  SMTP_USERNAME: xxxxxxxxxxxx
  SMTP_PASSWORD: xxxxxxxxx
  SMTP_AUTHENTICATION: login
  SMTP_ENABLE_STARTTLS_AUTO: true
  ACTIVE_STORAGE_SERVICE: s3_compatible
  STORAGE_BUCKET_NAME: chatwoot-assets
  STORAGE_ACCESS_KEY_ID: xxxxxxxxxxxxx
  STORAGE_SECRET_ACCESS_KEY: xxxxxxxxxxx
  STORAGE_REGION: localCluster
  STORAGE_ENDPOINT: https://xxxxxxxx
  STORAGE_FORCE_PATH_STYLE: true

Connection to RDS postgres by SSL/TLS

Hello!
We have a database rds postgres with ssl/tls
Can you tell me how chatwoot can connect to it ?
Because i dont see any description about this
Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.