news 2026/9/26 11:16:35

LibWRT 路由器部署记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LibWRT 路由器部署记录

LibWRT 路由器部署记录

设备信息

  • 设备:京东云亚瑟 AX1800 Pro(MT7981)
  • 系统:LibWRT(OpenWrt 定制固件)
  • 数据盘:/dev/mmcblk0p27(111GB EXT4),挂载到 /mnt/data_mmcblk0p27
  • 引导:有 UBOOT,支持 uboot 刷机救砖
  • 网络:192.168.1.1

当前运行服务

Docker 容器(2个)

容器镜像端口数据目录
1Panel-ghost-ERXughost:6.65.02368/mnt/data_mmcblk0p27/ghost
1Panel-mysql-Xsbymysql:8.4.113306/mnt/data_mmcblk0p27/mysql

其他服务

  • 1Panel:Web 管理面板,端口 10086,数据在 [PATH]
  • cpolar:内网穿透,API 端口 9200,authtoken 已配置
  • cloudflared:Cloudflare Tunnel,2026.9.1 安装,tunnel jinqiu(ID: 8c0476ac-…)
  • ddnsto:内网穿透
  • EasyTier:VPN 组网

存储架构

分区布局(mmcblk0)

p18: /rom(2GB squashfs 只读系统) p26: SWAP(512MB) p27: /mnt/data_mmcblk0p27(111GB EXT4 数据盘)

Overlay 问题(⚠️ 已知问题)

  • 系统 overlay(/overlay)基于 1.9GB loop 设备,受限于 squashfs 结构
  • 当前已用 1.5GB,只剩 ~380MB
  • 1Panel 升级需要更多空间,报空间不足
  • [PATH]/mnt(559MB)是 bind mount 快照,正常现象,不能删
  • [PATH]/usr(814MB)是 opkg 安装的软件

