clickhouse

This commit is contained in:
CanbiZ
2025-07-10 15:38:49 +02:00
parent 3f092a5ba5
commit 81b3f74c4d
2 changed files with 57 additions and 21 deletions

View File

@@ -1867,3 +1867,59 @@ function setup_ffmpeg() {
ensure_usr_local_bin_persist
msg_ok "Setup FFmpeg $FINAL_VERSION"
}
# ------------------------------------------------------------------------------
# Installs ClickHouse server and client, sets up DB/user with credentials.
#
# Description:
# - Adds official ClickHouse APT repo with GPG key
# - Installs clickhouse-server and clickhouse-client
# - Creates database and user (credentials optionally overrideable via env)
#
# Variables:
# CLICKHOUSE_DB - Database name (default: analytics)
# CLICKHOUSE_USER - Username (default: analytics_user)
# CLICKHOUSE_PASS - Password (default: auto-generated)
# ------------------------------------------------------------------------------
function setup_clickhouse() {
local CLICKHOUSE_DB="${CLICKHOUSE_DB:-analytics}"
local CLICKHOUSE_USER="${CLICKHOUSE_USER:-analytics_user}"
local CLICKHOUSE_PASS="${CLICKHOUSE_PASS:-$(openssl rand -base64 18 | cut -c1-13)}"
local GPG_URL="https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key"
local GPG_KEY_PATH="/usr/share/keyrings/clickhouse-keyring.gpg"
local ARCH
ARCH=$(dpkg --print-architecture)
msg_info "Adding ClickHouse repository"
if ! getent ahosts packages.clickhouse.com >/dev/null; then
msg_error "DNS resolution failed possibly blocked (AdGuard, Pi-hole)"
return 1
fi
if ! curl -fsSL --connect-timeout 10 --retry 3 "$GPG_URL" | gpg --dearmor -o "$GPG_KEY_PATH"; then
msg_error "Failed to fetch ClickHouse GPG key"
return 1
fi
echo "deb [signed-by=$GPG_KEY_PATH arch=$ARCH] https://packages.clickhouse.com/deb stable main" >/etc/apt/sources.list.d/clickhouse.list
$STD apt-get update
msg_info "Installing ClickHouse"
$STD apt-get install -y clickhouse-server clickhouse-client
$STD systemctl enable --now clickhouse-server
sleep 3
msg_ok "Installed ClickHouse"
msg_info "Creating ClickHouse DB '$CLICKHOUSE_DB' and user '$CLICKHOUSE_USER'"
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"
msg_ok "Created DB and user"
{
echo "ClickHouse DB: $CLICKHOUSE_DB"
echo "ClickHouse User: $CLICKHOUSE_USER"
echo "ClickHouse Pass: $CLICKHOUSE_PASS"
} >>~/clickhouse.creds
}