分类: 瞬息

  • 终身学习:怎样与世界同步进化

    《终身学习:怎样与世界同步进化》这本书蕴含着丰富的思考维度!以下总结梳理了几个最值得深入思考的核心命题:

    🎯 终身学习的本质困境

    📖 读书是跨时空社交

    书是“不同时空里的人写的信”,读书本质是“跨时空社交”。在信息爆炸时代,我们需要思考:如何平衡碎片化阅读与深度思考?社交需求是否会让我们更依赖“被投喂”的知识,而非主动探索?

    😰 学习焦虑的深化

    学习从“谋生意义”深化为“求存意义”,知识现在直接体现为具体利益。这引发了一个关键问题:当学习成为生存必需,如何避免“为学习而学习”的功利化陷阱?

    💡 认知升级的路径与挑战

    🧠 认知四境界

    从“不知道自己不知道”到“不知道自己知道”,每个境界都有巨大价值。当下人类文明正处于“大拐弯”时代,认知能力是核心竞争力。

    👀 “两只眼”理论

    成功往往需要“两种优势”:一只眼盯着传统优势,另一只眼盯着新兴机会。在“终身跨界”的时代,如何平衡“深耕专业”与“拓展边界”?

    🌟 社会现象背后的深层逻辑

    🎲 概率权的争夺

    穷人倾向“拿确定的东西”,放弃“概率权”;富人则通过“概率下注”把握机会。普通人可通过学习、认知升级,从“确定的平庸”转向“不确定的机会”。

    💬 谈资成为新货币

    传统社会以“经济资本”定地位,现代社会以“谈资”(文化资本)定圈层。当“谈资”成为社交硬通货,我们是否会陷入“为炫耀而学习”的误区?

    🤔 思维工具与认知框架

    ❤️ 王阳明心学的现代意义

    “此心俱足,不假外求”强调向内求,拒绝依赖外部权威。在信息过载的时代,如何通过自我觉察而非外部知识获取力量?

    ⚙️ 第一性原理的力量

    马斯克用“第一性原理”拆解问题,拒绝“经验主义”。在复杂问题面前,如何剥离表象,找到事物的本质?

    🔍 科学思维与信息甄别

    🕵️ 阴谋论盛行的根源

    本质是人类“对控制感的需求”和“认知一致性”的进化结果。如何用科学思维(如贝叶斯定理)替代阴谋论思维?

    🧐 批判性思维的重要性

    警惕“绝对真理”,查理·芒格说:“要拒绝看似机会的杂七杂八诱惑,修炼自己的认知。”

    📚 终身学习的实践路径

    🔄 “二元学习法”

    快速建立新领域认知的方法:找到该领域“针锋相对的两位代表性人物”,吃透其思想。

    ❓ 问题比答案更重要

    知识增长伴随无知增长,“答案渐趋廉价,问题愈发珍贵”,好问题是创新的关键。

  • 为好兄弟修一张千禧风格照片

    原图

    调整后


    调整前

    调整后


    Camera Raw /滤镜

    调色后的故事“这两张呢,是他提供的照片里拍摄的角度以及构图中是最佳的!在后期影像中改变了画面的构图(16:9)。”

    从照片的色彩中一眼就看到了90年代(千禧)。那时的人们开始为自己做决定,人生的路径高度可预测。从个体户、下海、转行发生了巨大的改变,命运的齿轮开始由自己把握。

    那是一个新旧交替、充满野性与烟火的时代。“芳华”考虑到整体构图协调,我添加了这两个字。我理解的芳华,不是盛放的瞬间,而时当时未被珍惜、后来无法复制的那段时光。“芳华”不是为了赞美当下,其真正的寓意是“人们是身在其中并不自知,但有时回望时,那才是最好的一段时间。”

    总之这两个字有时间差、有距离感。最后这是一张90年代——千禧初期的纪实胶片感。”

  • 年末了

    今年许多事情不尽人意,跌跌撞撞快到小马先生家里了。充满未知且惊险的故事马上要开始了……没有预先排练,只能临场发挥!各位主角(zhǔ jué)准备好了吗?

  • 使用Python3+Nginx写一个监控补货站点

    第一阶段:基础环境准备

    在开始之前,确保你的 Linux 服务器(Ubuntu/Debian 推荐)环境是干净且完备的。

    • 安装必要系统组件
    # 更新系统
    apt update && apt upgrade -y
    # 安装 Python 环境及工具
    apt install -y python3 python3-pip google-chrome-stable nginx curl psmisc
    • 安装 Python 依赖库
    # DrissionPage: 网页自动化
    # Flask/Flask-CORS: 订阅接口
    # pytz: 上海时区处理
    pip3 install DrissionPage Flask flask_cors pytz --break-system-packages
    

    1.5权限与防火墙配置

    在脚本运行前,必须打通 80 端口访问通道:

    • 创建目录并赋权(使用 nano 编辑时可直接执行以下命令):
    mkdir -p /var/www/html
    chown -R www-data:www-data /var/www/html
    chmod -R 755 /var/www/html
    
    • 放行端口(确保云服务器防火墙和系统防火墙双重放行):
    ufw allow 80/tcp    # 网页访问
    ufw allow 5000/tcp  # 订阅接口
    ufw allow 587/tcp   # 邮件发送

    第二阶段:核心代码部署

    我们需要在 /root 目录下创建两个 Python 文件。

    1. 订阅后端 (sub_server.py)

    nano /root/sub_server.py

    用于接收用户在网页上填写的邮箱。

    • 代码要点:监听 5000 端口,将邮箱写入 subscribers.txt
    • 启动命令nohup python3 /root/sub_server.py > /root/sub_server.log 2>&1 &

    2. 库存监测器 (spartan_monitor.py)

    nano /root/spartan_monitor.py

    这是最核心的脚本。

    • 代码要点
      • MONITOR_CONFIG: 填入你要监控的 PID(ProductID)。
      • MAIL_SETTINGS: 填入你的 QQ 邮箱和 16位授权码
      • SERVER_IP: 必须填入你的公网 IP,否则网页点击订阅会没反应。
      • SAVE_PATH: 默认 /var/www/html/index.html

    第三阶段:文件与目录结构检查

    请确认你的服务器文件布局如下:

    文件路径作用说明备注
    /root/spartan_monitor.py监测脚本手动运行一次测试逻辑
    /root/sub_server.py订阅 API必须保持后台持续运行
    /root/subscribers.txt邮箱数据库权限建议 644,每行一个邮箱
    /root/stock_status.json状态机缓存脚本自动生成,对比上次库存
    /var/www/html/index.html前端展示页确保 Nginx 拥有读取权限

    第四阶段:自动化与持久化 (关键点)

    • 让订阅接口永不掉线

    使用 nohup 启动后,即使你关闭 SSH 窗口,它也会运行。

    nohup python3 /root/sub_server.py > /root/sub_server.log 2>&1 &
    • 让监测脚本定时运行

    我们使用 Crontab 来实现每 5 分钟自动巡检一次。

    crontab -e

    在文件最下方加入:

    # 每5分钟运行一次监测脚本,并输出日志到 cron_log.log 方便排错
    */5 * * * * /usr/bin/python3 /root/spartan_monitor.py >> /root/cron_log.log 2>&1

    第五阶段:如何进行一次完整的“补货测试”?

    为了确认邮件能不能发出来,你不需要等官方补货,可以手动触发:

    • 添加测试邮箱:手动在 /root/subscribers.txt 填入你的测试邮箱。
    • 修改缓存骗过脚本
      • 打开 /root/stock_status.json
      • 找一个现在状态是 AVAILABLE 的产品,把值改成 "SOLD OUT"
    • 手动运行脚本
    python3 /root/spartan_monitor.py

    查看结果:脚本会发现状态从 “SOLD OUT” 变回了真实网页的 “AVAILABLE”,从而判定为“刚刚补货”,立刻发信。

    第六阶段:常见问题排查 (故障手册)

    • 网页时钟不走:检查网页源代码里的 iso_time 是否正确生成,且浏览器没报错。
    • 订阅显示“后端未连接”:检查服务器 5000 端口是否在防火墙(如腾讯云/阿里云的安全组)放行。
    • 邮件报 SSL 错误:确认代码里使用的是 server.starttls() 而不是 SMTP_SSL(对于 587 端口)。
    • DrissionPage 启动失败:通常是因为残留的 Chrome 进程太多,代码里的 pkill -9 chrome 会尝试清理,如果还不行,请增加服务器 Swap 交换内存。

    日常维护与测试

    • 文件与路径一览表
    文件路径作用运维操作
    /root/sub_server.py订阅 API若点击订阅没反应,重启此脚本
    /root/subscribers.txt邮箱数据库可用 nano 手动增删邮箱
    /root/stock_status.json库存记录删掉此文件可强制脚本触发一次提醒
    /var/www/html/index.html前端展示页直接浏览器访问 http://你的IP 查看
    • 如何重启订阅后端?

    如果你改了代码或者发现后端死掉了,先杀掉它再重启:

    pkill -f sub_server.py
    nohup python3 /root/sub_server.py > /root/sub_server.log 2>&1 &

    核心逻辑复习

    本系统采用 “状态机对比” 模式:

    • 第 1 步:从 stock_status.json 获取上一次状态。
    • 第 2 步:爬取 Spartan 官网获取当前状态。
    • 第 3 步:对比。只有 [之前是 SOLD OUT][现在是 AVAILABLE] 时,才会发送邮件。
    • 第 4 步:更新 JSON 文件和网页。

    这套流程现在已经刻在你的服务器里了。下一步:建议你在浏览器打开你的 IP 地址,亲自测试一下订阅功能是否能正常将邮箱写入 /root/subscribers.txt

    注意❗

    Traceback (most recent call last):
    
      File "/root/spartan_monitor.py", line 234, in <module>
    
        check_stock()
    
      File "/root/spartan_monitor.py", line 96, in check_stock
    
        page = ChromiumPage(co)
    
               ^^^^^^^^^^^^^^^^
    
      File "/usr/local/lib/python3.11/dist-packages/DrissionPage/_pages/chromium_page.py", line 23, in __new__
    
        browser = Chromium(addr_or_opts=addr_or_opts)
    
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
      File "/usr/local/lib/python3.11/dist-packages/DrissionPage/_base/chromium.py", line 41, in __new__
    
        is_headless, browser_id, is_exists, ws_only = run_browser(opt)
    
                                                      ^^^^^^^^^^^^^^^^
    
      File "/usr/local/lib/python3.11/dist-packages/DrissionPage/_base/chromium.py", line 501, in run_browser
    
        is_exists = connect_browser(chromium_options)
    
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
      File "/usr/local/lib/python3.11/dist-packages/DrissionPage/_functions/browser.py", line 38, in connect_browser
    
        raise BrowserConnectError(_S._lang.BROWSER_CONNECT_ERR1_, port, port, ADDRESS=address)
    
    DrissionPage.errors.BrowserConnectError: 
    
    Browser connect failed, check whether the port 9222 is a browser and "--remote-debugging-port=9222" startup item is added.
    
    Address: 127.0.0.1:9222
    
    Version: 4.1.1.2
    

    这个错误 DrissionPage.errors.BrowserConnectError 是自动化脚本中最常见的报错之一。它意味着 DrissionPage 无法连接到 Chrome 浏览器

    由于你是在 Linux 服务器上以 root 身份运行,通常由以下三个原因造成:

    1. 核心原因:Chrome 无法在 root 模式下正常启动

    Chrome 默认禁止以 root 身份运行,除非添加 --no-sandbox 参数。虽然代码里写了,但如果后台有残留的 Chrome 进程(死锁状态),DrissionPage 尝试启动新实例时会失败。

    解决方法:彻底清理残留进程 在终端运行:

    # 强制杀死所有 Chrome 进程
    pkill -9 chrome
    pkill -9 chromium

    2. 环境兼容性:缺少运行依赖

    在 Linux (Ubuntu/Debian) 上运行 Headless Chrome 需要一些底层的图形库支持(即使你不使用显示器)。

    解决方法:补充安装依赖

    apt-get update
    apt-get install -y libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2

    3. 代码微调:显式指定无沙盒模式

    请使用 nano /root/spartan_monitor.py 检查你的 check_stock 函数,确保 co (ChromiumOptions) 的设置部分是这样的:

    def check_stock():
        # 强制清理(双重保险)
        os.system("pkill -9 chrome > /dev/null 2>&1")
        
        co = ChromiumOptions()
        co.set_browser_path(CHROME_PATH)
        
        # 必须包含以下几项
        co.set_argument('--no-sandbox')            # root 运行必备
        co.set_argument('--headless')              # 服务器无界面必备
        co.set_argument('--disable-gpu')           # 减少资源占用
        co.set_argument('--disable-dev-shm-usage') # 防止内存不足导致的崩溃
        co.set_argument('--remote-debugging-port=9222') # 显式指定端口
        
        # 如果还是报错,尝试添加这一行,指定一个干净的用户数据目录
        co.set_user_data_path('/tmp/chrome_user_data')
        
        page = ChromiumPage(co)
        # ... 后续代码

    4. 权限问题:/tmp 目录

    有时候 Chrome 无法在默认的 /tmp 目录下创建临时文件。 你可以尝试手动创建刚才指定的目录并赋权:

    mkdir -p /tmp/chrome_user_data
    chmod -R 777 /tmp/chrome_user_data
    

    验证步骤

    修改完代码并清理进程后,直接手动运行:

    python3 /root/spartan_monitor.py

    如果看到以下输出,说明修好了: [2025-xx-xx] 检查中...

  • 使用Docker-Compose部署Nginx Proxy Manager

    本次教程基于Debian12_x86系统

    1. 更新系统

    首先,确保你的系统是最新的。

    apt update && apt upgrade -y

    2. 安装 Docker 和 Docker Compose

    安装 Docker 的必要依赖包

    apt install -y apt-transport-https ca-certificates curl software-properties-common

    添加 Docker 的 GPG 密钥

    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    设置 Docker 的 stable 仓库

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

    更新包列表并安装 Docker :

    apt update
    apt install -y docker-ce docker-ce-cli containerd.io

    安装 Docker Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

    创建一个项目目录
    首先,创建一个独立的目录来存放所有相关文件,避免文件混乱。

    mkdir -p ~/nginx-proxy-manager
    cd ~/nginx-proxy-manager

    创建 docker-compose.yml 文件

    nano docker-compose.yml

    粘贴下方代码

    services:
    app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    environment:
    TZ: "Australia/Brisbane"
    ports:
    - '80:80'
    - '81:81'
    - '443:443'
    volumes:
    - ./data:/data
    - ./letsencrypt:/etc/letsencrypt


    保存并退出:

    按 Ctrl + X 退出编辑器

    按 Ctrl + O 保存文件

    按 Enter 确认文件名

    验证文件是否创建成功

    创建完成后,使用以下命令检查文件内容:

    查看文件内容

    cat docker-compose.yml

    或者查看文件详细信息

    ls -la docker-compose.yml

    启动服务

    docker-compose up -d
    

    后续管理 Nginx Proxy Manager Docker 指令:

    # 启动服务
    docker-compose up -d
    
    # 查看日志
    docker-compose logs
    
    # 停止服务
    docker-compose down
    
    # 重启服务
    docker-compose restart

    常见 YAML 格式错误

    • 缩进问题:必须使用空格,不能使用 Tab 键
    • 冒号后面必须有空格key: value 而不是 key:value
    • 字符串引号:可以使用单引号、双引号或不使用引号,但要保持一致
    • 列表格式:使用 - 开头表示列表项

    文稿参考:https://nginxproxymanager.com/

  • 安装 Immich

    要求

    • 具有至少 4GB RAM 和 2 个 CPU 内核的系统。
    • Docker

    设置服务器

    第 1 步 – 下载所需的文件

    创建一个您选择的目录(例如 )来保存 和 文件。./immich-appdocker-compose.yml.env

    移动到您创建的目录

    mkdir ./immich-app
    cd ./immich-app

    通过运行以下命令下载 docker-compose.yml 和 example.env

    获取docker-compose.yml文件

    wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

    获取 .env 文件

    wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

    或者,您可以从浏览器下载这两个文件,并将它们移动到您创建的目录,在这种情况下,请确保将重命名为 。example.env.env

    步骤 2 – 使用自定义值填充 .env 文件

    默认环境变量内容

    # You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables

    # The location where your uploaded files are stored
    UPLOAD_LOCATION=./library

    # The location where your database files are stored. Network shares are not supported for the database
    DB_DATA_LOCATION=./postgres

    # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
    # TZ=Etc/UTC

    # The Immich version to use. You can pin this to a specific version like "v2.1.0"
    IMMICH_VERSION=v2

    # Connection secret for postgres. You should change it to a random password
    # Please use only the characters `A-Za-z0-9`, without special characters or spaces
    DB_PASSWORD=postgres

    # The values below this line do not need to be changed
    ###################################################################################
    DB_USERNAME=postgres
    DB_DATABASE_NAME=immich
    • 填充您存储备份资产的首选位置。它应该是服务器上具有足够可用空间的新目录。UPLOAD_LOCATION
    • 考虑更改为自定义值。Postgres 不公开,因此此密码仅用于本地身份验证。 为避免 Docker 解析此值时出现问题,最好仅使用字符 。 是一个方便的实用程序。DB_PASSWORDA-Za-z0-9pwgen
    • 通过取消注释该行来设置您的时区。TZ=
    • 如有必要,填充自定义数据库信息。

    第 3 步 – 启动容器

    从您在步骤 1 中创建的目录(现在应该包含您的自定义和文件),运行以下命令以将 Immich 作为后台服务启动:docker-compose.yml.env

    启动容器

    docker compose up -d

    试用 Web 应用

    第一个注册的用户将是管理员用户。管理员用户将能够将其他用户添加到应用程序中。

    要注册管理员用户,请访问 Web 应用程序,然后单击“入门”按钮。http://<machine-ip-address>:2283

    按照提示注册为管理员用户并登录应用程序。

    下载移动应用程序

    手机应用程式可从以下位置下载:

  • 网页中怎么引入icon的图标

    使用字体图标(如Font Awesome)

    Font Awesome是最流行的字体图标库之一,它允许你通过CSS来使用矢量图标。

    步骤:

    引入Font Awesome在HTML的<head>部分,通过<link>标签引入Font Awesome的CSS文件。

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">

    使用图标

    使用<i>标签和特定的类名来插入图标。

    <i class="fas fa-heart"></i>
    
    <a href="https://www.google.com/search?q=yhd.org" class="fa-brands fa-google"><i></i> 搜索一下</a>

    图标库:https://fa6.dashgame.com/

  • Nginx Proxy Manager 可视化面板一键安装部署方法

    2.更新下VPS系统环境:

    apt update -y && apt install -y curl socat wget sudo

    3.安装 Docker:

    curl -fsSL https://get.docker.com | sh

    4.一键安装 Nginx Proxy Manager:

    docker run -d \
      --name=npm \
      -p 80:80 \
      -p 81:81 \
      -p 443:443 \
      -v /home/npm/data:/data \
      -v /home/npm/letsencrypt:/etc/letsencrypt \
      --restart=always \
      jc21/nginx-proxy-manager:latest

    5.安装成功后进入NGINX后台面板:

    服务器IP加81端口访问网页

    用户:admin@example.com

    密码:changeme

    登入后记得先修改密码!

    官方手册:https://nginxproxymanager.com/guide/

    最新修订:2025.11.8日

    近期安装的 Nginx Proxy Manager 需要自己手动设定管理员账户密码哦

  • 安装 Agent

    哪吒监控的被控端服务被称为 Agent,本文档将介绍如何在被控端服务器上安装 Agent,并与 Dashboard 连接。

    TIP

    Agent 二进制文件仓库地址为:https://github.com/nezhahq/agent/releases

    一键安装 Agent

    哪吒监控支持在 Windows、macOS 和 Linux 上一键安装 Agent。遵循本文档的步骤,你可以轻松地在服务器上部署它。

    准备工作

    在安装前,需要提前在管理面板中设置通信域名,该域名不建议接入 CDN。本文档以示例通信域名 “data.example.com” 为例。

    1. 在后台管理面板点击头像,进入“系统设置”页。
    2. 在“Agent 对接地址【域名/IP:端口】”项中填入通信域名和端口 “data.example.com:8008”。
    3. 点击“确认”保存设置。

    一键安装步骤

    1. 在 服务器 页面中,点击 安装命令 并选择对应操作系统,安装命令将自动复制到你的剪贴板。
    2. 在被控端服务器中运行安装命令,等待安装完成后返回到 服务器 页面查看是否上线。
    3. 如果安装成功,页面中将自动弹出新的服务器,你可以点击编辑按钮为其设置名称。

    平台特有说明

    Windows 特殊说明

    1. 在 Windows 服务器中,运行 PowerShell。
    2. 在 PowerShell 中粘贴并运行安装命令。
    3. 如遇到「执行策略变更」确认提示,输入 Y 并回车。

    其他方式安装 Agent


    在群晖系统中安装 Agent(DSM 7)

    点击展开/收起

    由于群晖(Synology NAS)设备的系统基于特定版本的 Linux,其 shell 环境和软件包管理与标准 Linux 系统有所不同,因此不支持一键安装脚本。需要手动安装 Agent,具体步骤如下:


    1. 准备工作

    1. 确保拥有管理员权限
      • 登录群晖的管理界面,或通过 SSH 使用管理员账户登录设备。
    2. 安装必要的依赖
      确定群晖设备已安装 wgetunzip 或 curl

    TIP

    也可以提前下载并解压好 Nezha Agent 的二进制文件,通过群晖的 DSM File Station 手动上传,免去安装依赖的步骤。


    2. 下载 Nezha Agent

    1. 确定群晖的 CPU 架构
      使用以下命令获取设备的架构信息:bashuname -m常见架构对应关系:
      • x86_64 对应 amd64
      • armv7l 或 aarch64 对应 arm
    2. 下载适配的 Nezha Agent 二进制文件
      根据设备架构选择正确的下载链接。例如,对于 amd64 架构:bashwget -O nezha-agent.zip https://github.com/nezhahq/agent/releases/latest/download/nezha-agent_linux_amd64.zip
    3. 解压文件
      将下载的压缩包解压到指定目录,例如 /opt/nezha:bashmkdir -p /opt/nezha unzip nezha-agent.zip -d /opt/nezha
    4. 赋予运行权限bashchmod +x /opt/nezha/nezha-agent

    3. 创建配置文件

    1. 创建并编辑配置文件
      在 /opt/nezha 目录下创建 config.yml 文件,并添加以下内容:yamlclient_secret: your_agent_secret debug: false disable_auto_update: false disable_command_execute: false disable_force_update: false disable_nat: false disable_send_query: false gpu: false insecure_tls: false ip_report_period: 1800 report_delay: 1 server: data.example.com:8008 skip_connection_count: false skip_procs_count: false temperature: false tls: false use_gitee_to_upgrade: false use_ipv6_country_code: false uuid: your_uuid
      • 字段说明
        • server:替换为 Dashboard 地址和端口,如 data.example.com:8008
        • client_secret:替换为 Dashboard 配置文件中的 agentsecretkey,路径通常为 /opt/nezha/dashboard/data/config.yaml
        • uuid:为该 Agent 生成一个唯一标识符,不要与同一个 Dashboard 中其他的 Agent 重复,可使用 uuidgen 命令生成:bashuuidgen
      • 保存文件:将文件保存至 /opt/nezha/config.yml

    4. 创建 systemctl 服务文件

    1. 创建服务文件
      在 /etc/systemd/system/ 目录下创建 nezha-agent.service 文件:bashsudo nano /etc/systemd/system/nezha-agent.service
    2. 添加以下内容:ini[Unit] Description=Nezha Agent After=network.target [Service] Type=simple User=root Group=root ExecStart=/opt/nezha/nezha-agent -c /opt/nezha/config.yml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
    3. 保存文件并重新加载服务配置:bashsudo systemctl daemon-reload

    5. 启动 Agent

    1. 启动服务
      使用以下命令启动 Agent:bashsudo systemctl start nezha-agent
    2. 设置开机自启动bashsudo systemctl enable nezha-agent
    3. 查看服务状态
      确保 Agent 已成功启动:bashsudo systemctl status nezha-agent

    6. 验证 Agent 连接

    1. 登录 Dashboard,检查是否有新设备上线。
    2. 如果服务运行正常且日志中无报错,则安装完成。

    在 Windows 系统中手动安装 Agent

    点击展开/收起

    Windows 系统除了一键脚本,也可以下载对应的二进制文件并手动配置,以下是详细步骤:


    1. 准备工作

    1. 确保管理员权限
      使用管理员账户登录 Windows 系统。
    2. 安装必要工具
      • 确保有解压工具(如 7-Zip 或 WinRAR)。

    2. 下载 Nezha Agent

    1. 确认系统架构
      • Windows 系统一般为 amd64 架构,可直接下载对应的二进制文件。
    2. 下载 Nezha Agent 文件
      • 访问 Nezha Agent Releases,下载适用于 Windows 的版本,例如:plaintextnezha-agent_windows_amd64.zip
    3. 解压文件
      • 将下载的压缩包解压到指定目录,例如:C:\nezha

    3. 创建配置文件

    1. 创建并编辑配置文件
      在解压目录中创建 config.yml 文件,内容如下:yamlclient_secret: your_agent_secret debug: false disable_auto_update: false disable_command_execute: false disable_force_update: false disable_nat: false disable_send_query: false gpu: false insecure_tls: false ip_report_period: 1800 report_delay: 1 server: data.example.com:8008 skip_connection_count: false skip_procs_count: false temperature: false tls: false use_gitee_to_upgrade: false use_ipv6_country_code: false uuid: your_uuid
      • 字段说明
        • server:替换为您的 Dashboard 地址和端口,例如 data.example.com:8008
        • client_secret:替换为 Dashboard 的 agentsecretkey,通常位于 /opt/nezha/dashboard/data/config.yaml 文件中。
        • uuid:可以通过在线工具生成。
    2. 保存文件
      将文件保存为 config.yml,存放在 Agent 的目录中。

    4. 运行 Agent

    1. 以管理员权限运行 Agent
      打开命令提示符,进入 Agent 的目录并运行以下命令:powershellnezha-agent.exe -c config.yml
    2. 验证连接
      • 登录 Dashboard,查看是否有新设备上线。
      • 如果日志中没有报错信息,说明安装成功。

    5. 设置为服务运行

    1. 安装为服务
      • 进入 Agent 的目录,在命令提示符中运行:powershellnezha-agent.exe service install
    2. 启动服务
      • 安装成功后,Agent 会自动以服务形式启动,重启系统时也会自动运行。
    3. 卸载服务
      • 如需卸载服务,运行以下命令:powershellnezha-agent.exe service uninstall

    在 OpenWrt 系统中安装 Agent

    点击展开/收起

    OpenWrt 是轻量级 Linux 系统,需通过手动下载和配置安装 Nezha Agent。


    1. 准备工作

    1. 确保管理员权限
      • 通过 SSH 登录到 OpenWrt,使用 root 账户操作。
    2. 安装必要工具
      • 更新软件包列表并安装必要工具:bashopkg update opkg install wget unzip

    2. 下载 Nezha Agent

    1. 确定系统架构
      使用以下命令获取架构信息:bashuname -m常见架构对应关系:
      • x86_64 对应 nezha-agent_linux_amd64.zip
      • arm 或 aarch64 对应 nezha-agent_linux_arm.zip
    2. 下载适配的 Nezha Agentbashwget -O nezha-agent.zip https://github.com/nezhahq/agent/releases/latest/download/nezha-agent_linux_<arch>.zip
    3. 解压文件
      解压文件至 /etc/nezha 目录:bashmkdir -p /etc/nezha unzip nezha-agent.zip -d /etc/nezha

    3. 创建配置文件

    1. 创建配置文件
      创建并编辑 /etc/nezha/config.yml 文件并填入以下内容:bashtouch /etc/nezha/config.yml vi /etc/nezha/config.ymlyamlclient_secret: your_agent_secret debug: false disable_auto_update: false disable_command_execute: false disable_force_update: false disable_nat: false disable_send_query: false gpu: false insecure_tls: false ip_report_period: 1800 report_delay: 1 server: data.example.com:8008 skip_connection_count: false skip_procs_count: false temperature: false tls: false use_gitee_to_upgrade: false use_ipv6_country_code: false uuid: your_uuid
    2. 保存配置文件
      确保配置文件路径正确:/etc/nezha/config.yml

    4. 运行 Agent

    1. 赋予执行权限并启动 Agentbashchmod +x /etc/nezha/nezha-agent /etc/nezha/nezha-agent -c /etc/nezha/config.yml
    2. 验证 Agent 连接
      • 登录 Dashboard 检查是否有新设备上线。
      • 确认 Agent 运行状态正常。

    5. 设置为开机自启动

    在 OpenWrt 上,可以通过创建服务脚本的方式实现 Nezha Agent 开机自启动。


    1. 创建服务脚本
      在 /etc/init.d/nezha-service 中创建一个服务脚本:bashvi /etc/init.d/nezha-service
    2. 添加以下内容
      将以下内容复制到文件中,并根据需求修改 nezha-agent 的路径和配置文件路径:bash#!/bin/sh /etc/rc.common START=99 USE_PROCD=1 start_service() { procd_open_instance procd_set_param command /etc/nezha/nezha-agent -c /etc/nezha/config.yml procd_set_param respawn procd_close_instance } stop_service() { killall nezha-agent } restart() { stop sleep 2 start }
    3. 赋予执行权限
      保存文件后,赋予脚本执行权限:bashchmod +x /etc/init.d/nezha-service
    4. 启用服务
      运行以下命令启用并启动服务:bash/etc/init.d/nezha-service enable /etc/init.d/nezha-service start
    5. 验证启动状态
      使用以下命令检查服务是否正常运行:bashps | grep nezha-agent

    注意事项

    • 配置文件路径:确保脚本中配置文件的路径(如 /etc/nezha/config.yml)正确。
    • 服务管理:可以使用以下命令管理服务:
      • 手动启动服务:bash/etc/init.d/nezha-service start
      • 停止服务:bash/etc/init.d/nezha-service stop
      • 重启服务:bash/etc/init.d/nezha-service restart
    • 日志排查:如 Agent 无法正常启动,可通过 logread 检查相关日志。

    卸载 Agent

    卸载 Agent 包括停止服务、卸载服务,以及删除相关文件。以下是 Ubuntu 系统的卸载步骤:

    1. 停止并卸载服务:bashcd /opt/nezha/agent/ ./nezha-agent service uninstall
    2. 删除 Agent 文件夹:bashrm -rf /opt/nezha/agent/

    如果安装了多个服务并想要全部卸载,可以使用 Agent 安装脚本的卸载功能:

    bash

    ./agent.sh uninstall

    重新安装并指定 Agent 的 UUID

    添加参数 UUID 让新的 Agent 连接后会继承原有的服务器记录和配置。

    操作步骤

    1. 复制服务器的 UUID
      进入 Dashboard,找到目标服务器并获取其对应的 UUID。
    2. 生成安装命令并添加 UUID
      在生成的安装命令中,添加 NZ_UUID=服务器的UUID 参数。这样可以确保 Agent 正确绑定到指定的服务器记录。
    3. 确认是否卸载旧 Agent
      如果服务器上已有 Agent,请确保卸载旧的 Agent,避免重复注册或冲突。

    示例安装命令

    以下是一个带有 UUID 参数的完整安装命令示例:

    bash

    curl -L https://raw.githubusercontent.com/nezhahq/scripts/main/agent/install.sh -o agent.sh && chmod +x agent.sh && env NZ_SERVER=dashboard.example.com:8008 NZ_TLS=false NZ_CLIENT_SECRET=EXAMPLE NZ_UUID=your_server_uuid ./agent.sh

    将 your_server_uuid 替换为目标服务器的实际 UUID。

  • 哪吒监控 V1 绝佳的开源服务器运维工具

    哪吒监控 V1

    开源、轻量、易用的服务器监控与运维工具。

    一键安装

    支持一键安装面板和监控服务,操作便捷。兼容主流系统,包括 Linux、Windows、macOS、OpenWRT 以及群晖

    实时监控

    支持同时监控多个服务器的状态,提供历史网络状态和延迟图表,监控网页、端口可用性和 SSL 证书状态。支持故障和流量等状态告警,可通过 Telegram、邮件、微信等多种方式提醒。

    轻松运维

    提供 API 获取服务器状态,支持WebSSH、DDNS 和流量监控。可设置定时和触发任务,并批量执行服务器任务。


    安装 Dashboard

    准备工作

    搭建哪吒监控的 Dashboard,你需要:

    1. 一台可以连接公网的服务器。防火墙和安全策略需放行 8008 端口,否则无法访问或接收数据。单核 512MB 内存的服务器即可满足大多数使用场景。
    2. 一个已设置好 A 记录,指向 Dashboard 服务器 IP 的域名。

    TIP

    如果你想使用 CDN,请准备两个域名:

    • 一个配置好 CDN,用作公开访问,CDN 需支持 WebSocket 协议;
    • 另一个域名不使用 CDN,用作 Agent 与 Dashboard 的通信。

    尽管 V1 版本不再区分访问端口和通信端口,但由于不同厂商的 CDN 配置可能导致通信异常,仅建议按上述方式准备域名(非强制要求)。

    本文档以 “dashboard.example.com” 和 “data.example.com” 为例。

    在服务器中安装 Dashboard

    在面板服务器中,运行以下安装脚本:

    bash

    curl -L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

    如果你的服务器位于中国大陆,可以使用镜像:

    bash

    curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh

    以 Docker 安装为例,安装完成后按提示输入以下信息:

    • 请输入站点标题: – 自定义站点标题。
    • 请输入暴露端口: – 公开访问端口(默认 8008,可自定义)。
    • 请指定后台语言: – 选择语言偏好。

    输入完成后,等待拉取 Docker 镜像。安装结束后,如果一切正常,你可以通过域名和端口号访问 Dashboard,例如:
    http://dashboard.example.com:8008

    如果需要再次运行安装脚本,可输入以下命令:

    bash

    ./nezha.sh

    打开管理脚本。

    登录到 Dashboard 配置界面

    后台管理界面的路径为 /dashboard,你只需访问:
    http://dashboard.example.com:8008/dashboard

    首次登录的默认用户名和密码均为 admin

    WARNING

    默认密码为弱密码,对于高权限的面板来说,使用弱密码非常危险!
    建议安装后立即进入管理页面:点击头像 → “个人信息” → “更新个人资料”修改密码。
    建议密码长度至少 18 位,并混合大小写字母、数字及符号。

    配置反向代理

    Dashboard 反向代理配置 官方文档

    更新 Dashboard

    运行脚本:

    bash

    ./nezha.sh

    选择重启面板并更新。


    安装 Agent

    哪吒监控的被控端服务被称为 Agent,本文档将介绍如何在被控端服务器上安装 Agent,并与 Dashboard 连接。


    Nginx Proxy Manager 可视化面板一键安装部署方法

    顾名思义,Nginx Proxy Manager 就是一个 Nginx 的代理管理器,它最大的特点是简单方便。

    即使是没有 Nginx 基础的小伙伴,也能轻松地用它来完成反向代理的操作,而且因为自带面板,操作极其简单,非常适合配合 docker 搭建的应用使用。

    Nginx Proxy Manager 后台还可以一键申请 SSL 证书,并且会自动续期,方便省心。

    下面我们就来介绍如何用 Nginx Proxy Manger 来配合 哪吒面板,实现反向代理和 HTTPS 访问。