This commit is contained in:
Yaojia Wang
2026-03-14 20:23:32 +01:00
parent 50d7d1de3d
commit ad79665527
13 changed files with 2724 additions and 0 deletions

View File

@@ -0,0 +1,266 @@
---
created: "2026-03-08 21:30"
type: resource
tags: [claude-code, AI-tools, development-workflow, reference]
source: "https://github.com/affaan-m/everything-claude-code"
---
# Everything Claude Code 完整指南
生产级 Claude Code 插件系统,包含 65+ skills、16 agents、40+ commands、hooks 和 rules。v1.8.0,经过 10+ 个月的高强度日常使用演化。
## 项目架构
```
everything-claude-code/
├── agents/ (16个) - 专用子代理
├── skills/ (65个) - 工作流定义和领域知识
├── commands/ (40个) - slash 命令
├── hooks/ - 基于事件的自动化
├── rules/ - 始终遵循的规则(按语言分层)
├── scripts/ - 跨平台 Node.js 工具脚本
├── mcp-configs/- MCP 服务器配置模板
└── contexts/ - 动态注入的上下文文件
```
## 安装
```bash
# 插件安装
/plugin marketplace add affaan-m/everything-claude-code
/plugin install everything-claude-code@everything-claude-code
# Rules 手动安装(插件无法分发规则)
git clone https://github.com/affaan-m/everything-claude-code.git
cd everything-claude-code
./install.sh python typescript # 按需选语言
```
---
## 全部 65 Skills
### 核心基础设施 (9)
| Skill | 用途 |
|-------|------|
| `agent-harness-construction` | 设计 AI agent 动作空间、工具定义和观测格式 |
| `agentic-engineering` | eval-first 执行、任务分解、成本感知路由 |
| `ai-first-engineering` | AI 优先工程运营模式 |
| `continuous-agent-loop` | 持续自主 agent 循环,含质量门控和恢复 |
| `enterprise-agent-ops` | 长期运行 agent 运维:可观测性、安全边界 |
| `strategic-compact` | 逻辑断点手动压缩上下文 |
| `eval-harness` | 评估驱动开发(EDD)pass@k 和 pass^k |
| `verification-loop` | 综合验证构建、lint、测试、安全扫描 |
| `configure-ecc` | 交互式安装向导 |
### 开发工作流 (7)
| Skill | 用途 |
|-------|------|
| `autonomous-loops` | 顺序管道到 RFC 驱动多 agent DAG |
| `continuous-learning` | 从 session 自动提取可复用模式 |
| `continuous-learning-v2` | instinct 学习系统,带置信度评分 |
| `ralphinho-rfc-pipeline` | RFC 驱动多 agent DAG 执行 |
| `nanoclaw-repl` | 零依赖 session 感知 REPL |
| `tdd-workflow` | Red-Green-Refactor80%+ 覆盖率 |
| `search-first` | 先搜索现有工具/库再编码 |
### 前端 (4)
| Skill | 用途 |
|-------|------|
| `frontend-patterns` | React/Next.js 模式、状态管理 |
| `frontend-slides` | 动画 HTML 演示文稿 |
| `swiftui-patterns` | SwiftUI 架构、@Observable |
| `liquid-glass-design` | iOS 26 Liquid Glass 设计系统 |
### 后端 & API (5)
| Skill | 用途 |
|-------|------|
| `backend-patterns` | Node.js/Express/Next.js 服务端架构 |
| `api-design` | REST API 设计模式 |
| `cost-aware-llm-pipeline` | LLM API 成本优化和模型路由 |
| `content-hash-cache-pattern` | SHA-256 内容哈希缓存 |
| `iterative-retrieval` | 渐进式上下文检索 |
### 数据库 (3)
| Skill | 用途 |
|-------|------|
| `postgres-patterns` | PostgreSQL 查询优化、索引、Schema |
| `clickhouse-io` | ClickHouse 分析数据库 |
| `database-migrations` | Schema 变更、零停机部署 |
### Python + Django (6)
| Skill | 用途 |
|-------|------|
| `python-patterns` | PEP 8、类型提示、Pythonic 惯用法 |
| `python-testing` | pytest、TDD、fixtures、mock |
| `django-patterns` | Django/DRF 架构、ORM |
| `django-tdd` | pytest-django、factory_boy |
| `django-security` | 认证、CSRF、SQL 注入防护 |
| `django-verification` | Django 验证循环 |
### Java/Spring Boot (6)
| Skill | 用途 |
|-------|------|
| `java-coding-standards` | 命名、不可变性、Optional、Stream |
| `jpa-patterns` | 实体设计、关联、查询优化 |
| `springboot-patterns` | Spring Boot 架构、REST API |
| `springboot-tdd` | JUnit 5、Mockito、Testcontainers |
| `springboot-security` | Spring Security 加固 |
| `springboot-verification` | 构建、静态分析、覆盖率 |
### Go (2)
| Skill | 用途 |
|-------|------|
| `golang-patterns` | 惯用 Go 模式、并发 |
| `golang-testing` | 表驱动测试、benchmark、fuzz |
### C++ (2)
| Skill | 用途 |
|-------|------|
| `cpp-coding-standards` | C++ Core Guidelines |
| `cpp-testing` | GoogleTest + CMake/CTest |
### Swift (3)
| Skill | 用途 |
|-------|------|
| `swift-concurrency-6-2` | Swift 6.2 单线程默认 + @concurrent |
| `swift-actor-persistence` | Actor 线程安全持久化 |
| `swift-protocol-di-testing` | 协议注入测试模式 |
### 测试 & 质量 (3)
| Skill | 用途 |
|-------|------|
| `e2e-testing` | Playwright E2E、Page Object Model |
| `plankton-code-quality` | 写时质量门控 |
| `skill-stocktake` | Skill 质量审计 |
### 部署 (3)
| Skill | 用途 |
|-------|------|
| `deployment-patterns` | CI/CD、回滚、生产就绪检查 |
| `docker-patterns` | Docker Compose、容器安全 |
| `foundation-models-on-device` | Apple FoundationModels 端侧 LLM |
### 安全 & 代码规范 (5)
| Skill | 用途 |
|-------|------|
| `security-review` | 认证、输入、secrets 安全检查表 |
| `security-scan` | AgentShield 102 条规则扫描 |
| `coding-standards` | TypeScript/JS/React/Node.js 规范 |
| `regex-vs-llm-structured-text` | 正则 vs LLM 解析选择框架 |
| `project-guidelines-example` | 项目 skill 模板 |
### 内容 & 商业 (5)
| Skill | 用途 |
|-------|------|
| `article-writing` | 长文写作 |
| `content-engine` | 多平台内容系统 |
| `market-research` | 竞争分析、行业情报 |
| `investor-materials` | 融资材料 |
| `investor-outreach` | 投资者沟通邮件 |
### 特殊用途 (2)
| Skill | 用途 |
|-------|------|
| `visa-doc-translate` | 签证文档双语翻译 PDF |
| `nutrient-document-processing` | Nutrient DWS API 文档处理 |
---
## 16 Agents
| Agent | 职责 |
|-------|------|
| `planner` | 功能实现规划 |
| `architect` | 系统设计决策 |
| `tdd-guide` | 测试驱动开发 |
| `code-reviewer` | 代码质量审查 |
| `security-reviewer` | 安全漏洞分析 |
| `build-error-resolver` | 编译/运行时错误修复 |
| `e2e-runner` | Playwright E2E 测试 |
| `refactor-cleaner` | 死代码清理 |
| `doc-updater` | 文档更新 |
| `go-reviewer` | Go 代码审查 |
| `go-build-resolver` | Go 构建错误修复 |
| `python-reviewer` | Python 代码审查 |
| `database-reviewer` | PostgreSQL 审查 |
| `chief-of-staff` | 多渠道通信管理 |
| `harness-optimizer` | Agent 框架优化 |
| `loop-operator` | 循环任务运维 |
---
## 常用 Commands
### 开发核心
`/plan` `/tdd` `/e2e` `/code-review` `/build-fix` `/verify` `/test-coverage` `/refactor-clean`
### 多 Agent 编排
`/multi-plan` `/multi-execute` `/multi-frontend` `/multi-backend` `/orchestrate`
### 学习演化
`/learn` `/learn-eval` `/evolve` `/instinct-status` `/instinct-export` `/instinct-import`
### v1.8.0 新增
`/loop-start` `/loop-status` `/model-route` `/quality-gate` `/harness-audit` `/promote`
---
## Hooks 系统
### PreToolUse
- tmux 自动启动和提醒
- git push 前 review 提醒
- 文档文件警告
- 逻辑断点压缩建议
- 持续学习观察(异步)
### PostToolUse
- PR 创建日志
- 质量门控检查
- 自动格式化 (Prettier/Biome)
- TypeScript 类型检查
- console.log 警告
### Stop
- console.log 最终检查
- Session 状态持久化
- 模式提取评估
- Token 成本追踪
### 控制
```bash
ECC_HOOK_PROFILE=standard # minimal/standard/strict
ECC_DISABLED_HOOKS="pre:bash:tmux-reminder,post:edit:typecheck"
```
---
## Related
- [[Everything Claude Code 用法速查]]
- [[Claude Code Memory 日常最佳实践]]
- [[Everything Claude Code 最佳实践]]
- [[Everything Claude Code Agent 编排模式]]
- [[Everything Claude Code Token 优化]]
## Source
- [GitHub Repo](https://github.com/affaan-m/everything-claude-code)
- [Shortform Guide](https://github.com/affaan-m/everything-claude-code/blob/main/the-shortform-guide.md)
- [Longform Guide](https://github.com/affaan-m/everything-claude-code/blob/main/the-longform-guide.md)

View File

@@ -0,0 +1,182 @@
---
created: "2026-03-08 22:10"
type: resource
tags: [claude-code, AI-tools, development-workflow, cheatsheet]
source: "https://github.com/affaan-m/everything-claude-code"
---
# Everything Claude Code 用法速查
按使用场景分类的快速参考手册。组件完整列表见 [[Everything Claude Code 完整指南]]。
---
## 一、按开发阶段分类
### 1. 规划阶段
| 场景 | 用什么 | 怎么用 |
|------|--------|--------|
| 复杂功能设计 | `/plan` 命令 → planner agent | 输入需求,生成分阶段实施计划,等用户确认后再动手 |
| 系统架构决策 | architect agent | 自动启用,做 trade-off 分析、模式推荐、可扩展性评审 |
| 多模型并行规划 | `/multi-plan` | Claude + Codex + Gemini 并行出方案,对比择优 |
| 研究优先 | search-first skill | 先搜 GitHub/npm/PyPI 找现有实现,再决定是否自己写 |
### 2. 编码阶段
| 场景 | 用什么 | 怎么用 |
|------|--------|--------|
| 新功能开发 | `/tdd` 命令 → tdd-guide agent | 强制 RED→GREEN→REFACTOR 流程,先写测试再实现,验证 80%+ 覆盖率 |
| 修 Bug | tdd-guide agent自动启用 | 先写复现测试,再修复,确保不回归 |
| 构建失败 | `/build-fix` → build-error-resolver agent | 最小改动修复编译/类型错误,不动架构 |
| Go 构建报错 | `/go-build` | 专门处理 go build、go vet、linter 问题 |
### 3. 质量保障阶段
| 场景 | 用什么 | 怎么用 |
|------|--------|--------|
| 代码审查 | `/code-review` → code-reviewer agent | 写完代码后必须用,检查安全性、质量、可维护性 |
| 安全审查 | security-reviewer agent自动启用 | 涉及用户输入/认证/API/敏感数据时自动触发,检测 OWASP Top 10 |
| E2E 测试 | `/e2e` → e2e-runner agent | 生成 Playwright 测试,截图/录屏/trace自动隔离 flaky 测试 |
| 死代码清理 | `/refactor-clean` → refactor-cleaner agent | 用 knip/depcheck 扫描未使用代码并安全删除 |
| 快速质量门禁 | `/quality-gate` | 提交前快速检查,轻量级 |
### 4. 语言专用审查
| 语言 | 命令 | 检查内容 |
|------|------|----------|
| Python | `/python-review` | PEP 8、类型提示、安全、ruff/mypy/pylint |
| Go | `/go-review` | 惯用 Go 模式、并发安全、error handling、staticcheck |
| Go 测试 | `/go-test` | 表驱动测试、覆盖率分析 |
| TypeScript | 自动 hook | 保存后自动 Prettier 格式化 + TypeScript 类型检查 |
| SQL/数据库 | database-reviewer agent | 查询优化、RLS 安全、连接池、Supabase 最佳实践 |
---
## 二、按自动化机制分类Hooks
| 时机 | Hook | 效果 |
|------|------|------|
| 执行 Bash 前 | auto-tmux-dev | 自动在 tmux 中启动 dev server |
| 执行 Bash 前 | tmux-reminder | 长时间命令提醒用 tmux |
| 执行 Bash 前 | git-push-reminder | git push 前提醒 review |
| 写文件前 | doc-file-warning | 阻止创建非标准文档文件 |
| 编辑后 | prettier-format | 自动格式化 JS/TS 文件 |
| 编辑后 | typecheck | .ts/.tsx 文件编辑后自动类型检查 |
| 编辑后 | console-log-warning | 警告残留的 console.log |
| 编辑后 | quality-gate | 编辑后快速质量检查 |
| 会话开始 | session-start | 加载上次上下文、检测包管理器 |
| 会话结束 | session-end | 持久化会话状态 |
| 会话结束 | evaluate-session | 提取可复用模式(持续学习) |
控制方式:
- `ECC_HOOK_PROFILE=minimal|standard|strict` — 按级别启用
- `ECC_DISABLED_HOOKS=hook1,hook2` — 禁用特定 hook
---
## 三、按高级场景分类
### 1. 多模型协作
| 命令 | 用途 |
| ----------------- | ----------------------------------- |
| `/multi-plan` | Claude + Codex + Gemini 并行规划 |
| `/multi-execute` | 跨多个模型后端并行执行 |
| `/multi-frontend` | 多前端框架并行开发React/Vue/Svelte/Angular |
| `/multi-backend` | 多后端栈并行开发Node/Python/Go/Java |
| `/multi-workflow` | 复杂多服务编排 |
### 2. 自主循环
| 命令 | 用途 |
|------|------|
| `/loop-start` | 启动自主循环sequential / continuous-pr / rfc-dag / infinite |
| `/loop-status` | 监控循环进度、检测卡住 |
| `/harness-audit` | 评估 harness 配置:工具覆盖、上下文效率、质量门禁、成本 |
### 3. 持续学习
| 命令 | 用途 |
|------|------|
| `/learn` | 从当前会话提取可复用模式,保存为 skill |
| `/learn-eval` | 从 eval 会话中提取模式 |
| `/skill-create` | 分析 git 历史自动生成 SKILL.md |
| `/instinct-status` | 查看所有已学习的 instinct 及置信度 |
| `/instinct-export` | 导出 instinct 给队友共享 |
| `/instinct-import` | 导入其他项目的 instinct |
### 4. 模型路由
| 模型 | 适合场景 |
|------|----------|
| Haiku 4.5 | 轻量 agent、pair programming、高频调用省 3x 成本) |
| Sonnet 4.6 | 主力开发、编排多 agent、复杂编码 |
| Opus 4.6 | 架构决策、深度推理、研究分析 |
`/model-route` 自动路由到合适模型。
---
## 四、安装方式
```bash
# 安装通用 + 语言规则到 ~/.claude/rules/
./install.sh typescript python golang swift
# 安装到 Cursor
./install.sh --target cursor typescript
# 安装到 Antigravity
./install.sh --target antigravity golang
```
---
## 五、MCP 外部集成(建议不超过 10 个)
| 服务 | 用途 | 需要 Key |
|------|------|----------|
| github | PR/Issue/Repo 操作 | GITHUB_PERSONAL_ACCESS_TOKEN |
| supabase | 数据库操作 | project-ref |
| vercel | 部署管理 | - |
| firecrawl | 网页抓取 | FIRECRAWL_API_KEY |
| exa-web-search | 研究搜索 | EXA_API_KEY |
| clickhouse | 分析查询 | - |
| context7 | 实时文档查询 | - |
| sequential-thinking | 链式推理 | - |
---
## 六、一句话速查表
| 我想... | 用 |
|---------|-----|
| 规划一个大功能 | `/plan` |
| 写功能并保证测试覆盖 | `/tdd` |
| 审查刚写的代码 | `/code-review` |
| 修编译错误 | `/build-fix` |
| 跑端到端测试 | `/e2e` |
| 清理死代码 | `/refactor-clean` |
| 更新文档 | `/update-docs` |
| 审查 Python 代码 | `/python-review` |
| 审查 Go 代码 | `/go-review` |
| 多模型并行出方案 | `/multi-plan` |
| 启动自主循环 | `/loop-start` |
| 评估 harness 质量 | `/harness-audit` |
| 从会话中学习模式 | `/learn` |
---
## Related
- [[Everything Claude Code 完整指南]]
- [[Everything Claude Code 多服务编排详解]]
- [[Claude Code Memory 日常最佳实践]]
- [[Everything Claude Code 最佳实践]]
- [[Everything Claude Code Agent 编排模式]]
- [[Everything Claude Code Token 优化]]
## Source
- [GitHub Repo](https://github.com/affaan-m/everything-claude-code)

View File

@@ -0,0 +1,326 @@
---
created: "2026-03-10"
type: resource
tags: [infrastructure, homelab, kubernetes, ci-cd, gitops]
source: "HomeLab 部署实践"
---
# HomeLab 基础设施文档
## 网络拓扑概览
```
[NAS (192.168.68.x)] ── Gitea (Docker), AdGuard Home (DNS)
|
[192.168.68.x 内网]
|
[K8s Cluster]
├── k8s-cp1 (Control Plane) ── 192.168.68.11
├── k8s-w1 (Worker) ── 192.168.68.21
└── k8s-w2 (Worker) ── 192.168.68.22
├── Docker Registry ── NodePort 30500
├── Drone CI ── NodePort 30344 (webhook), Ingress drone.k8s.home
├── ArgoCD ── Ingress argocd.k8s.home
├── ingress-nginx ── LoadBalancer 192.168.68.240
└── 应用 (invest-api 等)
```
## DNS (AdGuard Home)
DNS 服务器: `192.168.68.63`
### DNS 重写规则
| 域名 | IP | 说明 |
|------|-----|------|
| `invest-api.k8s.home` | 192.168.68.240 | OpenBB 投资分析 API |
| `drone.k8s.home` | 192.168.68.240 | Drone CI |
| `argocd.k8s.home` | 192.168.68.240 | ArgoCD |
注意: 所有 `*.k8s.home` 域名都应指向 ingress-nginx 的 LoadBalancer IP `192.168.68.240`(由 MetalLB 分配),而不是节点 IP。
## 已部署应用
| 应用 | URL | 命名空间 | 说明 |
|------|-----|----------|------|
| OpenBB Invest API | `https://invest-api.k8s.home` | invest-api | 投资分析 REST API50 端点)|
| Drone CI | `https://drone.k8s.home` | drone | CI/CD |
| ArgoCD | `https://argocd.k8s.home` | argocd | GitOps 部署 |
| Swagger UI | `https://invest-api.k8s.home/docs` | invest-api | API 文档 |
## Kubernetes 集群
### 节点信息
| 节点 | 角色 | IP | 说明 |
|------|------|----|------|
| k8s-cp1 | Control Plane | 192.168.68.11 | API Server, etcd, scheduler |
| k8s-w1 | Worker | 192.168.68.21 | 应用负载 |
| k8s-w2 | Worker | 192.168.68.22 | 应用负载 |
### 集群组件
| 组件 | 版本/说明 |
|------|----------|
| Kubernetes | v1.35.0 |
| 容器运行时 | containerd 1.7.28 |
| CNI | 默认 |
| 负载均衡 | MetalLB (分配 IP: 192.168.68.240) |
| Ingress | ingress-nginx (External IP: 192.168.68.240) |
| 存储 | Proxmox CSI |
| 证书管理 | cert-manager |
### kubeconfig
- API Server: `https://192.168.68.11:6443`
- 认证方式: 证书认证 (admin 用户)
- 本地配置: `C:\Users\yaoji\.kube\config`
- 获取方式: 从 Control Plane `/etc/kubernetes/admin.conf` 拷贝
### 已部署命名空间
| 命名空间 | 用途 |
|----------|------|
| argocd | ArgoCD GitOps |
| drone | Drone CI/CD |
| registry | Docker Registry |
| ingress-nginx | Ingress 控制器 |
| cert-manager | TLS 证书管理 |
| metallb-system | 负载均衡 |
| csi-proxmox / proxmox-csi | 存储 |
| invest-api | OpenBB 投资分析 API |
---
## Git 服务 (Gitea)
| 项目 | 值 |
|------|-----|
| 部署位置 | NAS Docker |
| URL | `https://git.colacoder.com` |
| SSH | `ssh://git@git.colacoder.com:2200/` |
| 管理员用户 | kai |
| 邮箱 | wangyaojia@gmail.com |
### Gitea 配置注意事项
`app.ini` 中需要的配置:
```ini
[webhook]
ALLOWED_HOST_LIST = private
SKIP_TLS_VERIFY = true
```
- `ALLOWED_HOST_LIST = private` — 允许 webhook 发送到内网地址
- `SKIP_TLS_VERIFY = true` — 允许连接自签名证书的服务
- 修改后需要重启 Gitea 容器
### 仓库列表
| 仓库 | 用途 |
|------|------|
| kai/openbb-invest-api | OpenBB 投资分析 API |
---
## CI/CD (Drone CI)
### 部署信息
| 项目 | 值 |
|------|-----|
| 命名空间 | drone |
| 版本 | 2.12.1 |
| Ingress | `https://drone.k8s.home` |
| Runner 类型 | Kubernetes Runner |
| Runner 容量 | 4 并发 |
### 访问方式
| 方式 | 地址 |
|------|------|
| Web UI | `https://drone.k8s.home` |
| Webhook (给 Gitea 用) | `http://192.168.68.21:30344/hook` |
| API | `http://192.168.68.21:30344/api/` |
| API Token | `c7hDypuu5p41r5k6svR0x6QomInqrE6f` |
### Drone Server 配置 (ConfigMap: drone)
| 键 | 值 |
|-----|-------|
| DRONE_GITEA_SERVER | `https://git.colacoder.com/` |
| DRONE_GITEA_CLIENT_ID | `c95249a5-9cad-4813-89b4-3f4f9f7d3cee` |
| DRONE_SERVER_HOST | drone.k8s.home |
| DRONE_SERVER_PROTO | https |
| DRONE_USER_CREATE | username:kai,admin:true |
### Drone Runner 配置 (ConfigMap: drone-runner-drone-runner-kube)
| 键 | 值 |
|-----|-------|
| DRONE_RPC_HOST | drone.drone.svc.cluster.local:8080 |
| DRONE_RPC_PROTO | http |
| DRONE_NAMESPACE_DEFAULT | drone |
| DRONE_RUNNER_CAPACITY | 4 |
### RBAC
Runner ServiceAccount (`drone:drone-runner-drone-runner-kube`) 需要在 `drone` namespace 有以下权限:
- secrets: create, delete
- pods, pods/log: get, create, delete, list, watch, update
Helm 安装时 RBAC 错误地创建在 `default` namespace需要手动在 `drone` namespace 创建 Role 和 RoleBinding。
### Gitea Webhook 配置
| 项目 | 值 |
|------|-----|
| Target URL | `http://192.168.68.21:30344/hook` |
| Content Type | application/json |
| Secret | `KE0HQksXhJ53ojiLwgAIp0JC4QCl1NsE` |
| Events | Push |
注意: Drone 无法自动在 Gitea 创建 webhookOAuth 权限问题),需要手动创建。
### Pipeline 模板 (.drone.yml)
使用 kaniko 构建Kubernetes Runner 不支持 privileged 模式的 `plugins/docker`:
```yaml
kind: pipeline
type: kubernetes
name: build-and-push
trigger:
branch: [main, develop]
event: [push, custom]
steps:
- name: build-and-push
image: gcr.io/kaniko-project/executor:debug
commands:
- >
/kaniko/executor
--context=/drone/src
--dockerfile=Dockerfile
--destination=192.168.68.11:30500/IMAGE_NAME:${DRONE_COMMIT_SHA:0:8}
--destination=192.168.68.11:30500/IMAGE_NAME:latest
--insecure
--skip-tls-verify
```
---
## Docker Registry
| 项目 | 值 |
|------|-----|
| 命名空间 | registry |
| 镜像 | registry:2 |
| Service | NodePort 30500 |
| 存储 | PVC 10Gi |
| 访问地址 | `http://192.168.68.11:30500` |
| 基础设施仓库 | `C:\Users\yaoji\git\ColaCoder\k8s-infra\registry\` |
### Registry API
```bash
# 查看所有镜像
curl http://192.168.68.11:30500/v2/_catalog
# 查看镜像 tags
curl http://192.168.68.11:30500/v2/IMAGE_NAME/tags/list
```
### Worker 节点 containerd 配置
两个 Worker 节点 `/etc/containerd/config.toml` 中添加:
```toml
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.68.11:30500"]
endpoint = ["http://192.168.68.11:30500"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.registry.svc.cluster.local:5000"]
endpoint = ["http://registry.registry.svc.cluster.local:5000"]
```
修改后需要 `sudo systemctl restart containerd`。Control Plane 不需要配置。
### 本地 Docker Desktop 配置
`C:\Users\yaoji\.docker\daemon.json`:
```json
{
"insecure-registries": ["192.168.68.11:30500"]
}
```
修改后需要重启 Docker Desktop。
---
## ArgoCD
| 项目 | 值 |
|------|-----|
| 命名空间 | argocd |
| 同步策略 | 自动 (prune + selfHeal) |
| CreateNamespace | true |
### 已注册应用
| 应用 | 源仓库 | 路径 | 分支 | 目标命名空间 |
|------|--------|------|------|-------------|
| invest-api | `https://git.colacoder.com/kai/openbb-invest-api.git` | k8s/base | main | invest-api |
---
## 完整部署流程 (GitOps)
```
开发者 git push
Gitea 接收代码
↓ (webhook)
Drone CI 触发构建
↓ (kaniko)
Docker 镜像推送到 Registry (192.168.68.11:30500)
ArgoCD 检测 k8s manifest 变化
↓ (自动同步)
K8s 拉取镜像并部署
```
---
## 踩坑记录
### Gitea Webhook
1. **webhook 被拒**: Gitea 默认不允许发送 webhook 到内网地址,需要 `ALLOWED_HOST_LIST = private`
2. **TLS 验证失败**: 内网自签名证书需要 `SKIP_TLS_VERIFY = true`
3. **403 Forbidden**: Drone OAuth2 应用丢失需要重新创建webhook 手动创建时需要填写正确的 secret
### Drone CI
1. **Runner 无法连接 Server**: Service 端口 8080 但 Runner 连的默认 80需要在 `DRONE_RPC_HOST``:8080`
2. **手动触发无反应**: `.drone.yml` trigger event 需要包含 `custom`
3. **RBAC 权限不足**: Helm 把 Role 创建在 `default` namespace需要手动在 `drone` namespace 创建
4. **不能用 plugins/docker**: Kubernetes Runner 不支持 privileged 模式,改用 kaniko
### Docker 镜像
1. **OpenBB 需要 home 目录**: `nobody` 用户没有 home需要创建 `appuser` 并预建 `.openbb_platform` 目录
2. **OpenBB 需要写入 site-packages**: 启动时写 `.build.lock`,需要 `chown -R appuser:appuser /usr/local/lib/python3.12/site-packages/openbb`
### DNS / Ingress
1. **Ingress IP 不是节点 IP**: `*.k8s.home` 域名必须指向 MetalLB 分配的 LoadBalancer IP (`192.168.68.240`),不是节点 IP (`192.168.68.22`)
---
## Related
- [[OpenBB Invest API - K8s Infrastructure]]
- [[OpenBB Invest API]]

View File

@@ -0,0 +1,140 @@
---
created: "2026-03-09"
type: resource
tags: [kubernetes, infrastructure, devops, drone-ci, argocd, docker-registry]
source: "openbb-invest-api 项目部署实践"
---
# OpenBB Invest API - K8s 基础设施
## 概述
OpenBB Invest API 的完整 Kubernetes 部署架构包含集群信息、CI/CD 流水线和 GitOps 配置。
## 集群
| 节点 | 角色 | IP |
|------|------|----|
| k8s-cp1 | control-plane | 192.168.68.11 |
| k8s-w1 | worker | 192.168.68.21 |
| k8s-w2 | worker | 192.168.68.22 |
- Kubernetes v1.35.0
- 容器运行时: containerd 1.7.28
- 负载均衡: MetalLB
- Ingress: ingress-nginx
- 存储: Proxmox CSI
- 证书管理: cert-manager
## kubeconfig
- 位置: `C:\Users\yaoji\.kube\config`
- 认证: 证书认证 (admin 用户)
- API server: `https://192.168.68.11:6443`
## Docker Registry
- 命名空间: `registry`
- 镜像: `registry:2`
- 服务: NodePort 30500
- 持久卷: 10Gi
- 访问地址: `http://192.168.68.11:30500`
- 基础设施仓库: `C:\Users\yaoji\git\ColaCoder\k8s-infra\registry\`
### Worker 节点 containerd 配置
两个 worker 节点的 `/etc/containerd/config.toml`:
```toml
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.68.11:30500"]
endpoint = ["http://192.168.68.11:30500"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.registry.svc.cluster.local:5000"]
endpoint = ["http://registry.registry.svc.cluster.local:5000"]
```
Control plane 不需要配置(有 taintpod 不会调度到上面)。
## Drone CI
- 命名空间: `drone`
- Server: 容器端口 80Service 端口 8080
- Runner: Kubernetes runner容量 4
- Ingress: `drone.k8s.home`
### Runner ConfigMap
| 键 | 值 |
|-----|-------|
| DRONE_RPC_HOST | drone.drone.svc.cluster.local:8080 |
| DRONE_RPC_PROTO | http |
| DRONE_NAMESPACE_DEFAULT | drone |
### 流水线 (.drone.yml)
使用 kaniko 构建k8s runner 不支持 privileged 模式):
```yaml
kind: pipeline
type: kubernetes
name: build-and-push
trigger:
branch: [main, develop]
event: [push, custom]
steps:
- name: build-and-push
image: gcr.io/kaniko-project/executor:debug
commands:
- /kaniko/executor
--context=/drone/src
--dockerfile=Dockerfile
--destination=192.168.68.11:30500/invest-api:${DRONE_COMMIT_SHA:0:8}
--destination=192.168.68.11:30500/invest-api:latest
--insecure --skip-tls-verify
```
## ArgoCD
- 命名空间: `argocd`
- Application: `invest-api`
- 源仓库: `https://git.colacoder.com/kai/openbb-invest-api.git`,路径 `k8s/base`
- 目标分支: `main`,命名空间 `invest-api`
- 同步策略: 自动prune + selfHeal + CreateNamespace
## Gitea
- URL: `https://git.colacoder.com`
- 仓库: `kai/openbb-invest-api`
- SSH: `ssh://git@git.colacoder.com:2200/kai/openbb-invest-api.git`
## 部署流程
1. `git push` 到 Giteamain/develop 分支)
2. Gitea webhook 触发 Drone CI
3. Drone/kaniko 构建 Docker 镜像并推送到 `192.168.68.11:30500`
4. ArgoCD 检测 `k8s/base/` 中的 manifest 变化并自动同步
5. k8s 从 registry 拉取镜像并部署
## invest-api K8s Manifests (k8s/base/)
- 命名空间: `invest-api`
- Deployment: 镜像 `192.168.68.11:30500/invest-api:latest`100m-500m CPU256Mi-512Mi 内存,健康检查 `/health:8000`
- Service: ClusterIP 端口 8000
- Secret: `invest-api-secrets`(可选,用于 API 密钥)
## 本地 Docker Desktop
`C:\Users\yaoji\.docker\daemon.json`:
```json
{"insecure-registries": ["192.168.68.11:30500"]}
```
## 踩坑记录
- **Drone Runner RPC 连接超时**: Runner 默认连接端口 80但 Service 暴露的是 8080。通过 patch configmap 添加 `:8080` 修复。
- **Drone 手动触发无反应**: UI 手动触发发送的 event 是 `custom`,需要在 `.drone.yml` trigger 中添加 `custom` event。
- **kubeconfig 传输损坏**: 通过聊天传输 RSA 私钥会被截断/损坏,需要通过 SSH 直接传输文件。
## Related
- [[OpenBB Invest API]]

View File

@@ -0,0 +1,111 @@
---
created: "2026-03-10"
type: resource
tags: [openclaw, ai-gateway, claude-code, skill]
source: "https://docs.openclaw.ai/"
---
# OpenClaw Skill 参考
## 概述
OpenClaw 是一个自托管的 AI 网关将聊天应用WhatsApp、Telegram、Discord、Slack、Signal、iMessage 等 20+ 渠道)连接到 AI 编码代理。基于 Node.js 22+,使用 WebSocket 控制平面。
- 配置文件: `~/.openclaw/openclaw.json`JSON5 格式,热重载)
- 默认端口: `18789`
- 本地仓库: `C:\Users\yaoji\git\OpenSource\openclaw`
- 文档: https://docs.openclaw.ai/
- Claude Code Skill 位置: `~/.claude/skills/openclaw/SKILL.md`
## Skill 覆盖内容
### 核心操作
| 模块 | 功能 | 关键命令 |
|------|------|----------|
| Gateway | 启动/停止/重启/状态/服务安装 | `openclaw gateway run/start/stop/restart/status` |
| 配置 | JSON5 配置读写/验证/向导 | `openclaw config get/set/unset/validate` |
| Agent | 多 agent 隔离/路由绑定/身份 | `openclaw agents add/bind/unbind/list` |
| Session | 会话列表/清理/作用域管理 | `openclaw sessions/cleanup` |
### 通讯渠道
| 模块 | 功能 | 关键命令 |
|------|------|----------|
| Channel | 添加/登录/状态/能力探测 | `openclaw channels add/login/status/capabilities` |
| Message | 发送/回复/投票/反应/广播/线程 | `openclaw message send/poll/react/broadcast` |
### 扩展能力
| 模块 | 功能 | 关键命令 |
|------|------|----------|
| Skills | 列出/检查 agent 技能 | `openclaw skills list/info/check` |
| Plugins | 安装/启用/更新/卸载 | `openclaw plugins install/enable/update` |
| Hooks内部 | 事件驱动自动化 | `openclaw hooks list/enable/disable` |
| Webhooks外部 | HTTP 触发 agent | `POST /hooks/wake`, `POST /hooks/agent` |
| Cron | 定时任务 | `openclaw cron add/edit` |
### API 与集成
- **OpenAI 兼容 API**: `POST /v1/chat/completions`(需开启)
- **RPC 调用**: `openclaw gateway call <method>`
- **25+ 模型提供商**: Anthropic、OpenAI、Ollama、OpenRouter、Bedrock 等
## 关键配置结构
```
openclaw.json
├── identity # 名称/主题/表情
├── agents # agent 列表/默认值/workspace/model/skills
├── channels # 各渠道配置whatsapp/telegram/discord/slack...
├── session # 作用域/重置/维护
├── skills # 技能条目/加载/安装
├── plugins # 插件条目/允许/拒绝
├── tools # web/browser/canvas/media
├── gateway # 端口/绑定/认证/HTTP端点
├── hooks # webhook + 内部钩子
├── cron # 定时任务
├── acp # Agent Control Protocol
├── logging # 日志级别/脱敏
└── env # 环境变量
```
## Bootstrap 文件
放在 agent workspace 根目录:
- `AGENTS.md` - 操作指令 + 记忆
- `SOUL.md` - 人格/边界/语气
- `TOOLS.md` - 用户工具说明
- `BOOTSTRAP.md` - 一次性引导(运行后删除)
- `IDENTITY.md` - agent 名称/风格
- `USER.md` - 用户画像
## SKILL.md 格式(创建自定义技能)
```markdown
---
name: my-skill
description: 技能描述
requires:
bins: [node]
env: [API_KEY]
install:
- kind: node
package: my-package
---
# 技能说明和工具定义
```
## 常见工作流
1. **初始化**: `npm install -g openclaw@latest && openclaw onboard --install-daemon`
2. **添加渠道**: `openclaw channels add --channel telegram --token TOKEN`
3. **多 agent**: `openclaw agents add work --workspace ~/.openclaw/workspace-work`
4. **API 触发**: `curl -X POST http://127.0.0.1:18789/hooks/agent -H 'Authorization: Bearer TOKEN' -d '{"message":"..."}'`
5. **诊断**: `openclaw doctor --fix && openclaw status --deep`
## Related
- [[Claude Code 配置]]
- [[AI 工具链]]

View File

@@ -0,0 +1,403 @@
---
created: "2026-03-08"
type: resource
tags:
- security
- openvas
- vulnerability-scanning
- homelab
---
# OpenVAS Usage Guide
Greenbone OpenVAS 漏洞扫描平台使用指南。基于 Greenbone Community Edition部署在 [[PVE Security Scanner]] 上。
## Access
| Item | Value |
|------|-------|
| URL | `https://192.168.68.84` |
| Backup URL | `https://192.168.68.84:9392` |
| Username | `admin` |
| Certificate | Self-signed (浏览器需接受警告) |
## Core Concepts
| Concept | Description |
|---------|-------------|
| **Target** | 扫描目标,可以是单个 IP、IP 范围、子网 (CIDR) |
| **Port List** | 要扫描的端口集合 (默认提供 All TCP, Top 100, Top 1000 等) |
| **Scan Config** | 扫描策略,控制检测深度和范围 |
| **Task** | 将 Target + Scan Config 组合成一个可执行的扫描任务 |
| **Report** | 扫描结果报告,包含发现的漏洞和风险评级 |
| **Schedule** | 定时执行扫描任务 |
| **Alert** | 扫描完成后的通知动作 (邮件、HTTP 回调等) |
| **NVT** | Network Vulnerability Test单个漏洞检测脚本 |
| **CVE** | 公共漏洞编号OpenVAS 关联 CVE 数据库 |
| **CVSS** | 漏洞评分标准 (0-10),用于风险评级 |
## Scan Configs (扫描策略)
| Config | Speed | Depth | Use Case |
|--------|-------|-------|----------|
| **Discovery** | Fast | Low | 仅发现主机和服务,不做漏洞检测 |
| **Host Discovery** | Very Fast | Minimal | 只检测主机是否存活 |
| **System Discovery** | Fast | Low | 发现操作系统和服务版本 |
| **Base** | Medium | Medium | 基础漏洞扫描,不含危险测试 |
| **Full and fast** | Medium | High | 完整扫描,跳过慢速 NVT (推荐日常使用) |
| **Full and deep** | Slow | Very High | 深度扫描,包含所有 NVT |
| **Full and deep ultimate** | Very Slow | Maximum | 包含可能导致服务中断的测试 (慎用) |
## Quick Start: First Scan
### Step 1: Create Target
1. Menu: **Configuration** -> **Targets**
2. Click **New Target** (左上角星号图标)
3. Fill in:
- **Name**: `Internal Network` (或具体名称)
- **Hosts**: `192.168.68.0/24` (或单个 IP)
- **Port List**: 选择 `All TCP and Nmap top 100 UDP`
4. Click **Save**
### Step 2: Create Task
1. Menu: **Scans** -> **Tasks**
2. Click **New Task** (左上角星号图标)
3. Fill in:
- **Name**: `Internal Network Scan`
- **Scan Targets**: 选择刚创建的 Target
- **Scanner**: `OpenVAS Default`
- **Scan Config**: 选择策略 (建议首次用 `Full and fast`)
4. Click **Save**
### Step 3: Run Scan
1. 在 Task 列表中找到刚创建的任务
2. 点击绿色 **Start** 按钮 (播放图标)
3. Status 会从 `New` -> `Requested` -> `Running` -> `Done`
4. 扫描时间取决于目标数量和策略:
- 单台主机 Full and fast: 10-30 分钟
- /24 子网 Full and fast: 2-8 小时
### Step 4: View Report
1. Task 完成后,点击 **Last Report** 日期链接
2. 报告页面展示所有发现的漏洞
3. 按 Severity 排序查看高危漏洞
## Report Reading
### Severity Levels
| Level | CVSS | Color | Action |
|-------|------|-------|--------|
| **Critical** | 9.0-10.0 | Purple | 立即修复 |
| **High** | 7.0-8.9 | Red | 尽快修复 |
| **Medium** | 4.0-6.9 | Orange | 计划修复 |
| **Low** | 0.1-3.9 | Blue | 评估后决定 |
| **Log** | N/A | Grey | 信息收集,无需操作 |
### Report Sections
- **Results**: 所有发现的漏洞列表
- **Hosts**: 按主机分组的结果
- **Operating Systems**: 检测到的操作系统
- **Applications**: 检测到的应用程序
- **TLS Certificates**: SSL/TLS 证书信息
- **Error Messages**: 扫描过程中的错误
### Export Report
1. 打开 Report
2. 左上角下拉选择格式:
- **PDF** - 适合分享和存档
- **CSV** - 适合数据分析
- **XML** - 适合导入其他工具
- **TXT** - 纯文本摘要
3. Click download icon
## Common Scan Scenarios
### Scenario 1: Scan Single Server
**Target**: `192.168.68.31` (PostgreSQL server)
**Config**: `Full and fast`
**Port List**: `All TCP and Nmap top 100 UDP`
重点关注:
- PostgreSQL 版本漏洞
- SSH 配置问题
- 系统补丁缺失
### Scenario 2: Scan Entire Network
**Target**: `192.168.68.0/24`
**Config**: `Full and fast`
**Port List**: `All TCP and Nmap top 100 UDP`
首次扫描建议在非工作时间进行,扫描会产生较大网络流量。
### Scenario 3: Web Application Scan
**Target**: Web 服务器 IP
**Config**: `Full and deep`
**Port List**: `All TCP`
重点关注:
- HTTP 相关漏洞 (XSS, SQL injection, CSRF)
- TLS 配置 (弱加密、过期证书)
- Web 服务器版本泄露
### Scenario 4: Compliance Check
**Target**: 所有关键服务器
**Config**: `Full and fast`
对照报告检查:
- 是否有默认密码
- 是否有未打补丁的服务
- 是否有不安全的协议 (telnet, FTP, SSLv3)
## Scheduled Scans
### Create Schedule
1. Menu: **Configuration** -> **Schedules**
2. Click **New Schedule**
3. Fill in:
- **Name**: `Weekly Internal Scan`
- **First Run**: 选择开始时间 (建议非工作时间,如周日凌晨 2:00)
- **Period**: `1 week`
- **Duration**: 留空 (无时间限制)
4. Click **Save**
### Assign Schedule to Task
1. Edit existing Task
2. **Schedule** 字段选择刚创建的 Schedule
3. Save
Task 会按计划自动执行,报告自动生成。
## Alerts (通知)
### Email Alert
1. Menu: **Configuration** -> **Alerts**
2. Click **New Alert**
3. Fill in:
- **Name**: `High Severity Email`
- **Event**: `Task run status changed` -> `Done`
- **Condition**: `Severity at least` -> `7.0` (High)
- **Method**: `Email`
- **To Address**: 你的邮箱
- **From Address**: `scanner@localhost`
4. Click **Save**
5. 在 Task 中关联此 Alert
Note: 需要配置 VM 的 SMTP 发送邮件。
## Credential Scans (认证扫描)
认证扫描可以检测更多漏洞(如本地提权、软件版本),因为扫描器可以登录目标系统。
### Create SSH Credential
1. Menu: **Configuration** -> **Credentials**
2. Click **New Credential**
3. Fill in:
- **Name**: `Linux SSH Scan`
- **Type**: `Username + SSH Key``Username + Password`
- **Username**: 目标系统的用户名
- **Password/Key**: 对应的认证信息
- **Auto Generate**: No
4. Click **Save**
### Use in Target
1. Edit Target
2. **SSH Credential** 字段选择创建的 Credential
3. Save
认证扫描会发现更多漏洞(如未打补丁的本地包、内核漏洞)。
## Performance Tips
| Tip | Effect |
|-----|--------|
| 缩小端口范围 | 减少扫描时间 |
| 用 `Full and fast` 而非 `Full and deep` | 快 2-5x覆盖 90% 漏洞 |
| 分段扫描大网络 | 避免超时和资源耗尽 |
| 避免工作时间扫描 | 减少对生产环境影响 |
| 定期更新 Feed | 保持漏洞库最新 |
## Maintenance
### Update Vulnerability Feed
Feed 自动通过 Docker 容器更新。手动触发:
```bash
ssh kai@192.168.68.84
cd /opt/greenbone
sudo docker compose pull
sudo docker compose up -d
```
### Check Feed Status
Web UI: **Administration** -> **Feed Status**
| Feed | Description |
|------|-------------|
| NVT | 漏洞检测脚本 (最重要) |
| SCAP | CVE/CPE 数据 |
| CERT | 安全公告 |
| GVMD_DATA | 扫描策略和端口列表 |
所有 Feed 应显示 `Current`。如果显示 `Update in progress`,等待同步完成。
### Backup
```bash
# 备份所有 Docker volumes
ssh kai@192.168.68.84
cd /opt/greenbone
sudo docker compose down
sudo tar czf /tmp/greenbone-backup-$(date +%Y%m%d).tar.gz \
/var/lib/docker/volumes/greenbone-community-edition_*
sudo docker compose up -d
```
### Reset Admin Password
```bash
ssh kai@192.168.68.84
cd /opt/greenbone
sudo docker compose exec -u gvmd gvmd gvmd --user=admin --new-password=<NEW_PASSWORD>
```
## Report Workflow (报告使用流程)
### Priority Matrix
| Priority | CVSS | Example | Timeline | Action |
|----------|------|---------|----------|--------|
| **Critical** | 9.0-10.0 | 远程代码执行、默认密码、未授权访问 | 24h 内 | 立即修复 |
| **High** | 7.0-8.9 | 本地提权、敏感信息泄露、SQL 注入 | 1 周内 | 尽快修复 |
| **Medium** | 4.0-6.9 | 弱加密、软件版本过旧、TLS 配置不当 | 1 月内 | 排期修复 |
| **Low** | 0.1-3.9 | 信息收集、Banner 暴露、非敏感信息泄露 | 按需 | 评估后决定 |
### Step-by-Step Workflow
**Step 1: Export Report**
- 打开 Report -> 左上角选择格式
- 导出 **PDF** (存档分享) + **CSV** (数据分析)
- 建议按日期归档: `scans/2026-03-09-full-network.pdf`
**Step 2: Triage by Host**
-**Hosts** 标签,按漏洞数量排序
- 识别问题最多的主机,优先处理
**Step 3: Analyze Vulnerabilities**
- 点进具体漏洞,关注以下字段:
- **Summary**: 漏洞描述(是什么)
- **Impact**: 被利用后的影响(为什么要修)
- **Solution**: 修复建议(怎么修)-- 最有价值的部分
- **CVE Reference**: 关联的 CVE 编号(可查详细信息)
- **Affected Software/OS**: 受影响的软件版本
**Step 4: Create Remediation Plan**
- 按优先级为每个 Critical/High 漏洞创建修复任务
- 记录:主机 IP、漏洞名称、CVE、修复方案、负责人
- Medium 漏洞汇总为批量修复任务(如统一升级某软件)
**Step 5: Fix and Rescan**
- 修复完成后,对同一 Target 重新扫描
- 对比两次 Report确认漏洞已消除
- Web UI: **Scans** -> **Reports** 可以看历史趋势
### Recurring Scan Process
建议建立周期性扫描流程:
```
周日凌晨 2:00 自动全网扫描 (OpenVAS Schedule)
|
周一上午 查看报告,按优先级分类
|
周一-周五 修复 Critical 和 High 漏洞
|
下周日 自动复扫,对比改善情况
|
每月最后一周 导出月度报告,归档存储
```
Setup: **Configuration** -> **Schedules** -> 创建 Weekly Schedule (Sunday 02:00)
### Report Comparison (趋势分析)
跟踪安全改善情况:
| Metric | How to Track |
|--------|-------------|
| Critical/High 漏洞数量变化 | 每周报告对比 |
| 平均修复时间 | 记录发现日期和修复日期 |
| 新增 vs 已修复 | 对比相邻两次扫描 |
| 最高风险主机 | 按 Host 的 Severity Score 排序 |
### Common Findings and Fixes
| Finding | Typical Fix |
|---------|------------|
| SSH weak algorithms | 更新 `/etc/ssh/sshd_config` 加密套件 |
| SSL/TLS outdated | 升级到 TLS 1.2+,禁用弱密码套件 |
| Default credentials | 修改默认密码,禁用默认账户 |
| Missing patches | `apt upgrade` / 系统补丁更新 |
| Open unnecessary ports | 关闭不需要的服务,配置防火墙 |
| HTTP without HTTPS | 配置 TLS 证书,强制 HTTPS 重定向 |
| SMBv1 enabled | 禁用 SMBv1启用 SMBv2/v3 |
| SNMP public community | 修改 community string 或禁用 SNMP |
## CLI Access (gvm-tools)
除了 Web UI也可以通过命令行操作
```bash
ssh kai@192.168.68.84
cd /opt/greenbone
# 进入 gvm-tools 容器
sudo docker compose exec gvm-tools bash
# 列出所有 task
gvm-cli --gmp-username admin --gmp-password <PASSWORD> \
socket --socketpath /run/gvmd/gvmd.sock \
--xml '<get_tasks/>'
# 列出所有 target
gvm-cli --gmp-username admin --gmp-password <PASSWORD> \
socket --socketpath /run/gvmd/gvmd.sock \
--xml '<get_targets/>'
```
## Troubleshooting
| Problem | Solution |
|---------|----------|
| Web UI 打不开 | `sudo docker compose ps` 检查容器状态 |
| 登录失败 | Reset admin password (见上方) |
| Feed 一直 updating | 首次同步需 30-60 分钟,耐心等待 |
| 扫描卡在 Requested | 检查 ospd-openvas 容器日志: `sudo docker compose logs ospd-openvas` |
| 扫描结果为空 | 确认 Feed 已同步完成;检查目标网络是否可达 |
| 只扫到本机 | ospd-openvas 需要 `network_mode: host` 才能到达局域网 |
| Feed is syncing | 漏洞库同步中等几分钟到半小时Feed Status 全部 Current 后再扫 |
| 扫描速度很慢 | 减少目标范围;使用 `Full and fast` 策略 |
| 容器反复重启 | `sudo docker compose logs <service>` 查看错误 |
| 磁盘空间不足 | `df -h` 检查;清理旧报告和 Docker 无用镜像 `sudo docker system prune` |
## Related
- [[PVE Security Scanner]] - 部署文档和安全架构
- [[Security Best Practices]]