Docker 存储

  • Docker>各服务关键配置

    1Panel

    • 地址:http://192.168.1.1:10086
    • 账号:admin
    • 密码:[REDACTED]
    • 数据目录:[PATH]
    • compose 文件:[PATH]/1panel/apps/hermes-agent/Hermes-Agent/docker-compose.yml

    MySQL(Ghost 专用)

    • 主机:192.168.1.1:3306
    • 密码:[REDACTED]
    • 数据库:ghost_k4djjj(Ghost 实际数据库)
    • 容器名:1Panel-mysql-Xsby
    • 数据目录:/mnt/data_mmcblk0p27/mysql

    Ghost 导航门户

    • 地址:http://192.168.1.1:2368
    • 管理后台:/ghost/#/posts(左侧导航 Posts)
    • 邮件配置:支持 Resend/Mailgun/SMTP(详见邮件配置章节)
    • 加密文章:文章设置中选 “Password protected” 密码保护

    cpolar → Ghost 同步脚本

    • 路径:/tmp/sync_cpolar_links.js
    • 触发:cron,每小时30分执行(30 * * * *)
    • 功能:查询 cpolar API 获取 tunnel 列表,写入 Ghost 文章或自定义站点
    • 注:Ghost 有 REST API 可用,后续可改为通过 Ghost API 同步,不再直接写数据库

    cron 任务

    30 * * * * /usr/bin/node /tmp/sync_cpolar_links.js >> /tmp/sync_cpolar_links.log 2>&1

    Mac mini 服务(attendance-portal-v2)

    服务信息

    • 地址:http://localhost:8767(Mac mini 本地)
    • 外部访问:https://49380772.r7.cpolar.cn(cpolar 映射)
    • 启动方式:launchd(plist 管理),crash 后自动重启
    • plist:[PATH]ai.openclaw.attendance-portal-v2.plist
    • 入口:~/ClaudeCode/attendance-portal-v2/app/server.py
    • Token 缓存:~/ClaudeCode/attendance-portal-v2/data/ican_tokens/
    • 会话存储:~/ClaudeCode/attendance-portal-v2/data/sessions/(加密 .json.enc)

    数据源

    • iCan:已屏蔽(公司永久关闭 2026-09-21)
    • SAP:唯一数据源,走飞连 SPA 认证(Playwright 无头浏览器)

    已知问题

    • 飞连 SPA 有反爬检测,Playwright 自动化登录可能被拒
    • 飞连拒绝 ≠ 登录失败(已登录时会拒绝),后端不应重试
    • 已在 server.py 和 app.js 中做了防护,但极端情况仍可能失败

    部署步骤(从零开始)

    1. 基础环境

    # 确认 SSH key 登录sshroot@192.168.1.1# 确认数据盘挂载df-h/mnt/data_mmcblk0p27

    2. Docker 安装与配置

    # 用 1Panel 安装 Docker,或手动安装# Docker>cat>/etc/docker/daemon.json<<'EOF' { "data-root": "[PATH]", "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://hub.1panel.dev", "https://docker.1ms.run" ] } EOF

    3. 安装 1Panel

    # 从 1Panel 官网安装# 安装时选择数据盘目录# 安装完成后在 Web UI 里安装 MySQL(Ghost 专用数据库)

    4. MySQL 配置(1Panel 安装)

    • 通过 1Panel 安装 MySQL 8.x
    • 注意:删除 compose.yml 中的 /etc/localtime 挂载(与宿主机 symlink 冲突)
    • 手动创建 ghost_k4djjj 数据库:CREATE DATABASE ghost_k4djjj CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    5. Ghost 配置

    • 通过 1Panel 安装,选择 ghost:6.65.0 镜像
    • 数据库选 MySQL(刚装的 1Panel-mysql-Xsby)
    • GHOST_URL 设为http://192.168.1.1:2368(不要用 https,会导致 SSL 错误)
    • 装好后访问 /ghost/#/setup 完成初始化
    • 管理后台 /ghost/#/posts 写文章,Settings → General → Publication language 改中文

    6. cpolar 安装

    # 下载 cpolarcurl-Lhttps://github.com/cpolar/cpolar/releases/download/v3.x.x/cpolar-linux-arm64-o/usr/bin/cpolarchmod+x /usr/bin/cpolar# 配置 authtokencpolar authtoken[YOUR_TOKEN]# 后台运行cpolar http8080&

    7. Mac mini attendance-portal-v2

    # 安装依赖pip3installplaywright playwrightinstallchromium# 启动服务cd~/ClaudeCode/attendance-portal-v2 python3 app/server.py# 配置 launchd plist# 见 [PATH]ai.openclaw.attendance-portal-v2.plistlaunchctl load[PATH]ai.openclaw.attendance-portal-v2.plist

    8. cloudflared(可选,已放弃 DNS 映射)

    # 安装curl-Lhttps://github.com/cloudflare/cloudflared/releases/download/2026.9.1/cloudflared-linux-arm64-o/usr/bin/cloudflaredchmod+x /usr/bin/cloudflared# 配置 tunnelcloudflared tunnel create jinqiu cloudflared tunnel route dns jinqiu attendance.trycloudflare.com# 注:DNS 映射不一定生效(已放弃,用 cpolar)

    坑与注意事项

    1. overlay 系统分区空间

    • /overlay 基于 1.9GB loop 设备,不是数据盘
    • [PATH]/mnt 的 559MB 是 bind mount 快照,无法删除
    • Docker 镜像在数据盘,不占用 overlay
    • 1Panel 升级空间不足是系统 overlay 满了,不是镜像问题

    2. Docker 与 nftables 混用

    • Docker 默认写 iptables 规则,与 LibWRT 的 nftables 混用会弹警告
    • 不影响功能,可以忽略
    • 不要改 /etc/docker/daemon.json 的 iptables 选项,会破坏 1Panel 管理

    3. Ghost 迁移锁问题

    • Ghost 启动时崩溃 “Unable to acquire lock”,migrations_lock 表有残留锁
    • 解决:TRUNCATE TABLE migrations_lock; DROP DATABASE ghost_k4djjj; 重建 Ghost
    • 根因:路由器异常重启导致迁移锁未释放

    4. Ghost SSL 问题

    • GHOST_URL 设成 https://… 会导致 ERR_SSL_PROTOCOL_ERROR
    • Ghost 6.65.0 内部在 2368 端口启用 SSL 但无证书
    • 解决:GHOST_URL 改为 http://192.168.1.1:2368

    5. Ghost 管理界面语言

    • Ghost admin 管理界面始终英文,无法本地化
    • 只有前台公开页面随 Publication language 切换中文

    6. Ghost 资源占用

    • Ghost(183MB) + MySQL(43MB) ≈ 226MB
    • 比 emlog(19MB) + MariaDB(6MB) 高很多,但比 emlog+MariaDB+Hermes(325MB) 低
    • Ghost 镜像 713MB,一次性存储

    7. Ghost 邮件配置

    • ghost-mailconfig 是宿主机工具,装在 Docker 容器里没用
    • Ghost 邮件通过环境变量配(mailgun/resend/smtp)
    • 新用户注册验证需要邮件服务

    8. MySQL localtime 挂载冲突

    • /etc/localtime 在宿主机是 symlink,docker-compose 挂载会冲突
    • 解决:删除 compose.yml 中的 /etc/localtime 和 timezone 挂载行
    • iCAN API 已于 2026-09-21 被公司永久关闭
    • attendance-portal-v2 现在只能走 SAP 数据源

    6. 飞连 SPA 反爬

    • SAP 认证走飞连 SPA,Playwright 自动化可能被检测
    • 飞连拒绝 ≠ 登录失败,已登录的 session 再次登录会被拒绝
    • 不要在登录后频繁重试,会触发服务端异常检测

    7. Mac mini v2 launchd

    • v2 由 launchd 管理,不是 Hermes
    • plist 路径:[PATH]ai.openclaw.attendance-portal-v2.plist
    • 注意 WorkingDirectory 要指向项目根目录,不是 app 子目录

    9. cpolar → Ghost 同步(待实现)

    • Ghost 有 REST API 可用,后续可通过 API 同步,不再直接写数据库
    • emlog 的 cpolar 同步脚本暂时失效,需要重写

    10. iCan 已关闭

    • 拉回来的 wdssmq/zblogphp-nginx:8.2 是 amd64 镜像,在 ARM 路由器上无法运行
    • 如需 zblog,需要找 ARM64 版本或用 Docker 多架构构建

    11. [PATH] 和 [PATH] 迁移到数据盘

    • 问题:1Panel 升级检查 [PATH] 可用空间(要求 ≥500MB),[PATH] 在 overlayfs(1.9GB loop),空间不足报错
    • 解决:bind mount 把 [PATH] 和 [PATH] 都指向数据盘 /dev/mmcblk0p27
    • 操作步骤:
      1. mkdir [PATH]
      2. cp -a [PATH]/* [PATH]/
      3. fstab 添加:option=‘bind’, target=[PATH], uuid=数据盘UUID
      4. mkdir [PATH]
      5. cp -a [PATH]/* [PATH]/
      6. mount --bind [PATH] [PATH]
      7. fstab 添加:option=‘bind’, target=[PATH], uuid=数据盘UUID
      8. 重启验证 df -h [PATH] 显示数据盘(不是 loop 设备)
    • 注意:df -h /overlay 永远显示 loop 设备大小,看 [PATH] 的挂载点才能确认真实存储位置

    12. Hermes Dashboard 9119 不启动(pid:host 问题)

    • 症状:Hermes Gateway(Bot)正常,但 9119 Dashboard 不监听
    • 根因:compose.yml 中使用pid: host,让 Hermes 进程跑在宿主机 PID 命名空间,读不到容器环境变量(包括 HERMES_DASHBOARD=1)
    • 修复:
      1. 删掉pid: host
      2. 添加只读挂载/proc:/host/proc:ro(这样能看到宿主机进程,又不丢容器 env)
      3. 重启容器:docker compose down && docker compose up -d
    • 验证:curl localhost:9119 返回 HTTP 302(跳转登录页,即正常)

    13. 1Panel 升级后容器全重启

    • 正常现象,1Panel 升级会重启 Docker 服务,所有容器重新拉起
    • 等 1-2 分钟容器稳定后再检查服务状态

    14. /proc 挂载注意

    • 用 :ro 只读挂载,不要读写模式,避免安全风险
    • 容器内 /host/proc 是宿主机 /proc,容器内 /proc 是容器自己的
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 11:16:35

SSD 领域中 State 与 Status 解析

目录 一、核心概念区分 二、SSD 中的主要 State 分类 1. NVMe 电源状态&#xff08;Power State, PS0-PS31&#xff09; 2. Autonomous Power State Transition (APST) 3. Controller State / Ready 状态 4. Namespace State 5. 固件内部 FTL / GC / 后台任务状态 三、…

作者头像 李华
网站建设 2026/9/26 11:16:10

MonkeyOCRv2 内网离线部署:15GB Docker 镜像从构建到 GPU 调优

原文链接&#xff1a;MonkeyOCRv2 内网离线部署&#xff1a;15GB Docker 镜像从构建到 GPU 调优 MonkeyOCRv2 是华中科技大学白翔团队与金山办公联合开源的 0.7B「文档原生视觉编码器」&#xff0c;用 1.13 亿张文档图像做双目标预训练&#xff0c;在 17 语种评测反超 235B 大…

作者头像 李华
网站建设 2026/9/26 11:15:38

C语言指针痛点--->指针数组与数组指针

C语言指针痛点—>指针数组与数组指针 一、痛点之情景再现 我们学习C语言到了指针进阶阶段时&#xff0c;虽然知道这两个指针是什么名字&#xff0c;但是可能会分不清它们存的是指针&#xff08;地址&#xff09;还是元素&#xff0c;或者指向的是什么&#xff1f; char *p1[…

作者头像 李华
网站建设 2026/9/26 11:14:48

最高赢取价值万元大奖!仓颉生态创新开发挑战赛等你来挑战

从一个真实需求出发&#xff0c;你想用仓颉做出怎样的作品&#xff1f; 「仓颉开发者生态共建季」第三站——仓颉生态创新开发挑战赛正在进行中&#xff0c;报名及初赛作品提交进入最后两周。 2026 年 10 月 7 日 23:59:59&#xff08;北京时间&#xff09;&#xff0c;报名及…

作者头像 李华