Files

1 line
7.8 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "bruce-sakura/uploadmyself", "files": {"docker-compose.yml": {"44039874aa36f789cebfeefafef8c9baf030cb48": {"t": 1785595248.7124884, "n": 1524, "h": "34ae0597d8b640ed", "c": "# UploadMyself — 全栈编排(SQLite,全功能含 GPU ML)\n# 运行时数据集中在 ${UPLOADMYSELF_HOME}/data(默认 ~/.UploadMyself,由 install.sh 写入 .env)。\n# 数据库为 SQLite 单文件,无需独立数据库容器。\nservices:\n # ===== Backend (Go + Python ML/CharacterGen, GPU) =====\n backend:\n build:\n context: .\n dockerfile: Dockerfile.backend\n ports:\n - \"8000:8000\"\n - \"8001:8001\"\n environment:\n APP_PORT: \"8000\"\n PYTHON_BIN: \"python3\"\n ML_SCRIPTS_DIR: \"/app/ml/scripts\"\n SKILLS_DIR: \"/app/skills\"\n UPLOAD_DIR: \"/app/uploads\"\n DB_PATH: \"/app/data/uploadmyself.db\"\n LLM_API_KEY: \"${LLM_API_KEY:-}\"\n LLM_BASE_URL: \"${LLM_BASE_URL:-https://token-plan-sgp.xiaomimimo.com/v1}\"\n LLM_MODEL: \"${LLM_MODEL:-mimo-v2.5-pro}\"\n # ML 服务与后端跑在同一容器(见 entrypoint.sh)\n ML_SERVICE_URL: \"http://localhost:8001\"\n # HuggingFace 模型缓存持久化到工作目录,避免每次重拉\n HF_HOME: \"/root/.cache/huggingface\"\n volumes:\n - ${UPLOADMYSELF_HOME}/data/uploads:/app/uploads\n - ${UPLOADMYSELF_HOME}/data/skills:/app/skills\n - ${UPLOADMYSELF_HOME}/data/db:/app/data\n - ${UPLOADMYSELF_HOME}/data/models:/root/.cache/huggingface\n deploy:\n resources:\n reservations:\n devices:\n - driver: nvidia\n count: all\n capabilities: [gpu]\n restart: unless-stopped\n\n # ===== Frontend (React + Nginx) =====\n frontend:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n ports:\n - \"3000:80\"\n depends_on:\n - backend\n restart: unless-stopped\n"}}, "install.sh": {"44039874aa36f789cebfeefafef8c9baf030cb48": {"t": 1785595260.5378091, "n": 4800, "h": "df92c5dc663c7b7d", "c": "#!/usr/bin/env bash\n# UploadMyself 一键安装脚本\n# Docker 模式(推荐,跨平台): ./install.sh --docker\n# Linux 原生模式(全功能含 GPU): ./install.sh --native\n# 不带参数则交互选择。运行时数据统一存放在工作目录(默认 ~/UploadMyself)。\nset -euo pipefail\n\n# ---------- defaults ----------\nMODE=\"\"\nHOME_DIR=\"${HOME}/.UploadMyself\"\nLLM_KEY=\"\"\nLLM_BASE=\"https://token-plan-sgp.xiaomimimo.com/v1\"\nLLM_MODEL=\"mimo-v2.5-pro\"\nASSUME_YES=0\nREPO_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\n\n# ---------- helpers ----------\nlog() { printf '\\033[36m[install]\\033[0m %s\\n' \"$*\"; }\nok() { printf '\\033[32m[ ok ]\\033[0m %s\\n' \"$*\"; }\nwarn() { printf '\\033[33m[warn]\\033[0m %s\\n' \"$*\" >&2; }\nerr() { printf '\\033[31m[error]\\033[0m %s\\n' \"$*\" >&2; }\n\npath_hint() { # path_hint <dir>: 若 dir 不在 PATH 则提示加入\n case \":${PATH}:\" in\n *\":$1:\"*) : ;;\n *) warn \"将 CLI 目录加入 PATH: echo 'export PATH=\\\"$1:\\$PATH\\\"' >> ~/.bashrc && source ~/.bashrc\" ;;\n esac\n}\n\nusage() {\n cat <<EOF\nUploadMyself 一键安装\n\n用法: ./install.sh [选项]\n\n选项:\n --docker Docker 模式安装(推荐)\n --native Linux 原生模式安装(全功能含 GPU)\n --home <dir> 工作目录(默认 \\$HOME/.UploadMyself)\n --llm-key <key> LLM API Key(不提供则交互询问)\n --llm-base <url> LLM Base URL(默认 MiMo)\n --llm-model <name> LLM 模型名(默认 mimo-v2.5-pro)\n -y, --yes 跳过确认提示\n -h, --help 显示帮助\nEOF\n}\n\n# ---------- parse args ----------\nwhile [[ $# -gt 0 ]]; do\n case \"$1\" in\n --docker) MODE=docker; shift;;\n --native) MODE=native; shift;;\n --home) HOME_DIR=\"$2\"; shift 2;;\n --llm-key) LLM_KEY=\"$2\"; shift 2;;\n --llm-base) LLM_BASE=\"$2\"; shift 2;;\n --llm-model) LLM_MODEL=\"$2\"; shift 2;;\n -y|--yes) ASSUME_YES=1; shift;;\n -h|--help) usage; exit 0;;\n *) err \"未知参数: $1\"; usage; exit 1;;\n esac\ndone\n\nconfirm() { # confirm \"提示\" -> 0 yes / 1 no\n [[ \"$ASSUME_YES\" == 1 ]] && return 0\n local ans\n read -rp \"$1 [y/N]: \" ans || true\n [[ \"${ans:-N}\" =~ ^[Yy]$ ]]\n}\n\nchoose_mode() {\n [[ -n \"$MODE\" ]] && return\n echo \"选择安装方式:\"\n echo \" 1) Docker(推荐,跨平台)\"\n echo \" 2) Linux 原生(全功能含 GPU)\"\n local ans\n read -rp \"输入 1/2 [1]: \" ans || true\n case \"${ans:-1}\" in\n 2) MODE=native;;\n *) MODE=docker;;\n esac\n}\n\nprompt_llm_key() {\n [[ -n \"$LLM_KEY\" ]] && return\n read -rp \"输入 LLM API Key(MiMo / OpenAI 兼容,可留空稍后改 .env): \" LLM_KEY || true\n}\n\ncreate_home() {\n log \"工作目录: $HOME_DIR\"\n mkdir -p \"$HOME_DIR\"/data/{uploads,skills,models,db} \"$HOME_DIR/logs\"\n}\n\nwrite_env() {\n local abs_home; abs_home=\"$(cd \"$HOME_DIR\" && pwd)\"\n cat > \"$REPO_DIR/.env\" <<EOF\n# 由 install.sh 生成(Docker 模式)。数据库为 SQLite,路径在 compose 内固定。\nUPLOADMYSELF_HOME=$abs_home\nAPP_PORT=8000\nLLM_API_KEY=$LLM_KEY\nLLM_BASE_URL=$LLM_BASE\nLLM_MODEL=$LLM_MODEL\nEOF\n ok \".env 已写入 $REPO_DIR/.env\"\n}\n\nprint_urls() {\n cat <<EOF\n\n=== UploadMyself 已启动 ===\n 前端: http://localhost:3000\n 后端: http://localhost:8000\n ML: http://localhost:8001\n 工作目录: $HOME_DIR\n 管理: ./run.sh [docker|native] 启动 · ./stop.sh 停止\n CLI: upme skill list (命令行控制;详见 README 的 upme 小节)\nEOF\n}\n\n# ---------- Docker 模式 ----------\ninstall_docker() {\n command -v docker >/dev/null 2>&1 || { err \"未找到 docker,请先安装 Docker / Docker Desktop\"; exit 1; }\n local COMPOSE\n if docker compose version >/dev/null 2>&1; then COMPOSE=\"docker compose\";\n elif command -v docker-compose >/dev/null 2>&1; then COMPOSE=\"docker-compose\";\n else err \"未找到 docker compose\"; exit 1; fi\n ok \"Docker: $(docker --version)\"\n\n # GPU runtime 检查(全功能需要)\n if docker info 2>/dev/null | grep -qiE 'nvidia'; then\n ok \"检测到 NVIDIA Docker runtime\"\n else\n warn \"未检测到 Docker 的 NVIDIA runtime —— 3D/语音等 GPU 功能将不可用。\"\n warn \"安装方法见 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/\"\n confirm \"仍要继续(仅文字/云端 LLM 功能可用)?\" || exit 1\n fi\n\n create_home\n prompt_llm_key\n write_env\n\n log \"构建并启动容器(首次会拉取镜像 + 编译,耗时较久)...\"\n ( cd \"$REPO_DIR\" && $COMPOSE --env-file .env up -d --build )\n ok \"容器已启动\"\n\n # 安装 upme CLI:从镜像拷出 Linux 原生二进制到 PATH\n local bindir=\"$HOME/.local/bin\"; mkdir -p \"$bindir\"\n if ( cd \"$REPO_DIR\" && $COMPOSE --env-file .env cp backend:/usr/local/bin/upme \"$bindir/upme\" ) >/dev/null 2>&1; then\n chmod +x \"$bindir/upme\" 2>/dev/null || true\n ok \"upme CLI 已安装到 $bindir/upme\"\n path_hint \"$bindir\"\n else\n warn \"未能拷出 upme(非 Linux 宿主机时改用: $COMPOSE exec backend upme ...)\"\n fi\n\n print_urls\n}\n\n# ---------- Linux 原生模式 ----------\ninstall_native() {\n if [[ -x \"$REPO_DIR/scripts/install_native.sh\" ]]; then\n HOME_DIR=\"$HOME_DIR\" LLM_KEY=\"$LLM_KEY\" LLM_BASE=\"$LLM_BASE\" LLM_MODEL=\"$LLM_MODEL\" \\\n ASSUME_YES=\"$ASSUME_YES\" REPO_DIR=\"$REPO_DIR\" bash \"$REPO_DIR/scripts/install_native.sh\"\n else\n err \"原生安装脚本 scripts/install_native.sh 尚未就绪\"\n exit 1\n fi\n}\n\n# ---------- main ----------\nchoose_mode\nlog \"安装模式: $MODE\"\ncase \"$MODE\" in\n docker) install_docker;;\n native) install_native;;\n *) err \"未知模式: $MODE\"; exit 1;;\nesac\n"}}}}