- 添加 Harbor 快速恢复脚本 (harbor-quick-restore.sh) - 添加完整恢复指南 (HARBOR-RESTORE-GUIDE.md) - 添加版本信息文件 (VERSION.md) - 更新 .gitignore 排除敏感数据 - 配置 harbor git remote - 修复 Cloudflare Tunnel 配置 系统重装后可通过以下命令快速恢复: git clone http://192.168.1.83:33000/gao/ljwx-harbor.git cd ljwx-harbor ./harbor-quick-restore.sh
188 lines
5.7 KiB
Bash
Executable File
188 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# ComfyUI LaunchD 服务配置脚本
|
|
# 实现开机自启和后台运行
|
|
#
|
|
|
|
set -e
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# 配置
|
|
COMFYUI_DIR="${HOME}/ComfyUI"
|
|
PLIST_NAME="com.comfyui.service"
|
|
PLIST_PATH="${HOME}/Library/LaunchAgents/${PLIST_NAME}.plist"
|
|
LOG_DIR="${HOME}/Library/Logs/ComfyUI"
|
|
|
|
# 检查 ComfyUI 是否已安装
|
|
check_installation() {
|
|
if [[ ! -d "$COMFYUI_DIR" ]]; then
|
|
log_error "ComfyUI 未安装,请先运行 install_comfyui_m2ultra.sh"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "${COMFYUI_DIR}/run_comfyui.sh" ]]; then
|
|
log_error "启动脚本不存在: ${COMFYUI_DIR}/run_comfyui.sh"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 创建日志目录
|
|
create_log_dir() {
|
|
log_info "创建日志目录..."
|
|
mkdir -p "$LOG_DIR"
|
|
}
|
|
|
|
# 创建 LaunchAgent plist
|
|
create_plist() {
|
|
log_info "创建 LaunchAgent 配置..."
|
|
|
|
cat > "$PLIST_PATH" << EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>Label</key>
|
|
<string>${PLIST_NAME}</string>
|
|
|
|
<key>ProgramArguments</key>
|
|
<array>
|
|
<string>${COMFYUI_DIR}/run_comfyui.sh</string>
|
|
</array>
|
|
|
|
<key>RunAtLoad</key>
|
|
<true/>
|
|
|
|
<key>KeepAlive</key>
|
|
<dict>
|
|
<key>SuccessfulExit</key>
|
|
<false/>
|
|
</dict>
|
|
|
|
<key>StandardOutPath</key>
|
|
<string>${LOG_DIR}/comfyui.log</string>
|
|
|
|
<key>StandardErrorPath</key>
|
|
<string>${LOG_DIR}/comfyui.error.log</string>
|
|
|
|
<key>WorkingDirectory</key>
|
|
<string>${COMFYUI_DIR}</string>
|
|
|
|
<key>EnvironmentVariables</key>
|
|
<dict>
|
|
<key>PATH</key>
|
|
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${HOME}/miniforge3/bin</string>
|
|
</dict>
|
|
|
|
<key>ProcessType</key>
|
|
<string>Interactive</string>
|
|
|
|
<key>Nice</key>
|
|
<integer>-10</integer>
|
|
</dict>
|
|
</plist>
|
|
EOF
|
|
|
|
log_info "LaunchAgent 配置已创建: $PLIST_PATH"
|
|
}
|
|
|
|
# 加载服务
|
|
load_service() {
|
|
log_info "加载 LaunchAgent 服务..."
|
|
|
|
# 卸载旧服务(如果存在)
|
|
if launchctl list | grep -q "$PLIST_NAME"; then
|
|
log_warn "检测到已运行的服务,正在卸载..."
|
|
launchctl unload "$PLIST_PATH" 2>/dev/null || true
|
|
fi
|
|
|
|
# 加载新服务
|
|
launchctl load "$PLIST_PATH"
|
|
sleep 2
|
|
|
|
# 验证服务状态
|
|
if launchctl list | grep -q "$PLIST_NAME"; then
|
|
log_info "✅ 服务已成功启动"
|
|
else
|
|
log_error "❌ 服务启动失败"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 显示服务状态
|
|
show_status() {
|
|
echo
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "📊 ComfyUI 服务状态"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo
|
|
echo "服务名称: $PLIST_NAME"
|
|
echo "配置文件: $PLIST_PATH"
|
|
echo "日志目录: $LOG_DIR"
|
|
echo
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "🔧 管理命令:"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo
|
|
echo "启动服务: launchctl load $PLIST_PATH"
|
|
echo "停止服务: launchctl unload $PLIST_PATH"
|
|
echo "查看状态: launchctl list | grep comfyui"
|
|
echo "查看日志: tail -f ${LOG_DIR}/comfyui.log"
|
|
echo "查看错误: tail -f ${LOG_DIR}/comfyui.error.log"
|
|
echo
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "🌐 访问地址:"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo
|
|
echo "本地访问: http://127.0.0.1:8188"
|
|
echo "内网访问: http://$(ipconfig getifaddr en0 2>/dev/null || echo "获取失败"):8188"
|
|
echo
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
}
|
|
|
|
# 卸载服务
|
|
uninstall_service() {
|
|
log_warn "卸载 ComfyUI 服务..."
|
|
|
|
if [[ -f "$PLIST_PATH" ]]; then
|
|
launchctl unload "$PLIST_PATH" 2>/dev/null || true
|
|
rm "$PLIST_PATH"
|
|
log_info "服务已卸载"
|
|
else
|
|
log_warn "服务配置不存在"
|
|
fi
|
|
}
|
|
|
|
# 主流程
|
|
main() {
|
|
case "${1:-install}" in
|
|
install)
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "ComfyUI LaunchD 服务配置"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo
|
|
check_installation
|
|
create_log_dir
|
|
create_plist
|
|
load_service
|
|
show_status
|
|
;;
|
|
uninstall)
|
|
uninstall_service
|
|
;;
|
|
*)
|
|
echo "用法: $0 {install|uninstall}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
main "$@"
|