站长信息
jeffery.xu
jeffery.xu

软件工程师

欢迎访问我的个人笔记网站!我是一名热爱技术的开发者,专注于Web开发和技术分享。

811495111@qq.com
18521510875
筛选

个人笔记

wireguard配置笔记
人工智能学习

 


🧭 一、整体结构(先理解)

服务器(wg0)
  ↓
多个客户端(Peer)
  ↓
每个客户端 = 独立密钥 + 独立IP

🚀 二、首次搭建流程(完整)


1️⃣ 安装 WireGuard(服务器)

sudo apt update
sudo apt install wireguard qrencode -y

2️⃣ 生成服务器密钥

wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key

查看:

cat /etc/wireguard/server_public.key

3️⃣ 创建服务器配置

sudo nano /etc/wireguard/wg0.conf

写入👇(替换私钥):

[Interface]
PrivateKey = 服务器私钥
Address = 10.0.0.1/24
ListenPort = 51820

PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

4️⃣ 启动服务器

sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

查看状态:

sudo wg

📱 三、添加客户端(标准流程)


1️⃣ 客户端生成密钥(推荐)

👉 手机 / 电脑用 WireGuard 自动生成
或:

wg genkey | tee client_private.key | wg pubkey > client_public.key

2️⃣ 在服务器添加客户端

编辑:

sudo nano /etc/wireguard/wg0.conf

追加:

[Peer]
PublicKey = 客户端公钥
AllowedIPs = 10.0.0.2/32

应用(不用重启):

sudo wg syncconf wg0 <(wg-quick strip wg0)

3️⃣ 客户端配置

[Interface]
PrivateKey = 客户端私钥
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = 服务器公钥
Endpoint = 服务器IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

4️⃣ (可选)生成二维码

qrencode -t ansiutf8 < client.conf

🔐 四、换 Key(重点!!!)


🧨 场景:服务器私钥泄露 / 想更换


1️⃣ 生成新服务器密钥

wg genkey | tee /etc/wireguard/new_server_private.key | wg pubkey > /etc/wireguard/new_server_public.key

2️⃣ 替换 wg0.conf

sudo nano /etc/wireguard/wg0.conf

改:

PrivateKey = 新私钥

3️⃣ 重启服务(必须)

sudo wg-quick down wg0
sudo wg-quick up wg0

4️⃣ 确认新公钥生效

sudo wg show wg0 public-key

👉 必须等于:

cat /etc/wireguard/new_server_public.key

5️⃣ 更新所有客户端(关键)

每个客户端改:

[Peer]
PublicKey = 新服务器公钥

6️⃣ 客户端重新连接

打开 VPN 即可


🔁 五、完全重置(更安全)

👉 如果怀疑泄露严重:


服务器

wg genkey | tee server_private.key | wg pubkey > server_public.key

每个客户端(全部重建)

wg genkey | tee client_private.key | wg pubkey > client_public.key

更新服务器

[Peer]
PublicKey = 新客户端公钥
AllowedIPs = 新IP

🧪 六、验证是否成功


服务器查看

sudo wg

重点看:

latest handshake: 刚刚

测试网络

客户端:

ping 10.0.0.1

⚡ 七、常用命令速查


查看状态

sudo wg

查看公钥

sudo wg show wg0 public-key

启动/停止

sudo wg-quick up wg0
sudo wg-quick down wg0

热更新配置

sudo wg syncconf wg0 <(wg-quick strip wg0)

🧠 八、关键记忆(超重要)

👉 WireGuard 核心就是:

私钥(身份) + 公钥(认证) + IP(唯一标识)

 

 

一键脚本发布
编程技巧

.\scripts\deploy.ps1 -ServerHost "106.54.42.242" -ServerUser "ubuntu" -ServerComposePath "/home/ubuntu"

清空vscode记录
编程技巧

