From 8bae2f03bfd8c3f0acd029f36bfc9fdbece32d38 Mon Sep 17 00:00:00 2001 From: Benoit Date: Fri, 22 May 2026 22:10:37 +0200 Subject: [PATCH] feat: install LiveKit via Homebrew et simplifie configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remplace téléchargement binaire par installation Homebrew - Utilise clés par défaut devkey/secret en mode --dev - Supprime flags incompatibles (--rtc-port-range-*, --port) - Ajoute détection/mise à jour LiveKit existant - Simplifie lancement automatique depuis Node.js 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- install/macos.sh | 75 +++++++++++++++++++++------------------------ server/index.js | 20 ++++++------ server/package.json | 13 ++++++-- 3 files changed, 56 insertions(+), 52 deletions(-) diff --git a/install/macos.sh b/install/macos.sh index 2f9fe98..d6e0454 100755 --- a/install/macos.sh +++ b/install/macos.sh @@ -38,46 +38,41 @@ fi echo -e "${GREEN}✅ npm $(npm -v)${NC}" echo "" -# Télécharger LiveKit Server -LIVEKIT_VERSION="v1.7.2" -LIVEKIT_URL="https://github.com/livekit/livekit/releases/download/${LIVEKIT_VERSION}/livekit_${LIVEKIT_VERSION}_darwin_amd64.tar.gz" -LIVEKIT_ARM_URL="https://github.com/livekit/livekit/releases/download/${LIVEKIT_VERSION}/livekit_${LIVEKIT_VERSION}_darwin_arm64.tar.gz" - -echo "📥 Téléchargement LiveKit Server ${LIVEKIT_VERSION}..." - -# Détecter architecture (Intel vs Apple Silicon) -ARCH=$(uname -m) -if [ "$ARCH" = "arm64" ]; then - echo " Architecture: Apple Silicon (ARM64)" - DOWNLOAD_URL=$LIVEKIT_ARM_URL -else - echo " Architecture: Intel (AMD64)" - DOWNLOAD_URL=$LIVEKIT_URL +# Vérifier Homebrew +echo "🍺 Vérification Homebrew..." +if ! command -v brew &> /dev/null; then + echo -e "${RED}❌ Homebrew n'est pas installé${NC}" + echo " Installez Homebrew depuis https://brew.sh" + echo " Ou exécutez :" + echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"" + exit 1 fi -cd server/bin - -if [ -f "livekit-server" ]; then - echo -e "${YELLOW}⚠️ LiveKit Server déjà présent, suppression...${NC}" - rm -f livekit-server -fi - -# Télécharger et extraire -curl -L -o livekit.tar.gz "$DOWNLOAD_URL" -tar -xzf livekit.tar.gz -rm livekit.tar.gz - -# Rendre exécutable -chmod +x livekit-server - -echo -e "${GREEN}✅ LiveKit Server installé${NC}" +echo -e "${GREEN}✅ Homebrew $(brew --version | head -n 1)${NC}" echo "" -cd ../.. +# Installer LiveKit Server via Homebrew +echo "📥 Installation LiveKit Server..." +if command -v livekit-server &> /dev/null; then + CURRENT_VERSION=$(livekit-server --version 2>&1 | head -n 1 || echo "version inconnue") + echo -e "${YELLOW}⚠️ LiveKit Server déjà installé ($CURRENT_VERSION)${NC}" + read -p " Mettre à jour ? (o/N) " -n 1 -r + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + brew upgrade livekit + echo -e "${GREEN}✅ LiveKit Server mis à jour${NC}" + else + echo -e "${GREEN}✅ LiveKit Server existant conservé${NC}" + fi +else + brew install livekit + echo -e "${GREEN}✅ LiveKit Server installé${NC}" +fi +echo "" # Installer dépendances serveur echo "📦 Installation dépendances serveur..." -cd server +cd ../server npm install echo -e "${GREEN}✅ Dépendances serveur installées${NC}" echo "" @@ -91,17 +86,17 @@ echo "" cd .. -# Générer clés API LiveKit -echo "🔑 Génération clés API LiveKit..." -API_KEY="APIkey$(openssl rand -hex 16)" -API_SECRET=$(openssl rand -base64 32) - # Créer fichier .env +echo "🔑 Génération configuration LiveKit..." + cat > server/.env << EOF +USE_LOCAL_LIVEKIT=true + # LiveKit Configuration LIVEKIT_URL=ws://localhost:7880 -LIVEKIT_API_KEY=$API_KEY -LIVEKIT_API_SECRET=$API_SECRET +# En mode --dev, LiveKit utilise ces clés par défaut +LIVEKIT_API_KEY=devkey +LIVEKIT_API_SECRET=secret # Server Configuration PORT=3000 diff --git a/server/index.js b/server/index.js index 94b5ef4..534a4c0 100644 --- a/server/index.js +++ b/server/index.js @@ -1,5 +1,6 @@ #!/usr/bin/env node +import 'dotenv/config'; import express from 'express'; import { spawn } from 'child_process'; import { readFileSync } from 'fs'; @@ -43,25 +44,26 @@ let livekitProcess = null; function startLiveKitServer() { return new Promise((resolve, reject) => { - const livekitBinary = join(__dirname, 'bin', 'livekit-server'); + // Utiliser le binaire Homebrew (dans PATH) + const livekitBinary = 'livekit-server'; log('info', 'Démarrage LiveKit Server...'); - log('debug', 'Binaire:', livekitBinary); + log('debug', 'Commande:', livekitBinary); log('debug', 'URL:', LIVEKIT_URL); // Configuration LiveKit en arguments + // En mode --dev, LiveKit utilise automatiquement devkey/secret const args = [ - '--dev', // Mode développement - '--bind', '0.0.0.0', - '--port', '7880', - '--rtc-port-range-start', '50000', - '--rtc-port-range-end', '60000', - '--keys', `${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET}` + '--dev', // Mode développement (active debug + clés par défaut devkey/secret) + '--bind', '0.0.0.0' + // Note: --udp-port peut être ajouté si besoin (ex: --udp-port 7882) + // Le port HTTP/WebSocket est 7880 par défaut ]; livekitProcess = spawn(livekitBinary, args, { stdio: ['ignore', 'pipe', 'pipe'], - env: { ...process.env } + env: { ...process.env }, + shell: true // Permet de trouver le binaire dans PATH }); livekitProcess.stdout.on('data', (data) => { diff --git a/server/package.json b/server/package.json index 57ee145..674475a 100644 --- a/server/package.json +++ b/server/package.json @@ -9,14 +9,21 @@ "dev": "node --watch index.js", "test": "node --test" }, - "keywords": ["webrtc", "intercom", "livekit", "audio", "ptt"], + "keywords": [ + "webrtc", + "intercom", + "livekit", + "audio", + "ptt" + ], "author": "", "license": "MIT", "dependencies": { + "dotenv": "^17.4.2", "express": "^4.19.2", "livekit-server-sdk": "^2.6.0", - "yaml": "^2.4.2", - "ws": "^8.17.0" + "ws": "^8.17.0", + "yaml": "^2.4.2" }, "devDependencies": { "nodemon": "^3.1.0"