Explorar el Código

vault backup: 2026-08-02 17:52:28

zhensolid hace 12 horas
padre
commit
dbec80bdce
Se han modificado 100 ficheros con 714 adiciones y 2768 borrados
  1. 1 0
      .memo-migrate/last-migration.txt
  2. 0 0
      AI与模型/Cursor无限制.md
  3. 11 0
      个人空间/工具/在线印章.md
  4. 52 0
      个人空间/服务器/阿里云服务器.md
  5. 3 1
      个人空间/账号密码/Gitee.md
  6. 12 0
      个人空间/账号密码/Hermes令牌.md
  7. 12 0
      个人空间/资源/音乐资源.md
  8. 119 1
      企业微信集成方案.md
  9. 32 0
      子兰工作/子兰官网统计代码.md
  10. 0 0
      家庭实验室/Docker服务/DOCKER.md
  11. 0 0
      家庭实验室/Docker服务/Docker配置镜像加速文件.md
  12. 0 0
      家庭实验室/Docker服务/docker-compose.md
  13. 0 0
      家庭实验室/Docker服务/安装NVIDIA Container Toolkit.md
  14. 0 0
      家庭实验室/Docker服务/安装官方Docker.md
  15. 22 0
      家庭实验室/VPS/666机场.md
  16. 450 0
      家庭实验室/群晖NAS/CloudDrive2 API 调用指南.md
  17. 0 0
      家庭实验室/群晖NAS/Finalshell无法显示文件.md
  18. 0 0
      家庭实验室/群晖NAS/NAS上设置 Python 虚拟环境.md
  19. 0 0
      家庭实验室/群晖NAS/Nas降级.md
  20. 0 0
      家庭实验室/群晖NAS/Synology.md
  21. 0 0
      家庭实验室/群晖NAS/可视化群晖系统文件Winscp.md
  22. 0 0
      家庭实验室/群晖NAS/套件来源.md
  23. 0 0
      家庭实验室/群晖NAS/群晖 NAS 通过 frp 实现内网穿透.md
  24. 0 0
      家庭实验室/群晖NAS/群晖2.5G网卡安装教程.md
  25. 0 0
      家庭实验室/群晖NAS/群晖Docker-compose配置.md
  26. 0 0
      家庭实验室/群晖NAS/群晖Docker指令.md
  27. 0 0
      家庭实验室/群晖NAS/群晖Docker镜像加速.md
  28. 0 0
      家庭实验室/群晖NAS/群晖Root权限配置(密钥).md
  29. 0 0
      家庭实验室/群晖NAS/群晖SMB配置.md
  30. 0 0
      家庭实验室/群晖NAS/群晖指令.md
  31. 0 0
      家庭实验室/群晖NAS/群晖指令记录.md
  32. 0 0
      家庭实验室/群晖NAS/群晖获取ROOT权限使用winscp.md
  33. 0 0
      家庭实验室/群晖NAS/群晖计划任务.md
  34. 0 0
      家庭实验室/群晖NAS/群晖部署centos+宝塔.md
  35. 0 0
      家庭实验室/群晖NAS/群晖问题.md
  36. 0 0
      家庭实验室/群晖NAS/群晖隐藏共享.md
  37. 0 0
      家庭实验室/群晖NAS/黑群晖Active Backup for Business激活.md
  38. 0 0
      家庭实验室/群晖NAS/黑群晖RR升级.md
  39. 0 0
      家庭实验室/群晖NAS/黑群晖私有服务器部署.md
  40. 0 64
      工具与开发/数据库/MySql.md
  41. 0 23
      工具与开发/数据库/康师傅笔记/康师傅笔记.md
  42. 0 0
      技术支持/AI技术支持/AI技术支持.md
  43. 0 28
      技术支持/AI技术支持/Dify.md
  44. 0 39
      技术支持/AI技术支持/Dify技巧.md
  45. 0 20
      技术支持/AI技术支持/MCP.md
  46. 0 25
      技术支持/AI技术支持/Ragflow.md
  47. 0 5
      技术支持/K8S.md
  48. 0 11
      技术支持/Kubernetes/Kubernetes.md
  49. 0 307
      技术支持/Kubernetes/Kubernetes初始部署流程/Kubernetes初始部署流程.md
  50. 0 322
      技术支持/Kubernetes/Kubernetes初始部署流程/WEAVE_SCOPE_YAML.md
  51. 0 251
      技术支持/Kubernetes/Kubernetes指令.md
  52. 0 114
      技术支持/Kubernetes/Kubernetes笔记本基础.md
  53. 0 1
      技术支持/Kubernetes/Kubernetes认证 synced block.md
  54. 0 147
      技术支持/Kubernetes/Kubernetes认证.md
  55. 0 161
      技术支持/Kubernetes/Kubernetes配置YAML.md
  56. 0 31
      技术支持/Kubernetes/Kubernets【HELM】.md
  57. 0 28
      技术支持/Kubernetes/Windows加入集群.md
  58. 0 92
      技术支持/MySql/MySql语句使用教程.md
  59. 0 41
      技术支持/MySql/Mysqlbinlog恢复数据.md
  60. 0 39
      技术支持/MySql/Navicat破解【含解压密码】.md
  61. 0 4
      技术支持/MySql/binlog2sql回滚数据【注意mysql版本】.md
  62. 0 20
      技术支持/MySql/实操记录.md
  63. 0 76
      技术支持/MySql/康师傅笔记/多表JOIN连接+UNOIN.md
  64. 0 15
      技术支持/Synology/Synology.md
  65. 0 11
      技术支持/Synology/可视化群晖系统文件Winscp.md
  66. 0 29
      技术支持/Synology/群晖2.5G网卡安装教程.md
  67. 0 72
      技术支持/Synology/群晖Docker指令.md
  68. 0 19
      技术支持/Synology/群晖SMB配置.md
  69. 0 15
      技术支持/Synology/群晖指令.md
  70. 0 84
      技术支持/Synology/群晖计划任务.md
  71. 0 27
      技术支持/Synology/群晖部署centos+宝塔.md
  72. 0 18
      技术支持/Synology/群晖问题.md
  73. 0 25
      技术支持/Synology/群晖隐藏共享.md
  74. 0 19
      技术支持/Synology/黑群晖RR升级.md
  75. 0 9
      技术支持/Windows系统/Windows系统.md
  76. 0 49
      技术支持/Windows系统/windows微软商店无法进入.md
  77. 0 56
      技术支持/Windows系统/💫Windows服务配置💫/Apache配置.md
  78. 0 13
      技术支持/Windows系统/💫Windows服务配置💫/FileZilla服务器配置.md
  79. 0 6
      技术支持/Windows系统/💫Windows服务配置💫/PHP.md
  80. 0 23
      技术支持/Windows系统/💫Windows服务配置💫/Powershell更新安装.md
  81. 0 5
      技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/SSH免密登录.md
  82. 0 34
      技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/linux-ssh配置服务端.md
  83. 0 48
      技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/windows-ssh配置.md
  84. 0 84
      技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/WSL安装以及配置.md
  85. 0 20
      技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/Wsl桌面环境.md
  86. 0 43
      技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/❤️Wsl终端优化配置❤️.md
  87. 0 9
      技术支持/Windows系统/💫Windows服务配置💫/Web 应用程序防火墙.md
  88. 0 38
      技术支持/Windows系统/💫Windows服务配置💫/windows安装DOCKER.md
  89. 0 122
      技术支持/Windows系统/💫Windows服务配置💫/windows配置oh-my-zsh.md
  90. 0 24
      技术支持/Windows系统/💫Windows服务配置💫/💫Windows服务配置💫.md
  91. 0 0
      技术笔记/数据库/MySql.md
  92. 0 0
      技术笔记/数据库/MySql语句使用教程.md
  93. 0 0
      技术笔记/数据库/Mysqlbinlog恢复数据.md
  94. 0 0
      技术笔记/数据库/Navicat破解【含解压密码】.md
  95. BIN
      技术笔记/数据库/attachments/Untitled.png
  96. 0 0
      技术笔记/数据库/binlog2sql回滚数据【注意mysql版本】.md
  97. 0 0
      技术笔记/数据库/实操记录.md
  98. 0 0
      技术笔记/数据库/康师傅笔记/多表JOIN连接+UNOIN.md
  99. 0 0
      技术笔记/数据库/康师傅笔记/康师傅笔记.md
  100. 0 0
      技术笔记/数据库/数据库/Oracle/Oracle创建PDB.md

+ 1 - 0
.memo-migrate/last-migration.txt

@@ -0,0 +1 @@
+2026-08-02T17:45:03.106160

+ 0 - 0
技术支持/AI技术支持/Cursor无限制.md → AI与模型/Cursor无限制.md


+ 11 - 0
个人空间/工具/在线印章.md

@@ -0,0 +1,11 @@
+---
+title: 在线印章
+created: 2026-06-29
+source: Apple Notes
+tags: [备忘录迁移, 工具]
+---
+
+在线印章生成工具:
+
+- https://seal.scung.cn/index.html
+- https://tools.kalvinbg.cn/convenience/seal

+ 52 - 0
个人空间/服务器/阿里云服务器.md

@@ -0,0 +1,52 @@
+---
+title: 阿里云服务器
+created: 2026-05-31
+source: Apple Notes
+tags: [备忘录迁移, 服务器]
+---
+
+> 相关:[[666机场]] | [[Gitee]]
+> 最新运维信息见 `~/Documents/ZLSH/CLAUDE.md`
+
+## 基本信息
+
+| 项目 | 值 |
+|------|-----|
+| 阿里云账号 | 子兰生活 |
+| 阿里云密码 | CHENGHE6chengzi |
+| 服务器 IP | 47.109.158.218 |
+| 配置 | 8vCPU / 16GB |
+| 系统盘 | 40GB |
+| 数据盘 | 160GB |
+| 带宽 | 5 Mbps |
+| 系统 | CentOS 10 Stream |
+| 到期 | 2026年6月30日 |
+| 购买价格 | 510 元(浮动) |
+
+## 基础服务
+
+Docker、phpmyadmin、PHP8.2、nginx1.28、docker-compose、mysql8.0、python3.12.12、nodejs14.17.6LTS
+
+## 宝塔面板
+
+| 项目 | 值 |
+|------|-----|
+| 面板地址 | https://47.109.158.218:36756/a5b2b5f2 |
+| 域名地址 | https://bt.zilanlife.com/a5b2b5f2 |
+| 用户名 | sg6lffqn |
+| 密码 | LDwEtMj5DE |
+
+⚠️ 安全组需放行 36756 端口
+
+## SSH
+
+连接方式:密钥(唯一方式),端口默认宝塔部署
+
+## Gitee
+
+| 项目 | 值 |
+|------|-----|
+| 个人空间 | https://gitee.com/gyzlsh |
+| 账号 | 15599182255 / gyzlsh |
+| 密码 | gyzlsh2018 |
+| Git 令牌(旧) | 3390630cdbbfd511281b8a05465cfe4f |

+ 3 - 1
个人空间/账号密码/Gitee.md

@@ -1 +1,3 @@
-私人令牌:a5d9b4c5cb0a878f5709b7c99938e75f
+私人令牌(当前):a5d9b4c5cb0a878f5709b7c99938e75f
+
+> 历史令牌(已失效):3390630cdbbfd511281b8a05465cfe4f(2026-05 阿里云服务器备忘录记录)

+ 12 - 0
个人空间/账号密码/Hermes令牌.md

@@ -0,0 +1,12 @@
+---
+title: Hermes 令牌
+created: 2026-05-07
+source: Apple Notes
+tags: [备忘录迁移, 令牌]
+---
+
+> 相关:[[Gitee]]
+
+令牌:NDQ2NTk0YWQtNTdkMS00NWEwLWIyOGEt
+
+> 来自备忘录「令牌信息」,原始出处待确认

+ 12 - 0
个人空间/资源/音乐资源.md

@@ -0,0 +1,12 @@
+---
+title: 音乐资源
+created: 2026-05-24
+source: Apple Notes
+tags: [备忘录迁移, 资源]
+---
+
+订单:5117315220286006642
+
+- 无损链接:https://pan.baidu.com/s/1yTUhzAsvu2H9NeMxpsZ-Hg 提取码:1234
+- 赠送世界名曲:https://pan.baidu.com/s/1HnmCXQoLaHFBsMMLJfZI_g 提取码:1234
+- 下载文档:https://share.note.youdao.com/s/Fv8JKvP2

+ 119 - 1
企业微信通知.md → 企业微信集成方案.md

@@ -257,4 +257,122 @@ GET https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token={TOKEN}&dep
 - ✅ 主动发送消息
 - ✅ 诗词 → 企微发送
 - ✅ 接收消息回调 + URL 验证
-- ✅ 员工消息 → DeepSeek AI → 自动回复
+- ✅ 员工消息 → Dify 工作流 → AI 自动回复
+
+---
+
+## 九、Dify 工作流集成
+
+### 9.1 工作流配置
+
+**工作流名称**:企微AI回复
+
+| 参数 | 值 |
+|------|-----|
+| API Key | `app-6ax5fzZvsOuQvSDiQ0bcCgwa` |
+| 端点 | `http://47.109.158.218:8088/v1/workflows/run` |
+| 输入 | `query`(文本) |
+| 输出 | `text`(文本) |
+
+**节点结构**:
+1. 开始节点 → `query` 输入
+2. LLM 节点 → 提示词 `{{#start.query#}}`,关掉 Thinking
+3. 结束节点 → 输出 `text`
+
+### 9.2 回调服务对接
+
+回调路径:`api.zilanlife.com/wecom/callback` → Nginx → `127.0.0.1:18790`
+
+流程:
+```
+员工发消息 → 企微加密 POST → 回调服务解密 → Dify API 发送 query → LLM 处理 → 返回 text → 加密回复 → 员工收到
+```
+
+代码要点:
+```python
+body = {"inputs": {"query": user_msg}, "response_mode": "blocking", "user": "wecom"}
+req = Request(DIFY_API_URL, data=json.dumps(body).encode(),
+              headers={"Authorization": f"Bearer {DIFY_API_KEY}"})
+# 返回 text = data["data"]["outputs"]["text"]
+```
+
+### 9.3 版本演进
+
+| 版本 | 后端 | 模式 | 状态 |
+|------|------|:---:|:---:|
+| v1 | DeepSeek API 直连 | 同步 | ❌ Key 泄露风险 |
+| v2 | Key 注释 | 同步 | ❌ 不可用 |
+| v3 | Dify 工作流 | 同步 | ❌ 超时断连 (BrokenPipe) |
+| v4 | Dify 工作流 | 异步 | ✅ 当前 |
+
+### 9.4 异步架构(解决超时断连)
+
+**问题**:同步模式下 Dify 处理 15-30 秒,企微 5 秒超时断连 → BrokenPipeError
+
+**方案**:
+```
+收到消息 → 立即 200(不等 Dify)→ 后台线程处理 → send_msg 主动推送
+```
+
+**代码**:
+```python
+def do_POST(self):
+    # 先返回 200
+    self.send_response(200); self.end_headers()
+    # 后台处理
+    threading.Thread(target=lambda: send_msg(user_id, ai_reply(msg))).start()
+```
+
+### 9.5 三层可靠性保护
+
+| 保护 | 机制 | 效果 |
+|------|------|------|
+| 超时兜底 | Dify 15s 无响应 → 先发「正在处理」→ 继续等 45s | 不丢消息,用户有反馈 |
+| 发送重试 | send_msg 失败自动重试 3 次,间隔 1s | 网络抖动不丢 |
+| systemd | `Restart=always`,崩溃 5s 自动复活 | 进程挂了秒恢复 |
+
+**并发能力**:
+- Python 线程处理 100+ 人同时提问无压力
+- Dify Worker 池自动排队
+- 真正瓶颈在企微 API 频率限制,不在架构
+
+**systemd 配置**:
+```ini
+[Service]
+ExecStart=/usr/bin/python3 -u /data/wecom_callback.py
+Restart=always
+RestartSec=5
+# 服务器重启后自动拉起 → systemctl enable
+```
+
+---
+
+## 十、定时任务(签单复盘企微推送)
+
+| 项目 | 内容 |
+|------|------|
+| 任务 ID | `82990ab2bd98` |
+| 触发 | 每天 5:00 |
+| 执行 | 本机 `wecom_xbb_push.sh` → SSH aliyun2 → Python 脚本 |
+| 监控 | `deliver: origin`,结果推回 Hermes |
+
+**为什么迁到 aliyun2**:
+- 本地家宽 IP 会变动(已从 59.51.140.250 变为 1.204.41.232)
+- 服务器 IP 47.109.158.218 固定,企微白名单稳定
+
+**脚本路径**:
+- 本地:`~/.hermes/scripts/wecom_xbb_push.sh`(SSH 跳板)
+- 远程:`/opt/scripts/wecom_xbb_push.py`(实际执行)
+
+---
+
+## 十一、踩坑记录(新增)
+
+| 坑 | 现象 | 解决 |
+|----|------|------|
+| IP 变动 | 本地出网 IP 从 59.51→1.204,企微 60020 | 脚本迁 aliyun2,用固定 IP |
+| `systemctl stop` 卡死 | 服务持续 deactivating,超时 | prod.js SIGTERM 处理有 bug,手动 kill 进程 |
+| WAL 删除致数据丢失 | 部署时删 WAL 文件 → 未刷盘数据永久丢失 | 先用 `wal_checkpoint` 强制刷盘,再停服 |
+| Dify LLM Thinking 输出 | 回复含 `<think>` 标签 | 关掉 LLM 节点的 Thinking 模式 |
+| Dify 变量引用错误 | `#sys.query#` not found | 改为 `#start.query#` |
+| Cron 本地跑不通 | `no_agent` 脚本依赖本地 IP 白名单 | 改 shell 脚本 SSH 远端执行 |

+ 32 - 0
子兰工作/子兰官网统计代码.md

@@ -0,0 +1,32 @@
+---
+title: 子兰官网统计代码
+created: 2026-06-05
+source: Apple Notes
+tags: [备忘录迁移, 子兰]
+---
+
+> 相关:[[钉钉宜搭 API 对接参数]] | [[chatwoot+n8n+dify]]
+
+## 云雀统计代码
+
+```html
+<!-- 云雀统计代码 -->
+<script>
+console.log("脚部文件已加载!");
+(function(y, un, q, u, e) {
+    window[un] =
+      window[un] ||
+      function(y) {
+        window[un].company_id = window[un].company_id || y;
+        (window[un].sid  = '4008819434438435');
+      };
+      u = document.createElement("script");
+      u.src = q + "?v=" + new Date().getUTCDate();
+      u.async = true;
+      e = document.getElementsByTagName("script")[0];
+      e.parentNode.insertBefore(u, e);
+})(window,"_YUNQUE","//dist.yunque360.com/bundle.js");
+_YUNQUE("ckg9rnn0fccv4j");
+</script>
+<!-- 云雀统计代码 结束-->
+```

+ 0 - 0
技术支持/DOCKER/DOCKER.md → 家庭实验室/Docker服务/DOCKER.md


+ 0 - 0
技术支持/DOCKER/Docker配置镜像加速文件.md → 家庭实验室/Docker服务/Docker配置镜像加速文件.md


+ 0 - 0
技术支持/DOCKER/docker-compose.md → 家庭实验室/Docker服务/docker-compose.md


+ 0 - 0
技术支持/DOCKER/安装NVIDIA Container Toolkit.md → 家庭实验室/Docker服务/安装NVIDIA Container Toolkit.md


+ 0 - 0
技术支持/DOCKER/安装官方Docker.md → 家庭实验室/Docker服务/安装官方Docker.md


+ 22 - 0
家庭实验室/VPS/666机场.md

