From e722cbd55ae0f029139e4f85421e4cc5b1b346eb Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 13:19:22 +0000 Subject: [PATCH] Add chatwoot (ct) --- ct/chatwoot.sh | 80 ++++++++++++++++++++++ ct/headers/chatwoot | 6 ++ install/chatwoot-install.sh | 130 ++++++++++++++++++++++++++++++++++++ 3 files changed, 216 insertions(+) create mode 100644 ct/chatwoot.sh create mode 100644 ct/headers/chatwoot create mode 100644 install/chatwoot-install.sh diff --git a/ct/chatwoot.sh b/ct/chatwoot.sh new file mode 100644 index 000000000..afae62b2a --- /dev/null +++ b/ct/chatwoot.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main" +# Engine comes from community-scripts/core; this repo only ships the scripts. +# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core), +# so a fork or branch of core can be tested without editing this file. +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.chatwoot.com/ + +APP="Chatwoot" +var_tags="${var_tags:-support;chat;helpdesk;crm}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-6144}" +var_disk="${var_disk:-16}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/chatwoot/.env ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "chatwoot" "chatwoot/chatwoot"; then + msg_info "Stopping Services" + systemctl stop chatwoot-web chatwoot-worker + msg_ok "Stopped Services" + + create_backup /opt/chatwoot/.env /opt/chatwoot/storage + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chatwoot" "chatwoot/chatwoot" "tarball" + + RUBY_VERSION=$(tr -d ' \n' /opt/chatwoot/.env +RAILS_ENV=production +NODE_ENV=production +RAILS_LOG_TO_STDOUT=true +SECRET_KEY_BASE=${SECRET_KEY_BASE} +FRONTEND_URL=http://${LOCAL_IP}:3000 +FORCE_SSL=false +ENABLE_ACCOUNT_SIGNUP=false + +POSTGRES_HOST=127.0.0.1 +POSTGRES_PORT=5432 +POSTGRES_DATABASE=${PG_DB_NAME} +POSTGRES_USERNAME=${PG_DB_USER} +POSTGRES_PASSWORD=${PG_DB_PASS} +REDIS_URL=redis://127.0.0.1:6379 + +ACTIVE_STORAGE_SERVICE=local +EOF +ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=$(openssl rand -hex 32) +ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=$(openssl rand -hex 32) +ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=$(openssl rand -hex 32) +cat <>/opt/chatwoot/.env +ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=${ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY} +ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=${ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY} +ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=${ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT} +EOF +chmod 640 /opt/chatwoot/.env +msg_ok "Configured Chatwoot" + +msg_info "Preparing Database" +RAILS_ENV=production $STD bundle exec rails db:chatwoot_prepare +msg_ok "Prepared Database" + +msg_info "Precompiling Assets" +RAILS_ENV=production NODE_OPTIONS="--max-old-space-size=4096" $STD bundle exec rails assets:precompile +msg_ok "Precompiled Assets" + +msg_info "Creating Services" +cat </etc/systemd/system/chatwoot-web.service +[Unit] +Description=Chatwoot Web +After=network.target postgresql.service redis-server.service +Requires=postgresql.service redis-server.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/chatwoot +EnvironmentFile=/opt/chatwoot/.env +Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ExecStart=/root/.rbenv/shims/bundle exec rails server -p 3000 -e production +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +cat </etc/systemd/system/chatwoot-worker.service +[Unit] +Description=Chatwoot Worker +After=network.target postgresql.service redis-server.service +Requires=postgresql.service redis-server.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/chatwoot +EnvironmentFile=/opt/chatwoot/.env +Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ExecStart=/root/.rbenv/shims/bundle exec sidekiq -C config/sidekiq.yml +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now chatwoot-web chatwoot-worker redis-server +msg_ok "Created Services" + +motd_ssh +customize +cleanup_lxc