部落格

  • UG

    UG(Siemens NX)中开启自适应自下而上切削需要的环境变量名称是UGII_CAM_ENABLE_ADAPTIVE_BOTTOM_UP_CUTTING。 [1]

    环境变量详情

    • 变量名:UGII_CAM_ENABLE_ADAPTIVE_BOTTOM_UP_CUTTING
    • 变量值:1 [1, 2]

    版本说明与使用方法

    • NX 12.0.2.9 及特定低版本:如果在软件中找不到自下而上切削功能,需要手动在电脑的系统环境变量中添加上述变量,并将值设为 1,然后重新启动软件。
    • NX 1847 及更高版本:这些新版本自带该功能,系统默认已经集成,不需要再添加任何环境变量。直接在自适应铣削策略界面中查看即可。 [1, 2, 3]
  • Cloudflare 搭建 内网穿透

    使用 Cloudflare Tunnel(原名 Argo Tunnel)进行内网穿透是一种完全免费、不限速、自带 HTTPS 证书且不需要公网 IP 的终极方案。 [1, 2]

    搭建方式主要分为两种:临时调试的快速隧道(无需注册)和长期稳定的固定域名隧道(通过网页控制台配置)。以下为您提供最常用的控制台可视化搭建(命名隧道)保姆级教程: [1]


    🛠️ 前置准备

    1. 拥有一个 Cloudflare 账号。
    2. 拥有一一个域名,并将 DNS 解析服务器修改/托管在 Cloudflare。
    3. 激活 Cloudflare Zero Trust 服务(选择 Free(免费)计划,根据提示绑定双币信用卡或 PayPal 用于反滥用验证,完全不会扣费)。 [1, 2, 3]

    1. 在 Cloudflare 控制台创建隧道

    1. 登录 Cloudflare Zero Trust 控制台。
    2. 在左侧菜单栏依次点击 Networks -> Tunnels,然后点击 Create a tunnel。
    3. 选择默认的 Cloudflared(推荐),点击 Next。
    4. 为你的隧道起一个名字(例如 Home-NAS),点击 Save tunnel。 [1, 2, 3]

    2. 在内网设备上安装客户端 (Choose your environment)

    系统会生成一个专属的安装命令,并附带一串很长的 token。根据你的内网设备系统选择执行: [1]

    🐳 Docker 方式(最推荐,全平台通用)

    直接复制网页上提供的 Docker 命令,或者在内网设备上运行以下命令(将 你的TOKEN 替换为网页上显示的实际 Token):

    bash

    docker run -d --name cloudflared --restart unless-stopped cloudflare/cloudflared:latest tunnel --no-autoupdate run --token 你的TOKEN
    

    请谨慎使用此类代码。

    🐳 Docker-compose 方式

    version: '3.8'
    services:
      cloudflared:
        image: cloudflare/cloudflared:latest
        container_name: cloudflared
        restart: unless-stopped
        command: tunnel --no-autoupdate run --token eyJhIjoiZGE2ZDdjOWI0YWY4YTU5YmNkMmE2Nzk1M2Q1NDMxODAiLCJ0IjoiMDBhOGU5ZjQtMmQwOS00ZmYzLTlmYWMtMWQ5ODgzNGI5MGI0IiwicyI6Ik56UTV

    token根据实际修改

    🪟 Windows 系统

    1. 下载官方的 cloudflared-windows-amd64.msi 并安装。
    2. 以管理员身份打开 PowerShell,复制控制台 Windows 栏目下的高级命令(形如 cloudflared.exe service install 你的TOKEN)并运行。 [1]

    🐧 Linux 系统 (Ubuntu/Debian)

    控制台会直接提供一键脚本,直接复制到终端运行即可,例如:

    bash

    curl -L --output cloudflared.deb https://github.com && 
    dpkg -i cloudflared.deb && 
    cloudflared tunnel service install 你的TOKEN
    

    请谨慎使用此类代码。

    验证: 安装并运行成功后,回到 Cloudflare 网页刷新,会看到隧道的 Status 变成绿色的 HEALTHY(健康)。


    3. 配置域名与内网服务映射 (Public Hostnames)

    在网页控制台上切换到 Public Hostname 标签页,点击 Add a public hostname:

    • Subdomain (子域名): 填写你想访问的名称,例如 nas。 [1]
    • Domain (域名): 选择你在 Cloudflare 托管的主域名(例如 yourdomain.com)。 [1]
    • Type (协议类型):
      • 如果是网页服务(如宝塔、NAS 面板、青龙面板),选择 HTTP 或 HTTPS。
      • 如果是远程桌面、SSH,选择 TCP。 [1]
    • URL (内网地址): 填写你内网设备访问该服务的局域网 IP 和端口(例如 192.168.1.100:8080 或 localhost:80)。 [1, 2]

    点击 Save hostname 保存。


    🎉 享受内网穿透

    配置完成后,Cloudflare 会自动帮你配置好 DNS 解析并申请 HTTPS 证书。你现在可以在外网通过 https://yourdomain.com 安全、免端口号地直接访问家里的内网服务了! [1, 2, 3]


    💡 极简补充:如果只想临时调试(快速隧道)

    如果你不需要固定域名,只是本地开发想临时给别人预览(比如前端跑在 localhost:3000):

    1. 电脑下载 cloudflared 命令行工具。
    2. 终端直接输入:bashcloudflared tunnel --url http://localhost:3000 请谨慎使用此类代码。
    3. 终端会输出一个随机的 https://xxx.trycloudflare.com 链接,关闭终端即失效。 [1]

  • Wallos搭建与Telegram 通知

    新建docker-compose.yml

    services:
      wallos:
        image: bellamy/wallos:latest
        container_name: wallos
        environment:
          - TZ=Asia/Shanghai
        ports:
          - "8282:80"
        volumes:
          - /volume1/docker/wallos/db:/var/www/html/db
          - /volume1/docker/wallos/logos:/var/www/html/images/uploads/logos
        restart: unless-stopped

    volumes 地址根据实际改(用ai工具也行)

    在 Wallos 中配置 Telegram 通知,核心需要两个参数:Bot Token(机器人密钥) 和 Chat ID(接收消息的用户或群组 ID)。

    1.激活并启动你的 Telegram Bot:准备阶段.

    在 Telegram 中搜索并打开你刚创建好的 Bot 聊天界面,点击底部的 Start 或发送 /start。

    验证方法:输入 /start 后,只要看到该会话已建立即代表初始化成功。如果不先发送消息激活,Bot 无法主动向你推送消息。

    2.获取你的 Chat ID:获取接收者 ID.

    在 Telegram 搜索 @userinfobot 或 @getmyid_bot 并点击 Start。Bot 会立即回复你的数字 ID(例如 123456789)。

    验证方法:记录纯数字形式的 Id(如果是普通单人聊天,一般为 9-10 位的正整数;群组通常以 - 开头)。

    3.在 Wallos 填写通知配置:Wallos 界面.

    进入 Wallos 网页后台,点击右上角进入 Settings(设置) -> Notifications(通知),找到 Telegram 部分并填入:

    • Bot Token:填写从 @BotFather 处获得的完整 API Token(格式形如 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ)。
    • Chat ID:填写上一步获取到的纯数字 ID(例如 123456789)。
    • Enabled:勾选启用。

    验证方法:点击输入框下方的 Test(测试) 按钮,如果在 Telegram 中立即收到 Wallos 发送的测试消息,说明绑定成功。

    常见排错提醒:

    • 如果点击测试报错或收不到消息,先确认你是否已在 Telegram 中与该 Bot 开启了对话(发送过 /start)。
    • 如果 Wallos 运行在家庭局域网且没有全局代理环境,请确保部署 Wallos 的容器或宿主机能够正常访问 Telegram 的 API 接口(api.telegram.org)。
  • 把 VPS 的 SSH 密钥托管在 GitHub 上

    巧用 GitHub 管理 VPS SSH 登录公钥:从手动导入到自动化同步

    每次开新 VPS 都要手动生成、复制粘贴长长一串公钥?更换主力设备或重装系统时,还要挨个登入每台机器更新 authorized_keys?

    其实 GitHub 早就提供了一个公开接口:任何公开账户绑定的 SSH 公钥,都可以通过固定 URL 直接读取:

    Plaintext

    https://github.com/<你的GitHub用户名>.keys
    

    利用这一特性,我们可以将 GitHub 作为公钥的“单点真理源(Single Source of Truth)”,统一管理多台 VPS 的免密登录权限。

    方案一:一键单次导入(快速初始化)

    新开机器或重装系统后,只需一条命令即可完成拉取与权限配置。

    登录 VPS 终端,运行以下命令(将 your_github_username 替换为你的真实 ID):

    Bash

    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    curl -fsSL https://github.com/your_github_username.keys >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
    • 安全提醒:这里使用追加符号 >>。如果你使用覆写符号 >,请务必确认 GitHub 账户中已绑定了当前电脑可用的密钥,并在新开终端窗口测试登录成功前,切勿关闭当前的 SSH 会话。

    方案二:Cron 定时同步(推荐:兼顾便利与容灾)

    如果你经常在 GitHub 增删密钥,又希望多台 VPS 自动跟进,可以通过定时任务定期拉取。

    为了避免拉取失败(如网络中断、GitHub API 故障)导致 authorized_keys 被写空而把自己锁在门外,脚本中必须加入临时文件校验与兜底机制。

    1. 编写同步脚本

    创建脚本文件 ~/.ssh/sync_keys.sh:

    Bash

    cat << 'EOF' > ~/.ssh/sync_keys.sh
    #!/bin/bash
    set -e
    
    GITHUB_USER="your_github_username"
    TARGET_FILE="$HOME/.ssh/authorized_keys"
    TEMP_FILE=$(mktemp)
    
    # 确保目录和初始权限正常
    mkdir -p "$HOME/.ssh"
    chmod 700 "$HOME/.ssh"
    
    # 拉取公钥并校验非空
    if curl -fsSL --connect-timeout 10 "https://github.com/${GITHUB_USER}.keys" -o "$TEMP_FILE" && [ -s "$TEMP_FILE" ]; then
        # 覆盖同步(完全以 GitHub 为准)
        mv "$TEMP_FILE" "$TARGET_FILE"
        chmod 600 "$TARGET_FILE"
    else
        # 拉取失败或内容为空则丢弃,保持原有 authorized_keys 不变
        rm -f "$TEMP_FILE"
    fi
    EOF
    
    chmod +x ~/.ssh/sync_keys.sh
    

    2. 设置 Cron 定时任务

    运行 crontab -e,添加以下内容(以每 2 小时自动同步一次为例):

    Code snippet

    0 */2 * * * /bin/bash ~/.ssh/sync_keys.sh >/dev/null 2>&1
    

    方案三:SSH 原生动态拉取(进阶方案)

    OpenSSH 提供了 AuthorizedKeysCommand 机制,允许每次有 SSH 连接进入时,直接运行外部脚本动态获取公钥,无需在本地保留静态的 authorized_keys。

    1. 创建拉取脚本

    创建系统级脚本 /usr/local/bin/fetch-github-keys:

    Bash

    #!/bin/bash
    # 参数 $1 代表当前尝试登录的本地用户名
    TARGET_USER="root"
    GITHUB_USER="your_github_username"
    
    if [ "$1" = "$TARGET_USER" ]; then
        curl -fsSL --connect-timeout 5 "https://github.com/${GITHUB_USER}.keys"
    fi
    

    赋予执行权限:

    Bash

    chmod 755 /usr/local/bin/fetch-github-keys
    

    2. 配置 SSH 守护进程

    编辑 /etc/ssh/sshd_config(或在 /etc/ssh/sshd_config.d/ 下新建配置文件):

    Plaintext

    AuthorizedKeysCommand /usr/local/bin/fetch-github-keys %u
    AuthorizedKeysCommandUser nobody
    

    重启 SSH 服务生效:

    Bash

    sudo systemctl restart sshd
    

    注意与权衡: 动态拉取虽然能做到“GitHub 删 key 秒级失效”,但强依赖 VPS 访问 GitHub 的瞬时网络状况。一旦 VPS 国际链路拥堵或 GitHub 解析波动,可能直接导致无法登入。因此,生产环境更推荐方案二(定时同步到本地磁盘)。

    安全实践要点

    1. 公钥公开性:GitHub 的 .keys 属于全网公开数据,切勿在此放包含敏感标识的私人测试公钥。
    2. 账号保护:GitHub 账户成为你的服务器通行证中心,必须开启 2FA(双重认证),避免 GitHub 账户被盗导致名下 VPS 权限全部失守。
    3. 保持备用连接:每次变更 SSH 配置或运行全量覆盖脚本时,务必保留当前终端会话,另起终端测试 ssh user@ip 确认能成功登入后再退出。