@@ -0,0 +1,22 @@
+---
+title: 666机场
+created: 2026-05-15
+source: Apple Notes
+tags: [备忘录迁移, VPS]
+---
+
+> 相关:[[阿里云服务器]]
+
+## 3x-ui 面板
+
+Access URL: https://cc.opentouch.top:31578/Unz7ZcaAg2RWJXUFx5
+
+| 项目 | 值 |
+|------|-----|
+| 服务器 IP | 61.110.28.176 |
+| 服务器账号 | root |
+| 服务器密码 | 88jm#9AC#cGt7kY4 |
+| 面板用户名 | pZ1OT1MbWw |
+| 面板密码 | 8UwC19eHWU |
+
+项目地址:https://github.com/MHSanaei/3x-ui

+ 450 - 0
家庭实验室/群晖NAS/CloudDrive2 API 调用指南.md

@@ -0,0 +1,450 @@
+---
+title: CloudDrive2 API 调用指南
+date: 2026-08-01
+tags: [clouddrive2, api, nas, grpc, webdav]
+---
+
+# CloudDrive2 API 调用指南
+
+## 基本信息
+
+- **服务器**:[[VPS/服务器清单|ZLSH_NAS]](`192.168.6.23`,公司白群晖 DS923+)
+- **CloudDrive2 版本**:v1.0.13(Synology 套件安装)
+- **安装路径**:`/volume1/@appstore/CloudDrive2/`
+- **数据路径**:`/volume1/@appdata/CloudDrive2/Config/`
+- **Web UI**:`http://192.168.6.23:19798` / `https://192.168.6.23:19799`
+- **API 类型**:gRPC-web(HTTP/1.1 承载的 gRPC)
+- **gRPC 服务名**:`clouddrive.CloudDriveFileSrv`
+
+## 当前已挂载的云盘
+
+| 云盘 | 路径 | 账号 |
+|------|------|------|
+| 115 网盘 | `/115open` | ID: 22499506 |
+| OneDrive | `/OneDrive` | zhensolid@vip.qq.com |
+| 阿里云盘Open | `/阿里云盘Open` | c370ce6b7e134a6785d51b7cecf31940 |
+| 天翼云盘 | `/{4130419372}` | 18184109687@189.cn |
+| 123 云盘 | `/{123-1821196620}` | — |
+
+## API Token
+
+| 属性 | 值 |
+|------|-----|
+| Token | `9b194899-23fc-4db9-bebe-b2eba5a8f07a` |
+| 名称 | `hermes` |
+| 根目录 | `/` |
+| 过期 | 永不过期 |
+| 权限 | 全部 45 项 |
+
+---
+
+## 鉴权方式
+
+```http
+Authorization: Bearer 9b194899-23fc-4db9-bebe-b2eba5a8f07a
+```
+
+错误码:
+- `grpc-status: 16` `Invalid auth token` — token 格式错误
+- `grpc-status: 16` `No valid auth token` — 未提供 token
+
+---
+
+## gRPC-web 协议
+
+### 请求格式
+
+```
+POST http://192.168.6.23:19798/clouddrive.CloudDriveFileSrv/<方法名>
+Content-Type: application/grpc-web+proto
+X-Grpc-Web: 1
+Authorization: Bearer <token>
+
+Body: gRPC-web 帧
+```
+
+### 帧结构
+
+```
+请求帧: | 1B flags(0x00) | 4B 大端长度 | protobuf 消息体 |
+响应帧: | 1B flags | 4B 大端长度 | protobuf 消息体 |
+```
+
+**响应帧 flags 含义**:
+- `0x00` = 普通数据帧
+- `0x80` = 最后一帧,包含 gRPC trailer(grpc-status 等)在 protobuf 数据之后
+
+### gRPC 状态码
+
+| 码 | 含义 |
+|----|------|
+| 0 | OK |
+| 5 | NOT_FOUND |
+| 7 | PERMISSION_DENIED |
+| 12 | UNIMPLEMENTED |
+| 13 | INTERNAL |
+| 16 | UNAUTHENTICATED |
+
+---
+
+## ✅ 完整 Python 客户端(已验证可用)
+
+以下客户端已通过实测,支持列出任意云盘目录。
+
+```python
+#!/usr/bin/env python3
+"""
+CloudDrive2 gRPC-web API 客户端
+依赖: 无(仅标准库)
+用法: python3 clouddrive_client.py
+"""
+import struct
+import subprocess
+import tempfile
+import os
+import re
+
+BASE = "http://192.168.6.23:19798"
+SVC = "clouddrive.CloudDriveFileSrv"
+TOKEN = "9b194899-23fc-4db9-bebe-b2eba5a8f07a"
+
+
+def make_frame(proto_body: bytes) -> bytes:
+    """构建 gRPC-web 请求帧"""
+    return b'\x00' + struct.pack('>I', len(proto_body)) + proto_body
+
+
+def call(method: str, proto_body: bytes = b"") -> bytes:
+    """
+    调用 gRPC 方法,返回纯 protobuf 响应体(已跳过帧头和 trailer)
+    抛出 RuntimeError 如果 grpc-status != 0
+    """
+    data = make_frame(proto_body)
+    with tempfile.NamedTemporaryFile(delete=False) as f:
+        f.write(data)
+        tmp = f.name
+
+    try:
+        result = subprocess.run([
+            'curl', '-s', '--connect-timeout', '15', '-X', 'POST',
+            f'{BASE}/{SVC}/{method}',
+            '-H', 'Content-Type: application/grpc-web+proto',
+            '-H', 'X-Grpc-Web: 1',
+            '-H', f'Authorization: Bearer {TOKEN}',
+            '--data-binary', f'@{tmp}',
+            '-o', '/tmp/grpc_body.bin', '-D', '/tmp/grpc_hdr.txt'
+        ], capture_output=True, text=True, timeout=20)
+
+        with open('/tmp/grpc_body.bin', 'rb') as fb:
+            raw = fb.read()
+
+        # 解析 gRPC-web 响应帧
+        bodies = []
+        i = 0
+        grpc_status = None
+        while i + 5 <= len(raw):
+            flags = raw[i]; i += 1
+            msg_len = struct.unpack('>I', raw[i:i+4])[0]; i += 4
+            if i + msg_len > len(raw):
+                break
+            chunk = raw[i:i+msg_len]
+            i += msg_len
+
+            if flags & 0x80:
+                # trailer 帧:解析 grpc-status
+                for line in chunk.decode('utf-8', errors='replace').split('\r\n'):
+                    if line.startswith('grpc-status:'):
+                        grpc_status = int(line.split(':')[1].strip())
+            else:
+                bodies.append(chunk)
+
+        if grpc_status and grpc_status != 0:
+            raise RuntimeError(f"gRPC error: status={grpc_status}")
+
+        return b"".join(bodies)
+    finally:
+        os.unlink(tmp)
+
+
+def encode_path(path: str) -> bytes:
+    """编码 path 字段(field 1, wire type 2 = string)"""
+    data = path.encode('utf-8')
+    return bytes([0x0a, len(data)]) + data
+
+
+def extract_strings(body: bytes, min_len: int = 3) -> list[str]:
+    """从 protobuf 中提取所有可读 ASCII 字符串"""
+    result = []
+    current = b""
+    for byte in body:
+        if 32 <= byte < 127:
+            current += bytes([byte])
+        else:
+            if len(current) >= min_len:
+                result.append(current.decode('ascii', errors='replace'))
+            current = b""
+    if len(current) >= min_len:
+        result.append(current.decode('ascii', errors='replace'))
+    return result
+
+
+def list_dir(path: str) -> list[str]:
+    """
+    列出目录内容,返回文件名列表。
+    自动过滤系统噪音(ID、路径、URL 等)。
+    """
+    body = call("GetSubFiles", encode_path(path))
+    strings = extract_strings(body, min_len=3)
+
+    skip = ['grpc-status', 'token=', 'https://', '/static/',
+            'CloudDrive', '<br>', '115open', 'OneDrive', 'Open']
+    seen = set()
+    names = []
+
+    for s in strings:
+        if any(k in s for k in skip):
+            continue
+        if re.match(r'^\d{10,}$', s):          # 纯数字 ID
+            continue
+        if re.match(r'^[A-F0-9]{25,}$', s):    # 哈希值
+            continue
+        if s.startswith('/') or s.startswith('b/'):
+            continue
+        if '@' in s:
+            continue
+
+        name = s.strip()
+        if name and name not in seen and len(name) > 1:
+            seen.add(name)
+            names.append(name)
+
+    return names
+
+
+# ========== 使用示例 ==========
+if __name__ == '__main__':
+    # 列出 115 网盘根目录
+    print("📂 115 网盘:")
+    for name in list_dir("/115open"):
+        print(f"   • {name}")
+
+    print()
+    print("📂 OneDrive:")
+    for name in list_dir("/OneDrive"):
+        print(f"   • {name}")
+
+    print()
+    print("📂 阿里云盘:")
+    for name in list_dir("/阿里云盘Open"):
+        print(f"   • {name}")
+```
+
+### 运行
+
+```bash
+python3 clouddrive_client.py
+```
+
+不需要安装任何第三方依赖(纯标准库 + curl)。
+
+---
+
+## ✅ 已验证的 gRPC 方法
+
+### GetSubFiles — 列出目录
+
+**请求**:`{path: "/115open"}` (field 1, string)
+
+```python
+body = call("GetSubFiles", encode_path("/115open"))
+```
+
+**实测路径**:
+
+| 路径 | 内容 |
+|------|------|
+| `/` | 列出所有挂载的云盘 |
+| `/115open` | 115 网盘根目录(含 Atomic Heart、PRAGMATA 等) |
+| `/OneDrive` | OneDrive 目录(DOS、KaliLinux、PythonStudy、SQL 等) |
+| `/阿里云盘Open` | 阿里云盘根目录 |
+
+### GetApiTokenInfo — 获取 token 信息
+
+**请求**:`{token: "9b194899-..."}` (field 1, string)
+
+```python
+req = bytes([0x0a, 36]) + TOKEN.encode()
+body = call("GetApiTokenInfo", req)
+# 返回 token 元数据(根目录、权限等)
+```
+
+### GetMountPoints — 获取挂载点列表
+
+```python
+body = call("GetMountPoints")
+# 返回本地挂载路径信息
+```
+
+### GetSpaceInfo — 空间使用情况
+
+**请求**:`{path: "/115open"}`
+
+```python
+body = call("GetSpaceInfo", encode_path("/115open"))
+```
+
+---
+
+## 常用 gRPC 方法速查
+
+> ⚠️ 方法名从 CloudDrive2 二进制中提取,注意不要用 `GetSubFilesGetSubFiles` 这种重复名(grep 拼接产物),实际方法名是 `GetSubFiles`。
+
+### 文件操作
+
+| 方法名 | 功能 | 参数 |
+|--------|------|------|
+| `GetSubFiles` ✅ | 列出子目录 | path (field 1, string) |
+| `CreateFolder` | 创建文件夹 | path |
+| `CreateFile` | 创建文件 | path, content |
+| `RenameFile` | 重命名 | old_path, new_path |
+| `DeleteFile` | 删除(回收站) | path |
+| `DeleteFilePermanently` | 永久删除 | path |
+| `CopyFile` | 复制 | src, dst |
+| `MoveFile` | 移动 | src, dst |
+| `GetSearchResults` | 搜索 | query, path |
+| `GetFileDetailProperties` | 文件详情 | path |
+
+### 下载/上传
+
+| 方法名 | 功能 |
+|--------|------|
+| `GetDownloadUrlPath` | 获取下载直链 |
+| `WriteToFile` | 写入文件 |
+| `GetDownloadFileList` | 下载任务列表 |
+| `GetUploadFileList` | 上传任务列表 |
+
+### 空间/系统
+
+| 方法名 | 功能 |
+|--------|------|
+| `GetSpaceInfo` ✅ | 空间使用情况 |
+| `GetRuntimeInfo` | 运行时信息 |
+| `GetSystemInfo` | 系统信息 |
+| `GetSystemSettings` | 系统设置 |
+| `SetSystemSettings` | 修改设置 |
+
+### Token 管理
+
+| 方法名 | 功能 |
+|--------|------|
+| `GetApiTokenInfo` ✅ | 查询 token 信息 |
+| `ListTokens` | 列出所有 token |
+| `CreateToken` | 创建 token |
+| `RemoveToken` | 删除 token |
+| `ModifyToken` | 修改 token 权限 |
+
+### 挂载点
+
+| 方法名 | 功能 |
+|--------|------|
+| `GetMountPoints` ✅ | 列出挂载点 |
+| `AddMountPoint` | 添加挂载点 |
+| `RemoveMountPoint` | 移除挂载点 |
+| `Mount` / `Unmount` | 挂载/卸载 |
+
+### 离线下载
+
+| 方法名 | 功能 |
+|--------|------|
+| `AddOfflineFiles` | 添加离线下载 |
+| `ListOfflineFilesByPath` | 按路径列离线任务 |
+| `ListAllOfflineFiles` | 所有离线任务 |
+| `RemoveOfflineFiles` | 删除离线任务 |
+
+---
+
+## Protobuf 编码速查
+
+CloudDrive2 的请求参数简单,主要是 string 字段:
+
+```python
+# field N, string value
+def encode_string(field_num: int, value: str) -> bytes:
+    tag = (field_num << 3) | 2   # wire type 2 = LEN
+    data = value.encode('utf-8')
+    return bytes([tag, len(data)]) + data
+
+# 常用:
+# path -> field 1:  0x0a + len + path_bytes
+# token -> field 1: 0x0a + len + token_bytes
+```
+
+**实测参数映射**(通过交叉验证推测):
+
+| 方法 | 参数 | 编码 |
+|------|------|------|
+| `GetSubFiles` | path (field 1) | `0x0a` + len + path |
+| `GetApiTokenInfo` | token (field 1) | `0x0a` + len + token |
+| `GetSpaceInfo` | path (field 1) | `0x0a` + len + path |
+| `CreateFolder` | path (field 1) | `0x0a` + len + path |
+
+---
+
+## 踩坑记录
+
+### 1. 方法名不要用 grep 拼接结果
+
+从二进制 `strings` 提取时,`GetSubFilesGetSubFiles` 是 grep 把相邻同名方法串在一起。实际方法名是 `GetSubFiles`。
+
+### 2. gRPC-web response trailer 解析
+
+CloudDrive2 的 gRPC 响应可能把 `grpc-status` 放在最后的 trailer 帧中(flags=`0x80`),而不是 HTTP header。需要解析 trailer 帧才能拿到正确的状态码。
+
+```python
+if flags & 0x80:
+    # trailer 帧内容: "grpc-status:0\r\ngrpc-message:...\r\n"
+    for line in chunk.decode('utf-8').split('\r\n'):
+        if line.startswith('grpc-status:'):
+            status = int(line.split(':')[1])
+```
+
+### 3. Python requests 库版本问题
+
+Hermes venv 中的 Python 3.11 + requests 的 urllib3 有类型注解兼容性问题。**直接用 subprocess + curl** 绕过,零依赖。
+
+### 4. 路径编码
+
+中文路径(如 `/阿里云盘Open`)直接用 UTF-8 编码即可,CloudDrive2 内部处理正确。
+
+### 5. 空目录返回
+
+`GetSubFiles` 对空目录返回空 body(0 字节 protobuf),这是正常的。
+
+---
+
+## WebDAV(替代方案)
+
+WebDAV 已启用但没有配置用户(`dav_users: []`)。
+
+要在 Web UI 中添加 DAV 用户后使用:
+
+```bash
+# macOS 挂载
+mkdir -p /tmp/clouddrive
+mount_webdav http://192.168.6.23:19798/dav/ /tmp/clouddrive
+```
+
+---
+
+## 相关笔记
+
+- [[家庭实验室/Docker服务/Docker-compose合集/Clouddrive2|CloudDrive2 Docker 部署]]
+- [[VPS/服务器清单|服务器清单]]
+- [[家庭实验室/群晖NAS/群晖密钥登录|群晖 SSH 密钥登录]]
+
+---
+
+## 更新日志
+
+- **2026-08-01 v2**:添加完整 Python 客户端(已验证)、修复方法名、添加 trailer 解析、添加踩坑记录、添加全部 5 个云盘挂载信息
+- **2026-08-01 v1**:初始版本

+ 0 - 0
家庭实验室/软路由/群晖/Finalshell无法显示文件.md → 家庭实验室/群晖NAS/Finalshell无法显示文件.md


+ 0 - 0
家庭实验室/软路由/群晖/NAS上设置 Python 虚拟环境.md → 家庭实验室/群晖NAS/NAS上设置 Python 虚拟环境.md


+ 0 - 0
家庭实验室/软路由/群晖/Nas降级.md → 家庭实验室/群晖NAS/Nas降级.md


+ 0 - 0
家庭实验室/软路由/群晖/Synology.md → 家庭实验室/群晖NAS/Synology.md


+ 0 - 0
家庭实验室/软路由/群晖/可视化群晖系统文件Winscp.md → 家庭实验室/群晖NAS/可视化群晖系统文件Winscp.md


+ 0 - 0
家庭实验室/软路由/群晖/套件来源.md → 家庭实验室/群晖NAS/套件来源.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖 NAS 通过 frp 实现内网穿透.md → 家庭实验室/群晖NAS/群晖 NAS 通过 frp 实现内网穿透.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖2.5G网卡安装教程.md → 家庭实验室/群晖NAS/群晖2.5G网卡安装教程.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖Docker-compose配置.md → 家庭实验室/群晖NAS/群晖Docker-compose配置.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖Docker指令.md → 家庭实验室/群晖NAS/群晖Docker指令.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖Docker镜像加速.md → 家庭实验室/群晖NAS/群晖Docker镜像加速.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖Root权限配置(密钥).md → 家庭实验室/群晖NAS/群晖Root权限配置(密钥).md


+ 0 - 0
家庭实验室/软路由/群晖/群晖SMB配置.md → 家庭实验室/群晖NAS/群晖SMB配置.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖指令.md → 家庭实验室/群晖NAS/群晖指令.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖指令记录.md → 家庭实验室/群晖NAS/群晖指令记录.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖获取ROOT权限使用winscp.md → 家庭实验室/群晖NAS/群晖获取ROOT权限使用winscp.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖计划任务.md → 家庭实验室/群晖NAS/群晖计划任务.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖部署centos+宝塔.md → 家庭实验室/群晖NAS/群晖部署centos+宝塔.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖问题.md → 家庭实验室/群晖NAS/群晖问题.md


+ 0 - 0
家庭实验室/软路由/群晖/群晖隐藏共享.md → 家庭实验室/群晖NAS/群晖隐藏共享.md


+ 0 - 0
家庭实验室/软路由/群晖/黑群晖Active Backup for Business激活.md → 家庭实验室/群晖NAS/黑群晖Active Backup for Business激活.md


+ 0 - 0
家庭实验室/软路由/群晖/黑群晖RR升级.md → 家庭实验室/群晖NAS/黑群晖RR升级.md


+ 0 - 0
家庭实验室/软路由/群晖/黑群晖私有服务器部署.md → 家庭实验室/群晖NAS/黑群晖私有服务器部署.md


+ 0 - 64
工具与开发/数据库/MySql.md

