init: init proj
This commit is contained in:
54
bootstrap.sh
Executable file
54
bootstrap.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# 乘法口诀 —— 新电脑一键部署脚本(macOS)
|
||||
# 作用:检查/安装依赖(ffmpeg + whisper-cpp) → 补齐模型 → 生成证书 → 启动服务
|
||||
# 幂等:已装的会跳过,可反复运行
|
||||
# ============================================================
|
||||
set -e
|
||||
cd "$(dirname "$0")"
|
||||
echo "==== 乘法口诀 部署脚本 ===="
|
||||
|
||||
# 1) Node
|
||||
if ! command -v node >/dev/null 2>&1; then
|
||||
echo "❌ 未检测到 Node.js,请先安装:https://nodejs.org 或 brew install node"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ Node $(node -v)"
|
||||
|
||||
# 2) Homebrew
|
||||
if ! command -v brew >/dev/null 2>&1; then
|
||||
echo "❌ 未检测到 Homebrew,请先安装:https://brew.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3) ffmpeg + whisper-cli
|
||||
NEED=""
|
||||
command -v ffmpeg >/dev/null 2>&1 || NEED="$NEED ffmpeg"
|
||||
command -v whisper-cli >/dev/null 2>&1 || NEED="$NEED whisper-cpp"
|
||||
if [ -n "$NEED" ]; then
|
||||
echo "📦 安装依赖:$NEED"
|
||||
brew install $NEED
|
||||
else
|
||||
echo "✅ ffmpeg / whisper-cli 已就绪"
|
||||
fi
|
||||
|
||||
# 4) 模型(缺则下载 small;base 可选)
|
||||
mkdir -p models
|
||||
if [ ! -f models/ggml-small.bin ]; then
|
||||
echo "⬇️ 下载 small 模型 (465MB)…"
|
||||
curl -L -o models/ggml-small.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin
|
||||
else
|
||||
echo "✅ 模型 ggml-small.bin 已存在"
|
||||
fi
|
||||
|
||||
# 5) 自签名证书(iOS 语音必需)
|
||||
if [ ! -f certs/cert.pem ]; then
|
||||
echo "🔐 生成自签名 HTTPS 证书…"
|
||||
bash gen-cert.sh
|
||||
else
|
||||
echo "✅ 证书已存在(IP 变了请手动跑 bash gen-cert.sh 重生成)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "==== 部署完成,启动服务 ===="
|
||||
exec node server.js
|
||||
Reference in New Issue
Block a user