260311-openclaw-cn部署和使用
openclaw-cn
OpenClaw 中文社区 - 开源免费 AI 助手 | 飞书/钉钉/企业微信/QQ 自动化
https://clawd.org.cn/
1 | PNPM_HOME |
配置参数
1 | openclaw-cn onboard --install-daemon |
Ollama模型配置
1 | # 推荐,约4.7GB |
OpenClaw对接Ollama配置
- 按提示进行配置:在向导中,当问到模型提供商时,请严格按照下表进行选择和填写:
| 配置项 | 操作/选择 | 说明 |
|---|---|---|
| Model/auth provider | Custom Provider |
选择自定义提供商,拉到列表最底部即可找到。 |
| API Base URL | http://127.0.0.1:11434/v1 |
这是Ollama服务的默认本地地址,末尾的 /v1 必须保留。 |
| API Key | 任意字符 (如 ollama) |
Ollama本地服务不验证密钥,但不能留空,随便填一个即可。 |
| Endpoint compatibility | OpenAI-compatible |
选择与OpenAI兼容的模式,这是Ollama支持的接口类型。 |
| Model ID | qwen2.5:7b-32k |
输入我们刚刚在Ollama中创建的模型名称,必须完全一致。 |
配置完成后,如果看到 “Verification successful” 的提示,就说明OpenClaw已成功连接到本地的Ollama模型了。同时,命令行会显示Web
UI的地址(通常是 http://127.0.0.1:18789)和一个访问Token,
1 | Custom Provider |
结合你之前的步骤,你已经有了本地Ollama模型。如果想体验混合架构,可以参考这个思路:
- 添加云端模型:通过
openclaw onboard命令或OpenClaw的Web界面,再次进入模型配置向导。这次选择另一个提供商,比如OpenAI、Claude或国内的阿里云百炼,并填入你的云端API Key。 - 切换使用:配置好后,你就可以在对话中通过指令或界面下拉菜单,自由选择是用本地模型处理文件,还是调用云端模型进行复杂创作了。
Qwen大模型配置参数
1 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
260210-MongoDBHA-MongoDB集群-重置绑定关系-(Replica Set)副本集集群搭建
这是一个涉及数据库运维的操作,需要谨慎处理。
MongoDB 集群配置删除与重新绑定
1. 理解 MongoDB 集群配置存储位置
MongoDB 集群配置主要存储在 Config Servers 中:
- Config Database (plain复制
config): 包含分片集群的元数据 - Local Database: 每个节点存储的副本集配置
2. 删除集群配置的方法
场景 A: 完全重置分片集群
1 | # 1. 停止所有 mongos 路由进程 |
场景 B: 仅移除分片(保留集群框架)
1 | // 连接到 mongos |
场景 C: 重置副本集配置(非分片集群)
1 | // 连接到副本集成员 |
3. 重新绑定新配置
步骤 1: 重新配置 Config Server
1 | // 初始化新的 Config Server 副本集 |
步骤 2: 启动 mongos 并配置分片
1 | # 启动 mongos,指向新的 config server |
1 | // 连接到 mongos 添加分片 |
4. 关键注意事项
| 操作 | 风险等级 | 说明 |
|---|---|---|
| 删除 Config Server 数据 | 🔴 极高 | 会丢失所有分片元数据 |
| 强制 rs.reconfig | 🟡 中等 | 可能导致脑裂 |
| removeShard | 🟢 较低 | 数据会自动迁移 |
| 停止 mongos | 🟢 低 | 仅影响路由,不丢数据 |
5. 安全操作建议
1 | # 操作前务必备份 |
6. 常见问题排查
1 | // 检查 Config Server 状态 |
⚠️ 重要提醒:
- 在生产环境执行前,务必在测试环境验证
- 确保有完整的数据备份
- 操作期间会有服务中断,选择维护窗口执行
- 如果是云托管 MongoDB (Atlas),请使用提供商的控制台操作,不要手动修改
260106-wincc采集数据-监控OMS-连接是否有效
一句话总结(ConnectionState)
WinCC 自带“@连接名@ConnectionState”系统变量,
0=离线 1=在线;
把它做在画面上或脚本里,就能第一时间知道设备是否掉线,
比盯着过程值可靠得多。
添加变量

确认状态 ConnectionStateEx

wincc oms+采集数据,采集通道连接如何触发重新连接
ConnectionEstablishMode
@ConnectionEstablishMode 并不是在 WinCC 的“变量管理”里手动建出来的普通变量,
而是通道在创建时自动生成的“系统变量”。
想找到它,只要打开:
WinCC 资源管理器 → 变量管理 →
展开你正在用的那条 S7 通道(如“OMS+”或“SIMATIC S7-1200/1500”)→
再展开下面的某个“连接”→
右侧窗口里就能看到名字以“@”开头的系统变量列表,
其中就有 @ConnectionEstablishMode(数据类型 DWORD,默认值 1)[29^]。
如果列表里没看到,把列宽拉大一点或把“系统变量”筛选打开即可。
在 WinCC 里,OMS+ 通道本身没有“一键重连”按钮,想让 S7-1200/1500 的采集通道在断线后重新握手,有两种办法——“让它自己连”或“手动踢它一脚”。
自动重连(推荐)
把系统变量 @ConnectionEstablishMode 置为 1(缺省就是 1),通道会每 4 s 自动尝试重建连接,无需干预 。
手动触发重连
① 强制断开:把 @ForceConnectionState 先写 0,已建立的连接会立即断开;
② 再次建立:再把 @ForceConnectionState 写 1,通道立即按组态参数重新连接 。
如果同时想换 IP 或访问点,可先把新地址写入 @AlternateConnectionAddress,再把 @ForceConnectionAddress 切换一次
0→1,也能达到“断开-重连”的效果 。
脚本里一般用 C 动作或 VBS 给这几个内部变量赋新值即可,触发一次执行一次重连流程
260121-Ubuntu生成docker证书
Docker启用TLS加密解决暴露2375端口引发的安全漏洞,被黑掉三台云主机的教训总结
1. 设置主机名
编辑/etc/hostname,服务器主机名 ubuntu
1 | vi /etc/hostname |
2. 生成TLS证书
创建证书生成脚本 docker-cert.sh,放置/script目录
1 | sudo mkdir -p /script /data/cert/docker |
docker-cert.sh添加内容
1 |
|
执行 docker-cert.sh 脚本,生成证书放置 /data/cert/docker 目录中
1 | # ubuntu是服务器的主机名 |
按照提示输入相关信息,密码一致就行,其他信息可留空,等脚本指定完成之后,可在 /data/cert/docker 目录查看到生成的证书。
Docker 只接受「未加密的私钥」
你给的 .key 文件是 RSA 加密私钥(文件头里能看到 —–BEGIN RSA PRIVATE KEY—– 或 Proc-Type: 4,ENCRYPTED),启动时 dockerd
要求你输入密码,但它跑在 systemd 里没人交互,于是读密钥失败 → TLS 配置无效 → dockerd 直接退出。
一句话结论
私钥被加密了,Docker 不会解密,必须换成“无密码”的私钥。
如果私钥仍带密码,先按前面说的去密码:
1 | sudo openssl rsa -in server-key.pem -out server-key-clear.pem |
证书生成过程问题解决
OpenSSL 报错写得很清楚:
1 | bad ip address … value=ubuntu |
你在 extfile.cnf 里把 主机名(ubuntu)直接写进了 IP: 字段,而 IP: 后面必须是纯 IPv4/IPv6 地址,不能是字符串域名或主机名。
改成 DNS:ubuntu 或者干脆去掉域名,只保留合法 IP 即可。
修正扩展文件
1 | cat > extfile.cnf <<EOF |
如果你只想让任何地址都能连,也可以最简写:
1 | echo "subjectAltName = IP:0.0.0.0" > extfile.cnf |
重新签发
1 | openssl x509 -req -in server.csr \ |
验证
1 | openssl x509 -in server-cert.pem -text -noout | grep -A1 "Subject Alternative Name" |
应看到:
1 | X509v3 Subject Alternative Name: |
不再报错即可。
查看生成后的证书

3. 配置Docker启用TLS
1 | sudo cat /usr/lib/systemd/system/docker.service |
在ExecStart属性后追加
1 | --tlsverify --tlscacert=/data/cert/docker/ca.pem \ |
1 | --tlsverify --tlscacert=/data/cert/docker/ca.pem --tlscert=/data/cert/docker/server-cert.pem --tlskey=/data/cert/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock |

重新加载docker配置后重启
1 | sudo systemctl daemon-reload |
查看2376端口是否启动
1 | netstat -nltp | grep 2376 |

本地连接测试Docker API是否可用
- 没有指定证书访问测试
1 | curl https://ubuntu:2376/info |
- 指定证书访问测试
1 | curl https://ubuntu:2376/info --cert /data/cert/docker/cert.pem --key /data/cert/docker/key.pem --cacert /data/cert/docker/ca.pem |
4. IDEA配置
将客户端所需的ca.pem、cert.pem、key.pem3个密钥文件从服务器下载到本地

IDEA连接Docker配置修改

pom.xml
1 |
|
251110-BIOS-Keypress-BIOSKeyPress-IPC-工控机重装系统按键
BIOS按键配置
| 品牌 | BIOS按键 |
|---|---|
| ZYR中亿睿 | F11 |
| Lenovo | F2 |
| 联想电脑 | F12 |
| Dell台式机 | |
Ubuntu 系统安装openssh-server
1 | sudo apt update |
ubuntu 20.04如何查看当前屏幕的-当前登录会话里直接看变量-当前登录会话里直接看变量(echo $DISPLAY)
1 | echo $DISPLAY |
在 Ubuntu 20.04 里,“当前屏幕的 DISPLAY” 就是 X11 的 DISPLAY 变量,格式通常是 :0、:1、:0.0 等。
下面给出几种最常用、最兼容的办法,无需安装额外软件即可拿到结果。
一句话总结
只要你在图形界面下,echo $DISPLAY 就是当前屏幕的 DISPLAY;
ssh 进来就用 loginctl show-user $USER -p Display –value,百试百灵。
Unit.Service.配置变量Environment
1 | [Unit] |
在 Ubuntu 系统中,磁盘检查(fsck)通常在启动时自动运行,以确保文件系统的完整性。
如果你希望取消或调整磁盘检查的行为,可以通过以下几种方法来实现:
1. 修改 /etc/fstab 文件
/etc/fstab 文件定义了文件系统的挂载选项,包括是否在启动时进行磁盘检查。你可以通过修改这个文件来取消磁盘检查。
打开
/etc/fstab文件:1
sudo vim /etc/fstab
找到需要修改的文件系统条目: 每一行代表一个文件系统条目,通常包含以下字段:
1
<file system> <mount point> <type> <options> <dump> <pass>
其中 `` 字段(第六个字段)定义了启动时是否进行磁盘检查:
0:不进行磁盘检查。1:在启动时进行磁盘检查(通常用于根文件系统)。2:在启动时进行磁盘检查(通常用于其他文件系统)。
- **将
字段设置为 `0`**: 将需要取消磁盘检查的文件系统条目的字段设置为0。例如:1
UUID=your-uuid / ext4 errors=remount-ro 0 0
- 保存并退出: 保存文件并退出编辑器。
Ubuntu系统分盘建议
| 分区名称 | 分区格式 | 类型 | 大小 | 描述 |
|---|---|---|---|---|
| swap | 主分区 | swap area | 18G | 交换空间,类似Windows下的虚拟内存。 空间大小,一般是等于电脑内存;如果容量足够,可以等于物理内存的2倍。 比如16GB内存,就可以给固态硬盘32GB的空间,太小也不好,太大也没用。博主这里配的是18G(运行内存16G+2G)。 |
| efi 逻辑分区 | efi | system partition | 2G | 引导分区。空间大小为2G。 |
| / | 逻辑分区 | ext4日志文件系统 | 40G | 根目录,分配40G。 |
| /usr | 逻辑分区 | ext4日志文件系统 | 50G | linux系统存放软件的地方。 |
| /usr/local | 逻辑分区 | ext4日志文件系统 | 40G | 承载用户安装的软件。(可选配) |
| /usr/local | 逻辑分区 | ext4日志文件系统 | 300G | 相当于个人文件夹,用户存储数据,类似Windows下的User。 建议分配稍微大点,因为以后自己的图片、视频、下载内容基本都在这里面。博主安排了500G。 |

251110-BIOS-IPC-工控机重装按键
ubuntu 20.04如何查看当前屏幕的-当前登录会话里直接看变量-当前登录会话里直接看变量(echo $DISPLAY)
1 | echo $DISPLAY |
在 Ubuntu 20.04 里,“当前屏幕的 DISPLAY” 就是 X11 的 DISPLAY 变量,格式通常是 :0、:1、:0.0 等。
下面给出几种最常用、最兼容的办法,无需安装额外软件即可拿到结果。
一句话总结
只要你在图形界面下,echo $DISPLAY 就是当前屏幕的 DISPLAY;
ssh 进来就用 loginctl show-user $USER -p Display –value,百试百灵。
Unit.Service.配置变量Environment
1 | [Unit] |
251111-ubuntu20.04-chrome浏览器禁用更新
方法一:使用 apt-mark 锁定 Chrome 包(推荐)
1 | sudo apt-mark hold google-chrome-stable |
恢复更新
1 | sudo apt-mark unhold google-chrome-stable |
禁用 Google Chrome 的软件源
1 | sudo vim /etc/apt/sources.list.d/google-chrome.list |
在每一行前加上 # 注释掉内容,例如:
1 | # deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main |
保存并退出,然后运行:
1 | sudo apt update |
✅ 总结
| 方法 | 效果 | 推荐程度 |
|---|---|---|
apt-mark hold google-chrome-stable |
阻止 Chrome 更新,简单有效 | ⭐⭐⭐⭐ |
注释掉 google-chrome.list 源 |
完全关闭 Chrome 更新源 | ⭐⭐⭐ |
| 禁用系统自动更新 | 影响整个系统,不推荐 | ⭐ |
如无特殊需求,推荐使用 apt-mark hold 方法,安全、可控、可随时恢复。
Chrome启动全屏
sudo /usr/bin/google-chrome-stable –password-store=basic –disable-background-networking
–kiosk http://127.0.0.1/hmi/r26o –disable-pinch –disable-translate –no-sandbox
–no-sandbox 会关闭 Chrome 的“沙箱”保护机制
一句话:–no-sandbox 是“拆掉保险杠”的调试开关,能不用就别用。
–disable-pinch
禁用触控板/触摸屏上的“捏合缩放”(pinch-to-zoom)手势。
–disable-translate
彻底关掉内置翻译功能(Google Translate 提示条)
251112-谷歌chrome-需要认证:您登录计算机时,您的登录密钥环未被解锁
Chrome需要认证:您登录计算机时,您的登录密钥环未被解锁。

你遇到的这个弹窗:
“需要认证:您登录计算机时,您的登录密钥环未被解锁。”
是因为 Chrome(或 Chromium)试图读取保存的密码,但你的 GNOME Keyring(或 KDE Wallet) 没有自动解锁。
🔍 为什么会这样?
- 你设置了 自动登录(如树莓派、Ubuntu 自动登录)。
- 系统登录时没有输入密码,所以密钥环没有解锁。
- Chrome 启动时尝试访问密钥环 → 弹出解锁提示。
操作方法
安装工具
1 | sudo apt install seahorse # 安装图形化管理工具(可选) |
确认工具->密码和密钥

更改密钥密码

✅ 解决方法(任选其一)
✅ 方法 1:禁用密钥环(最简单,适合 kiosk、展示机)
如果你只是用 Chrome 做展示、 kiosk、HMI,不需要保存密码,直接禁用密钥环。
打开终端,运行:
1
sudo apt install seahorse # 安装图形化管理工具(可选)
打开“密码和密钥”(Passwords and Keys):
1
seahorse
找到 “登录” 密钥环,右键 → “更改密码”。
输入旧密码(是你用户密码),新密码留空 → 确认 → 会提示“不安全” → 确认即可。
这样密钥环就是解锁状态,再也不会弹窗。
✅ 方法 2:让密钥环自动解锁(适合需要保存密码)
- 确保你设置了用户密码(不能是自动登录无密码)。
- 设置你的登录密码和密钥环密码一致。
- 系统登录时会自动解锁密钥环,不会再弹窗。
✅ 方法 3:Chrome 启动时禁用密钥环(命令行)
你已经用了 --password-store=basic,这本来是禁用密钥环的,但如果还弹窗,说明:
- 你可能用的是 Snap 或 Flatpak 版 Chrome,它忽略这个参数。
- 或者系统默认密钥环是 KDE Wallet。
✅ 终极方案(kiosk 专用)
如果你只是做展示、HMI、全屏播放,不需要保存任何密码,直接用方法 1 把密钥环密码设为空即可。
✅ 总结
| 场景 | 推荐方法 |
|---|---|
| 展示机、 kiosk、HMI | 方法 1:密钥环密码设为空 |
| 需要保存密码 | 方法 2:登录密码和密钥环一致 |
| 命令行无效 | 方法 3:确认不是 Snap 版 Chrome |
如你不确定是哪种 Chrome,运行:
1 | which google-chrome-stable |
如果输出是 /snap/...,那就是 Snap 版,建议卸载后装 .deb 版:
1 | sudo apt install google-chrome-stable |
251117-Ntp-Ubuntu时间同步配置-自动同步网络时间(NTP)
251117-Ntp-Ubuntu时间同步配置-自动同步网络时间(NTP)
systemd-timesyncd和chrony区别
1 | 举例: |
在 Ubuntu/Linux 服务器上调整系统时间(日期和时间)可以通过以下命令实现,具体分为 手动设置 和 自动同步
(NTP)两种方式:
查看当前系统时间
1 | date |
或查看详细时区信息:
1 | timedatectl |
手动设置时间
(1) 使用 date 命令(临时生效,重启可能失效)
1 | sudo date -s "2024-05-21 15:30:00" |
或:
1 | sudo date +%T -s "15:30:00" # 仅修改时间 |
(2) 使用 timedatectl(推荐,永久生效)
1 | sudo timedatectl set-time "2024-05-21 15:30:00" |
或分别设置日期和时间:
1 | sudo timedatectl set-time 15:30:00 |
3. 设置时区
(1) 查看可用时区
1 | timedatectl list-timezones |
或搜索特定时区(如上海):
1 | timedatectl list-timezones | grep Shanghai |
(2) 修改时区
1 | sudo timedatectl set-timezone Asia/Shanghai |
或使用传统方式:
1 | sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
4. 自动同步网络时间(NTP)
1 | sudo timedatectl set-ntp true |
检查状态:
1 | timedatectl status |
(2) 手动强制同步
如果 NTP 未自动同步,可以手动触发:
1 | sudo systemctl restart systemd-timesyncd |
或使用 ntpdate(需安装):
1 | sudo apt install ntpdate -y |
5. 硬件时间(BIOS时间)同步
1 | sudo hwclock --systohc |
查看硬件时间:
1 | sudo hwclock --show |
总结
| 需求 | 命令 |
|---|---|
| 查看时间 date 或 timedatectl | |
| 手动改时间 sudo timedatectl set-time “YYYY-MM-DD HH:MM:SS” | |
| 修改时区 sudo timedatectl set-timezone Asia/Shanghai | |
| 启用 NTP 自动同步 sudo timedatectl set-ntp true | |
| 强制同步 NTP sudo ntpdate pool.ntp.org | |
| 同步硬件时间 sudo hwclock –systohc |
1 | ⚠️ 注意: |