修改: "2026 Ubuntu \345\256\211\350\243\205.md"
新文件: "AI\346\212\200\346\234\257/\345\207\206\345\244\207.md" 修改: "Docker\346\212\200\346\234\257.md" 修改: "Linux\346\212\200\346\234\257.md" 新文件: "MinIO\345\270\270\347\224\250\346\223\215\344\275\234.md"
This commit is contained in:
+15
-45
@@ -20,7 +20,19 @@ sync 验证数据同步完成
|
|||||||
- sudo apt autoclean 清理下载缓存
|
- sudo apt autoclean 清理下载缓存
|
||||||
- apt list --upgradable 查看可升级的软件包列表
|
- apt list --upgradable 查看可升级的软件包列表
|
||||||
- sudo apt full-upgrade 彻底的升级(可能移除旧包)
|
- sudo apt full-upgrade 彻底的升级(可能移除旧包)
|
||||||
|
- sudo apt install 包名 安装软件
|
||||||
|
- sudo apt remove 包名 删除软件
|
||||||
|
- sudo apt purge 包名 彻底删除(含配置)
|
||||||
|
- apt search 关键词 搜索软件
|
||||||
|
- apt list --installed 查看已安装
|
||||||
|
- sudo apt autoclean 清理缓存
|
||||||
|
|
||||||
|
- 其他包管理工具
|
||||||
|
- Snap:Ubuntu 官方推广的容器化软件格式,命令为 snap(如 snap install wechat)。
|
||||||
|
- Flatpak:跨发行版的通用包格式,需先安装 flatpak,然后添加仓库使用。
|
||||||
|
- dpkg:底层安装工具,用于直接安装 .deb包(如 sudo dpkg -i 包.deb)。
|
||||||
|
|
||||||
|
建议:在 Ubuntu 上优先使用 APT,因为它能自动处理依赖关系,且与系统集成度最高。如果找不到某些软件,可以尝试 Snap 或 Flatpak。
|
||||||
|
|
||||||
|
|
||||||
## 收藏/软链接
|
## 收藏/软链接
|
||||||
@@ -107,6 +119,9 @@ $ flatpak install flathub io.github.ellie_commons.jorts
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 微信开发者工具
|
||||||
|
|
||||||
|
https://github.com/msojocs/wechat-web-devtools-linux
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -114,42 +129,6 @@ $ flatpak install flathub io.github.ellie_commons.jorts
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
其他包管理工具
|
|
||||||
|
|
||||||
Snap:Ubuntu 官方推广的容器化软件格式,命令为 snap(如 snap install wechat)。
|
|
||||||
Flatpak:跨发行版的通用包格式,需先安装 flatpak,然后添加仓库使用。
|
|
||||||
|
|
||||||
dpkg:底层安装工具,用于直接安装 .deb包(如 sudo dpkg -i 包.deb)。
|
|
||||||
|
|
||||||
建议:在 Ubuntu 上优先使用 APT,因为它能自动处理依赖关系,且与系统集成度最高。如果找不到某些软件,可以尝试 Snap 或 Flatpak。
|
|
||||||
|
|
||||||
Ubuntu (APT)
|
|
||||||
更新软件源
|
|
||||||
sudo apt update
|
|
||||||
|
|
||||||
安装软件
|
|
||||||
sudo apt install 包名
|
|
||||||
|
|
||||||
删除软件
|
|
||||||
sudo apt remove 包名
|
|
||||||
|
|
||||||
彻底删除(含配置)
|
|
||||||
sudo apt purge 包名
|
|
||||||
|
|
||||||
搜索软件
|
|
||||||
apt search 关键词
|
|
||||||
|
|
||||||
查看已安装
|
|
||||||
apt list --installed
|
|
||||||
|
|
||||||
升级所有软件
|
|
||||||
sudo apt upgrade
|
|
||||||
|
|
||||||
清理缓存
|
|
||||||
sudo apt autoclean
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## GNOME 官方扩展网站安装输入法面板
|
## GNOME 官方扩展网站安装输入法面板
|
||||||
|
|
||||||
https://extensions.gnome.org/extension/261/kimpanel/
|
https://extensions.gnome.org/extension/261/kimpanel/
|
||||||
@@ -232,15 +211,6 @@ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('ibus',
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
##
|
|
||||||
|
|
||||||
### python
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt install python3-pip python3-dev
|
|
||||||
python3 -V 显示 3.12.3
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## 微信会议
|
## 微信会议
|
||||||
|
|
||||||
|
|||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
# 准备工作
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 一、CC Switch
|
||||||
|
|
||||||
|
先完成 CC Switch 安装
|
||||||
|
|
||||||
|
- 下载页面 https://www.ccswitch.io/zh/ 选择 [CC-Switch-v3.15.0-Linux-x86_64.deb ](https://github.com/farion1231/cc-switch/releases/download/v3.15.0/CC-Switch-v3.15.0-Linux-x86_64.deb)
|
||||||
|
|
||||||
|
- sudo dpkg -i CC-Switch-v3.15.0-Linux-x86_64.deb
|
||||||
|
|
||||||
|
- 进入 CC-Switch 配置 claude 供应商
|
||||||
|
1. 选择 DouBaoSeed
|
||||||
|
1. 输入 API Key :ark-8f9...
|
||||||
|
1. 模型映射 - 获取模型列表(选择想用的,如 doubao-seed-2-0-code-preview-latest)
|
||||||
|
1. 测试 & 保存 (CC Switch 会自动把正确的 base_url + api_key 写入:~/.claude/settings.json)
|
||||||
|
|
||||||
|
> 避免 Claude Code 进入官方校验
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> # 1. 退出 claude 并清所有相关变量
|
||||||
|
> claude /logout
|
||||||
|
> unset ANTHROPIC_AUTH_TOKEN ANTHROPIC_API_KEY ANTHROPIC_BASE_URL
|
||||||
|
>
|
||||||
|
> # 2. 检查:必须什么都不输出
|
||||||
|
> env | grep ANTHROPIC
|
||||||
|
>
|
||||||
|
> # 3. 清空 Claude 配置(让 CC Switch 全权接管)
|
||||||
|
> > ~/.claude/settings.json
|
||||||
|
>
|
||||||
|
> # 4. 关键:跳过官方首次校验(国内必做)
|
||||||
|
> echo '{"hasCompletedOnboarding": true}' > ~/.claude.json
|
||||||
|
> ```
|
||||||
|
|
||||||
|
## 二、CLAUDE CODE
|
||||||
|
|
||||||
|
Version: 2.1.152
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://claude.ai/install.sh | bash
|
||||||
|
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
||||||
|
claude 运行 ( 理论上不会出现初始化配置选项,如 Select login method: 选择 2. Anthropic Console account · API usage billing )
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 三、Claude Code中常用命令
|
||||||
|
|
||||||
|
`/status` 查看当前模型和连接状态
|
||||||
|
|
||||||
|
`/logout` 清除当前认证状态,退出登录后重新启动 Claude Code,通常会再次弹出登录方式选择界面。
|
||||||
|
|
||||||
@@ -53,8 +53,6 @@ newgrp docker
|
|||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
Docker相关:
|
|
||||||
|
|
||||||
给当前用户增加 docker 运行权限
|
给当前用户增加 docker 运行权限
|
||||||
sudo usermod -aG docker $USER
|
sudo usermod -aG docker $USER
|
||||||
newgrp docker
|
newgrp docker
|
||||||
|
|||||||
+13
-3
@@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
ss -tunlp | grep -E '9090|789.' 查看 9090 和 789* 端口
|
ss -tunlp | grep -E '9090|789.' 查看 9090 和 789* 端口
|
||||||
find / -name '*.php' 查询根目录下所有php后缀文件
|
find / -name '*.php' 查询根目录下所有php后缀文件
|
||||||
for file in *.docx; do pandoc "$file" -o "${file%.docx}.md"; done 批量转换 docx 到 md
|
for file in *.docx; do pandoc "$file" -o "${file%.docx}.md"; done 批量转换 docx 到 md
|
||||||
@@ -11,17 +12,19 @@ Watch -n 1 'ls -l' 每隔1秒执行目录查询
|
|||||||
tar -cvf coze-studio.tar coze-studio 创建tar压缩包
|
tar -cvf coze-studio.tar coze-studio 创建tar压缩包
|
||||||
tar -xvf coze-studio.tar 解压
|
tar -xvf coze-studio.tar 解压
|
||||||
映射远程目录 Nautilus (GNOME Files) 的“其他位置”输入 sftp://1.95.127.205
|
映射远程目录 Nautilus (GNOME Files) 的“其他位置”输入 sftp://1.95.127.205
|
||||||
|
```
|
||||||
sudo apt update
|
|
||||||
sudo apt upgrade
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
===================================================快捷键
|
===================================================快捷键
|
||||||
Alt + F2 运行应用程序 Copilot(AI键) 打开命令行终端 cmd
|
Alt + F2 运行应用程序 Copilot(AI键) 打开命令行终端 cmd
|
||||||
WIN +Alt + → / ← 工作台间切换 WIN + ` 在同一个应用程序的窗口之间切换
|
WIN +Alt + → / ← 工作台间切换 WIN + ` 在同一个应用程序的窗口之间切换
|
||||||
Shift + 小键盘0~5 0截屏 1目录 2 firefox 3 邮箱 4Typora 5 记事 . 摄像头
|
Shift + 小键盘0~5 0截屏 1目录 2 firefox 3 邮箱 4Typora 5 记事 . 摄像头
|
||||||
Emoji 符号 通过 Firefox 插件输入
|
Emoji 符号 通过 Firefox 插件输入
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -36,9 +39,16 @@ G 文末 gg 首行 :set nu 设置行号
|
|||||||
==========================================================
|
==========================================================
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
==============
|
==============
|
||||||
安装 ufw: sudo pacman -S ufw 防火墙
|
安装 ufw: sudo pacman -S ufw 防火墙
|
||||||
sudo ufw enable 启用 ufw
|
sudo ufw enable 启用 ufw
|
||||||
sudo ufw default deny incoming 设置默认策略为拒绝所有传入和传出连接
|
sudo ufw default deny incoming 设置默认策略为拒绝所有传入和传出连接
|
||||||
sudo ufw default deny outgoing
|
sudo ufw default deny outgoing
|
||||||
允许特定的服务和端口。例如,允许 SSH 连接:sudo ufw allow ssh 或者:sudo ufw allow 22/tcp 最后,检查 ufw 的状态:sudo ufw status
|
允许特定的服务和端口。例如,允许 SSH 连接:sudo ufw allow ssh 或者:sudo ufw allow 22/tcp 最后,检查 ufw 的状态:sudo ufw status
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+205
@@ -0,0 +1,205 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# MinIO 最常用的操作
|
||||||
|
|
||||||
|
访问 Web 管理台 https://zgene.cn:9001,用 MINIO_ROOT_USER / MINIO_ROOT_PASSWORD 登录。
|
||||||
|
可以:创建 bucket、上传下载文件、设置 bucket 权限、生成预签名 URL。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 安装
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc
|
||||||
|
sudo chmod +x /usr/local/bin/mc
|
||||||
|
mc alias set zgene https://zgene.cn:9000 admin pass*****wd 配置别名:zgene
|
||||||
|
mc ls zgene 验证:列出所有存储桶
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 常用命令
|
||||||
|
|
||||||
|
- mc mb zgene/zgene_knowledge # 创建 bucket 桶名必须为小写字母
|
||||||
|
|
||||||
|
- mc rb zgene/test # 删除空 bucket,强制删除非空桶 --force
|
||||||
|
|
||||||
|
- mc cp ./file.txt zgene/mybucket/ # 上传单个文件
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mc ls zgene/photos # 列出
|
||||||
|
mc cp zgene/photos/trip.jpg ./ # 下载
|
||||||
|
mc rm zgene/photos/trip.jpg # 删除
|
||||||
|
mc rb zgene/photos
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
3. Python SDK
|
||||||
|
|
||||||
|
|
||||||
|
pip install minio
|
||||||
|
|
||||||
|
from minio import Minio
|
||||||
|
|
||||||
|
client = Minio("zgene.cn", access_key="admin", secret_key="xxx", secure=True)
|
||||||
|
|
||||||
|
# 上传
|
||||||
|
client.fput_object("photos", "2026/trip.jpg", "./trip.jpg")
|
||||||
|
|
||||||
|
# 获取预签名 URL(用于 Markdown 引用,默认 7 天有效)
|
||||||
|
url = client.presigned_get_object("photos", "2026/trip.jpg")
|
||||||
|
print(url)
|
||||||
|
|
||||||
|
---
|
||||||
|
4. Markdown 引用图片
|
||||||
|
|
||||||
|
|
||||||
|
方式一:预签名 URL(私有 bucket,带临时认证)
|
||||||
|
|
||||||
|
url = client.presigned_get_object("photos", "trip.jpg")
|
||||||
|
# https://zgene.cn/oss/photos/trip.jpg?X-Amz-Algorithm=...
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
方式二:public bucket(裸直链,无认证)
|
||||||
|
|
||||||
|
mc anonymous set download zgene/photos
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
5. 粘贴上传(在 Console 里)
|
||||||
|
|
||||||
|
|
||||||
|
进入 bucket → 点击 Upload → 支持拖拽、点击选择、Ctrl+V 粘贴。
|
||||||
|
|
||||||
|
---
|
||||||
|
需要更详细的某个部分吗?比如和 Typora/VS Code 集成自动上传?
|
||||||
|
|
||||||
|
✻ Brewed for 49s
|
||||||
|
|
||||||
|
❯ Typora集成自动上传
|
||||||
|
|
||||||
|
● Write(~/桌面/项目集/minioss/typora-minio-upload.py)
|
||||||
|
|
||||||
|
|
||||||
|
脚本已写好,保存为 typora-minio-upload.py
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
配置步骤
|
||||||
|
|
||||||
|
1. 安装依赖
|
||||||
|
|
||||||
|
|
||||||
|
pip install minio
|
||||||
|
|
||||||
|
2. 创建配置文件
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -p ~/.config/typora-minio
|
||||||
|
cat > ~/.config/typora-minio/config.json << 'EOF'
|
||||||
|
{
|
||||||
|
"endpoint": "zgene.cn",
|
||||||
|
"access_key": "admin",
|
||||||
|
"secret_key": "你的密码",
|
||||||
|
"bucket": "typora",
|
||||||
|
"secure": true,
|
||||||
|
"public": true,
|
||||||
|
"prefix": "2026/"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
┌─────────────────────────┬─────────────────────────────────────────────────┐
|
||||||
|
│ 配置项 │ 说明 │
|
||||||
|
├─────────────────────────┼─────────────────────────────────────────────────┤
|
||||||
|
│ endpoint │ 域名,不用加 https:// │
|
||||||
|
├─────────────────────────┼─────────────────────────────────────────────────┤
|
||||||
|
│ access_key / secret_key │ MinIO 账号密码 │
|
||||||
|
├─────────────────────────┼─────────────────────────────────────────────────┤
|
||||||
|
│ bucket │ 图片存放的 bucket,不存在会自动创建 │
|
||||||
|
├─────────────────────────┼─────────────────────────────────────────────────┤
|
||||||
|
│ public │ true 输出固定直链(推荐),false 输出预签名 URL │
|
||||||
|
├─────────────────────────┼─────────────────────────────────────────────────┤
|
||||||
|
│ prefix │ 对象前缀,如 2026/ 表示图片放在 typora/2026/ 下 │
|
||||||
|
└─────────────────────────┴─────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
3. Typora 设置
|
||||||
|
|
||||||
|
|
||||||
|
偏好设置 → 图像:
|
||||||
|
|
||||||
|
- 插入图片时:上传图片
|
||||||
|
- 上传服务设定:Custom Command
|
||||||
|
- 命令:
|
||||||
|
python3 /path/to/typora-minio-upload.py
|
||||||
|
|
||||||
|
|
||||||
|
点击"验证图片上传选项"测试。
|
||||||
|
|
||||||
|
---
|
||||||
|
效果
|
||||||
|
|
||||||
|
在 Typora 中:
|
||||||
|
- 粘贴截图 → 自动上传到 MinIO → 返回 URL
|
||||||
|
- 拖拽图片 → 同上
|
||||||
|
- 插入本地图片 → 同上
|
||||||
|
|
||||||
|
|
||||||
|
图片 URL 格式:
|
||||||
|
https://zgene.cn/oss/typora/2026/20260506_143052_image.png
|
||||||
|
|
||||||
|
需要我把这个脚本也提交到 minioss 仓库吗?
|
||||||
|
|
||||||
|
|
||||||
|
>已深度思考(用时3秒)
|
||||||
|
>
|
||||||
|
>
|
||||||
|
>
|
||||||
|
>我们注意到原配置中使用了 `proxy_set_header Host $host;`这可能会导致签名问题,因为MinIO的签名计算依赖于原始的Host头。
|
||||||
|
>
|
||||||
|
>根据之前的分析,我们需要将Host头设置为客户端原始请求的Host,即使用 `$http_host`变量,它包含客户端请求中的原始Host头信息。
|
||||||
|
>
|
||||||
|
>同时,我们还需要确保其他与签名相关的头被正确传递。
|
||||||
|
>
|
||||||
|
>修改建议:
|
||||||
|
>
|
||||||
|
>1.
|
||||||
|
>
|
||||||
|
> 将 `proxy_set_header Host $host;`改为 `proxy_set_header Host $http_host;`以保留客户端请求的原始Host头。
|
||||||
|
>
|
||||||
|
>2.
|
||||||
|
>
|
||||||
|
> 另外,MinIO的S3签名可能还需要一些其他的头信息,我们可以参考MinIO官方文档关于Nginx代理的配置。
|
||||||
|
>
|
||||||
|
>另外,注意原配置中已经设置了 `proxy_request_buffering off;`和 `proxy_buffering off;`以及 `client_max_body_size 0;`,这是正确的。
|
||||||
|
>
|
||||||
|
>修改后的配置如下(只修改了Host头,其他保持不变):
|
||||||
|
>
|
||||||
|
>看到了您的配置,问题出在 **`proxy_set_header Host $host;`** 这一行。对于 S3 API 签名验证,这会导致签名不匹配。
|
||||||
|
>
|
||||||
|
>## 问题原因
|
||||||
|
>
|
||||||
|
>S3 API 签名计算依赖于请求中的 `Host`头。当您使用:
|
||||||
|
>
|
||||||
|
>-
|
||||||
|
>
|
||||||
|
> `proxy_set_header Host $host;`- 这会重写 Host 头为 Nginx 服务器的主机名
|
||||||
|
>
|
||||||
|
>-
|
||||||
|
>
|
||||||
|
> 但客户端(mc)发送请求时使用的是包含端口的完整域名:`zgene.cn:9000`
|
||||||
|
>
|
||||||
|
>## 解决方案
|
||||||
|
>
|
||||||
|
>将 Host 头配置改为以下两种方式之一:
|
||||||
|
>
|
||||||
|
>### 方案1:使用 `$http_host`(推荐)
|
||||||
|
>
|
||||||
|
>```nginx
|
||||||
|
>proxy_set_header Host $http_host; # 使用客户端发来的原始 Host 头
|
||||||
|
>```
|
||||||
|
>
|
||||||
|
>
|
||||||
Reference in New Issue
Block a user