diff --git a/Dockerfile b/Dockerfile index 4a6d033..7e3f013 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -# Lidify All-in-One Docker Image (Hardened) +# Kima All-in-One Docker Image (Hardened) # Contains: Backend, Frontend, PostgreSQL, Redis, Audio Analyzer (Essentia AI) -# Usage: docker run -d -p 3030:3030 -v /path/to/music:/music lidify/lidify +# Usage: docker run -d -p 3030:3030 -v /path/to/music:/music kima/kima FROM node:20-slim @@ -129,7 +129,7 @@ if [ -f /data/.schema_ready ]; then fi while [ $COUNTER -lt $TIMEOUT ]; do - if PGPASSWORD=lidify psql -h localhost -U lidify -d lidify -c "SELECT 1 FROM \"Track\" LIMIT 1" > /dev/null 2>&1; then + if PGPASSWORD=kima psql -h localhost -U kima -d kima -c "SELECT 1 FROM \"Track\" LIMIT 1" > /dev/null 2>&1; then echo "[wait-for-db] ✓ Database is ready and schema exists!" exit 0 fi @@ -144,7 +144,7 @@ done echo "[wait-for-db] ERROR: Database schema not ready after ${TIMEOUT}s" echo "[wait-for-db] Listing available tables:" -PGPASSWORD=lidify psql -h localhost -U lidify -d lidify -c "\dt" 2>&1 || echo "Could not list tables" +PGPASSWORD=kima psql -h localhost -U kima -d kima -c "\dt" 2>&1 || echo "Could not list tables" exit 1 EOF @@ -211,7 +211,7 @@ WORKDIR /app COPY healthcheck-prod.js /app/healthcheck.js # Create supervisord config - logs to stdout/stderr for Docker visibility -RUN cat > /etc/supervisor/conf.d/lidify.conf << 'EOF' +RUN cat > /etc/supervisor/conf.d/kima.conf << 'EOF' [supervisord] nodaemon=true logfile=/dev/null @@ -275,7 +275,7 @@ stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 -environment=DATABASE_URL="postgresql://lidify:lidify@localhost:5432/lidify",REDIS_URL="redis://localhost:6379",MUSIC_PATH="/music",BATCH_SIZE="10",SLEEP_INTERVAL="5",MAX_ANALYZE_SECONDS="90",BRPOP_TIMEOUT="30",MODEL_IDLE_TIMEOUT="300",NUM_WORKERS="2",THREADS_PER_WORKER="1",LD_LIBRARY_PATH="/opt/cudnn8/nvidia/cudnn/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cublas/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cufft/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cuda_runtime/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cuda_nvrtc/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cusolver/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cusparse/lib:/usr/local/lib/python3.11/dist-packages/nvidia/nccl/lib" +environment=DATABASE_URL="postgresql://kima:kima@localhost:5432/kima",REDIS_URL="redis://localhost:6379",MUSIC_PATH="/music",BATCH_SIZE="10",SLEEP_INTERVAL="5",MAX_ANALYZE_SECONDS="90",BRPOP_TIMEOUT="30",MODEL_IDLE_TIMEOUT="300",NUM_WORKERS="2",THREADS_PER_WORKER="1",LD_LIBRARY_PATH="/opt/cudnn8/nvidia/cudnn/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cublas/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cufft/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cuda_runtime/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cuda_nvrtc/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cusolver/lib:/usr/local/lib/python3.11/dist-packages/nvidia/cusparse/lib:/usr/local/lib/python3.11/dist-packages/nvidia/nccl/lib" priority=50 [program:audio-analyzer-clap] @@ -288,12 +288,12 @@ stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 -environment=DATABASE_URL="postgresql://lidify:lidify@localhost:5432/lidify",REDIS_URL="redis://localhost:6379",MUSIC_PATH="/music",BACKEND_URL="http://localhost:3006",SLEEP_INTERVAL="5",NUM_WORKERS="1",MODEL_IDLE_TIMEOUT="300",INTERNAL_API_SECRET="lidify-internal-aio" +environment=DATABASE_URL="postgresql://kima:kima@localhost:5432/kima",REDIS_URL="redis://localhost:6379",MUSIC_PATH="/music",BACKEND_URL="http://localhost:3006",SLEEP_INTERVAL="5",NUM_WORKERS="1",MODEL_IDLE_TIMEOUT="300",INTERNAL_API_SECRET="kima-internal-aio" priority=60 EOF # Fix Windows line endings in supervisor config -RUN sed -i 's/\r$//' /etc/supervisor/conf.d/lidify.conf +RUN sed -i 's/\r$//' /etc/supervisor/conf.d/kima.conf # Create startup script with root check RUN cat > /app/start.sh << 'EOF' @@ -306,7 +306,7 @@ set -e echo "" echo "============================================================" -echo " Lidify - Premium Self-Hosted Music Server" +echo " Kima - Premium Self-Hosted Music Server" echo "" echo " Features:" echo " - AI-Powered Vibe Matching (Essentia ML)" @@ -372,32 +372,32 @@ fi gosu postgres $PG_BIN/pg_ctl -D /data/postgres -w start # Create user and database if they don't exist -gosu postgres psql -tc "SELECT 1 FROM pg_roles WHERE rolname = 'lidify'" | grep -q 1 || \ - gosu postgres psql -c "CREATE USER lidify WITH PASSWORD 'lidify';" -gosu postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = 'lidify'" | grep -q 1 || \ - gosu postgres psql -c "CREATE DATABASE lidify OWNER lidify;" +gosu postgres psql -tc "SELECT 1 FROM pg_roles WHERE rolname = 'kima'" | grep -q 1 || \ + gosu postgres psql -c "CREATE USER kima WITH PASSWORD 'kima';" +gosu postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = 'kima'" | grep -q 1 || \ + gosu postgres psql -c "CREATE DATABASE kima OWNER kima;" # Create pgvector extension as superuser (required before migrations) echo "Creating pgvector extension..." -gosu postgres psql -d lidify -c "CREATE EXTENSION IF NOT EXISTS vector;" +gosu postgres psql -d kima -c "CREATE EXTENSION IF NOT EXISTS vector;" # Run Prisma migrations cd /app/backend -export DATABASE_URL="postgresql://lidify:lidify@localhost:5432/lidify" +export DATABASE_URL="postgresql://kima:kima@localhost:5432/kima" echo "Running Prisma migrations..." ls -la prisma/migrations/ || echo "No migrations directory!" # Check if _prisma_migrations table exists (indicates previous Prisma setup) -MIGRATIONS_EXIST=$(gosu postgres psql -d lidify -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = '_prisma_migrations')" 2>/dev/null || echo "f") +MIGRATIONS_EXIST=$(gosu postgres psql -d kima -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = '_prisma_migrations')" 2>/dev/null || echo "f") # Check if User table exists (indicates existing data) -USER_TABLE_EXIST=$(gosu postgres psql -d lidify -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'User')" 2>/dev/null || echo "f") +USER_TABLE_EXIST=$(gosu postgres psql -d kima -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'User')" 2>/dev/null || echo "f") # Handle rename migration for existing databases echo "Checking if rename migration needs to be marked as applied..." -if gosu postgres psql -d lidify -tAc "SELECT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='SystemSettings' AND column_name='soulseekFallback');" 2>/dev/null | grep -q 't'; then +if gosu postgres psql -d kima -tAc "SELECT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='SystemSettings' AND column_name='soulseekFallback');" 2>/dev/null | grep -q 't'; then echo "Old column exists, marking migration as applied..." - gosu postgres psql -d lidify -c "INSERT INTO \"_prisma_migrations\" (id, checksum, finished_at, migration_name, logs, rolled_back_at, started_at, applied_steps_count) VALUES (gen_random_uuid(), '', NOW(), '20250101000000_rename_soulseek_fallback', '', NULL, NOW(), 1) ON CONFLICT DO NOTHING;" 2>/dev/null || true + gosu postgres psql -d kima -c "INSERT INTO \"_prisma_migrations\" (id, checksum, finished_at, migration_name, logs, rolled_back_at, started_at, applied_steps_count) VALUES (gen_random_uuid(), '', NOW(), '20250101000000_rename_soulseek_fallback', '', NULL, NOW(), 1) ON CONFLICT DO NOTHING;" 2>/dev/null || true fi if [ "$MIGRATIONS_EXIST" = "t" ]; then @@ -430,7 +430,7 @@ echo "✓ Migrations completed successfully" # Verify schema exists before starting services echo "Verifying database schema..." -if ! gosu postgres psql -d lidify -c "SELECT 1 FROM \"Track\" LIMIT 1" >/dev/null 2>&1; then +if ! gosu postgres psql -d kima -c "SELECT 1 FROM \"Track\" LIMIT 1" >/dev/null 2>&1; then echo "FATAL: Track table does not exist after migration!" echo "Database schema verification failed. Container will exit." exit 1 @@ -471,20 +471,20 @@ fi # Write environment file for backend cat > /app/backend/.env << ENVEOF NODE_ENV=production -DATABASE_URL=postgresql://lidify:lidify@localhost:5432/lidify +DATABASE_URL=postgresql://kima:kima@localhost:5432/kima REDIS_URL=redis://localhost:6379 PORT=3006 MUSIC_PATH=/music TRANSCODE_CACHE_PATH=/data/cache/transcodes SESSION_SECRET=$SESSION_SECRET SETTINGS_ENCRYPTION_KEY=$SETTINGS_ENCRYPTION_KEY -INTERNAL_API_SECRET=lidify-internal-aio +INTERNAL_API_SECRET=kima-internal-aio ENVEOF -echo "Starting Lidify..." +echo "Starting Kima..." exec env \ NODE_ENV=production \ - DATABASE_URL="postgresql://lidify:lidify@localhost:5432/lidify" \ + DATABASE_URL="postgresql://kima:kima@localhost:5432/kima" \ SESSION_SECRET="$SESSION_SECRET" \ SETTINGS_ENCRYPTION_KEY="$SETTINGS_ENCRYPTION_KEY" \ /usr/bin/supervisord -c /etc/supervisor/supervisord.conf diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh index a03354a..588542f 100644 --- a/backend/docker-entrypoint.sh +++ b/backend/docker-entrypoint.sh @@ -20,7 +20,7 @@ if [ "$(id -u)" = "0" ]; then exit 1 fi -echo "[START] Starting Lidify Backend..." +echo "[START] Starting Kima Backend..." # Docker Compose health checks ensure database and Redis are ready # Add a small delay to be extra safe @@ -62,7 +62,7 @@ if [ -z "$SETTINGS_ENCRYPTION_KEY" ]; then export SETTINGS_ENCRYPTION_KEY="default-encryption-key-change-me" fi -echo "[START] Lidify Backend starting on port ${PORT:-3006}..." +echo "[START] Kima Backend starting on port ${PORT:-3006}..." echo "[CONFIG] Music path: ${MUSIC_PATH:-/music}" echo "[CONFIG] Environment: ${NODE_ENV:-production}" diff --git a/deploy.sh b/deploy.sh index a9e8933..a79d0dd 100644 --- a/deploy.sh +++ b/deploy.sh @@ -1,11 +1,11 @@ #!/bin/bash -# Lidify Deploy Script +# Kima Deploy Script # Builds Docker image and cleans up old images/cache to prevent disk bloat set -e # Configuration -IMAGE_NAME="${DOCKERHUB_USERNAME:-chevron7locked}/lidify" +IMAGE_NAME="${DOCKERHUB_USERNAME:-chevron7locked}/kima" VERSION="${VERSION:-latest}" FULL_IMAGE="${IMAGE_NAME}:${VERSION}" @@ -15,7 +15,7 @@ GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color -echo -e "${GREEN}=== Lidify Deploy ===${NC}" +echo -e "${GREEN}=== Kima Deploy ===${NC}" echo "Building: ${FULL_IMAGE}" echo "" diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index cdc9ad5..b5e5a96 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,4 +1,4 @@ -# Lidify Dev Services +# Kima Dev Services # Run alongside npm dev servers for audio analysis # # Usage: @@ -12,25 +12,25 @@ services: postgres: image: postgres:16-alpine - container_name: lidify_dev_db + container_name: kima_dev_db environment: - POSTGRES_USER: lidify - POSTGRES_PASSWORD: lidify - POSTGRES_DB: lidify + POSTGRES_USER: kima + POSTGRES_PASSWORD: kima + POSTGRES_DB: kima volumes: - postgres_dev_data:/var/lib/postgresql/data ports: - "5433:5432" restart: unless-stopped healthcheck: - test: ["CMD-SHELL", "pg_isready -U lidify -d lidify"] + test: ["CMD-SHELL", "pg_isready -U kima -d kima"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine - container_name: lidify_dev_redis + container_name: kima_dev_redis ports: - "6380:6379" restart: unless-stopped @@ -44,11 +44,11 @@ services: audio-analyzer: build: context: ./services/audio-analyzer - container_name: lidify_audio_analyzer + container_name: kima_audio_analyzer environment: # Connect to host machine's services (or Docker services) REDIS_URL: redis://redis:6379 - DATABASE_URL: postgresql://lidify:lidify@postgres:5432/lidify + DATABASE_URL: postgresql://kima:kima@postgres:5432/kima # Music path inside container (mounted from host) MUSIC_PATH: /music BATCH_SIZE: 10 diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 26348d2..0e4f556 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,4 +1,4 @@ -# Lidify - Premium Self-Hosted Music Server +# Kima - Premium Self-Hosted Music Server # All-in-One container with AI-powered vibe matching # # Features included: @@ -12,20 +12,20 @@ # 3. Open http://localhost:3030 services: - lidify: - image: ${DOCKERHUB_USERNAME:-chevron7locked}/lidify:${VERSION:-latest} - container_name: lidify + kima: + image: ${DOCKERHUB_USERNAME:-chevron7locked}/kima:${VERSION:-latest} + container_name: kima ports: - "${PORT:-3030}:3030" volumes: # REQUIRED: Path to your music library - ${MUSIC_PATH:-/path/to/your/music}:/music # Persistent data (database, cache, etc.) - - lidify_data:/data + - kima_data:/data environment: - TZ=${TZ:-UTC} - SESSION_SECRET=${SESSION_SECRET:-} - # Lidarr webhook callback URL - how Lidarr reaches Lidify when downloads complete + # Lidarr webhook callback URL - how Lidarr reaches Kima when downloads complete # Default uses host.docker.internal which works on most setups with extra_hosts below # Override if using custom Docker networks: e.g., http://192.168.0.20:3030 - LIDIFY_CALLBACK_URL=${LIDIFY_CALLBACK_URL:-http://host.docker.internal:3030} @@ -41,4 +41,4 @@ services: retries: 3 volumes: - lidify_data: + kima_data: diff --git a/docker-compose.server.yml b/docker-compose.server.yml index 24ce5ca..ee111eb 100644 --- a/docker-compose.server.yml +++ b/docker-compose.server.yml @@ -1,5 +1,5 @@ -# Lidify Full Stack - Production Deployment -# Uses pre-built Lidify image from DockerHub + all external services +# Kima Full Stack - Production Deployment +# Uses pre-built Kima image from DockerHub + all external services # # Usage: # docker compose -f docker-compose.server.yml up -d @@ -9,21 +9,21 @@ services: # LIDIFY (All-in-One: Frontend + Backend + PostgreSQL + Redis) # ============================================================================== - lidify: - image: chevron7locked/lidify:latest - container_name: lidify + kima: + image: chevron7locked/kima:latest + container_name: kima ports: - "${FRONTEND_PORT:-3030}:3030" volumes: # IMPORTANT: CHANGE THIS to your music library path - ${MUSIC_PATH:-/path/to/your/music}:/music # Persistent data (database, cache, covers, etc.) - - lidify_data:/data + - kima_data:/data environment: - TZ=${TZ:-America/Chicago} # Generate with: openssl rand -base64 32 - SESSION_SECRET=${SESSION_SECRET:-changeme-generate-secure-key} - # Lidarr webhook callback URL - how Lidarr reaches Lidify when downloads complete + # Lidarr webhook callback URL - how Lidarr reaches Kima when downloads complete # Default uses host.docker.internal which works on most setups with extra_hosts below # Override if using custom Docker networks: e.g., http://192.168.0.20:3030 - LIDIFY_CALLBACK_URL=${LIDIFY_CALLBACK_URL:-http://host.docker.internal:3030} @@ -52,7 +52,7 @@ services: # Lidarr - Music collection manager lidarr: image: lscr.io/linuxserver/lidarr:latest - container_name: lidify_lidarr + container_name: kima_lidarr environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -68,7 +68,7 @@ services: # Prowlarr - Indexer manager prowlarr: image: lscr.io/linuxserver/prowlarr:latest - container_name: lidify_prowlarr + container_name: kima_prowlarr environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -82,7 +82,7 @@ services: # FlareSolverr - Cloudflare bypass for Prowlarr flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest - container_name: lidify_flaresolverr + container_name: kima_flaresolverr environment: - LOG_LEVEL=${LOG_LEVEL:-info} - LOG_HTML=${LOG_HTML:-false} @@ -95,7 +95,7 @@ services: # qBittorrent - Torrent client qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest - container_name: lidify_qbittorrent + container_name: kima_qbittorrent environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -114,7 +114,7 @@ services: # NZBGet - Usenet client nzbget: image: lscr.io/linuxserver/nzbget:latest - container_name: lidify_nzbget + container_name: kima_nzbget environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -128,8 +128,8 @@ services: restart: unless-stopped volumes: - # Lidify - lidify_data: + # Kima + kima_data: # External services lidarr_config: prowlarr_config: @@ -138,4 +138,4 @@ volumes: networks: default: - name: lidify_network + name: kima_network diff --git a/docker-compose.services.yml b/docker-compose.services.yml index 5041e0c..b1c5500 100644 --- a/docker-compose.services.yml +++ b/docker-compose.services.yml @@ -1,17 +1,17 @@ -# Optional External Services for Lidify +# Optional External Services for Kima # # These services are OPTIONAL and can be enabled based on your needs. -# To use these services alongside the core Lidify stack: +# To use these services alongside the core Kima stack: # # docker compose -f docker-compose.yml -f docker-compose.services.yml up -d # -# Note: You can configure these services through the Lidify web UI after starting them. +# Note: You can configure these services through the Kima web UI after starting them. services: # Lidarr - Music collection manager lidarr: image: lscr.io/linuxserver/lidarr:latest - container_name: lidify_lidarr + container_name: kima_lidarr environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -24,12 +24,12 @@ services: - "8686:8686" restart: unless-stopped networks: - - lidify_network + - kima_network # Prowlarr - Indexer manager prowlarr: image: lscr.io/linuxserver/prowlarr:latest - container_name: lidify_prowlarr + container_name: kima_prowlarr environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -40,12 +40,12 @@ services: - "9696:9696" restart: unless-stopped networks: - - lidify_network + - kima_network # FlareSolverr - Cloudflare bypass for Prowlarr flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest - container_name: lidify_flaresolverr + container_name: kima_flaresolverr environment: - LOG_LEVEL=${LOG_LEVEL:-info} - LOG_HTML=${LOG_HTML:-false} @@ -55,12 +55,12 @@ services: - "8191:8191" restart: unless-stopped networks: - - lidify_network + - kima_network # qBittorrent - Torrent client qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest - container_name: lidify_qbittorrent + container_name: kima_qbittorrent environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -76,12 +76,12 @@ services: - "6881:6881/udp" restart: unless-stopped networks: - - lidify_network + - kima_network # NZBGet - Usenet client nzbget: image: lscr.io/linuxserver/nzbget:latest - container_name: lidify_nzbget + container_name: kima_nzbget environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -94,7 +94,7 @@ services: - "6789:6789" restart: unless-stopped networks: - - lidify_network + - kima_network volumes: lidarr_config: @@ -103,5 +103,5 @@ volumes: nzbget_config: networks: - lidify_network: + kima_network: external: true diff --git a/docker-compose.yml b/docker-compose.yml index c617917..861c11f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,18 +3,18 @@ services: # LIDIFY CORE APPLICATION # ============================================================================== - # Backend API - Your Lidify Express.js server + # Backend API - Your Kima Express.js server backend: build: context: ./backend dockerfile: Dockerfile - container_name: lidify_backend + container_name: kima_backend environment: # Database - DATABASE_URL: postgresql://${POSTGRES_USER:-lidifydb}:${POSTGRES_PASSWORD:-changeme}@postgres:5432/${POSTGRES_DB:-lidify} - POSTGRES_USER: ${POSTGRES_USER:-lidifydb} + DATABASE_URL: postgresql://${POSTGRES_USER:-kimadb}:${POSTGRES_PASSWORD:-changeme}@postgres:5432/${POSTGRES_DB:-kima} + POSTGRES_USER: ${POSTGRES_USER:-kimadb} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} - POSTGRES_DB: ${POSTGRES_DB:-lidify} + POSTGRES_DB: ${POSTGRES_DB:-kima} REDIS_URL: redis://redis:6379 # Server config @@ -36,9 +36,9 @@ services: ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-http://localhost:3000,http://localhost:3030} # Internal API secret for service-to-service auth - INTERNAL_API_SECRET: ${INTERNAL_API_SECRET:-lidify-internal-secret-change-me} + INTERNAL_API_SECRET: ${INTERNAL_API_SECRET:-kima-internal-secret-change-me} - # Lidarr webhook callback URL - how Lidarr can reach Lidify + # Lidarr webhook callback URL - how Lidarr can reach Kima # Use backend:3006 for same-network communication, or external IP:3030 for external Lidarr LIDIFY_CALLBACK_URL: ${LIDIFY_CALLBACK_URL:-http://backend:3006} # Debug: enable extra podcast stream/cache logging @@ -64,9 +64,9 @@ services: default: aliases: - backend - - lidify_backend + - kima_backend - # Frontend Web UI - Your Lidify Next.js app + # Frontend Web UI - Your Kima Next.js app frontend: build: context: ./frontend @@ -77,7 +77,7 @@ services: NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-} # Build type: "nightly" for dev builds, unset/empty for tagged releases NEXT_PUBLIC_BUILD_TYPE: ${NEXT_PUBLIC_BUILD_TYPE:-nightly} - container_name: lidify_frontend + container_name: kima_frontend environment: NODE_ENV: ${NODE_ENV:-production} # Used by next.config.ts rewrites() inside the container. @@ -102,11 +102,11 @@ services: postgres: image: pgvector/pgvector:pg16 - container_name: lidify_db + container_name: kima_db environment: - POSTGRES_USER: ${POSTGRES_USER:-lidifydb} + POSTGRES_USER: ${POSTGRES_USER:-kimadb} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} - POSTGRES_DB: ${POSTGRES_DB:-lidify} + POSTGRES_DB: ${POSTGRES_DB:-kima} volumes: - postgres_data:/var/lib/postgresql/data ports: @@ -115,12 +115,12 @@ services: healthcheck: # IMPORTANT: # pg_isready defaults to connecting to a database with the same name as the user. - # Our default user is "lidifydb" but default database is "lidify", - # so without -d this will spam logs with: FATAL: database "lidifydb" does not exist + # Our default user is "kimadb" but default database is "kima", + # so without -d this will spam logs with: FATAL: database "kimadb" does not exist test: [ "CMD-SHELL", - "pg_isready -U ${POSTGRES_USER:-lidifydb} -d ${POSTGRES_DB:-lidify}", + "pg_isready -U ${POSTGRES_USER:-kimadb} -d ${POSTGRES_DB:-kima}", ] interval: 10s timeout: 5s @@ -128,7 +128,7 @@ services: redis: image: redis:7-alpine - container_name: lidify_redis + container_name: kima_redis ports: - "${REDIS_PORT:-6379}:6379" restart: unless-stopped @@ -145,7 +145,7 @@ services: # Lidarr - Music collection manager lidarr: image: lscr.io/linuxserver/lidarr:latest - container_name: lidify_lidarr + container_name: kima_lidarr environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -161,7 +161,7 @@ services: # Prowlarr - Indexer manager prowlarr: image: lscr.io/linuxserver/prowlarr:latest - container_name: lidify_prowlarr + container_name: kima_prowlarr environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -175,7 +175,7 @@ services: # FlareSolverr - Cloudflare bypass for Prowlarr flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest - container_name: lidify_flaresolverr + container_name: kima_flaresolverr environment: - LOG_LEVEL=${LOG_LEVEL:-info} - LOG_HTML=${LOG_HTML:-false} @@ -191,7 +191,7 @@ services: # qBittorrent - Torrent client qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest - container_name: lidify_qbittorrent + container_name: kima_qbittorrent environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -210,7 +210,7 @@ services: # SABnzbd - Usenet client sabnzbd: image: lscr.io/linuxserver/sabnzbd:latest - container_name: lidify_sabnzbd + container_name: kima_sabnzbd environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -230,10 +230,10 @@ services: audio-analyzer: build: context: ./services/audio-analyzer - container_name: lidify_audio_analyzer + container_name: kima_audio_analyzer environment: REDIS_URL: redis://redis:6379 - DATABASE_URL: postgresql://${POSTGRES_USER:-lidifydb}:${POSTGRES_PASSWORD:-changeme}@postgres:5432/${POSTGRES_DB:-lidify} + DATABASE_URL: postgresql://${POSTGRES_USER:-kimadb}:${POSTGRES_PASSWORD:-changeme}@postgres:5432/${POSTGRES_DB:-kima} MUSIC_PATH: /music BATCH_SIZE: ${AUDIO_ANALYSIS_BATCH_SIZE:-10} SLEEP_INTERVAL: ${AUDIO_ANALYSIS_INTERVAL:-5} @@ -285,17 +285,17 @@ services: audio-analyzer-clap: build: context: ./services/audio-analyzer-clap - container_name: lidify_audio_analyzer_clap + container_name: kima_audio_analyzer_clap environment: REDIS_URL: redis://redis:6379 - DATABASE_URL: postgresql://${POSTGRES_USER:-lidifydb}:${POSTGRES_PASSWORD:-changeme}@postgres:5432/${POSTGRES_DB:-lidify} + DATABASE_URL: postgresql://${POSTGRES_USER:-kimadb}:${POSTGRES_PASSWORD:-changeme}@postgres:5432/${POSTGRES_DB:-kima} BACKEND_URL: http://backend:3006 MUSIC_PATH: /music SLEEP_INTERVAL: ${CLAP_SLEEP_INTERVAL:-5} NUM_WORKERS: ${CLAP_WORKERS:-2} THREADS_PER_WORKER: ${CLAP_THREADS_PER_WORKER:-1} MODEL_IDLE_TIMEOUT: ${CLAP_MODEL_IDLE_TIMEOUT:-300} - INTERNAL_API_SECRET: ${INTERNAL_API_SECRET:-lidify-internal-secret-change-me} + INTERNAL_API_SECRET: ${INTERNAL_API_SECRET:-kima-internal-secret-change-me} volumes: - ${MUSIC_PATH:-./music}:/music:ro depends_on: @@ -324,7 +324,7 @@ services: # capabilities: [gpu] volumes: - # Lidify core + # Kima core postgres_data: backend_cache: backend_logs: @@ -336,4 +336,4 @@ volumes: networks: default: - name: lidify_network + name: kima_network diff --git a/frontend/docker-entrypoint.sh b/frontend/docker-entrypoint.sh index 2226a21..17836b9 100644 --- a/frontend/docker-entrypoint.sh +++ b/frontend/docker-entrypoint.sh @@ -20,7 +20,7 @@ if [ "$(id -u)" = "0" ]; then exit 1 fi -echo "[START] Starting Lidify Frontend..." +echo "[START] Starting Kima Frontend..." echo "[CONFIG] Environment: ${NODE_ENV:-production}" echo "[CONFIG] API URL: ${NEXT_PUBLIC_API_URL:-not set}"