@@ -1,64 +0,0 @@
----
-notion-id: 539b0bf0-daf9-4ea4-9e2b-4e9d9563cdef
----
-[[Mysql Workbench]]
-[康师傅笔记](工具与开发/数据库/康师傅笔记/康师傅笔记.md)
-[Navicat破解【含解压密码】](工具与开发/数据库/Navicat破解【含解压密码】.md)
-[MySql语句使用教程](工具与开发/数据库/MySql语句使用教程.md)
-[Mysqlbinlog恢复数据](工具与开发/数据库/Mysqlbinlog恢复数据.md)
-[binlog2sql回滚数据【注意mysql版本】](工具与开发/数据库/binlog2sql回滚数据【注意mysql版本】.md)
-> [!note]+ # 安装配置问题
-> > [!note]+ **修改数据库和表的字符编码**
-> > ```sql
-> > mysq1>alter table student charset utf8 ;#修改表字符编码为UTF8
-> > 
-> > mysq1>alter database 0728db charset utf8;#修改数据库的字符编码为utf8
-> > ```
-> 
-> > [!note]+ **说明每个账号权限都有相关配置登录ip配置**
-> > ```javascript
-> > 措误号码1130Host 'SL'is not allowed to connect to this MySQL server
-> > 
-> > 原因:root权限配置只支持本地登录
-> > 
-> > 解决:服务端使用workbench登录 选择users and privileges 将root权限localhost修改成%即可
-> > 
-> > 
-> > ```
-> 
-> > [!note]+ **多个mysql版本配置【针对wamp】**
-> > ```javascript
-> > 一、使用services.msc停止mysql服务
-> > 二、进入C:\ProgramData\MySQL\MySQL Server 8.0修改my.ini文件内
-> > 		port=3306修改为其他端口例如port=3506【注意有两处需要修改】
-> > 三、修改完毕、进入防火墙设置将入站设置端口开放例如3506【此处重点】
-> > 四、重复第一步骤开启mysql服务即可。
-> > 五、安装wamp即可,注意配置端口,并检查防火墙入站规则是否允许端口进入。
-> > 
-> > 注意:原来的mysql无法连接,检查服务器是否停止,重启即可
-> > ```
-> 
-> > [!note]+ **修改登录密码**
-> > ```sql
-> > 1、停止服务
-> > 2、添加my.ini参数skip-grant-tables
-> > 3、启动服务
-> > 4、使用指令登录系统mysql-u root -p不与需要输入密码
-> > 
-> > #使用mysq1数据库
-> > USE mysql;
-> > #修改'root'@'1oca1host'用户的密码规则和密码
-> > ALTER USER root'@'localhost' IDENTIFIED WITH mysql_native_password BY ' abc123';
-> > #刷新权限
-> > FLUSH PRIVILEGES;
-> > 
-> > 5、注意修改完毕以后将my.ini参数注释掉!
-> > ```
-[实操记录](工具与开发/数据库/实操记录.md)
-```shell
-GRANT ALL PRIVILEGES ON *.* TO 'kali'@'%' WITH GRANT OPTION;
-
-CREATE USER 'kali'@'%' IDENTIFIED BY '123456';
-
-FLUSH PRIVILEGES;
-```

+ 0 - 23
工具与开发/数据库/康师傅笔记/康师傅笔记.md

@@ -1,23 +0,0 @@
----
-notion-id: 1dfebf8b-162b-4202-bb4c-96f00ef882bd
----
-# mysql笔记
-```sql
-DDL:数据定义语言:创建和操作数据和表
-CREATE \ ALTER \ DROP \ RENAME \TRUNCATE
-DML:数据操作语言
-INSERT \ DELETE \ UPDATE \ SELECT
-DCL:数据控制语言
-COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
-```
-**SQL语言的规则与规范**
-> [!note]+ **mysql 导入数据方式:**
-> 方式一:
-> 进入mysql终端界面 输入`source c:\atguigudb.sql;`
-> 方式二:
-> 在图像界面`执行sql脚本`。
-
-> [!note]+ **mysql删除数据方式:**
-> `DROP DATABASE Database_Name;` 终端输入。
-
-[多表JOIN连接+UNOIN](工具与开发/数据库/康师傅笔记/多表JOIN连接+UNOIN.md)

+ 0 - 0
技术支持/AI技术支持/AI技术支持.md


+ 0 - 28
技术支持/AI技术支持/Dify.md