Write-Host "正在清理 VSCode 相关文件..." -ForegroundColor Yellow # 停止可能运行的 VSCode 进程 Get-Process "Code" -ErrorAction SilentlyContinue | Stop-Process -Force # 删除文件夹 $paths = @( "$env:APPDATA\Code", "$env:APPDATA\Code - Insiders", "$env:LOCALAPPDATA\Programs\Microsoft VS Code", "$env:LOCALAPPDATA\Programs\VS Code", "$HOME\.vscode" ) foreach ($path in $paths) { if (Test-Path $path) { Remove-Item -Recurse -Force $path Write-Host "已删除: $path" -ForegroundColor Green } } Write-Host "清理完成!" -ForegroundColor Green

UVX报错
编程技巧

在用 uvx 配置 MCP server 时,安装 amap-mcp-server==0.1.11 失败,报错是
The system cannot open the device or file specified (os error -2147024786),随后触发 MCP error -32000: Connection closed。


uvx 的独立安装/缓存链路在 Windows 上出问题。
机器里同时有两份 uv(pip 版 + standalone 版),导致 uv self update 初始失败。
解决方案总结:
1. 先解决 uv 冲突:卸载 pip 版或确保命中 standalone 版。

卸载 pip 版 uv

python -m pip uninstall -y uv

新开一个 PowerShell,确认命中的是 standalone

where uv
uv --version
uv self update
success: Upgraded uv from v0.10.10 to v0.10.12! https://github.com/astral-sh/uv/releases/tag/0.10.12
把 uv 升级到 0.10.12,说明这一步已完成。
若 uvx 仍报设备/文件错误,设置:
• UV_CACHE_DIR=C:\uv-cache
• UV_LINK_MODE=copy
然后重开终端再试。
高德地图MCP
编程技巧
"高德地图": {
      "url": "https://mcp.amap.com/sse?key="
    }
本地 `git push` 失败(GitHub 单文件上限 100MB)。
编程技巧

问题总结(可直接记录):

1. 现象  
本地 `git push` 失败,原因是提交历史里包含了 `DiaryWebsite.Web/logs/` 下超过 100MB 的 `.log` 文件(GitHub 单文件上限 100MB)。

2. 约束  
你已经有很多其他改动并且都 commit 了,不能简单回退提交。

3. 处理思路  
不回退业务改动,只把大日志文件从 Git 历史中移除,并防止未来再次被提交。

4. 关键操作  
- 在 `.gitignore` 中忽略日志文件(如 `DiaryWebsite.Web/logs/*.log`)。  
- 用历史清理工具(`git filter-repo`)删除历史中的日志文件记录。  
- 清理后发现远程 `origin` 丢失(报错:`'origin' does not appear to be a git repository`)。  
- 重新添加远程:`https://github.com/jy02542317/Diary.git`。  
- `git fetch origin --prune` 后,再执行  
  `git push -u origin main --force-with-lease` 成功。

5. 最终结果  
远程 `main` 已成功更新(forced update),仓库恢复可正常 push/pull。

6. 经验与预防  
- 日志、打包产物、大模型文件不要直接进 Git。  
- 通过 `.gitignore` 提前屏蔽 `logs/*.log`。  
- 大文件如需版本管理,使用 Git LFS。  
- 一旦做了历史重写并 force push,需通知协作者同步分支。

```bash
# 1) 先备份一个分支(防止误操作)
git branch backup-before-clean-large-file

# 2) 忽略日志文件
echo DiaryWebsite.Web/logs/*.log >> .gitignore
git add .gitignore
git commit -m "chore: ignore log files"

# 3) 安装历史清理工具(若未安装)
pip install git-filter-repo

# 4) 从历史中移除 logs 下的 .log 文件
git filter-repo --force --path-glob "DiaryWebsite.Web/logs/*.log" --invert-paths

# 5) 重新添加远程(filter-repo 后可能丢失)
git remote add origin https://github.com/jy02542317/Diary.git

# 6) 检查远程是否配置成功
git remote -v
git remote get-url origin

# 7) 拉取远端引用,避免 force-with-lease 的 stale info
git fetch origin --prune

# 8) 强制推送清理后的 main(保留 lease 保护)
git push -u origin main --force-with-lease
```

你这次实际成功推送时的关键输出是:
- `branch 'main' set up to track 'origin/main'.`
- `main -> main (forced update)`

K6压测工具
编程技巧

**完整安装过程总结(含踩坑与解决)**

1. 目标  
在 Windows 上全局安装 `k6`,并能在任意目录执行 `k6` 命令。

2. 初始问题  
你一开始执行:
```powershell
winget install k6 --source winget
```
报错:`winget` 无法识别。  
原因:系统虽有“应用安装程序(App Installer)”,但 `winget` 命令入口未生效(PATH/别名/注册问题)。

3. 修复 `winget` 的过程  
你做了这些关键操作:

```powershell
$pkg = Get-AppxPackage Microsoft.DesktopAppInstaller
Add-AppxPackage -DisableDevelopmentMode -Register "$($pkg.InstallLocation)\AppXManifest.xml"
```

中途遇到错误 `0x80073D02`(资源被占用),通过关闭占用程序后重试解决。  
之后又发现:
```powershell
$env:Path -split ';' | Select-String "WindowsApps"
```
为空,说明 `WindowsApps` 不在 PATH。补 PATH 后,`winget --info` 成功,说明 `winget` 已恢复可用。

4. 安装 `k6` 时的问题  
你先用:
```powershell
winget install -e --id k6.k6 --source winget
```
失败“找不到包”。  
原因:包 ID 写错。正确 ID 来自搜索结果:
```powershell
winget search k6 --source winget
```
显示正确 ID 是 `GrafanaLabs.k6`。

5. 正确安装命令  
最终成功安装:
```powershell
winget install -e --id GrafanaLabs.k6 --source winget
```
安装日志显示已下载并安装 MSI 成功。

6. 安装后 `k6` 仍不可识别  
你执行 `k6 version` 仍报找不到命令。  
原因:新安装路径未在当前终端会话生效(常见 PATH 刷新问题)。  
解决方式:
1. 关闭并重新打开 PowerShell 再试。  
2. 若仍不行,定位 `k6.exe` 路径并加入 PATH(通常是 `C:\Program Files\k6`)。

7. 最终结论  
你已经完成了核心安装,当前只差终端会话/PATH 生效这一步。  
最终应达到:
```powershell
k6 version
```
可正常输出版本号,即全局安装成功。

---

**这次最关键的经验**
1. `winget search` 里 `ID` 列才是可安装的精确包名。  
2. “安装成功但命令不可用”通常是 PATH 未刷新,不一定是安装失败。  
3. `App Installer` 显示已安装,不代表 `winget` 一定立即可用,可能还需注册/别名/PATH 修复。

Docker Compose 发布完整流程
人工智能学习

1. 本地构建并打包镜像

cd c:\Users\jeffery\Documents\GitHub\Diary

# 构建镜像
docker build -t diary-website:latest .

# 打包
docker save diary-website:latest -o diary-website.tar

2. 上传到服务器

scp diary-website.tar ubuntu@106.54.42.242:/home/ubuntu/

scp docker-compose.yml ubuntu@106.54.42.242:/home/ubuntu/

3. 服务器加载并启动

# 加载镜像
docker load -i diary-website.tar

sudo docker stop diary-website
sudo docker rm diary-website

# 启动容器 docker-compose up -d # 查看状态 docker-compose ps
 
MiniMax MCP Server 配置教程
人工智能学习
# MiniMax MCP Server 配置教程

本教程将指导你如何在 Cline 中配置 MiniMax MCP Server,让 AI 能够使用 MiniMax 的能力(如图片理解、代码辅助等)。

## 前置要求

1. **Cline 扩展** - 已安装 Cline (Claude Dev) 扩展
2. **MiniMax API Key** - 需要从 [MiniMax 开放平台](https://platform.minimaxi.com) 获取
3. **uvx 工具** - 需要安装 uvx (通常随 uv 一起安装)

## 配置步骤

### 步骤 1: 获取 MiniMax API Key

1. 访问 [MiniMax 开放平台](https://platform.minimaxi.com)
2. 注册/登录账号
3. 在控制台创建 API Key
4. 复制保存好你的 API Key(注意保密)

### 步骤 2: 编辑 MCP 配置文件

Cline 的 MCP 配置文件位于:
```
C:\Users\【你的用户名】\AppData\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
```

用文本编辑器打开该文件,添加以下内容:

```json
{
  "mcpServers": {
    "MiniMax": {
      "command": "C:\\Users\\【你的用户名】\\.local\\bin\\uvx.exe",
      "args": [
        "minimax-coding-plan-mcp"
      ],
      "env": {
        "MINIMAX_API_KEY": "你的API Key填在这里",
        "MINIMAX_MCP_BASE_PATH": "C:\\Users\\【你的用户名】\\.uvx\\minimax-coding-plan-mcp",
        "MINIMAX_API_HOST": "https://api.minimaxi.com",
        "MINIMAX_API_RESOURCE_MODE": "url"
      },
      "autoApprove": [
        "understand_image"
      ]
    }
  }
}
```

### 步骤 3: 重启 Cline

修改配置后,需要重启 Cline 使配置生效:
1. 关闭 VS Code
2. 重新打开 VS Code

或者在 Cline 设置中刷新 MCP Server 连接。

## 配置说明

| 配置项 | 说明 |
|--------|------|
| `command` | 执行命令的路径 |
| `args` | 传递给命令的参数 |
| `env.MINIMAX_API_KEY` | 你的 MiniMax API Key |
| `env.MINIMAX_API_HOST` | API 服务器地址 |
| `autoApprove` | 自动批准的工具列表 |

## 可用功能

配置完成后,你可以使用以下功能:

### 1. 图片理解 (understand_image)
- 分析图片内容
- 提取图片中的文字信息
- 识别图表、数据等

**示例用法:**
```
"请分析这张图片的内容"
"图片中有什么文字信息?"
```

### 2. 其他能力
根据 `minimax-coding-plan-mcp` 的实现,还可能支持:
- 文本生成
- 代码辅助
- 对话交互

## 常见问题

### Q: 为什么 MCP Server 显示未连接?
A: 检查以下几点:
1. uvx 是否正确安装(尝试运行 `uvx --version`)
2. API Key 是否正确
3. 网络是否能访问 api.minimaxi.com

### Q: 如何更新 API Key?
A: 直接修改配置文件中的 `MINIMAX_API_KEY` 值,然后重启 Cline。

### Q: 可以同时使用多个 MCP Server 吗?
A: 可以,在 `mcpServers` 对象中添加多个 Server 配置即可。

## 配置文件位置汇总

- **Windows**: `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`
- **Mac**: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`

## 安全注意事项

1. **不要分享你的 API Key** - 这是你的私人凭证
2. **不要将配置文件提交到 Git** - 建议将 API Key 添加到环境变量
3. **定期检查使用量** - 在 MiniMax 控制台查看 API 调用统计

---

*配置教程创建时间: 2026-03-16*
删除 dangling 镜像(无标签的镜像)
人工智能学习

## 删除 dangling 镜像(无标签的镜像)

那个 `<none>` 的是"悬空镜像",是旧版本残留,可以删除。

---

### 方法一:删除指定ID的镜像

```bash
sudo docker rmi cd9d58ad8338
```

---

### 方法二:删除所有悬空镜像

```bash
sudo docker image prune
```

---

### 方法三:一次性清理

```bash
# 删除所有未使用的镜像
sudo docker image prune -a
```

---

## 解释

| 状态 | 说明 |
|------|------|
| `diary-website latest` | ✅ 正在使用的镜像 |
| `<none>` | ❌ 悬空镜像(旧版本残留,可以删除) |

删除后不会影响网站运行,放心删除!