From 8859c9be413ebaaf010d02f7f2d897c18df9b135 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Thu, 10 Jul 2025 15:29:16 +0200
Subject: [PATCH] rybbit
---
ct/rybbit.sh | 42 ++++++++++++++++++++++
install/rybbit-install.sh | 76 +++++++++++++++++++++++++++++++++++++++
2 files changed, 118 insertions(+)
create mode 100644 ct/rybbit.sh
create mode 100644 install/rybbit-install.sh
diff --git a/ct/rybbit.sh b/ct/rybbit.sh
new file mode 100644
index 00000000..e9164be4
--- /dev/null
+++ b/ct/rybbit.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+source <(curl -s https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: MickLesk (CanbiZ)
+# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
+# Source: https://github.com/rybbit-io/rybbit
+
+APP="Rybbit"
+var_tags="${var_tags:-analytics}"
+var_cpu="${var_cpu:-2}"
+var_ram="${var_ram:-2048}"
+var_disk="${var_disk:-5}"
+var_os="${var_os:-debian}"
+var_version="${var_version:-12}"
+var_unprivileged="${var_unprivileged:-1}"
+
+header_info "$APP"
+variables
+color
+catch_errors
+
+function update_script() {
+ header_info
+ check_container_storage
+ check_container_resources
+ if [[ ! -d /var ]]; then
+ msg_error "No ${APP} Installation Found!"
+ exit
+ fi
+ msg_info "Updating $APP LXC"
+ $STD apt-get update
+ $STD apt-get -y upgrade
+ msg_ok "Updated $APP LXC"
+ exit
+}
+
+start
+build_container
+description
+
+msg_ok "Completed Successfully!"
+msg_custom "🚀" "${GN}" "${APP} setup has been successfully initialized!"
diff --git a/install/rybbit-install.sh b/install/rybbit-install.sh
new file mode 100644
index 00000000..e0af122d
--- /dev/null
+++ b/install/rybbit-install.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: MickLesk (CanbiZ)
+# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
+# Source: https://github.com/rybbit-io/rybbit
+
+source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+ caddy \
+ apt-transport-https \
+ ca-certificates
+msg_ok "Installed Dependencies"
+
+PG_VERSION=17 setup_postgresql
+NODE_VERSION="20" NODE_MODULE="next" setup_nodejs
+
+msg_info "Setup Clickhouse Repository"
+curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
+ARCH=$(dpkg --print-architecture)
+echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg arch=${ARCH}] https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
+$STD apt-get update
+$STD apt-get install -y clickhouse-server clickhouse-client
+$STD systemctl enable --now clickhouse-server
+sleep 3
+msg_ok "Set up Clickhouse Repository"
+
+msg_info "Setting up Clickhouse Database"
+CLICKHOUSE_DB="${CLICKHOUSE_DB:-rybbit_db}"
+CLICKHOUSE_USER="${CLICKHOUSE_USER:-rybbit}"
+CLICKHOUSE_PASS="${CLICKHOUSE_PASS:-$(openssl rand -base64 18 | cut -c1-13)}"
+CLICKHOUSE_HOST="localhost"
+
+clickhouse client --query "CREATE DATABASE IF NOT EXISTS $CLICKHOUSE_DB"
+clickhouse client --query="CREATE USER IF NOT EXISTS $CLICKHOUSE_USER IDENTIFIED WITH plaintext_password BY '$CLICKHOUSE_PASS'"
+clickhouse client --query="GRANT ALL ON $CLICKHOUSE_DB.* TO $CLICKHOUSE_USER"
+#sed -i 's|default|read_only|' /etc/clickhouse-server/users.xml
+#sed -i 's||DISABLED|' /etc/clickhouse-server/users.xml
+$STD systemctl restart clickhouse-server
+msg_ok "Set up Clickhouse Database"
+
+msg_info "Setting up PostgreSQL Database"
+DB_NAME=rybbit_db
+DB_USER=rybbit
+DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
+APP_SECRET=$(openssl rand -base64 32)
+$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
+$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
+$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
+$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
+$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
+{
+ echo "Rybbit-Credentials"
+ echo "Rybbit Database User: $DB_USER"
+ echo "Rybbit Database Password: $DB_PASS"
+ echo "Rybbit Database Name: $DB_NAME"
+} >>~/rybbit.creds
+msg_ok "Set up PostgreSQL Database"
+
+fetch_and_deploy_gh_release "rybbit" "rybbit-io/rybbit" "tarball" "latest" "/opt/rybbit"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"