From 446751ed03a2b0436e2ffed73fe5290467cc2eb1 Mon Sep 17 00:00:00 2001 From: MickLesk Date: Fri, 20 Feb 2026 21:46:48 +0100 Subject: [PATCH] kima --- ct/kima-hub.sh | 79 +++++++++++ frontend/public/json/kima-hub.json | 48 +++++++ install/kima-hub-install.sh | 215 +++++++++++++++++++++++++++++ misc/data/telemetry-service | Bin 10448005 -> 0 bytes 4 files changed, 342 insertions(+) create mode 100644 ct/kima-hub.sh create mode 100644 frontend/public/json/kima-hub.json create mode 100644 install/kima-hub-install.sh delete mode 100755 misc/data/telemetry-service diff --git a/ct/kima-hub.sh b/ct/kima-hub.sh new file mode 100644 index 000000000..f8c96b818 --- /dev/null +++ b/ct/kima-hub.sh @@ -0,0 +1,79 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://github.com/Chevron7Locked/kima-hub + +APP="Kima-Hub" +var_tags="${var_tags:-music;streaming;media}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-8192}" +var_disk="${var_disk:-16}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +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 /opt/kima-hub ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "kima-hub" "Chevron7Locked/kima-hub"; then + msg_info "Stopping Services" + systemctl stop kima-frontend kima-backend kima-analyzer kima-analyzer-clap 2>/dev/null || true + msg_ok "Stopped Services" + + msg_info "Backing up Data" + cp /opt/kima-hub/backend/.env /opt/kima-hub-backend-env.bak 2>/dev/null || true + cp /opt/kima-hub/frontend/.env /opt/kima-hub-frontend-env.bak 2>/dev/null || true + msg_ok "Backed up Data" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kima-hub" "Chevron7Locked/kima-hub" "tarball" + + msg_info "Restoring Data" + cp /opt/kima-hub-backend-env.bak /opt/kima-hub/backend/.env 2>/dev/null || true + cp /opt/kima-hub-frontend-env.bak /opt/kima-hub/frontend/.env 2>/dev/null || true + rm -f /opt/kima-hub-backend-env.bak /opt/kima-hub-frontend-env.bak + msg_ok "Restored Data" + + msg_info "Rebuilding Backend" + cd /opt/kima-hub/backend + $STD npm install + $STD npm run build + $STD npx prisma generate + $STD npx prisma migrate deploy + msg_ok "Rebuilt Backend" + + msg_info "Rebuilding Frontend" + cd /opt/kima-hub/frontend + $STD npm install + $STD npm run build + msg_ok "Rebuilt Frontend" + + msg_info "Starting Services" + systemctl start kima-backend kima-frontend kima-analyzer kima-analyzer-clap + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3030${CL}" diff --git a/frontend/public/json/kima-hub.json b/frontend/public/json/kima-hub.json new file mode 100644 index 000000000..a0b11ee68 --- /dev/null +++ b/frontend/public/json/kima-hub.json @@ -0,0 +1,48 @@ +{ + "name": "Kima-Hub", + "slug": "kima-hub", + "categories": [ + 13 + ], + "date_created": "2026-02-20", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3030, + "documentation": "https://github.com/Chevron7Locked/kima-hub#readme", + "website": "https://github.com/Chevron7Locked/kima-hub", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kima-hub.webp", + "config_path": "/opt/kima-hub/backend/.env", + "description": "Self-hosted, on-demand audio streaming platform with AI-powered vibe matching, mood detection, smart playlists, and Lidarr/Audiobookshelf integration.", + "install_methods": [ + { + "type": "default", + "script": "ct/kima-hub.sh", + "resources": { + "cpu": 4, + "ram": 8192, + "hdd": 16, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "First user to register becomes the administrator.", + "type": "info" + }, + { + "text": "Mount your music library to /music in the container.", + "type": "warning" + }, + { + "text": "Audio analysis (mood/vibe detection) requires significant RAM (2-4GB per worker).", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/install/kima-hub-install.sh b/install/kima-hub-install.sh new file mode 100644 index 000000000..6f2eee958 --- /dev/null +++ b/install/kima-hub-install.sh @@ -0,0 +1,215 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://github.com/Chevron7Locked/kima-hub + +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 \ + build-essential \ + git \ + openssl \ + ffmpeg \ + python3 \ + python3-pip \ + python3-dev \ + python3-numpy \ + redis-server +msg_ok "Installed Dependencies" + +PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql +PG_DB_NAME="kima" PG_DB_USER="kima" setup_postgresql_db + +NODE_VERSION="20" setup_nodejs + +msg_info "Configuring Redis" +systemctl enable -q --now redis-server +msg_ok "Configured Redis" + +fetch_and_deploy_gh_release "kima-hub" "Chevron7Locked/kima-hub" "tarball" + +msg_info "Installing Python Dependencies" +export PIP_BREAK_SYSTEM_PACKAGES=1 +$STD pip3 install --no-cache-dir \ + 'tensorflow>=2.13.0,<2.16.0' \ + essentia-tensorflow \ + redis \ + psycopg2-binary \ + 'laion-clap>=1.1.4' \ + 'torch>=2.0.0' \ + 'torchaudio>=2.0.0' \ + 'librosa>=0.10.0' \ + 'transformers>=4.30.0' \ + 'pgvector>=0.2.0' \ + 'python-dotenv>=1.0.0' \ + 'requests>=2.31.0' +msg_ok "Installed Python Dependencies" + +msg_info "Downloading Essentia ML Models" +mkdir -p /opt/kima-hub/models +cd /opt/kima-hub/models +curl -fsSL -o msd-musicnn-1.pb "https://essentia.upf.edu/models/autotagging/msd/msd-musicnn-1.pb" +curl -fsSL -o mood_happy-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_happy/mood_happy-msd-musicnn-1.pb" +curl -fsSL -o mood_sad-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_sad/mood_sad-msd-musicnn-1.pb" +curl -fsSL -o mood_relaxed-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_relaxed/mood_relaxed-msd-musicnn-1.pb" +curl -fsSL -o mood_aggressive-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_aggressive/mood_aggressive-msd-musicnn-1.pb" +curl -fsSL -o mood_party-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_party/mood_party-msd-musicnn-1.pb" +curl -fsSL -o mood_acoustic-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_acoustic/mood_acoustic-msd-musicnn-1.pb" +curl -fsSL -o mood_electronic-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/mood_electronic/mood_electronic-msd-musicnn-1.pb" +curl -fsSL -o danceability-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/danceability/danceability-msd-musicnn-1.pb" +curl -fsSL -o voice_instrumental-msd-musicnn-1.pb "https://essentia.upf.edu/models/classification-heads/voice_instrumental/voice_instrumental-msd-musicnn-1.pb" +msg_ok "Downloaded Essentia ML Models" + +msg_info "Downloading CLAP Model" +curl -fsSL -o /opt/kima-hub/models/music_audioset_epoch_15_esc_90.14.pt \ + "https://huggingface.co/lukewys/laion_clap/resolve/main/music_audioset_epoch_15_esc_90.14.pt" +msg_ok "Downloaded CLAP Model" + +msg_info "Building Backend" +cd /opt/kima-hub/backend +$STD npm ci +$STD npm run build +msg_ok "Built Backend" + +msg_info "Configuring Backend" +SESSION_SECRET=$(openssl rand -hex 32) +ENCRYPTION_KEY=$(openssl rand -hex 32) +cat </opt/kima-hub/backend/.env +NODE_ENV=production +DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} +REDIS_URL=redis://localhost:6379 +PORT=3006 +MUSIC_PATH=/music +TRANSCODE_CACHE_PATH=/opt/kima-hub/cache/transcodes +SESSION_SECRET=${SESSION_SECRET} +SETTINGS_ENCRYPTION_KEY=${ENCRYPTION_KEY} +INTERNAL_API_SECRET=$(openssl rand -hex 16) +EOF +msg_ok "Configured Backend" + +msg_info "Running Database Migrations" +cd /opt/kima-hub/backend +$STD npx prisma generate +$STD npx prisma migrate deploy +msg_ok "Ran Database Migrations" + +msg_info "Building Frontend" +cd /opt/kima-hub/frontend +$STD npm ci +export NEXT_PUBLIC_BACKEND_URL=http://127.0.0.1:3006 +$STD npm run build +msg_ok "Built Frontend" + +msg_info "Configuring Frontend" +cat </opt/kima-hub/frontend/.env +NODE_ENV=production +BACKEND_URL=http://localhost:3006 +PORT=3030 +EOF +msg_ok "Configured Frontend" + +msg_info "Creating Directories" +mkdir -p /opt/kima-hub/cache/transcodes +mkdir -p /music +msg_ok "Created Directories" + +msg_info "Creating Services" +cat </etc/systemd/system/kima-backend.service +[Unit] +Description=Kima Hub Backend +After=network.target postgresql.service redis-server.service +Wants=postgresql.service redis-server.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/kima-hub/backend +EnvironmentFile=/opt/kima-hub/backend/.env +ExecStart=/usr/bin/node /opt/kima-hub/backend/dist/index.js +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/kima-frontend.service +[Unit] +Description=Kima Hub Frontend +After=network.target kima-backend.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/kima-hub/frontend +EnvironmentFile=/opt/kima-hub/frontend/.env +ExecStart=/usr/bin/npm start +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/kima-analyzer.service +[Unit] +Description=Kima Hub Audio Analyzer (Essentia) +After=network.target postgresql.service redis-server.service kima-backend.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/kima-hub/services/audio-analyzer +Environment=DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} +Environment=REDIS_URL=redis://localhost:6379 +Environment=MUSIC_PATH=/music +Environment=BATCH_SIZE=10 +Environment=SLEEP_INTERVAL=5 +Environment=NUM_WORKERS=2 +Environment=THREADS_PER_WORKER=1 +ExecStart=/usr/bin/python3 /opt/kima-hub/services/audio-analyzer/analyzer.py +Restart=on-failure +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/kima-analyzer-clap.service +[Unit] +Description=Kima Hub CLAP Audio Analyzer +After=network.target postgresql.service redis-server.service kima-backend.service kima-analyzer.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/kima-hub/services/audio-analyzer-clap +Environment=DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} +Environment=REDIS_URL=redis://localhost:6379 +Environment=BACKEND_URL=http://localhost:3006 +Environment=MUSIC_PATH=/music +Environment=SLEEP_INTERVAL=5 +Environment=NUM_WORKERS=1 +ExecStart=/usr/bin/python3 /opt/kima-hub/services/audio-analyzer-clap/analyzer.py +Restart=on-failure +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF + +systemctl enable -q --now kima-backend kima-frontend kima-analyzer kima-analyzer-clap +msg_ok "Created Services" + +motd_ssh +customize +cleanup_lxc diff --git a/misc/data/telemetry-service b/misc/data/telemetry-service deleted file mode 100755 index 58f5f71795f2b82e858c638e95f335234f783cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10448005 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