@@ -1,28 +0,0 @@
----
-notion-id: 1e5ca4d7-cb7b-8083-b010-c17b202808d3
----
-# 零、说明文档
-[https://docs.dify.ai/zh-hans/introduction](https://docs.dify.ai/zh-hans/introduction)
-# 一、安装Dify
-```javascript
-git clone https://ghproxy.net/https://github.com/langgenius/dify.git
-```
-# **二、启动 Dify**
-1. 进入 Dify 源代码的 Docker 目录
-`cd dify/docker`
-2. 复制环境配置文件
-`cp .env.example .env`
-3. 启动 Docker 容器
-根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 `**$ docker compose version**` 命令检查版本,详细说明请参考 [**Docker 官方文档**](https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command):
-    - 如果版本是 Docker Compose V2,使用以下命令:
-`docker compose up -d`
-    - 如果版本是 Docker Compose V1,使用以下命令:
-`docker-compose up -d`
-
-# **三、更新 Dify**
-进入 dify 源代码的 docker 目录,按顺序执行以下命令:
-`cd dify/docker`
-`docker compose down`
-`git pull origin main`
-`docker compose pull`
-`docker compose up -d`

+ 0 - 39
技术支持/AI技术支持/Dify技巧.md

@@ -1,39 +0,0 @@
----
-notion-id: 1feca4d7-cb7b-808d-bb4b-d65005ff06dc
----
-```plain text
-你是一个乐于助人的助手
-使用以下内容作为你所学习的知识,放在<context>
-</context>XML标签内
-```
-<context>
-{{#context#}}
-</context>
-回答用户时:
-如果你不知道,就直说你不知道。如果你在不确定的时候不知道,就寻求澄清。
-避免提及你是从上下文中获取的信息。
-并根据用户问题的语言来回答。
-```
-
-```
-正则表达式排除标签内容:
-```plain text
-(?=<\/think\n)[\s\S]*
-```
-系统提示词
-```plain text
-##任务
-将用户给出的问题的内容根据关键词提取,用于检索知识库内容
-##输出
-输出多个关键字或关键词,关键字或关键词之间用空格分隔,无需生成多余的文本,禁止直接回复用户的问题
-```
-
-```plain text
-##角色
-你是一个专业的空间情绪整理大师,擅长根据知识库的内容回复客户问题
-##背景
-严格根据知识库的内容进行回复
-##任务
-严格根据知识库的内容回复用户的问题
-{{#context#}}
-```

+ 0 - 20
技术支持/AI技术支持/MCP.md

@@ -1,20 +0,0 @@
----
-notion-id: 244ca4d7-cb7b-8089-b0ab-c6f3b771d5fd
----
-在wsl运行mcp配置,注意command 是wsl,如果wsl使用的是windows环境的那么会报错
-必须先检查下运行环境是否在wsl,检查指令`which node`
-```shell
-{
-  "mcpServers": {
-    "filesystem": {
-      "command": "wsl",
-      "args": [
-        "npx",
-        "-y",
-        "@modelcontextprotocol/server-filesystem",
-        "/mnt/d/Github/snake_game"
-      ]
-    }
-  }
-}
-```

+ 0 - 25
技术支持/AI技术支持/Ragflow.md

@@ -1,25 +0,0 @@
----
-notion-id: 217ca4d7-cb7b-80d0-ab43-c272c3d55f49
----
-# 一、Docker安装
-克隆仓库
-```javascript
-git clone https://ghproxy.net/https://github.com/infiniflow/ragflow.git
-```
-进入文件
-```javascript
-cd ragflow
-```
-运行脚本
-```javascript
-docker compose -f docker-compose.yml up -d
-```
-# 二、基础操作
-访问IP地址默认是80端口,也可以配置成其他端口
-`http://localhost:80`
-配置文本识别模型`nomic-embed-text:latest`
-# 三、基础配置
-1,Dfiy配置外部知识库 API
-`http://localhost:80/api/v1/dify`
-2、知识库ID
-![[Notion/技术支持/AI技术支持/attachments/image.png]]

+ 0 - 5
技术支持/K8S.md

@@ -1,5 +0,0 @@
----
-notion-id: 1d2ca4d7-cb7b-8070-9add-f672069cbdaa
----
-参考地址:
-[https://blog.csdn.net/C3245073527/article/details/140278749](https://blog.csdn.net/C3245073527/article/details/140278749)

+ 0 - 11
技术支持/Kubernetes/Kubernetes.md

@@ -1,11 +0,0 @@
----
-notion-id: f50ae174-8c0c-414a-bb87-6b8ac1f0f7f8
----
-
-[Kubernetes笔记本基础](技术支持/Kubernetes/Kubernetes笔记本基础.md)
-[Kubernetes初始部署流程](技术支持/Kubernetes/Kubernetes初始部署流程/Kubernetes初始部署流程.md)
-[Kubernets【HELM】](技术支持/Kubernetes/Kubernets【HELM】.md)
-[Kubernetes配置YAML](技术支持/Kubernetes/Kubernetes配置YAML.md)
-[Kubernetes认证](技术支持/Kubernetes/Kubernetes认证.md)
-[Kubernetes指令](技术支持/Kubernetes/Kubernetes指令.md)
-[Windows加入集群](技术支持/Kubernetes/Windows加入集群.md)

+ 0 - 307
技术支持/Kubernetes/Kubernetes初始部署流程/Kubernetes初始部署流程.md

@@ -1,307 +0,0 @@
----
-notion-id: 436ce6a1-fa69-4d0f-85aa-b8ced8daa92c
----
-## 修改HOSTMANE
-```shell
-hostnamectl set-hostname <hostname>
-```
-# **系统固定IP地址**
-```shell
-vi /etc/sysconfig/network-scripts/ifcfg-ens33
-
-#修改并添加
-TYPE="Ethernet"
-PROXY_METHOD="none"
-BROWSER_ONLY="no"
-BOOTPROTO="static"             # 设置为静态
-DEFROUTE="yes"
-IPADDR="10.10.10.100"         # 设置的固定IP地址
-NETMASK="255.255.255.0"       # 子网掩码
-GATEWAY="10.10.10.252"        # 您提供的网关地址
-IPV4_FAILURE_FATAL="no"
-IPV6INIT="yes"
-IPV6_AUTOCONF="yes"
-IPV6_DEFROUTE="yes"
-IPV6_FAILURE_FATAL="no"
-IPV6_ADDR_GEN_MODE="stable-privacy"
-NAME="ens33"
-UUID="e1fd5e03-5f3a-4a2d-b656-f435e1df5c82"
-DEVICE="ens33"
-ONBOOT="yes"
-DNS1="10.10.10.252"                # Google的公共DNS 1
-DNS2="114.114.114.114"                # Google的公共DNS 2
-
-#重启网络
-sudo systemctl restart network
-
-#修改centos源文件
-#备份
-sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-#修改
-sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
-#更新缓存
-sudo yum clean all
-sudo yum makecache
-```
-# **防火墙配置**
-```shell
-sudo systemctl status firewalld  #查看防火墙状态
-
-sudo firewall-cmd --list-ports  #查看防火墙开启端口
-
-#添加防火墙端口
-sudo firewall-cmd --add-port=6443/tcp --permanent
-
-sudo firewall-cmd --add-port=10250/tcp --permanent
-
-
-
-#重启防火墙
-sudo firewall-cmd --reload
-
-#关闭防火墙【推荐 因为会导致部署失败】
-
-sudo systemctl stop firewalld
-
-#永久关闭防火墙
-sudo systemctl disable firewalld
-```
-# 安装配置DOCKER镜像源
-```shell
-wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
-```
-```shell
-yum -y install docker-ce-18.06.1.ce-3.el7
-```
-```shell
-#开机启动并且开启
-systemctl enable docker && systemctl start docker
-
-
-sudo systemctl daemon-reload #重新加载 Systemd 守护进程的配置文件
-
-sudo systemctl restart docker
-```
-```shell
-sudo mkdir -p /etc/docker
-sudo tee /etc/docker/daemon.json <<-'EOF'
-{
-  "registry-mirrors": ["https://npn4djke.mirror.aliyuncs.com"]
-}
-EOF
-```
-## 设定时间
-```shell
-#配置时间
-sudo yum install -y ntp
-
-sudo systemctl start ntpd
-
-sudo systemctl enable ntpd
-
-#查看当前时间
-timedatectl
-```
-# **关闭SELinux**
-SELinux在默认情况下可能会干扰Kubernetes的操作,所以你应该暂时关闭它:
-```yaml
-sudo setenforce 0
-sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
-```
-# **禁用swap**
- Kubernetes需要禁用swap,你可以通过如下命令来实现:
-```shell
-sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
-
-sudo swapoff -a
-```
-## MASTER配置host
-```shell
-cat >> /etc/hosts << EOF
-192.168.31.61 k8s-master
-192.168.31.62 k8s-node1
-192.168.31.63 k8s-node2
-EOF
-```
-## 将桥接的 IPv4 流量传递到 iptables 的链
-```shell
-cat > /etc/sysctl.d/k8s.conf << EOF
-net.bridge.bridge-nf-call-ip6tables = 1
-net.bridge.bridge-nf-call-iptables = 1
-EOF
-
-sysctl --system   #重新加载所有可用配置文件中的 sysctl 设置
-```
-# Kubernetes组件
-对于Kubernetes组件的安装,首先设置Kubernetes的yum仓库:
-```shell
-cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
-[kubernetes]
-name=Kubernetes
-baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
-enabled=1
-gpgcheck=1
-repo_gpgcheck=1
-gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
-EOF
-```
-然后安装kubelet,kubeadm,和kubectl:
-```shell
-sudo yum install -y kubelet kubeadm kubectl
-
-sudo systemctl enable --now kubelet
-```
-# **containerd配置**
-```shell
-sudo yum install containerd       #安装服务器
-
-sudo systemctl start containerd    #启动服务器
-
-sudo systemctl enable containerd   #开机启动服务器
-
-sudo systemctl status containerd   #查看服务状态
-
-sudo systemctl restart containerd   #重启服务器
-
-sudo systemctl daemon-reload        #重新加载 Systemd 守护进程的配置文件
-
-#如果报错kubeadm init无法连接containerd,请执行
-rm -rf /etc/containerd/config.toml
-#然后执行
-sudo systemctl restart containerd
-```
-# **初始化集群**
-```shell
-kubeadm init \
---apiserver-advertise-address=10.10.10.100 \
---image-repository registry.aliyuncs.com/google_containers \
---service-cidr=10.96.0.0/12 \
---pod-network-cidr=10.244.0.0/16
-
-
-#--apiserver-advertise-address=10.10.10.100 \                 主节点
-#--image-repository registry.aliyuncs.com/google_containers \ 源文件
-#--service-cidr=10.96.0.0/12 \                                serviceIP范围
-#--pod-network-cidr=10.244.0.0/16                             网络插件控制范围
-```
-
-> 在运行 `**kubeadm init**` 后,会生成一个 `**/etc/kubernetes/admin.conf**` 文件。这个文件是一个 `**kubeconfig**` 文件,它包含了一些信息,包括:用来连接 Kubernetes API 服务器的地址和端口信息。默认的 namespace。用来进行身份验证的证书信息或者 token。
-
-> 当你运行 `**export KUBECONFIG=/etc/kubernetes/admin.conf**` 后,你就告诉 `**kubectl**` 命令行工具在需要连接到 Kubernetes 集群时,应该从这个文件中读取上述信息。
-
-> 如果你没有设置 `**KUBECONFIG**` 环境变量,`**kubectl**` 默认会从 `**~/.kube/config**` 文件中读取这些信息。你可以通过设置 `**KUBECONFIG**` 环境变量来改变这个默认行为,这样就可以方便地在不同的 Kubernetes 集群之间切换。
-
-> 也就是说,`**KUBECONFIG**` 环境变量是 `**kubectl**` 知道如何连接到你的 Kubernetes 集群的关键。
-
-
-```yaml
-将export KUBECONFIG=/etc/kubernetes/admin.conf配置进.bashrc 避免每次开机都要配置
-```
-# **部署网络插件**
-[https://kubernetes.io/docs/concepts/cluster-administration/addons/](https://kubernetes.io/docs/concepts/cluster-administration/addons/)
-## 网络插件
-```shell
-#Calico 网络插件
-
-kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
-
-#WEAVE
-kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
-```
-### WEAVE插件
-```shell
-
-kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
-```
-## WEAVE-SCOPE
-```shell
-kubectl apply -f https://github.com/weaveworks/scope/releases/download/v1.13.2/k8s-scope.yaml
-```
-[https://zhuanlan.zhihu.com/p/586486482](https://zhuanlan.zhihu.com/p/586486482)
-[WEAVE\_SCOPE\_YAML](技术支持/Kubernetes/Kubernetes初始部署流程/WEAVE_SCOPE_YAML.md)
-> [!note]+ 插件删除
-> 1. 首先,你需要彻底删除原有的网络插件。对于大部分网络插件,你可以运行 `**kubectl delete -f**` 命令并指向原插件的 YAML 文件,例如 `**kubectl delete -f calico.yaml**`。然而,这不一定会删除所有相关资源,你可能还需要手动删除一些遗留的网络接口、配置或数据。
-> 2. 其次,你需要确保所有的节点都清理了原有网络插件的遗留,并且已经就绪。这可能需要重启节点,或者运行一些特定的清理脚本。
-> 3. 最后,你可以部署新的网络插件。这通常是通过运行 `**kubectl apply -f**` 命令并指向新插件的 YAML 文件,例如 `**kubectl apply -f weave.yaml**`。
-> 
-> 这个过程可能会引起集群的服务中断,因为在新的网络插件部署并开始工作之前,Pod 之间可能无法进行网络通信。所以,在生产环境中,这种操作应该在维护窗口内进行,并且需要提前通知所有的用户和利益相关者。
-
-### 测试集群
-```shell
-
-kubectl create deployment nginx --image=nginx
-kubectl expose deployment nginx --port=80 --type=NodePort
-kubectl get pod,svc
-
-访问地址:http://NodeIP:Port
-```
-## 配置kubernetes dashboard
-[https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/)
-## 参考文献
-[https://www.cnblogs.com/chen2ha/p/17086962.html](https://www.cnblogs.com/chen2ha/p/17086962.html)
-**注意要点可以先下载配置文件并配置nodeport ,如果出现必须https访问可以输入**`thisisunsafe`
-```shell
-#安装
-kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
-
-#配置代理
-kubectl proxy --address='0.0.0.0' --accept-hosts='^.*$' --port=8001
-
-#外网访问
-https://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
-
-kubectl get secret --all-namespaces -o wide
-```
-`注意自定配置【NodePort】`
-[[IMG-20260516155648708.yaml]]
-```bash
-只需要通过IP:nodeprot 就可以登陆
-```
-### **Service Account,ClusterRoleBinding,long-lived**配置合集
-[[IMG-20260516155648758.yaml]]
-### **Creating a Service Account**
-```yaml
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: admin-user
-  namespace: kubernetes-dashboard
-```
-### **Creating a ClusterRoleBinding**
-```yaml
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  name: admin-user
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: cluster-admin
-subjects:
-- kind: ServiceAccount
-  name: admin-user
-  namespace: kubernetes-dashboard
-```
-### **Getting a Bearer Token for ServiceAccount**
-```yaml
-kubectl -n kubernetes-dashboard create token admin-user
-```
-### **Getting a long-lived Bearer Token for ServiceAccount**
-```yaml
-apiVersion: v1
-kind: Secret
-metadata:
-  name: admin-user
-  namespace: kubernetes-dashboard
-  annotations:
-    kubernetes.io/service-account.name: "admin-user"   
-type: kubernetes.io/service-account-token
-```
-```yaml
-kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
-```
-### **Clean up and next steps**
-```yaml
-kubectl -n kubernetes-dashboard delete serviceaccount admin-user
-kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
-```

+ 0 - 322
技术支持/Kubernetes/Kubernetes初始部署流程/WEAVE_SCOPE_YAML.md

@@ -1,322 +0,0 @@
----
-notion-id: 4f49e4ba-e72d-4f82-a05c-70b551498bc1
----
-```yaml
-apiVersion: v1
-kind: List
-items:
-  - apiVersion: v1
-    kind: Namespace
-    metadata:
-      name: weave
-  - apiVersion: rbac.authorization.k8s.io/v1
-    kind: ClusterRole
-    metadata:
-      labels:
-        name: weave-scope
-      name: weave-scope
-      namespace: weave
-    rules:
-      - apiGroups:
-          - ""
-        resources:
-          - pods
-          - pods/log
-          - replicationcontrollers
-          - services
-          - namespaces
-          - persistentvolumes
-          - persistentvolumeclaims
-        verbs:
-          - get
-          - list
-          - watch
-      - apiGroups:
-          - ""
-        resources:
-          - pods
-        verbs:
-          - delete
-      - apiGroups:
-          - apps
-        resources:
-          - deployments
-          - statefulsets
-          - daemonsets
-        verbs:
-          - get
-          - list
-          - watch
-      - apiGroups:
-          - batch
-        resources:
-          - cronjobs
-          - jobs
-        verbs:
-          - get
-          - list
-          - watch
-      - apiGroups:
-          - extensions
-        resources:
-          - daemonsets
-          - deployments
-          - deployments/scale
-          - replicasets
-        verbs:
-          - get
-          - list
-          - watch
-      - apiGroups:
-          - extensions
-        resources:
-          - deployments/scale
-        verbs:
-          - update
-      - apiGroups:
-          - apps
-        resources:
-          - deployments/scale
-        verbs:
-          - get
-          - update
-      - apiGroups:
-          - storage.k8s.io
-        resources:
-          - storageclasses
-        verbs:
-          - list
-          - watch
-      - apiGroups:
-          - extensions
-        resourceNames:
-          - weave-scope
-        resources:
-          - podsecuritypolicies
-        verbs:
-          - use
-      - apiGroups:
-          - volumesnapshot.external-storage.k8s.io
-        resources:
-          - volumesnapshots
-          - volumesnapshotdatas
-        verbs:
-          - list
-          - watch
-      - apiGroups:
-          - ""
-        resources:
-          - nodes
-        verbs:
-          - get
-          - list
-          - watch
-          - update
-          - patch
-  - apiVersion: rbac.authorization.k8s.io/v1
-    kind: ClusterRoleBinding
-    metadata:
-      name: weave-scope
-      labels:
-        name: weave-scope
-      namespace: weave
-    roleRef:
-      kind: ClusterRole
-      name: weave-scope
-      apiGroup: rbac.authorization.k8s.io
-    subjects:
-      - kind: ServiceAccount
-        name: weave-scope
-        namespace: weave
-  - apiVersion: apps/v1
-    kind: Deployment
-    metadata:
-      name: weave-scope-app
-      labels:
-        name: weave-scope-app
-        app: weave-scope
-        weave-cloud-component: scope
-        weave-scope-component: app
-      namespace: weave
-    spec:
-      replicas: 1
-      selector:
-        matchLabels:
-          app: weave-scope
-      revisionHistoryLimit: 2
-      template:
-        metadata:
-          labels:
-            name: weave-scope-app
-            app: weave-scope
-            weave-cloud-component: scope
-            weave-scope-component: app
-        spec:
-          containers:
-            - name: app
-              args:
-                - '--no-probe'
-              env: [ ]
-              image: weaveworks/scope:1.13.2
-              imagePullPolicy: IfNotPresent
-              ports:
-                - containerPort: 4040
-                  protocol: TCP
-              resources:
-                requests:
-                  cpu: 200m
-                  memory: 200Mi
-  - apiVersion: apps/v1
-    kind: DaemonSet
-    metadata:
-      name: weave-scope-agent
-      labels:
-        name: weave-scope-agent
-        app: weave-scope
-        weave-cloud-component: scope
-        weave-scope-component: agent
-      namespace: weave
-    spec:
-      minReadySeconds: 5
-      selector:
-        matchLabels:
-          app: weave-scope
-      template:
-        metadata:
-          labels:
-            name: weave-scope-agent
-            app: weave-scope
-            weave-cloud-component: scope
-            weave-scope-component: agent
-        spec:
-          containers:
-            - name: scope-agent
-              args:
-                - '--mode=probe'
-                - '--probe-only'
-                - '--probe.kubernetes.role=host'
-                - '--probe.docker.bridge=docker0'
-                - '--probe.docker=true'
-                - 'weave-scope-app.weave.svc.cluster.local.:80'
-              env:
-                - name: SCOPE_HOSTNAME
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: spec.nodeName
-              image: weaveworks/scope:1.13.2
-              imagePullPolicy: IfNotPresent
-              resources:
-                requests:
-                  cpu: 100m
-                  memory: 100Mi
-              securityContext:
-                privileged: true
-              volumeMounts:
-                - name: docker-socket
-                  mountPath: /var/run/docker.sock
-                - name: scope-plugins
-                  mountPath: /var/run/scope/plugins
-                - name: sys-kernel-debug
-                  mountPath: /sys/kernel/debug
-          dnsPolicy: ClusterFirstWithHostNet
-          hostNetwork: true
-          hostPID: true
-          tolerations:
-            - effect: NoSchedule
-              operator: Exists
-          volumes:
-            - name: docker-socket
-              hostPath:
-                path: /var/run/docker.sock
-            - name: scope-plugins
-              hostPath:
-                path: /var/run/scope/plugins
-            - name: sys-kernel-debug
-              hostPath:
-                path: /sys/kernel/debug
-      updateStrategy:
-        rollingUpdate:
-          maxUnavailable: 1
-  - apiVersion: apps/v1
-    kind: Deployment
-    metadata:
-      name: weave-scope-cluster-agent
-      labels:
-        name: weave-scope-cluster-agent
-        app: weave-scope
-        weave-cloud-component: scope
-        weave-scope-component: cluster-agent
-      namespace: weave
-    spec:
-      replicas: 1
-      selector:
-        matchLabels:
-          name: weave-scope-cluster-agent
-          app: weave-scope
-          weave-cloud-component: scope
-          weave-scope-component: cluster-agent
-      revisionHistoryLimit: 2
-      template:
-        metadata:
-          labels:
-            name: weave-scope-cluster-agent
-            app: weave-scope
-            weave-cloud-component: scope
-            weave-scope-component: cluster-agent
-        spec:
-          containers:
-            - name: scope-cluster-agent
-              args:
-                - '--mode=probe'
-                - '--probe-only'
-                - '--probe.kubernetes.role=cluster'
-                - 'weave-scope-app.weave.svc.cluster.local.:80'
-              command:
-                - /home/weave/scope
-              image: 'docker.io/weaveworks/scope:1.13.2'
-              imagePullPolicy: IfNotPresent
-              resources:
-                requests:
-                  cpu: 100m
-                  memory: 100Mi
-              volumeMounts:
-                - name: scope-plugins
-                  mountPath: /var/run/scope/plugins
-          serviceAccountName: weave-scope
-          volumes:
-            - name: scope-plugins
-              hostPath:
-                path: /var/run/scope/plugins
-  - apiVersion: v1
-    kind: ServiceAccount
-    metadata:
-      name: weave-scope
-      labels:
-        name: weave-scope
-      namespace: weave
-  - apiVersion: v1
-    kind: Service
-    metadata:
-      name: weave-scope-app
-      labels:
-        name: weave-scope-app
-        app: weave-scope
-        weave-cloud-component: scope
-        weave-scope-component: app
-      namespace: weave
-    spec:
-      ports:
-        - name: app
-          port: 80
-          protocol: TCP
-          targetPort: 4040
-      #add nodePort
-          nodePort: 30000
-      selector:
-        name: weave-scope-app
-        app: weave-scope
-        weave-cloud-component: scope
-        weave-scope-component: app
-		  #add NodePort
-      type: NodePort
-```

+ 0 - 251
技术支持/Kubernetes/Kubernetes指令.md

@@ -1,251 +0,0 @@
----
-notion-id: f928c287-f318-419a-a9c9-9c48b30a9c48
----
-## create 快速创建
-```shell
-#快速创建
-kubectl create deployment  web --images=nignx
-```
-## kubectl scale弹性伸缩
-```shell
-#弹性伸缩
-kubectl scale deployment web --replicase=5
-
-#例如
-kubectl scale <resource_type> <resource_name> --replicas=<desired_replicas>
-#<resource_type> 是需要调整的资源类型
-#<resource_name> 是需要调整副本数量的资源的名称
-#--replicas 参数用于指定期望的副本数量
-```
-## kubectl expose配置Service
-```shell
-#Kubernetes 集群中创建一个新的 Service,并将其与已经存在的资源关联起来
-kubectl expose deployment nginx --port=80 --type=NodePort
-
-#这个也是生成一个yaml文件 可以通过-o yaml > my.yaml输出
-kubectl expose <resource_type> <resource_name> --port=<port> --target-port=<target_port> --type=<service_type>
-#--port        容器本地端口
-#--type        NodePort类型
-#--target-port 目标端口
-```
-## kubectl taint污点创建和删除
-```shell
-#注意master一般都有污点NoSchedule这个值一定不创建pod
-#删除污点注意最后污点需要写上‘-’号
-
-kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-
-
-#创建污点,注意key和value是污点容忍所需要的
-#NoSchedule:一定不被调度
-#PreferNoSchedule:尽量不被调度
-#NOExecute:不会调度,并且还会驱逐Node已有的Pod
-
-kubectl taint node <node-name> <key>:<value>:NoSchedule
-```
-## kubectl set image容器升级
-```shell
-kubectl set image <resource_type> <resource_name> <container_name>=<image_name>:<版本号>
-
-#升级过程:下载新版本,原来的就版本正常运行,然后使用新版本替换旧版本
-#<container_name> 容器名称
-```
-## kubectl rollout容器版本控制
-```shell
-#查看升级信息
-kubectl rollout status <resource_type> <resource_name>
-
-#查看历史升级信息
-kubectl rollout history <resource_type> <resource_name>
-
-#回滚指定版本
-kubectl rollout undo <resource_type> <resource_name> --to-revision=<通过查看history获得版本编号>
-#不添加--to-revision 就是回滚到上个版本
-
-```
-
-## kubectl label标签创建以及作用
-```shell
-#创建NODE标签,配置YAML的时候可以通过标签调度到指定的Node范围
-
-kubectl label <node_name> <node_name> env_role=dev
-
-```
-## kubectl proxy配置代理及其原理
-```shell
-kubectl proxy --address='0.0.0.0' --accept-hosts='^.*$' --port=8001
-
-#将kubectl proxy绑定到虚拟机的所有网络接口
-#使用 kubectl proxy 开启代理后
-#你可以通过 http://localhost:8001/api/v1/namespaces/<namespace>/services/<service_name>:<port_name>/proxy/ 
-#的方式访问任意 API 服务器,并且不限于 kubernetes-dashboard 这个 API 名称。
-
-#在该 URL 中,你可以根据需要替换以下部分:
-#<namespace>: 替换为你想要访问的 Service 所在的 Namespace 名称。
-#<service_name>: 替换为你想要访问的 Service 的名称。
-#<port_name>: 替换为你想要访问的 Service 中定义的端口名称(Port Name)。
-#通过这种方式,你可以使用 kubectl proxy 代理服务器来访问集群中的各种 API 资源,包括不同的 Service、Pod、Deployment 等对象,只需根据相应的 API 路径进行调整即可。
-#这种方法非常方便,特别是在本地开发和调试时,可以快速地通过代理服务器访问集群中的 API 资源,而无需直接暴露集群的 API 服务器。
-```
-## kubeadm
-```shell
-#初始注意,这将删除当前的集群配置和状态,包括所有的 Pod、Service 等
-#因此请确保在操作前备份重要数据。
-sudo kubeadm reset
-#还需要删除sudo rm -rf /var/lib/etcd 
-
-#初始化
-sudo kubeadm init
-
-#新建节点,将获得的信息输入其他设备即可加入集群
-kubeadm token create --print-join-command --ttl=0
-```
-## kubectl apply/delet 新增和删除配置
-```shell
-#新增或修改配置文件
-kubectl apply -f <path.yaml>
-
-#删除配置文件
-kubectl delet -f <path.yaml>
-
-#删除配置环境
-kubectl delete ing/svc/deploy
-```
-## kubectl describe获取元信息
-```shell
-#查看事件
-kubectl describe nodes <node-name>
-
-#查看pod实时信息,包括pod内的容器
-kubectl describe pod <pod-name> -n <namespace>
-
-#查看配置环境
-kubectl describe ing/svc/deploy -n <namespace>
-
-```
-## kubectl logs获取日志
-```shell
-kubectl logs <pod-name> -n <namespace>
-```
-## kubectl get获取信息
-```shell
-#查看node
-kubectl get node
-
-#查看所有pod的详细信息(IP地址,运行情况)
-kubectl get pods --all-namespaces -o wide
-
-#来查看Weave空间下pod的情况
-kubectl get pods -n <namespace> 
-
-#导出pod的yaml文件
-kubectl get pods -n <namespace> -o yaml > pod.yaml
-
-#查看 Kubernetes 的services 
-kubectl get services
-
-#查看所有节点下的services 
-kubectl get services --all-namespaces -o wide
-
-#查看空间名称的services 
-kubectl get service -o wide -n <namespace>
-
-#通过yaml查看配置services 文件,注意程序名称和空间名称
-kubectl get service weave-scope-app -n weave -o yaml 3
-
-#
-kubectl get persistentvolumes
-
-#获取PV和PVC
-kubectl get pv
-
-kubectl get pvc
-
-#获取 Kubernetes 集群中定义的所有 StorageClass(存储类)资源的信息
-kubectl get storageclass
-
-#获取 Kubernetes 集群中定义的所有 StatefulSet(有状态副本集)资源的信息。
-kubectl get statefulsets
-
-#查看标签Node的标签
-kubectl get nodes <node_name> --show-labels
-
-#查看污点
-kubectl get pods -n <node-name> | grep Taint
-#结果为Taints:             node.kubernetes.io/not-ready:NoSchedule
-
-#查看后端终端
-kubectl get endpointslices --all-namespaces
-```
-## kubectl delete删除资源
-```shell
-# 其中 <pod_name> 是要删除的 Pod 的名称。删除后,Kubernetes 会自动创建一个新的 Pod
-kubectl delete pod <pod_name>
-
-kubectl delete daemonset weave-net -n kube-system
-
-## kubectl:这是 Kubernetes 命令行工具,用于与 Kubernetes 集群交互。
-## delete:这个命令用于删除 Kubernetes 集群中的资源。
-## daemonset:这是 Kubernetes 中的一种资源类型。DaemonSet 确保所有(或一些)节点上都运行一个 Pod 的副本。当有节点加入集群时,Pod 会被添加到新节点上。当有节点从集群中删除时,这些 Pod 也会被垃圾回收。
-## weave-net:这是要删除的 DaemonSet 的名称。这里,它是 Weave 网络插件的一部分,用于在 Kubernetes 集群的每个节点上运行网络相关的 Pod。
-## -n kube-system:这是一个选项,用于指定命令在哪个 Kubernetes 命名空间中执行。这里,kube-system 是一个特殊的命名空间,用于运行 Kubernetes 系统级别的 Pod 和服务。
-
-#删除PVC
-kubectl delete persistentvolumeclaim <pvc_name>
-
-#删除PV和PVC
-
-kubectl delete pvc <pvc-name>
-
-kubectl delete pvc <pvc-name>
-
-
-#删除指定命名空间下的 StatefulSet 资源及其关联的 Pod
-kubectl delete statefulset <statefulset-name> -n <namespace>
-```
-## kubectl cluster-info显示控制面板
-```yaml
-#显示 Kubernetes 控制面板的地址和端口
-kubectl cluster-info
-```
-## kubectl config获取信息以及切换
-```shell
-#获取Kubernetes配置
-kubectl config get-contexts
-#结果为
-#[root@k8s-master ~]# kubectl config get-contexts
-#CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
-#*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin
-
-#切换Kubernetes上下文
-kubectl config use-context <context-name>
-#例如
-#kubectl config use-context kubernetes-admin@kubernetes
-
-#查看Kubernetes上下文
-kubectl config current-context
-
-#完整的kubeconfig文件内容
-kubectl config view
-
-#将配置文件导出
-kubectl config --kubeconfig=$HOME/.kube/config view --merge --flatten > $HOME/.kube/config-new
-
-#将配置文件替换
-kubectl config --kubeconfig=$HOME/.kube/config-new set-context --current --kubeconfig=config-new.yaml
-```
-
-## kubectl cordon/uncordon node调度修改
-```yaml
-kubectl cordon <node-name>  
-#标记不可调度
-
-kubectl uncordon <node_name> 
-#标记可调度
-```
-## kubectl exec进入容器
-```shell
-进入POD
-
-kubectl exec -it mysql-0 -- /bin/bash
-```
-

+ 0 - 114
技术支持/Kubernetes/Kubernetes笔记本基础.md

@@ -1,114 +0,0 @@
----
-notion-id: 4244264d-b882-4ae7-9a0f-cc467923a982
----
-![[Notion/技术支持/Kubernetes/attachments/Untitled.png]]
-> [!note]+ ## HostNetwork
-> 创建POD的时候开启hostNetwork这个POD就会只用NODE主机的IP地址。
-> 
-Kubernetes 本身设计为单一集群。Kubernetes的工作方式是基于声明式配置
-> 一个Kubernetes集群由一个或多个工作节点(物理或虚拟机)和一个控制面板节点组成。每个节点都会运行Pod,这些Pod是在它们之间进行调度的。你不能在单一的Kubernetes部署中创建多个集群。
-
-> 另一种方法是使用一种称为**多集群管理**的模式,这涉及到将多个Kubernetes集群联合在一起,并使用一种集中式的工具或框架(比如Rancher,Google Anthos或者AWS EKS Anywhere)来管理它们。这样可以更好地扩展和管理跨多个地域或云的工作负载,同时仍然保持每个集群的独立性和隔离性。
-
-> 此外,Kubernetes项目还在开发一种名为**Cluster API**的项目,这是一个能够以声明式的方式创建、配置和管理Kubernetes集群的API。这样可以使得Kubernetes集群的管理和扩展变得更加容易,同时也为跨多个集群的工作负载管理提供了可能性。
-
-> **所以,总的来说,你不能在一个Kubernetes集群中创建多个集群,但你可以部署多个独立的Kubernetes集群,并有可能通过某些工具或技术来联合管理这些集群。**
-
-
----
-**三个概念的层次关系:**
-- **Kubernetes集群(Cluster)**:最顶层,代表了所有的节点和这些节点上运行的Pod。
-- **节点(Node)**:集群中的单个服务器,可以运行一个或多个Pod。
-    - 创建NodePort Service并不是针对某一个节点做配置,而是在整个集群层面上对外提供访问的方式。在集群的所有节点上打开这个端口。
-- **Pod:**在节点上运行的最小单元,包含一个或多个容器。一个Pod内的容器共享网络和存储资源。
-    - 节点(Node)上可以运行的Pod数量和每个Pod中可以运行的容器数量取决于你的应用程序的需求和你的Kubernetes配置,基本只配置一个容器。
-
-因此,你可以把Kubernetes看作是一个多级系统,它允许你在多个服务器上以容器化的方式运行和管理应用程序。
-
----
-**容器之间和Pod之间都可以相互通信,通信方式和机制有所不同。**
-
-节点存在污点(taint)  , pod可以配置污点容忍度(**tolerations)**
-
-## 不同的kind:StatefulSet、Deployment
-1. **状态管理**:如前所述,StatefulSet 是为了管理有状态的应用设计的,例如数据库。每个 StatefulSet 中的 Pod 都有一个稳定的、持久的标识符,这使得它们能够维持在重启和重新调度的情况下的状态和网络位置。相比之下,Deployment 控制的 Pod 是相互交换的,没有持久的标识符。
-2. **更新策略**:StatefulSet 支持有序的、一次一个的更新和回滚。这对于需要保持数据一致性的有状态应用来说非常重要。相比之下,Deployment 在更新时默认会尽可能快地进行,可以同时更新多个 Pod。
-3. **存储**:StatefulSet 通过 Persistent Volume Claim(PVC)模板为每个 Pod 创建独立的 Persistent Volume(PV)。这意味着每个 Pod 都有自己的存储,这对于许多有状态的应用来说是必要的。而 Deployment 通常不会为每个 Pod 创建独立的存储。
-4. StatefulSet 其中的Service.clusterIP为none,并且会创建出序号。
-5. 
-![[Notion/技术支持/Kubernetes/attachments/Untitled 1.png]]
-
-
-
-## 存储PV和PVC 之前必须有一个相同的类
-6. 创建持久卷声明(Persistent Volume Claim,PVC)之前,需要确保有一个合适的存储类(StorageClass)可用,以便PVC可以绑定到正确的持久卷(Persistent Volume,PV)上。
-7. 创建一个持久卷(Persistent Volume,PV):这是一个Kubernetes集群中的存储资源,它可以独立于Pod而存在。您可以通过定义PV规格来指定存储容量、访问模式以及存储的位置等信息。
-8. 创建一个持久卷声明(Persistent Volume Claim,PVC):这是一个用于请求特定存储资源的对象。PVC定义了Pod对存储资源的需求,包括容量和访问模式等。Kubernetes会根据PVC的需求来动态地绑定到合适的PV上。和**POD的YAML一起声明的**
-9. 创建一个Pod:在Pod的定义中,您可以指定所需的容器镜像和其他配置信息。在Pod中,您需要将PVC挂载到Pod中的容器,以便容器可以访问PV提供的存储。
-
-动态存储供应程序(Dynamic Storage Provisioners)与非动态存储供应的主要区别是:
-- **动态存储供应**:
-    - 当请求一个PersistentVolumeClaim (PVC)时,系统**自动**为你创建对应的PersistentVolume (PV)。
-    - 无需管理员预先创建PV。系统根据PVC请求和指定的StorageClass自动进行供应。
-- **非动态存储供应**:
-    - 管理员必须**手动**预先创建PV。
-    - 当请求PVC时,系统尝试与现有的、未被使用的PV进行绑定。
-
-简而言之,动态存储供应自动为你创建PV,而非动态存储需要你手动创建PV。
-
-## POD部署Node选择的规则
-配置Pod时没有显式地定义`**Node Selector**`、亲和性(`**Affinity**`)、反亲和性(`**Anti-Affinity**`)等参数时,Kubernetes调度器会自动选择适合的Node节点来部署Pod。
-## Pod和Controller是通过Lable标签绑定的
-```yaml
-apiVersion: v1
-kind: Service
-metadata:
-  name: mysql-service 
-  labels:
-    app: mysql     #控制器名称
-spec:
-# type: NodePort                                     
-  type: LoadBalancer                                 
-  ports:
-    - port: 3306
-      nodePort: 30001
-    # - port: 3307
-    #   nodePort: 30002
-  selector:        #选择控制器
-    app: mysql     #控制器名称
-```
-## 修改nodePort范围
-```shell
-调整API服务器配置:
-
-如果您使用kubeadm部署Kubernetes,通常API服务器的置是位于
-/etc/kubernetes/manifests/kube-apiserver.yaml。
-您需要在此文件中找到spec.containers.command部分
-并为kube-apiserver容器添加或修改--service-node-port-range参数。
-
-例如,要允许1000-32767的端口范围,添加以下内容:
-
---service-node-port-range=1000-32767
-
-自动重启API服务器:
-当您编辑/etc/kubernetes/manifests/kube-apiserver.yaml文件时,
-kubelet会注意到这个更改并重新启动API服务器容器。
-
-重新创建或更新服务:
-
-现在您应该可以使用所需的端口范围创建NodePort服务了。您可以指定nodePort为4040。
-
-请注意,打开这样的端口范围可能会有安全隐患。确保您的防火墙和其他安全措施已经配置,以防止不必要的访问。
-```
-## DaemonSet的作用
-DaemonSet 是 Kubernetes 中的一个控制器(Controller),用于确保在集群中的每个节点上都运行一个副本(Pod)的实例。它通常用于在集群中的每个节点上部署守护进程,例如监控代理、日志收集器等。
-DaemonSet 的特点和用途如下:
-10. 在每个节点上运行:DaemonSet 会自动在每个节点上创建一个 Pod 的副本,确保每个节点都运行指定的 Pod。
-11. 一直运行:与其他控制器(如 Deployment)不同,DaemonSet 的目标是持续运行,并在新节点加入集群时自动调度 Pod。
-12. 节点动态变化:当节点加入或离开集群时,DaemonSet 会自动地在新节点上创建 Pod 或者在节点离开时删除 Pod,从而保持每个节点上都有一个 Pod 实例。
-13. 部署守护进程:由于每个节点都运行一个 Pod,因此 DaemonSet 经常用于部署守护进程,如监控代理(例如 Prometheus Node Exporter)、日志收集器(例如 Fluentd 或 Filebeat)等。
-14. 节点标签选择:您可以使用节点的标签来选择在哪些节点上运行 DaemonSet 创建的 Pod。这使得您可以有选择地在特定节点上运行守护进程。
-
-使用 DaemonSet 可以确保在整个集群中每个节点上运行相同的 Pod 副本,从而实现集群范围的服务或守护进程的部署。无论您的集群规模是大还是小,DaemonSet 都可以保证每个节点上都有相应的 Pod 运行,从而满足特定的应用场景和需求。
-### 一次性任务job和定时任务cronjob
-

+ 0 - 1
技术支持/Kubernetes/Kubernetes认证 synced block.md

@@ -1 +0,0 @@
-`请勿轻易使用管理员权限`

+ 0 - 147
技术支持/Kubernetes/Kubernetes认证.md

@@ -1,147 +0,0 @@
----
-notion-id: 2e06699f-6930-49cd-99bb-02ae028dc601
----
-![[Kubernetes认证 synced block]]
-
----
-> [!note] 🔑
-> 注意分配认证权限
-
-用户创建(示例:使用TLS证书和私钥对):
-```yaml
-
-apiVersion: v1
-kind: Secret
-metadata:
-  name: my-user-credentials
-  namespace: my-namespace
-type: Opaque
-data:
-  tls.crt: <Base64 encoded TLS certificate>
-  tls.key: <Base64 encoded TLS private key>
-
-
-```
-角色创建(示例):
-```yaml
-
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  name: my-role                    #角色的名称
-  namespace: my-namespace
-rules:
-- apiGroups: [""]
-  resources: ["pods"]
-  verbs: ["get", "list"]
-
-
-```
-角色绑定(示例:将角色绑定到Service Account):
-```yaml
-
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  name: my-rolebinding
-  namespace: my-namespace
-subjects:
-- kind: ServiceAccount           #user
-  name: my-serviceaccount        #user-name
-  namespace: my-namespace
-roleRef:
-  kind: Role
-  name: my-role                  #绑定的角色名称
-  apiGroup: rbac.authorization.k8s.io
-
-
-```
-在完成用户、角色和角色绑定的创建后,您可以使用以下步骤来生成对应的kubeconfig文件:
-1. 首先,确保您已经拥有管理员权限的kubeconfig文件,该文件通常是通过Kubernetes集群的配置工具(例如`**kubeadm**`)在初始化集群时自动生成的。这个管理员权限的kubeconfig文件通常位于`**/etc/kubernetes/admin.conf**`(如果使用`**kubeadm**`)或其他位置。
-2. 使用`**kubectl config**`命令生成新的kubeconfig文件。您需要将以下信息添加到新的kubeconfig文件中:
-    - 集群信息(Cluster):指定集群的名称、API服务器地址和证书信息(如果使用TLS认证)。
-    - 认证信息(User):根据创建用户的方式不同,添加相应的认证信息,包括客户端证书和私钥、用户名和密码等。
-    - 上下文(Context):指定集群、用户和命名空间的组合。
-    - 当前上下文(Current Context):指定默认使用的上下文。
-3. 将新的kubeconfig文件保存到合适的位置,例如用户的`**$HOME/.kube/config**`文件中。
-
-```yaml
-apiVersion: v1
-kind: Config
-clusters:
-# 集群配置部分
-- name: my-cluster
-  cluster:
-    # API服务器地址,需要根据实际集群配置填写
-    server: https://api-server-address
-    # Base64编码的CA证书数据,用于验证服务器的身份
-    certificate-authority-data: <Base64 encoded CA certificate>
-users:
-# 用户配置部分
-- name: my-user
-  user:
-    # Base64编码的客户端证书数据,用于用户身份认证
-    client-certificate-data: <Base64 encoded client certificate>
-    # Base64编码的客户端私钥数据,用于用户身份认证
-    client-key-data: <Base64 encoded client private key>
-contexts:
-# 上下文配置部分
-- name: my-context
-  context:
-    # 集群名称,引用上面定义的集群名称
-    cluster: my-cluster
-    # 用户名称,引用上面定义的用户名称
-    user: my-user
-# 当前使用的上下文,引用上面定义的上下文名称
-current-context: my-context
-```
-将上述内容保存到一个新的文件中,例如`**my-kubeconfig.yaml**`,然后使用以下命令将新的kubeconfig文件复制到`**$HOME/.kube/config**`中:
-```yaml
-kubectl config --kubeconfig=$HOME/.kube/config set-context --current --kubeconfig=my-kubeconfig.yaml
-```
-根据您的需求,可以根据这些示例文件来创建自己的YAML文件,并使用`**kubectl apply -f <file>**`命令将其应用到Kubernetes集群。通过这样的步骤,您可以实现在Kubernetes中进行用户认证和权限控制。请注意,生产环境中,需要仔细配置和审查权限,并遵循最佳实践来确保集群的安全性。
-## 用户创建脚本文件
-[[IMG-20260516155648917.sh]]
-```shell
-cat > mary-csr.json <<EOF
-{
-  "CN": "mary",
-  "hosts": [],
-  "key": {
-    "algo": "rsa",
-    "size": 2048
-  },
-  "names": [
-    {
-      "C": "CN",
-      "L": "BeiJing",
-      "ST": "BeiJing"
-    }
-  ]
-}
-EOF
-
-#证书文件
-cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes mary-csr.json | cfssljson -bare mary 
-
-#修改master主机IP
-kubectl config set-cluster kubernetes \
-  --certificate-authority=ca.pem \
-  --embed-certs=true \
-  --server=https://192.168.31.63:6443 \
-  --kubeconfig=mary-kubeconfig
-  
-kubectl config set-credentials mary \
-  --client-key=mary-key.pem \
-  --client-certificate=mary.pem \
-  --embed-certs=true \
-  --kubeconfig=mary-kubeconfig
-
-kubectl config set-context default \
-  --cluster=kubernetes \
-  --user=mary \
-  --kubeconfig=mary-kubeconfig
-
-#切换上下文
-kubectl config use-context default --kubeconfig=mary-kubeconfig
-```

+ 0 - 161
技术支持/Kubernetes/Kubernetes配置YAML.md

@@ -1,161 +0,0 @@
----
-notion-id: 37629600-9cbf-4d28-ba61-cf854a216bd2
----
-![[Notion/技术支持/Kubernetes/attachments/Untitled 6.png]]
-快速生成YAML文件
-```shell
-kubectl create deployment web --image=nginx -o yaml --dry --run > my.yaml
-#创建一个名称叫web,镜像为nginx,以yaml文件的形式输出
-#并且尝试运行实际不允许,然后输出保存到my.yaml
-
-kubectl get deploy
-#列出当前在集群中定义的所有部署
-
-kubectl get deploy nginx -o=yaml --export >my.yaml
-#导出运行的pod的yaml文件
-
-```
-```yaml
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
-  name: mysql
-spec:
-  serviceName: "mysql-service"
-  replicas: 1
-
-#Kubernetes会创建两个副本(即两个Pod实例)来运行你的应用程序。
-#这两个Pod将通过负载均衡来分配流量,从而实现负载均衡的效果。
-#流量将被均匀地分配给这两个Pod,以便实现高可用性和负载均衡。
-```
-## service部署【pod注册IP,服务发现】
-```yaml
-apiVersion: v1
-kind: Service
-metadata:
-  name: mysql-service
-  labels:
-    app: mysql                                      #设定service名称
-spec:
-# type: NodePort                                     #指定公开端口
-  type: LoadBalancer                                 #指定公开端口,并且可以连接外网
-  ports:
-    - port: 3306                                    #POD内部端口
-      nodePort: 30001                               #不指定,则随机分配外部段偶
-  selector:                                         #选择app名称
-    app: mysql                                      #选择需要绑定的pod名称        
-```
-### PersistentVolume
-```yaml
-apiVersion: v1
-kind: PersistentVolume
-metadata:
-  name: mysql-pv
-spec:
-  capacity:
-    storage: 1Gi
-  volumeMode: Filesystem
-  accessModes:
-    - ReadWriteOnce
-  persistentVolumeReclaimPolicy: Retain        #PVC删除PV不会删除
-  storageClassName: manual                     #对应配置的类
-  local:                                       #hostpath
-    path: /mysql_data                          #物理本地地址
-  nodeAffinity:                                #偏好配置
-   required:
-     nodeSelectorTerms:
-     - matchExpressions:
-       - key: kubernetes.io/hostname
-         operator: In
-         values:
-         - k8s-node               #本地PV将只在localhost.localdomain节点上运行
-```
-## DaemonSet模板【守护进程-收集日志】
-```shell
-apiVersion: apps/v1
-kind: DaemonSet
-metadata:
-  name: node-exporter          # DaemonSet 的名称
-spec:
-  selector:                    # 选择器
-    matchLabels:               # 匹配的lable
-      app: node-tag            # 选择包含此名称的 Label 节点上部署 Pod守护进程
-  template:
-    metadata:
-      labels:
-        app: pod-tag            # 为创建的 进入守护进程的所有Pod 设置 Label名称
-    spec:
-      containers:
-        - name: node-exporter
-          image: prom/node-exporter:v1.2.2   # 容器镜像名称及版本(Prometheus Node Exporter)
-          ports:
-            - name: http
-              containerPort: 9100          # 容器监听的端口号(Prometheus Node Exporter 的默认端口)
-          resources:
-            limits:
-              cpu: 200m                   # 容器的 CPU 资源限制
-              memory: 200Mi               # 容器的内存资源限制
-            requests:
-              cpu: 100m                   # 容器的 CPU 资源请求
-              memory: 100Mi               # 容器的内存资源请求
-          securityContext:
-            runAsNonRoot: true             # 以非 root 用户运行容器
-            readOnlyRootFilesystem: true   # 将容器根文件系统设置为只读
-          volumeMounts:
-            - name: proc
-              mountPath: /host/proc        # 容器挂载路径(用于监控宿主机的 /proc 目录)
-              readOnly: true               # 挂载为只读
-      volumes:
-        - name: proc
-          hostPath:
-            path: /proc                   # 宿主机物理真实的目录路径(用于监控宿主机的 /proc 目录)
-```
-## Secret【加密数据-定义变量】
-```shell
-echo -n 'admin' | base64
-```
-```shell
-apiVersion: v1
-kind: Secret
-metadata:
-  name: mysecret
-  namespace: default
-type: Opaque
-data:
-	user:
-	password:{{ .Values.password | b64enc }}  #指定编码
-  # Example:
-  # password: {{ .Values.password | b64enc }}
-
-#以变量的形式挂载pod
-#以volume形式挂载pod
-```
-## Configmap【不加密数据-定义变量】
-#创建配置文件
-```bash
-#file_name
-redis.properties
-#在文件中输入所需信息
-redis.host-127.0.0.1
-redis.port=6379
-redis.password=123456
-
-
-#以变量的形式挂载pod
-#以volume形式挂载pod
-```
-```bash
-kubectl create configmap redis-config --from-file=redis.properties
-#模板
-kubectl create configmap <configmap_name> --from-file=<file_name>
-```
-```yaml
-#变量挂载
-kind: ConfigMap
-apiVersion: v1
-metadata:
-  name: CM
-  namespace: default
-data:
-  key: default
-```

+ 0 - 31
技术支持/Kubernetes/Kubernets【HELM】.md

@@ -1,31 +0,0 @@
----
-notion-id: 6cd8c660-5694-43e0-be1d-a5a54e69c0b3
----
-
-[https://helm.sh/zh/](https://helm.sh/zh/)
-![[Notion/技术支持/Kubernetes/attachments/Untitled 2.png]]
-![[Notion/技术支持/Kubernetes/attachments/Untitled 3.png]]
-![[Notion/技术支持/Kubernetes/attachments/Untitled 4.png]]
-## 动态渲染参数
-![[Notion/技术支持/Kubernetes/attachments/Untitled 5.png]]
-```shell
-#添加微软参考
-helm repo add stable http://mirror.azure.cn/kubernetes/charts
-#添加阿里云仓库
-helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
-
-#更新仓库
-helm repo update
-
-#删除仓库
-helm repo remove <name>
-
-#搜索
-helm search repo 名称<weave>
-
-#根据搜索内容选择安装
-helm install <name> <search_name>
-
-#自己创建chart
-helm create <charts_name>
-```

+ 0 - 28
技术支持/Kubernetes/Windows加入集群.md

@@ -1,28 +0,0 @@
----
-notion-id: 0696f881-0278-4d75-9b68-18c9dfaaa323
----
-![[Kubernetes认证 synced block]]
-## 1、安装kubectl
-windows远程连接集群主机【可选权限配置】
-```shell
-curl.exe -LO "https://dl.k8s.io/release/v1.27.4/bin/windows/amd64/kubectl.exe"
-```
-下载完成工具,放入任意文件夹中,例如`d:\Kubernets`
-
----
-## 2、**配置kubectl环境**
-![[Notion/技术支持/Kubernetes/attachments/Untitled 7.png]]
-注意这里选择的是文件夹
-
----
-## 3入config配置
-导入集群配置文件`config `例如`**~/.kube/config**`** **管理员配置权限的`config`文件
-拷贝到任意文件夹中,例如`d:\Kubernets`
-
----
-## 4、配置config文件的环境配置
-
-![[Notion/技术支持/Kubernetes/attachments/Untitled 8.png]]
-注意不是文件夹,而是配置文件
-
----

+ 0 - 92
技术支持/MySql/MySql语句使用教程.md

@@ -1,92 +0,0 @@
----
-notion-id: e56df240-5a35-4737-b65d-6c997677998d
----
-登录数据库:`mysql -uroot -p`
-退出数据库:`exit/quit`
-**数据库**
-查看当前系统下的数据库:`show databases;`
-创建数据库:`create database_name;`
-使用数据库:`use database_name;`
-删除库:`drop database database_name;`
-**表**
-查看表:`show tables;`
-查看别的数据库的表格:`show tables from ``**Database_name**``;`
-> [!note]+ 建表:`create table ``**table_name**`` (字段名+空格+数据类型);`
-> ```sql
-> CREATE TABLE Persons
-> (
->     P_id int(11) NOT NULL,
->     LastName varchar(20),
->     FirstName varchar(20),
->     Address varchar(30),
->     City varchar(30),
->     PRIMARY KEY(P_id)
-> );
-> ```
-> 注意: `FOREIGN KEY(P_id) REFERENCES Persons(P_id)` 连接两个表
-> ```sql
-> CREATE TABLE Orders
-> (
-> 	O_id int(11) NOT NULL,
->     OrderNo int(11),
->     P_id int(11),
->     
->     PRIMARY KEY(O_id),
->     FOREIGN KEY(P_id) REFERENCES Persons(P_id)
-> );
-> ```
-
-查看表结构:`desc ``**table_name**``;`
-查看表中所有数据:`select * from ``**table_name**``;`
-查询建表时的结构:`show create ``**table_name**``;`
-删除字段中的值:`delete from ``**table_name**`` where 条件;`
-删除表中的字段:`delete from ``**table_name**`` drop column 字段名;`
-删除表:`drop table ``**table_name**``;`
-添值:`insert into ``**table_name**`` (列名) values (值);`
-删除:`delete from ``**table_name**`` where 条件;`
-查看:`select * from ``**table_name**`` where 条件;`
-修改:`update ``**table_name**`` set 字段=新值 where 条件;`
-> [!note]+ 排序:order by 字段名;(asc 升序、desc降序)
-> 例:`select * from ``**table_name**`` order by 列名1 asc ,列名2 desc;`
-
-限制查询结果输出条数:
-修改表名:`alter table oldname rename newname;`
-去掉某列:`alter table ``**table_name**`` drop 列名;`
-删除多列:`alter table ``**table_name**`` drop xh,zc,ads;`
-添加某列:`alter table ``**table_name**`` add 列名 char;`
-增加多列:`alter table ``**table_name**`` add(xh int(4),zc char(8),ads char(50),);`
-关联查询-等值查询:`select * from ``**table_name**`` where a.id=b.id and 条件`
-> [!note]+ 内连接:
-> ```sql
-> select * from table_name_1 inner join table_name_2 on table_name_1.xh=table_name_2.xh where 条件;
-> ```
-
-> [!note]+ 左连接:
-> ```sql
-> select * from table_name_1 left join table_name_2 on table_name_1.xh=table_name_2.xh where 条件;
-> ```
-
-> [!note]+ 右连接:
-> ```sql
-> select * from table_name_1 right join table_name_2 on table_name_1.xh=table_name_2.xh where 条件;
-> ```
-
-添加一个字段设主键约束:`alter table ``**table_name**`` add id sm unsigned primary key auto_increment;`
-```sql
-获取外键名:show create table emp;
-主键约束:primary key
-唯一约束:unique
-非空约束:not null
-默认约束:default
-外键约束:foreign key(外键)references主表(主键)
-```
-**where条件查询**
-精确查询:`=`、`!=`、`>`、`<`、`>=`、`<=`
-模糊查询:`like`(像)、`not like`(不像)
-通配符:`%`:任意字符、`-`:单个字符
-**逻辑运算符**:
-`and`:同时满足(优先级大于or)
-`or`:满足任意条件即可
-区间运算:`between a and b` (闭区间)
-集合运算:`in` 、`not in`
-非空运算:`is null` 、`is not null`

+ 0 - 41
技术支持/MySql/Mysqlbinlog恢复数据.md

@@ -1,41 +0,0 @@
----
-notion-id: 04d50464-ac9c-44c6-bd99-07a881e13d27
----
-`注意这里是恢复数据,不是回滚数据,``**恢复的本质是将原有的插入语句再执行一遍,而回滚则是回退到删除之前的状态**``。`
-# 一、调用binlog文件
-
-`SHOW VARIABLES LIKE '%log_bin%'; `是否开启log
-打开方法:mysql配置文件中找到#log-bin=mysql-bin,并取消注释即可
-`SHOW MASTER LOGS; `查看binlog文件数量
-`SHOW MASTER STATUS;`查看当前正在写入的binlog文件
-`FLUSH LOGS;`新建binlog文件并写入,避免新增之前日志。
-
-# 二、查看日binlog文件
-## 方式一:
-`show binlog events in 'mysql-bin.000060'\G; `指定查询binlog文件
-```plain text
-server id 1:数据库主机的服务号
-end_log_pos 796 :sql结束时的pos节点
-thread_id=11:线程号
-```
-![[Notion/技术支持/MySql/attachments/Untitled.png]]
-**binlog中每个事件都有一个begin和commit,我们后面进行恢复或回滚的时候开始和结束的pos都是取的事件整体的开始点和结束点。比如上面删除事件的开始点其实是1105,结束点则是1316**
-。
-## 方式二:
-```plain text
-mysqlbinlog mysql-bin.000060指令是查询二进制日志
-注意提示错误Warning: this binlog is either in use or was not closed properly.
-请使用find / -name 'mysqlbinlog' 查找是否还有别的指令
-```
-# 三、恢复文件
-通过时间恢复:
-`mysqlbinlog --no-defaults mysql-bin.000720 --start-datetime="2018-09-12 18:45:00" --stop-datetime="2018-09-12:18:47:00"`
-通过POS恢复:
-`mysqlbinlog --no-defaults --start-position=6283 --stop-position=18038 D:/Develop/Mysql/mysql-8.0.27-winx64/data/binlog.000067 | mysql -uroot -p`
-```javascript
-参数解释:
---start-position=6283 创建表后首操作
---stop-position=18038 误操作前一条操作
-```
-参考:
-[https://blog.csdn.net/Interest1_wyt/article/details/115028429](https://blog.csdn.net/Interest1_wyt/article/details/115028429)

+ 0 - 39
技术支持/MySql/Navicat破解【含解压密码】.md

@@ -1,39 +0,0 @@
----
-notion-id: dff03726-0a06-47ba-8b86-26979ed37582
----
-安装步骤:
-1.下载并解压缩navicat,压缩包中包括了32位和64位,大家可以根据需要下载:
-![[IMG-20260516155653829.png]]
-2.一直下一步,中间会有个提示设置路径的地方,可以修改路径,不建议c盘,会影响电脑允许速度,然后继续一直下一步,直到安装完成:
-![[IMG-20260516155653898.png]]
-3.安装完成后不要运行navicat premium15,将“Navicat Keygen Patch v5.6.0.zip”解压出来
-`**解压密码:www.downcc.com**`
-(这是navicat premium的注册机,[**360安全卫士**](http://www.downcc.com/k/360weishi/)**等**[**杀毒软件**](http://www.downcc.com/k/shadu/)**会误报,最好激活前先关闭杀软**),右键选择“以管理员身份运行”Navicat Keygen Patch v5.6.0.exe
-4.注册机打开后,Patch勾选Backup、Host,选择Navicat v15,然后点击Patch按钮:
-![[IMG-20260516155653985.png]]
-5 然后找到navicat premium15安装路径下的navicat.exe,选择并点击右下角的打开:
-![[IMG-20260516155654088.png]]
-6.过一会就会有个navicat.exe - x64 -> Cracked!.的弹窗,点击“确定”:
-![[IMG-20260516155654114.png]]
-7.然后回到注册机,确保以下几个选项是对应的
-License为Ent[erp](http://www.downcc.com/k/erpapp/)rise
-Products为Premium
-Languages为Simplified Chinese(简体中文,其它语言版本请自选)
-Resale Version为Site license
-Your Name和Your Organization可以任意填写或者默认:
-![[IMG-20260516155654179.png]]
-上面几项设置好后,点击“Generate”,会自动生成一个注册码,如下图:
-![[IMG-20260516155654254.png]]
-8.这个时候就可以打开navicat premium15,将上面生成的注册码复制到注册窗口中(注册窗在头部“帮助”选项下面),点击激活:
-![[IMG-20260516155654317.png]]
-会提示因为激活服务器暂时不可使用.....我们选择“手动激活”:
-![[IMG-20260516155654370.png]]
-会生成一个请求码:
-![[IMG-20260516155654436.png]]
-9.将请求码复制到注册机中的Request Code框中,然后点击Generate按钮:
-![[IMG-20260516155654486.png]]
-Activation Code框中会生成一个激活码:
-![[IMG-20260516155654512.png]]
-10.将上面的激活码复制到手动激活窗口中,并点击“激活”:
-![[IMG-20260516155654620.png]]
-至此,navicat激活成功;完美破解;

+ 0 - 4
技术支持/MySql/binlog2sql回滚数据【注意mysql版本】.md

@@ -1,4 +0,0 @@
----
-notion-id: 77d0c65f-3586-4821-a8e8-1793bfcf789b
----
-[https://blog.csdn.net/Interest1_wyt/article/details/124217711](https://blog.csdn.net/Interest1_wyt/article/details/124217711)

+ 0 - 20
技术支持/MySql/实操记录.md

@@ -1,20 +0,0 @@
----
-notion-id: 3b56b1e8-7a24-4511-85d8-b5b4e1fc177c
----
-```sql
-# 使用子查询将两个表的结果相减
-SELECT (SELECT em1.salary
-	FROM employees em1
-	WHERE employee_id = 100) -
-	(SELECT em2.salary
-	FROM employees em2
-	WHERE employee_id = 101) AS '减法'
-FROM DUAL;
-
-# 通过查询将先计算合计结果 然后再与另一个表的合计结果详见
-SELECT  bank.`total_money` - bank.`local_money` - SUM(use_bank.`use_money`) AS '可用'
-FROM bank LEFT JOIN use_bank 
-ON bank.`bank_name` = use_bank.`bank_name`
-WHERE bank.`bank_name` = ''
-AND use_bank.`create_day` = '2023-3-8'
-```

+ 0 - 76
技术支持/MySql/康师傅笔记/多表JOIN连接+UNOIN.md

@@ -1,76 +0,0 @@
----
-notion-id: 850ec1a5-5504-460c-91b3-8aa88ddccc37
----
-
-![[IMG-20260516155654659.png]]
-# 7中JOIN的实现
-```plain text
-左连接
-Select <select_list>
-FROM table A
-LEFT JOIN table B
-ON A.KEY = B.KEY
-```
-```plain text
-右连接
-Select <select_list>
-FROM table A
-RIGHT JOIN table B
-ON A.KEY = B.KEY
-```
-```plain text
-内连接
-Select <select_list>
-FROM table A
-INNER JOIN table B
-ON A.KEY = B.KEY
-```
-```plain text
-左连接【去除右表数据】
-Select <select_list>
-FROM table A
-LEFT JOIN table B
-ON A.KEY = B.KEY
-Where B.KEY IS NULL
-```
-```plain text
-右连接【去除左表数据】
-Select <select_list>
-FROM table A
-RIGHT JOIN table B
-ON A.KEY = B.KEY
-Where A.KEY IS NULL
-```
-```sql
-#满内连接【mysql不支持】 可使用左连接+右连接【去除左表数据】 UNION ALL 右连接+左连接【去除右表数据】
-Select <select_list>
-FROM table A
-FULL JOIN table B
-ON A.KEY = B.KEY
-
-#可使用UNION ALL来拼接
-Select <select_list>
-FROM table A
-LEFT JOIN table B
-ON A.KEY = B.KEY
-UNION ALL
-Select <select_list>
-FROM table A
-RIGHT JOIN table B
-ON A.KEY = B.KEY
-Where A.KEY IS NULL;
-
-
-```
-```sql
-#满外连接【mysql不支持】 可使用左连接【去除右表数据】 UNION ALL右连接【去除左表数据】实现
-Select <select_list>
-FROM table A
-FULL OUTER JOIN table B
-ON A.KEY = B.KEY
-WHERE A.KEY IS NULL
-OR B.KEY IS NULL
-
-#使用UNION ALL拼接
-
-```

+ 0 - 15
技术支持/Synology/Synology.md

@@ -1,15 +0,0 @@
----
-notion-id: af1e0826-ef03-4e4d-b064-0ab4dabc8cb4
----
-[群晖隐藏共享](技术支持/Synology/群晖隐藏共享.md)
-[群晖计划任务](技术支持/Synology/群晖计划任务.md)
-[黑群晖RR升级](技术支持/Synology/黑群晖RR升级.md)
-[可视化群晖系统文件Winscp](技术支持/Synology/可视化群晖系统文件Winscp.md)
-[群晖指令](技术支持/Synology/群晖指令.md)
-[群晖问题](技术支持/Synology/群晖问题.md)
-[群晖部署centos+宝塔](技术支持/Synology/群晖部署centos+宝塔.md)
-[群晖SMB配置](技术支持/Synology/群晖SMB配置.md)
-[群晖2.5G网卡安装教程](技术支持/Synology/群晖2.5G网卡安装教程.md)
-[群晖Docker指令](技术支持/Synology/群晖Docker指令.md)
-网卡部署
-[https://github.com/bb-qq/r8152](https://github.com/bb-qq/r8152)

+ 0 - 11
技术支持/Synology/可视化群晖系统文件Winscp.md

@@ -1,11 +0,0 @@
----
-notion-id: eb9519d9-04c8-4096-a8c3-e45f5b641a77
----
-一、群晖→控制面板→终端与SNMP:`开启ssh功能`
-二、使用任意远程ssh工具连接群晖`【例如:finalshell】`账号密码均为群晖设置账号密码`【非root】`
-三、输入指令`chmod 777 /etc/ssh/sshd_config` 
-四、输入指令`vim /etc/ssh/sshd_config` 修改内容为`PermitRootLogin yes` 删除注释并保存。
-五、重启SSH服务`步骤一:通过关闭再开启群晖的SSH选项`
-六、重新使用ssh工具连接群晖。
-七、进入root权限,输入指令`synouser --setpw root xxx` 其中`xxx`为修改的密码自行输入。
-八、完成后,使用可视化工具连接时账号为`root`,密码为刚才输入的,登录即可。

+ 0 - 29
技术支持/Synology/群晖2.5G网卡安装教程.md

@@ -1,29 +0,0 @@
----
-notion-id: c54ee6ee-8901-4d12-8c06-ee8e3be3421d
----
-参考文献:[https://www.yuque.com/flatworm-unique/2.5gbase-t/dsm-8156b-drivers](https://www.yuque.com/flatworm-unique/2.5gbase-t/dsm-8156b-drivers)
-# 群晖的版本对应的驱动框架
-[https://kb.synology.com/en-global/DSM/tutorial/What_kind_of_CPU](https://kb.synology.com/en-global/DSM/tutorial/What_kind_of_CPU)
-
-# 下载对应网卡版本的框架
-地址: https://github.com/bb-qq/r8152/releases 
-
-# 驱动安装出错修复指令
-```shell
-sudo install -m 4755 -o root -D /var/packages/r8152/target/r8152/spk_su /opt/sbin/spk_su
-```
-执行这行命令后,再把驱动套件卸载重新安装一次,就好了。
-# 修改网卡数量
-```shell
-vi /etc.defaults/synoinfo.conf
-maxlanport="2”
-:wq
-```
-```shell
-vi /etc/synoinfo.conf
-maxlanport="2”
-:wq
-```
-# 重启设备,并查看插件是否运行正常
-https://kb.synology.com/en-global/DSM/tutorial/What_kind_of_[CPU](https://www.smzdm.com/fenlei/cpu/)
-_does_my_NAS_have

+ 0 - 72
技术支持/Synology/群晖Docker指令.md

@@ -1,72 +0,0 @@
----
-notion-id: 9439bec6-eb54-4862-b181-337338ea5bbc
----
-# 修改Docker配置文件并重启服务以允许HTTP访问私有Docker Registry
-## 步骤一:修改Docker配置文件
-1. **登录到群晖NAS设备**
-使用SSH连接到设备:
-```shell
-sudo -i
-```
-2. **切换到超级用户**
-输入以下命令:
-```shell
-sudo -i
-```
-3. **找到Docker守护进程的配置文件**
-Docker守护进程配置文件位于 `/var/packages/ContainerManager/etc/dockerd.json`。
-4. **编辑配置文件**
-使用vi或其他文本编辑器打开配置文件:
-```shell
-vi /var/packages/ContainerManager/etc/dockerd.json
-```
-5. **添加不安全的注册表**
-在配置文件中添加您的私有Docker Registry URL(例如:[http://images.ceshi.com:6666)。](http://images.ceshi.com:6666/%EF%BC%89%E3%80%82/)
-示例内容:
-```json
-1{
-2  "data-root": "/var/packages/ContainerManager/var/docker",
-3  "insecure-registries": ["images.ceshi.com:6666"],
-4  "log-driver": "db",
-5  "registry-mirrors": ["https://weathered-mode-6250.227743027.workers.dev", "https://docker.pop6.top"],
-6  "storage-driver": "btrfs"
-7}
-```
-6. **保存并退出编辑器**
-输入以下命令:
-```shell
-:wq
-```
-
-## 步骤二:重启Docker服务
-7. **重启Docker服务**
-在SSH终端中,输入以下命令:
-```shell
-sudo synosystemctl restart pkgctl-ContainerManager
-```
-8. **确认服务已重启**
-输入以下命令检查服务状态:
-```shell
-sudo synosystemctl status pkgctl-ContainerManager
-```
-
-## 步骤三:验证配置
-9. **登录到私有Docker Registry**
-使用以下命令尝试登录:
-```shell
-docker login images.ceshi.com:6666
-```
-输入用户名和密码后,应显示成功登录的信息。
-10. **推送镜像到私有Docker Registry**
-成功登录后,尝试推送一个镜像:
-```shell
-docker tag my-image:latest images.ceshi.com:6666/my-image:latest
-docker push images.ceshi.com:6666/my-image:latest
-```
-11. **验证镜像推送到私有Docker Registry**
-检查镜像是否成功推送到私有注册表:
-```shell
-curl -u username:password http://images.ceshi.com:6666/v2/_catalog
-```
-
-通过以上步骤,您可以在群晖DSM7.2上修改Docker配置文件并重启服务以允许HTTP访问不安全的私有Docker Registry。

+ 0 - 19
技术支持/Synology/群晖SMB配置.md

@@ -1,19 +0,0 @@
----
-notion-id: c1741513-b743-4375-8320-806d3f7bfd18
----
-指令:`net use * /delete`  以及凭证清理之前用户和密码,避免提示没有权限
-一、文件配置时,勾选对于没有权限的用户隐藏
-二、SSH连接修改smb配置
-### **编辑 samba 配置文件**
-编辑 samba 配置文件,文件路径:`/etc/samba/smb.conf`,DSM 6 之前的版本在 `/usr/syno/etc/samba.conf`
-**可用 vi 编辑**
-`sudo vi /etc/samba/smb.conf`
-在 `[global]` 里加入:
-```plain text
-map to guest=never
-access based share enum=yes
-```
-保存文件,退出。
-最后重启 NAS 生效。
-参考文献:
-[https://bwbin.com/posts/synology-nas-hide-folders-from-users-without-permissions/](https://bwbin.com/posts/synology-nas-hide-folders-from-users-without-permissions/)

+ 0 - 15
技术支持/Synology/群晖指令.md

@@ -1,15 +0,0 @@
----
-notion-id: f2757e75-29e1-46ca-994c-dbb38347082d
----
-| 修改ROOT用户密码 | sudo  synouser --setpw root your_new_root_password |
-| --- | --- |
-
-> [!note]+ 查询Nas内存方法
-> ```javascript
-> ssh登陆后:
-> 输入如下命令
-> sudo -i
-> 输入密码后提升为root权限
-> dmidecode -t memory
-> 查看内存信息
-> ```

+ 0 - 84
技术支持/Synology/群晖计划任务.md

@@ -1,84 +0,0 @@
----
-notion-id: 278ca4d7-cb7b-8003-b4da-e9b0edaa7a5f
----
-### Immich
-```bash
-#!/bin/bash
-
-# 定义源文件夹和目标文件夹路径
-SOURCE_DIR="/volume1/docker/immich-app"
-DEST_DIR="/volume1/Cloudsync"
-
-# 获取当前日期
-DATE=$(date +"%Y-%m-%d")
-
-# 定义压缩文件的名称,加入群晖标识
-ARCHIVE_NAME="Synology-immich-app-backup-$DATE.zip"
-
-# 压缩文件夹并移动到目标文件夹
-zip -r "$DEST_DIR/$ARCHIVE_NAME" "$SOURCE_DIR"
-
-# 检查压缩是否成功
-if [ $? -eq 0 ]; then
-    echo "备份成功:$DEST_DIR/$ARCHIVE_NAME"
-    
-    # 列出目标文件夹中以"Synology-immich-app-backup-"开头的所有压缩文件,按时间排序
-    cd "$DEST_DIR" || exit
-    OLD_BACKUPS=$(ls -t Synology-immich-app-backup-*.zip | tail -n +3)
-    
-    if [ -n "$OLD_BACKUPS" ]; then
-        echo "即将删除以下旧备份文件:"
-        echo "$OLD_BACKUPS"
-        
-        # 删除旧备份文件
-        echo "$OLD_BACKUPS" | xargs -I {} rm -f {}
-        echo "旧备份文件已删除"
-    else
-        echo "没有旧备份需要删除"
-    fi
-else
-    echo "备份失败"
-fi
-
-```
-### Wiznote
-```bash
-#!/bin/bash
-
-# 定义源文件夹和目标文件夹路径
-SOURCE_DIR="/volume1/docker/wiznote"
-
-DEST_DIR="/volume1/Cloudsync"
-
-# 获取当前日期
-DATE=$(date +"%Y-%m-%d")
-
-# 定义压缩文件的名称,加入群晖标识
-ARCHIVE_NAME="Synology-backup-$DATE.zip"
-
-# 压缩文件夹并移动到目标文件夹
-zip -r "$DEST_DIR/$ARCHIVE_NAME" "$SOURCE_DIR"
-
-# 检查压缩是否成功
-if [ $? -eq 0 ]; then
-    echo "备份成功:$DEST_DIR/$ARCHIVE_NAME"
-    
-    # 列出目标文件夹中以"Synology-backup-"开头的所有压缩文件,按时间排序
-    cd "$DEST_DIR"
-    OLD_BACKUPS=$(ls -t Synology-backup-*.zip | tail -n +3)
-    
-    if [ -n "$OLD_BACKUPS" ]; then
-        echo "即将删除以下旧备份文件:"
-        echo "$OLD_BACKUPS"
-        
-        # 删除旧备份文件
-        echo "$OLD_BACKUPS" | xargs -I {} rm -f {}
-        echo "旧备份文件已删除"
-    else
-        echo "没有旧备份需要删除"
-    fi
-else
-    echo "备份失败"
-fi
-
-```

+ 0 - 27
技术支持/Synology/群晖部署centos+宝塔.md

@@ -1,27 +0,0 @@
----
-notion-id: 197237d6-e269-40ff-bb19-17bb2e0faef9
----
-一、打开Docker,注册表中搜索centos,选择第一个镜像安装,版本选择Lasted。`根据自己需求选择`
-二、在web文件夹中添加`www/wwwroot` 文件夹【源目录】
-三、使用镜像文件配置容器
-四、安装宝塔破解版
-```javascript
-yum install -y wget && wget -O install.sh http://io.bt.sy/install/install_6.0.sh && sh install.sh
-```
-
-注意要点:
-1、安装完毕,请直接使用群晖本地IP+映射端口登录宝塔
-2、修改映射端口方法
-方法一:
-提交镜像,例如模板:`docker commit ms_tomcat ms_tomcat_3306`
-创建新的容器并运行:
-`docker run -itd --name ms_tomcat -p 8081:8080 -p 3306:3306 --restart always --privileged centos:latest /usr/sbin/init`
-方法二:
-停止服务`systemctl stop docker`
-修改`**hostconfig.json**`** **和`**config.v2.json**`
-可以使用docker inspect 容器ID 查看容器配置地址进行修改
-可参考 :`vim /var/lib/docker/containers/CONTAINER ID/config.v2.json`
-参考文献:
-[https://www.jb51.net/article/257510.htm](https://www.jb51.net/article/257510.htm)
-备份和恢复可参考
-[https://blog.csdn.net/u011990675/article/details/128789417](https://blog.csdn.net/u011990675/article/details/128789417)

+ 0 - 18
技术支持/Synology/群晖问题.md

@@ -1,18 +0,0 @@
----
-notion-id: e29402ad-f63c-4dae-bdbd-a0beeee68e6c
----
-# wordpress
-安装之后没有用,忘记了mysql root密码,结果不能卸载,只能SSH登陆卸载了
-
-| 输入 | sudo synopkg list | grep --ignore-case wordpress |
-| --- | --- |
-| 显示 | WordPress-4.9.4-0147:WordPress is an open source blog tool and publishing platform powered by PHP and MySQL. The package enables you to host a WordPress blog on your DiskStation. |
-| 执行 | sudo synopkg pause WordPress<br>sudo synopkg uninstall WordPress |
-
-# Finalshell无法显示文件
-未开启SFTP服务:
-操作如下:
-1,控制面板 ;
-2,点击【文件服务】图标;
-3,切换到【FTP】选项页面;
-4,勾选【启动SFTP服务】后,点击【应用】;

+ 0 - 25
技术支持/Synology/群晖隐藏共享.md

@@ -1,25 +0,0 @@
----
-notion-id: 27aca4d7-cb7b-8093-bffd-e375313eba19
----
-[https://bwbin.com/posts/synology-nas-hide-folders-from-users-without-permissions/](https://bwbin.com/posts/synology-nas-hide-folders-from-users-without-permissions/)
-群晖 NAS 的共享文件夹,如果不希望用户访问,可以在文件夹权限,设置禁止访问即可。但是用户访问共享地址时,依然可以看到该文件夹,只是没有权限打开。
-## **隐藏无权限文件夹**
-如果希望对用户隐藏没有访问权限的文件夹,可以进入 **控制面板** > **共享文件夹**,选择需要设置的共享文件夹,单击 **编辑**,在 **常规** 选项卡,勾选 **对没有权限的用户隐藏子文件夹和文件**
-隐藏子文件夹
-![](https://bwimg-1251499301.cos.ap-guangzhou.myqcloud.com/post/synology_hide_sub-folders.png)
-此设置仅对子文件夹有效,对于根目录的共享文件夹,有没有办法隐藏呢?当然可以勾选 **在"网上邻居"隐藏此共享文件夹** ,但是这样对有权限的用户同样隐藏了,需要手动输入文件夹路径才可以访问,很不方便,显然不是我们需要的。
-## **隐藏根目录共享文件夹**
-如果需要对没有权限的用户隐藏根目录的共享文件夹,对有权限的用户正常显示,可以按以下方法:
-### **SSH 登录**
-用 `ssh` 的方式登录到群晖系统
-### **编辑 samba 配置文件**
-编辑 samba 配置文件,文件路径:`/etc/samba/smb.conf`,DSM 6 之前的版本在 `/usr/syno/etc/samba.conf`
-**可用 vi 编辑**
-`sudo vi /etc/samba/smb.conf`
-在 `[global]` 里加入:
-```bash
-map to guest=never
-access based share enum=yes
-```
-保存文件,退出。
-最后重启 NAS 生效。【好像不用重启】

+ 0 - 19
技术支持/Synology/黑群晖RR升级.md

@@ -1,19 +0,0 @@
----
-notion-id: 1b5ca4d7-cb7b-8050-aefa-ddcaaed1d8d8
----
-### 准备工作:
-网址:[https://github.com/RROrg/rr/releases](https://github.com/RROrg/rr/releases) 下载:updateall-xx.xx.xx.zip 
-在虚拟机重启DSM,选择Configure Loader,待完全进入后通过浏览器输入192.168.1.98地址进入配置页面。
-使用终端工具进入192.168.1.98 账户为root 密码为rr,将updateall-xx.xx.xx.zip文件拷贝到tmp文件中
-```shell
-由于版本升级注意文档说明:
-升级对策1: 在RR shell 中执行 touch /mnt/p1/.upgraded (升级前执行 或者 升级后编译前执行都可以), 再编译并启动。
-升级对策2: 连续升级2次 该版本,再编译并启动。
-升级对策3: 升级后进行一次 "尝试恢复已安装的 DSM 系统" 操作后再编译并启动.
-```
-
-### 配置操作:
-配置页面选择更新,选择更新全部(注意文件已拷贝到tmp)
-配置页面选择编译
-配置页面选择启动
-

+ 0 - 9
技术支持/Windows系统/Windows系统.md

@@ -1,9 +0,0 @@
----
-notion-id: 13cca4d7-cb7b-80f3-acda-e5e6033444db
----
-
-<!-- Column 1 -->
-[💫Windows服务配置💫](技术支持/Windows系统/💫Windows服务配置💫/💫Windows服务配置💫.md)
-
-<!-- Column 2 -->
-[windows微软商店无法进入](技术支持/Windows系统/windows微软商店无法进入.md)

+ 0 - 49
技术支持/Windows系统/windows微软商店无法进入.md

@@ -1,49 +0,0 @@
----
-notion-id: 81696576-f4ee-4339-8178-5c60cb56d755
----
-方法一:
-```plain text
-左键点击网络图标 网络和Internet设置 更改适配器选项
-
-右键以太网 属性 配置 高级 ‘ipv4硬件效验和’改为关闭 确定
-```
-方法二:修改注册表,并且重启电脑
-```plain text
-Windows Registry Editor Version 5.00
-
-
-
-[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]
-
-"ActiveDnsProbeContent"="131.107.255.255"
-
-"ActiveDnsProbeContentV6"="fd3e:4f5a:5b81::1"
-
-"ActiveDnsProbeHost"="dns.msftncsi.com"
-
-"ActiveDnsProbeHostV6"="dns.msftncsi.com"
-
-"ActiveWebProbeContent"="Microsoft NCSI"
-
-"ActiveWebProbeContentV6"="Microsoft NCSI"
-
-"ActiveWebProbeHost"="www.msftncsi.com"
-
-"ActiveWebProbeHostV6"="ipv6.msftncsi.com"
-
-"ActiveWebProbePath"="ncsi.txt"
-
-"ActiveWebProbePathV6"="ncsi.txt"
-
-"EnableActiveProbing"=dword:00000001
-
-"PassivePollPeriod"=dword:0000000f
-
-"StaleThreshold"=dword:0000001e
-
-"WebTimeout"=dword:00000023
-
-
-
-[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\ManualProxies]
-```

+ 0 - 56
技术支持/Windows系统/💫Windows服务配置💫/Apache配置.md

@@ -1,56 +0,0 @@
----
-notion-id: d9f33e38-2413-44ed-87a8-230fcde49468
----
-1、下载地址
-[https://www.apachehaus.com/cgi-bin/download.plx](https://www.apachehaus.com/cgi-bin/download.plx)
-2、解压文件到指定磁盘
-3、打开conf/httpd.conf,修改成你的解压路径
-```javascript
-Define SRVROOT "C:/Apache24"
-# 配置地址
-ServerRoot "${SRVROOT}"
-```
-```javascript
-win+r输入cmd回车 切换到文件下的bin目录中运行指令
-
-httpd -t 
-#测试配置文件是否合法
-
-httpd -k install -n Apache2.4 
-#-n后面表示自定义访问名称
-
-第一种开启方式
-httpd -k start  #启动
-httpd -k stop   #停止
-
-第二种开启方式
- win+r输入services.msc回车
-```
-4、在浏览器访问`http://localhost`测试是否成功
-**httpd.conf配置参数要点:**
-`DocumentRoot`    默认开启文件地址
-`DirectoryIndex`默认指定文件文档,例如:`DirectoryIndex index.html index.php`
-`Listen 80`         默认指定端口
-
-配置php,复制下段代码,放置到最后,`**绿色**`的地方你要改,是php8文件夹所在地址。
-注意php下载的是安全线程`zip`,才有`php8apache2_4.dll`
-```javascript
-#加载PHP
-LoadModule php_module 'C:\php\php8apache2_4.dll'
-
-#将PHP配置文件加载到Apache配置文件中,共同生效
-PHPIniDir 'C:\php'
-
-#配置Apache分配工作给PHP模块,把PHP代码交给PHP处理
-#即.php后缀名的文件
-AddType application/x-httpd-php .php
-```
-将php目录中的php.ini-development重命名为php.ini,然后打开编辑。
-去掉`extension_dir = "ext"`前面的分号phpinfo.php
-在Apache24\htdocs下新建记事本,命名为test.php,内容如下
-```javascript
-<?php
-phpinfo();
-?>
-```
-浏览器输入:`localhost/test.php` 测试

+ 0 - 13
技术支持/Windows系统/💫Windows服务配置💫/FileZilla服务器配置.md

@@ -1,13 +0,0 @@
----
-notion-id: f787f6a1-a369-4c24-930e-9944095fe4de
----
-打开防火墙配置→入站规则→添加21端口
-![[Notion/技术支持/Windows系统/💫Windows服务配置💫/attachments/Untitled 1.png]]
-被动模式设置 添加自定义端口范围21
-![[Notion/技术支持/Windows系统/💫Windows服务配置💫/attachments/Untitled 2.png]]
-SSL/TLS设置配置FTP启动`参数`随意填写生成密钥即可。
-![[Notion/技术支持/Windows系统/💫Windows服务配置💫/attachments/Untitled 3.png]]
-用户配置添加账户,勾选密码
-![[Notion/技术支持/Windows系统/💫Windows服务配置💫/attachments/Untitled 4.png]]
-添加用户专属共享文件
-![[Notion/技术支持/Windows系统/💫Windows服务配置💫/attachments/Untitled 5.png]]

+ 0 - 6
技术支持/Windows系统/💫Windows服务配置💫/PHP.md

@@ -1,6 +0,0 @@
----
-notion-id: 15691955-83f5-436f-a0b0-5220fb5df2a3
----
-下载地址
-[https://www.php.net/downloads.php](https://www.php.net/downloads.php)
-`注意VC版本要和apache配套`

+ 0 - 23
技术支持/Windows系统/💫Windows服务配置💫/Powershell更新安装.md

@@ -1,23 +0,0 @@
----
-notion-id: a8115064-bf4d-4aba-b4b4-55cc5d7f1f01
----
-> [!note]+ **Windows Terminal/Powershell 设置自动补全, 智能提示**
-> [https://blog.csdn.net/weixin_42081389/article/details/124392018](https://blog.csdn.net/weixin_42081389/article/details/124392018)
-
-注意PS版本为共存模式,可以修改环境变量,修改!删除旧版本具体方法研究中
-可使用windows10manager或者ContextMenuManager修改开始菜单
-[https://github.com/BluePointLilac/ContextMenuManager](https://github.com/BluePointLilac/ContextMenuManager)
-查看PS版本
-`$PSVersionTable.PSVersion`
-安装PS7
-```shell
-iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
-```
-[https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3](https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3)
-注意要点:
-安装Powershell7需要[重新配置美化教程Oh-my-zsh](/9500f8f266a345f692e1ec02195d0510)【直接跳转到**配置主题**查看】
-注意:如果输入`notepad $PROFILE` 没有创建选项,找不到路径
-手动创建,如果安装VSCODE,`code.  $PROFILE` 直接使用VSCODE创建
-`C:\Users\SL\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` PowerShell7路径
-`C:\Users\SL\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1` PowerShell原版路径
-使用winget安装时如果出现错误使用指令强制更新`winget source reset --force`

+ 0 - 5
技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/SSH免密登录.md

@@ -1,5 +0,0 @@
----
-notion-id: 5c8dfdba-9f7d-4c6b-9e42-8e84e0e12662
----
-[windows-ssh配置](技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/windows-ssh配置.md)
-[linux-ssh配置服务端](技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/linux-ssh配置服务端.md)

+ 0 - 34
技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/linux-ssh配置服务端.md

@@ -1,34 +0,0 @@
----
-notion-id: c69e22c6-b9e5-474c-b820-f1c739b22b97
----
-```shell
-ssh_config  客服端
-sshd_config 服务端
-```
-客户端配置:
-```shell
-
-yum install -y openssh-clients
-
-配置密钥
-ssh-keygen
-
-将公钥上传对应需连接客户的.ssh文件中改名authorized_keys
-例如/root/.ssh/authorized_keys
-或者/home/用户/.ssh/authorized_keys
-
-注意要点:
-一、根据你所需要连接的用户@IP进行配置
-二、authorized_keys 权限700配置
-
-```
-服务端配置:
-/etc/ssh/sshd_config 配置文件修改一下参数
-```shell
-# 是否允许以root用户身份登录,默认可以
-PermitRootLogin  yes
-# 是否允许密码登陆,默认可以
-PasswordAuthentication yes
-# 是否允许公钥验证登陆,默认可以
-PubkeyAuthentication yes
-```

+ 0 - 48
技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/windows-ssh配置.md

@@ -1,48 +0,0 @@
----
-notion-id: d5286b5c-ad06-4b19-b1c4-2bdb6bbc8110
----
-**开启防火墙的IPV4,IMCP回显就无法显示。**
-![[IMG-20260516155655302.png]]
-==**重要提示:本地的密钥对应远程的公钥**==。
-1、通过windwos系统→应用→可选应用安装openSSH服务端
-2、使用`net start sshd` 开启ssh服务【管理员权限】,然后关闭`net stop sshd` 服务进行配置
-3、确保防火墙关闭或防火墙有放开22端口。
-4、本地(客户端)生成公钥
-```javascript
-ssh-keygen -t rsa
-```
-切换到路径:C:\Users\your_userName\.ssh,找到公钥文件**id_rsa.pub,**复制公钥文件内容。
-
-5、服务端C:\Users\your_userName\.ssh下创建文件`**authorized_keys**`(没有文件后缀),粘贴公钥,保存退出。
-6、服务端切换到C:\ProgramData\ssh\下(首次启动sshd后会生成该文件夹),打开**sshd_config**
-文件`【如果保持提示没有权限,可自己配置everyone权限修改&使用notepad++直接修改】`
-```javascript
-确保以下3条没有被注释
-PubkeyAuthentication yes
-AuthorizedKeysFile	.ssh/authorized_keys
-PasswordAuthentication no
-
-确保以下2条有注释掉
-#Match Group administrators
-#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
-```
-7、重启服务:`net start sshd` ,`Restart-Service sshd` 
-8、客户端输入 `ssh your_userName@your_IP_Adress` 即可
-`your_userName` 可以通过打开cmd看你本地目录文件名称`C:\Users\zhensolid` 
-9、多台win主机互相免密,操作同上,不过需要每台主机的authorized_keys都需要包含其他主机公钥,即包含多条公钥记录。
-10、可用vscode进行ssh远程连接
-> [!note]+ # windows问题排查
-> 如果`**正确生成了加密密钥**`**对**并且**配置好了SSH服务器的**`**authorized_keys文件**`之后仍然需要输入密码使用ssh,那么需要进行以下三个步骤的检查:
-> ■ 第一步:Win键+R键,输入并运行services.msc,打开服务列表,检查**OpenSSH Authentication Agent**服务是否正常运行。没有运行的话需要启动改服务。
-> ■ 第二步:打开文件资源管理器,进入**C:\ProgramData\ssh**文件夹(建议直接输入路径进入,一般情况下ProgramData是隐藏文件夹),打开**sshd_config**文件,检查以下内容是否被正确注释掉:(修改该文件需要管理员权限)
-> ```javascript
-> # Match Group administrators
-> #        AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
-> ```
-> ■ 第三步:(**最重要**)进入**C:\Users\用户名\.ssh**文件夹,检查**authorized_keys**文件的权限,按照以下步骤进行:
-> 1. 右键authorized_keys,选择属性->安全->高级->(左下角)`**禁用继承**`
-> 2. 弹框选择`“``**将已继承的权限转换为此对象的显式权限。**``”`
-> 3. 在`**权限条目**`中删除除了`**SYSTEM**`和`**当前用户**`外的所有权限,然后应用并退出。如下图所示:
-> 
-> ![[IMG-20260516155655356.webp]]
-> 之后再尝试进行ssh登录,就不会再出现输入密码的提示了。

+ 0 - 84
技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/WSL安装以及配置.md

@@ -1,84 +0,0 @@
----
-notion-id: 8866ccd3-815f-49a7-85a5-49bf52e8d73a
----
-[❤️Wsl终端优化配置❤️](技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/❤️Wsl终端优化配置❤️.md)
-[Wsl桌面环境](技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/Wsl桌面环境.md)
-> [!note]+ **输入法安装问题**
-> 注意:`fcitx-config-gtk3` 没有出现输入法,可用`fcitx-autostart` 刷新一下,再执行。
-> 注意:`~/.profile` 是root权限下的文件,非`home`,可参考下面文件
-> ```javascript
-> # ~/.profile: executed by Bourne-compatible login shells.
-> 
-> if [ "$BASH" ]; then
->   if [ -f ~/.bashrc ]; then
->     . ~/.bashrc
->   fi
-> fi
-> 
-> mesg n 2> /dev/null || true
-> 
-> export GTK_IM_MODULE=fcitx
-> export QT_IM_MODULE=fcitx
-> export XMODIFIERS=@im=fcitx
-> export DefaultIMModule=fcitx
-> fcitx-autostart &>/dev/null
-> 
-> ```
-> 注意:安装完毕以后,重启系统 然后windows终端重新进入然后需要root权限,参考一下操作
-> ```javascript
-> wsl —shutdown
-> sudo -i
-> fcitx-config-gtk3 查看输入法是否已经显示
-> 然后使用gedit测试输入法是否可以正常使用
-> ```
-
-`wsl --unregister 发行版名称` 可移除指定的发行版
-关闭指定的单个发行版:`wsl -t 发行版名称`
-关闭所有正在运行的发行版:`wsl --shutdown`
-`lsb_release -a` 查看内核核心
-cmd 输入`\\wsl$` 网络映射添加网络位置,直接访问文件
-# Wsl配置Ubuntu,可参照
-[https://zhuanlan.zhihu.com/p/430031921](https://zhuanlan.zhihu.com/p/430031921)
-[https://www.jianshu.com/p/a20c2d58eaac](https://www.jianshu.com/p/a20c2d58eaac)
-> [!note]+ # Wsl固定IP地址Bat
-> ```bash
-> @echo off
-> ::变量延迟
-> setlocal enabledelayedexpansion
-> 
-> ::停止所有可能在跑的wsl实例
-> ::wsl --shutdown ubuntu
-> ::以下指令关闭所有实例
-> wsl --shutdown
-> ::重新拉起来,并且用root的身份,启动ssh服务和docker服务
-> wsl -u root service ssh start
-> ::wsl -u root service docker start | findstr "Starting Docker" > nul
-> if !errorlevel! equ 0 (
->     ::echo docker start success
-> :: 看看我要的IP在不在
->     wsl -u root ip addr | findstr "192.168.120.181" > nul
->     if !errorlevel! equ 0 (
->         echo wsl ip has set
->     ) else (
-> ::不在的话给安排上
->         wsl -u root ip addr add 192.168.120.10/24 broadcast 192.168.120.0 dev eth0 label eth0:1
->         echo set wsl ip success: 192.168.120.10
->     )
-> 
-> 
-> ::windows作为wsl的宿主,在wsl的固定IP的同一网段也给安排另外一个IP
->     ipconfig | findstr "192.168.120.100" > nul
->     if !errorlevel! equ 0 (
->         echo windows ip has set
->     ) else (
->         netsh interface ip add address "vEthernet (WSL)" 192.168.120.100 255.255.255.0
->         echo set windows ip success: 192.168.120.100
->     )
-> )
-> pause
-> ```
-> [!note]+ # Wsl源配置问题
-> [https://blog.csdn.net/weixin_41529012/article/details/117226884](https://blog.csdn.net/weixin_41529012/article/details/117226884)
-> [https://blog.csdn.net/laichilizi/article/details/125776317](https://blog.csdn.net/laichilizi/article/details/125776317)
-> `sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d` 更新报错
-> 

+ 0 - 20
技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/Wsl桌面环境.md

@@ -1,20 +0,0 @@
----
-notion-id: 0347343a-93a0-4fdf-966f-cbff3951858b
----
-设置wsl版本
-`wsl --set-default-version 2`
-查看wsl版本
-`wsl -l -v`
-更新安装库并安装xfce4
-`sudo apt update && sudo apt install xfce4`
-安装远程软件,放在阿里云盘内:
-[https://sourceforge.net/projects/vcxsrv/](https://sourceforge.net/projects/vcxsrv/)
-注意要点:`配置时注意端口为0,并且取消控制,并且防火墙入站和出站都配置允许,可以使用Fab_x64设置`
-编辑 `nano ~/.bashrc`,添加以下内容:
-`export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0`
-以上指令自动获取主机ip【因为主机IP会变动】
-更新文件`source ~/.bashrc`
-通过root权限开启`sudo startxfce4`
-**参考文献:**
-[https://zhuanlan.zhihu.com/p/436441212](https://zhuanlan.zhihu.com/p/436441212)
-[https://zhuanlan.zhihu.com/p/576320322](https://zhuanlan.zhihu.com/p/576320322)

+ 0 - 43
技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/❤️Wsl终端优化配置❤️.md

@@ -1,43 +0,0 @@
----
-notion-id: 821575e8-eb79-4a0e-a40c-274d4083cba9
----
-终端输入:
-`sudo apt install zsh` 安装zsh安装包
-`cat /etc/shells` 查看已安装终端
-`chsh -s /bin/zsh` 切换成zsh终端
-安装**Oh My Zsh,****注意此安装实在当前用户下安装,root和非root需要安装2次**
-```javascript
-sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"
-```
-编辑文档`nano ~/.zshrc` 修改成`ZSH_THEME``**=**``"random"` 
-关闭终端,重新进入查看是否生效。
-使用指令 `cd ~/.oh-my-zsh/themes ``**&&**`` ls` 查看已有主题。
-使用指令,安装**Powerlevel10k主题**
-```javascript
-git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
-```
-编辑文档`nano ~/.zshrc` 修改成`ZSH_THEME="powerlevel10k/powerlevel10k"`
-`p10k configure` 设置主题
-配置插件,插件位置为:`~/.oh-my-zsh/custom/plugins`
-自动补充
-```shell
-git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
-```
-语法高亮
-```shell
-git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
-```
-历史搜索
-```shell
-git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
-```
-```javascript
-open ~/.zshrc
-修改
-plugins=(git zsh-autosuggestions zsh-syntax-highlighting zsh-history-substring-search)
-```
-参考文献:
-[https://www.dotran.top/index.php/2022/07/13/优化命令行shell(windows)/](https://www.dotran.top/index.php/2022/07/13/优化命令行shell(windows)/)
-[https://zhuanlan.zhihu.com/p/35283688](https://zhuanlan.zhihu.com/p/35283688)
-[https://zhuanlan.zhihu.com/p/265525597](https://zhuanlan.zhihu.com/p/265525597)
-[https://github.com/romkatv/powerlevel10k](https://github.com/romkatv/powerlevel10k)

+ 0 - 9
技术支持/Windows系统/💫Windows服务配置💫/Web 应用程序防火墙.md

@@ -1,9 +0,0 @@
----
-notion-id: 9f62c885-8444-4cfc-a42d-ab5553dd4a84
----
-通过在 Web 应用程序前端部署 WAF,可在 Web 应用程序与 Internet 之间形成一道屏障。虽然代理服务器通过中介保护客户机的身份,但 WAF 是一种[反向代理](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/),引导客户端通过 WAF 到达服务器,从而防止暴露服务器。
-WAF 可以通过三种不同的方式来实施,每种方式都有各自的优缺点:
-- 基于网络的 WAF 通常基于硬件。由于采用本地安装模式,因而可以最大限度地缩短延迟,但基于网络的 WAF 费用最昂贵,而且还要安装和维护物理设备。
-- 基于主机的 WAF 可完全集成至应用程序软件。这种解决方案的成本低于基于网络的 WAF,而且还能提供更多定制功能。基于主机的 WAF 的缺点在于,占用本地服务器资源,实施起来复杂,而且还会产生维护成本。这些组件通常需要预留维护时间,可能成本较高。
-- 基于[云](https://www.cloudflare.com/learning/cloud/what-is-the-cloud/)的 WAF 是一种极易实施的经济型方案;通常提供一站式安装服务,就像更改 [DNS](https://www.cloudflare.com/learning/ddos/glossary/domain-name-system-dns/) 来重定向流量一样简单。另外,基于云的 WAF 的前期成本最低,因为用户按月或按年支付安全即服务费用。基于云的 WAF 还可以提供[持续更新解决方案以抵御最新威胁](https://developers.cloudflare.com/waf/managed-rulesets),用户无需额外开展工作或投入成本。基于云的 WAF 的缺点在于,用户将责任转嫁给第三方,因此对他们而言,WAF 的某些功能可能成为黑盒。(基于云的 WAF 是一种云防火墙类型;[了解有关云防火墙的更多信息](https://www.cloudflare.com/learning/cloud/what-is-a-cloud-firewall/)。)
-

+ 0 - 38
技术支持/Windows系统/💫Windows服务配置💫/windows安装DOCKER.md

@@ -1,38 +0,0 @@
----
-notion-id: 06b6e776-2e11-4e14-aeed-6293ad70e8dc
----
-
-[https://blog.csdn.net/qq_32506245/article/details/126451984](https://blog.csdn.net/qq_32506245/article/details/126451984)
-1、在开始菜单右键,使用管理员模式打开 windows power shell,输入以下指令。
-启用适用于 Linux 的 Windows 子系统
- `dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart`
-启用Windows虚拟机功能
-` dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart`
-将WSL2设置为默认版本
-`wsl --set-default-version 2`
-2、下载 适用于 x64 计算机的[ WSL2 Linux 内核更新包](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi),下载完成后,双击打开安装即可。
-[https://learn.microsoft.com/zh-cn/windows/wsl/install](https://learn.microsoft.com/zh-cn/windows/wsl/install)
-3、下载[**docker desktop**](https://www.docker.com/get-started/)安装
-4、在docker设置中添加镜像网址`"registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"]`
-。添加完成后点击右下角蓝色按钮应用设置。
-![[Notion/技术支持/Windows系统/💫Windows服务配置💫/attachments/Untitled.png]]
-5、在power shell中输入`docker info`,有显示
- `Registry Mirrors: https://docker.mirrors.ustc.edu.cn/`,即表示镜像设置成功。
-**启动问题**
-```plain text
-wsl --terminate docker-desktop
-
-wsl --terminate docker-desktop-data
-
-关闭 Docker Desktop GUI(取消/关闭任何错误消息)
-使用程序管理器关闭所有docker desktop进程
-
-再次启动 Docker 桌面。
-
-powershell
-optionalfeatures.exe
-
-适用于 Linux 的 Windows 子系统 
-
-关闭后重新开启
-```

+ 0 - 122
技术支持/Windows系统/💫Windows服务配置💫/windows配置oh-my-zsh.md

@@ -1,122 +0,0 @@
----
-notion-id: 9500f8f2-66a3-45f6-92e1-ec02195d0510
----
-
-# 前置条件
-## 1、**Windows Terminal安装**
-由于自带的 PowerShell 界面并不是很好用,推荐使用微软官方推出的 Windows Terminal,目前在 Windows 11 上已经自带,如果没有安装,可以去
-[Microsoft Store](https://www.iculture.cc/?golink=aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9wL3dpbmRvd3MtdGVybWluYWwvOW4wZHgyMGhrNzAx) 下载,安装完成后会默认启动为 PowerShell 而不是 CMD。
-![](https://raimis.me/usr/uploads/2022/04/24200823.png)
-Windows Terminal
-## 2、**scoop**
-[scoop](https://www.iculture.cc/?golink=aHR0cHM6Ly9zY29vcC5zaC8%3D) 是 Windows 下的一款十分强大的包管理器,可以用来下载和管理各种软件包,虽然官方提供了多种安装方式,但是这里推荐使用 scoop。
-依次执行命令:【无需用管理员权限】
-```plain text
-Set-ExecutionPolicy RemoteSigned -scope CurrentUser
-
-iwr -useb get.scoop.sh | iex
-
-#管理员权限亦可
-iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
-```
-## 3、**Oh My Zsh**
-通过 scoop 来安装,执行命令:
-```plain text
-scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
-
-```
-当看到绿色字体的提示时,就说明安装成功了。
-![](https://raimis.me/usr/uploads/2022/04/4141087606.png)
-安装成功提示
-## 4、**Meslo NF 字体**
-由于 Oh My Posh 基本是为
-[Nerd Fonts](https://www.iculture.cc/?golink=aHR0cHM6Ly93d3cubmVyZGZvbnRzLmNvbS8%3D) 系列字体所适配的,因此默认的字体并不能很好的显示个性化后的各种特殊字符,官方推荐使用 Meslo LGM NF 字体。
-通过 scoop 来安装,依次执行命令:
-```plain text
-scoop bucket add nerd-fonts
-
-scoop install nerd-fonts/Meslo-NF
-```
-安装完字体后需要在 Windows Terminal 中设置,打开后进入设置,在 `默认值-外观` 选项卡中设置字体,这样对所有终端都生效。
-![](https://raimis.me/usr/uploads/2022/04/2795076441.png)
-设置字体
-## 5、**Terminal-Icons**
-[Terminal-Icons](https://www.iculture.cc/?golink=aHR0cHM6Ly9naXRodWIuY29tL2RldmJsYWNrb3BzL1Rlcm1pbmFsLUljb25z) 可以在 PowerShell 中显示项目图标并以颜色区分。
-![](https://raimis.me/usr/uploads/2022/04/1223440266.png)
-图标效果
-通过 scoop 来安装,依次执行命令:
-```plain text
-scoop bucket add extras
-
-scoop install terminal-icons
-
-```
-## 6、**posh-git**
-[posh-git](https://www.iculture.cc/?golink=aHR0cHM6Ly9naXRodWIuY29tL2RhaGxieWsvcG9zaC1naXQ%3D) 可以在 PowerShell 中显示 Git 状态的摘要信息并自动补全 Git 命令。
-通过 scoop 来安装,依次执行命令:
-```plain text
-scoop bucket add extras
-scoop install posh-git
-```
-## 7、** 配置 PowerShell**
-安装完成后启动 PowerShell 时并不会默认加载个性化后的配置,因此需要修改 PowerShell 配置文件来让每次启动都加载。
-执行命令打开配置文件:注意PS5和PS7创建的文件不一样
-```plain text
-notepad $PROFILE
-```
-若提示不存在文件,且提示是否创建文件,则`直接创建`,否则需要手动在 PowerShell 目录下创建一个配置文件再进行编辑。
-若需手动创建配置文件,则依次执行命令:
-```plain text
-mkdir ~\Documents\WindowsPowerShell
-echo "" > ~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
-notepad $PROFILE
-```
-最后向配置文件中添加:
-```plain text
-oh-my-posh init pwsh | Invoke-Expression
-Import-Module -Name Terminal-Icons
-Import-Module posh-git
-
-```
-保存后重启 Windows Terminal,即可看到个性化后的界面。
-## 8、** 配置 VSCode**
-在 VSCode 中也能打开 PowerShell 终端,但是没有配置终端字体,因此需要设置 VSCode 的终端字体为 MesloLGM NF 才能正常显示。
-`【直接输入Font Family】 手动输入字体`
-![](https://raimis.me/usr/uploads/2022/04/2248591686.png)
-设置终端字体
-![](https://raimis.me/usr/uploads/2022/04/3441911159.png)
-终端效果
-# ** 配置主题**
-完成全部安装和配置后,使用的是默认主题,如果想要切换成其它主题,可以去
-[官方主题目录](https://www.iculture.cc/?golink=aHR0cHM6Ly9vaG15cG9zaC5kZXYvZG9jcy90aGVtZXM%3D) 查看各种主题的效果,同时这些主题也被安装在 Oh My Posh 的主题目录下。
-通过 scoop 安装后的主题目录为:
-```plain text
-~\scoop\apps\oh-my-posh\current\themes
-
-```
-所有主题配置文件都放在这里,并以 `.omp.json` 结尾,从其它地方下载的主题配置文件也需要放在这里。
-在终端中执行以下命令,就可以查看所有主题在终端中的效果:
-```plain text
-Get-PoshThemes ~\scoop\apps\oh-my-posh\current\themes
-
-```
-选择一个主题的名字,如 `marcduiker`,然后编辑 PowerShell 的配置文件,执行命令:
-```plain text
-notepad $PROFILE
-
-```
-将其中的 `oh-my-posh init pwsh | Invoke-Expression` 加上 `--config [主题路径]` 参数:
-```plain text
-oh-my-posh init pwsh --config ~\scoop\apps\oh-my-posh\current\themes\marcduiker.omp.json | Invoke-Expression
-```
-可参考
-```javascript
-oh-my-posh init pwsh --config '~\scoop\apps\oh-my-posh\current\themes\wholespace.omp.json' | Invoke-Expression
-Import-Module -Name Terminal-Icons
-Import-Module posh-git
-```
-```shell
-重置命令
-exec zsh 
-```
-保存后重启 Windows Terminal,即可看到更新后的个性化界面。

+ 0 - 24
技术支持/Windows系统/💫Windows服务配置💫/💫Windows服务配置💫.md

@@ -1,24 +0,0 @@
----
-notion-id: abac0bb0-7b08-46f8-bd12-c5a7d089db4c
----
-windows免密码登录指令`netplwiz`
-### 管理员查看权限【CMD】
-```powershell
-net session >nul 2>&1
-if %errorLevel% == 0 (
-    echo Administrator
-) else (
-    echo Not Administrator
-)
-```
-[Powershell更新安装](技术支持/Windows系统/💫Windows服务配置💫/Powershell更新安装.md)
-[WSL安装以及配置](技术支持/Windows系统/💫Windows服务配置💫/WSL安装以及配置/WSL安装以及配置.md)
-[PHP](技术支持/Windows系统/💫Windows服务配置💫/PHP.md)
-[Apache配置](技术支持/Windows系统/💫Windows服务配置💫/Apache配置.md)
-[windows安装DOCKER](技术支持/Windows系统/💫Windows服务配置💫/windows安装DOCKER.md)
-[SSH免密登录](技术支持/Windows系统/💫Windows服务配置💫/SSH免密登录/SSH免密登录.md)
-[FileZilla服务器配置](技术支持/Windows系统/💫Windows服务配置💫/FileZilla服务器配置.md)
-[windows配置oh-my-zsh](技术支持/Windows系统/💫Windows服务配置💫/windows配置oh-my-zsh.md)
-[Web 应用程序防火墙](技术支持/Windows系统/💫Windows服务配置💫/Web%20应用程序防火墙.md)
-> [!note]+ **问题:vmware复制文件提示访问错误**;
-> 解决方法:C:\windows后,右击Temp文件夹点击属性,安全选项卡,高级(允许)。在权限选项卡中选中“SYSTEM”点击编辑,在“完全控制”前打上勾,确定。【根据自身系统权限进行设置即可】

+ 0 - 0
技术支持/MySql/MySql.md → 技术笔记/数据库/MySql.md


+ 0 - 0
工具与开发/数据库/MySql语句使用教程.md → 技术笔记/数据库/MySql语句使用教程.md


+ 0 - 0
工具与开发/数据库/Mysqlbinlog恢复数据.md → 技术笔记/数据库/Mysqlbinlog恢复数据.md


+ 0 - 0
工具与开发/数据库/Navicat破解【含解压密码】.md → 技术笔记/数据库/Navicat破解【含解压密码】.md


BIN
技术笔记/数据库/attachments/Untitled.png


+ 0 - 0
工具与开发/数据库/binlog2sql回滚数据【注意mysql版本】.md → 技术笔记/数据库/binlog2sql回滚数据【注意mysql版本】.md


+ 0 - 0
工具与开发/数据库/实操记录.md → 技术笔记/数据库/实操记录.md


+ 0 - 0
工具与开发/数据库/康师傅笔记/多表JOIN连接+UNOIN.md → 技术笔记/数据库/康师傅笔记/多表JOIN连接+UNOIN.md


+ 0 - 0
技术支持/MySql/康师傅笔记/康师傅笔记.md → 技术笔记/数据库/康师傅笔记/康师傅笔记.md


+ 0 - 0
工具与开发/数据库/数据库/Oracle/Oracle创建PDB.md → 技术笔记/数据库/数据库/Oracle/Oracle创建PDB.md


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio