LibWRT 路由器 1Panel 部署前置准备指南
适用场景:新装路由器 / 重装系统后 / 1Panel 升级空间不足后重建
设备:京东云亚瑟 AX1800 Pro(MT7981,LibWRT)
文档版本:2026-09-25
核心理念
先把"存东西的地方"指向数据盘,再装应用。
1Panel 安装应用时会写 /opt,Docker 装完会有>前置工作(按顺序执行,共 18 步)
Step 1:确认数据盘已挂载
df-h/mnt/data_mmcblk0p27# 确认有 100GB+ 可用Step 2:/opt bind mount 到数据盘(关键!必须在装 1Panel 前做)
# 创建目标目录mkdir-p/mnt/data_mmcblk0p27/opt# 复制现有数据(已有数据的话)cp-a/opt/* /mnt/data_mmcblk0p27/opt/# 立即 bind mountmount--bind/mnt/data_mmcblk0p27/opt /opt# 写入 fstab 使其持久化(UUID 换成你数据盘的实际 UUID)uciaddfstabmountucisetfstab.@mount[-1].enabled='1'ucisetfstab.@mount[-1].uuid='03111150-XXXX-XXXX-XXXX-XXXXXXXXXXXX'ucisetfstab.@mount[-1].target='/opt'ucisetfstab.@mount[-1].option='bind'ucisetfstab.@mount[-1].fstype='none'uci commit fstab验证:df -h /opt应显示 /dev/mmcblk0p27(数据盘)。
Step 3:/overlay/upper bind mount 到数据盘(防止 overlay 空间爆)
# 创建目标目录mkdir-p/mnt/data_mmcblk0p27/overlay_upper# 复制现有数据(已有数据的话)cp-a/overlay/upper/* /mnt/data_mmcblk0p27/overlay_upper/# 立即 bind mountmount--bind/mnt/data_mmcblk0p27/overlay_upper /overlay/upper# 写入 fstab 使其持久化(UUID 换成你数据盘的实际 UUID)uciaddfstabmountucisetfstab.@mount[-1].enabled='1'ucisetfstab.@mount[-1].uuid='03111150-XXXX-XXXX-XXXX-XXXXXXXXXXXX'ucisetfstab.@mount[-1].target='/overlay/upper'ucisetfstab.@mount[-1].option='bind'ucisetfstab.@mount[-1].fstype='none'uci commit fstab验证:df -h /overlay/upper应显示 /dev/mmcblk0p27(数据盘)。
Step 4:确认 Swap 开启(可选但建议)
swapon/dev/mmcblk0p26 uciaddfstab swap ucisetfstab.@swap[-1].enabled='1'ucisetfstab.@swap[-1].device='/dev/mmcblk0p26'uci commit fstabStep 5:装 1Panel
# 运行 1Panel 安装脚本(从官网复制)# 安装时选择数据盘目录Step 6:重启验证 bind mount
reboot重启后 SSH 登录,执行:
df-h/opt /overlay/upper# 两个都应显示数据盘 /dev/mmcblk0p27Step 7:装 Docker(1Panel UI)
在 1Panel web 界面里点"安装 Docker"。
Step 8:Docker>cat>/etc/docker/daemon.json<<'EOF' { "data-root": "/mnt/data_mmcblk0p27/docker", "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://hub.1panel.dev", "https://docker.1ms.run" ] } EOF# 重启 Docker/etc/init.d/dockerd restartStep 9:重启验证
reboot
reboot重启后:
dockerps# 确认 Docker 正常Step 10:装 node / npm / Python(opkg,宿主机用)
opkg update opkginstallnodenpmpython3Step 11:装 MySQL(1Panel)
通过 1Panel web 界面安装 MySQL 8.x。
注意:装完后需要删除 compose.yml 中的 /etc/localtime 挂载(与宿主机 symlink 冲突):
sed-i'/etc\/localtime/d'/opt/1panel/apps/mysql/mysql/docker-compose.ymldockercompose up-dStep 12:手动建库 ghost_k4djjj
dockerexec1Panel-mysql-Xsby mysql-uroot -p[MYSQL_PASSWORD]-e\"CREATE DATABASE ghost_k4djjj CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"Step 13:装 Ghost(1Panel)
通过 1Panel web 界面安装 Ghost 6.65.0,选择 MySQL 数据库。
注意:GHOST_URL 设为http://192.168.1.1:2368(不要用 https,会导致 SSL 错误)。
Step 14:Ghost 初始化
访问http://192.168.1.1:2368/ghost/#/setup完成管理员账号创建。
管理后台地址:http://192.168.1.1:2368/ghost/#/posts
Step 15:配 tunnel 映射(cloudflare / cpolar)
在 1Panel 里配置 cloudflare tunnel,或单独安装配置 cpolar,将 Ghost 2368 端口映射到外网。
Step 16:花生壳内网穿透
单独安装花生壳软件,配置映射 2368 端口到外网。
Step 17:部署 cpolar 同步脚本(如需)
# 上传脚本到 /tmp/sync_cpolar_links.js# 写入 croncrontab-e# 添加:30 * * * * /usr/bin/node /tmp/sync_cpolar_links.js >> /tmp/sync_cpolar_links.log 2>&1Step 18:装 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&完整部署架构(装完后的状态)
/dev/mmcblk0p27(数据盘,111GB) ├── /docker # Docker>已知坑点速查# 问题 解决 1 1Panel 升级报空间不足 做 Step 2 /opt bind mount 2 Ghost 迁移锁崩溃 TRUNCATE migrations_lock + 重建数据库 3 Ghost ERR_SSL_PROTOCOL_ERROR GHOST_URL 改为 http://192.168.1.1:2368 4 MySQL localtime 挂载冲突 删除 compose.yml 中的 /etc/localtime 行 5 Docker 与 nftables 警告 不影响功能,忽略 6 Ghost 管理界面无中文 admin 始终英文,只有前台可切中文 7 iCan 已关闭(2026-09-21) 只用 SAP 数据源
凭证汇总(装完后修改)
服务 地址 账号 密码 1Panel :10086 admin [重装后自己设] MySQL :3306 root [重装后自己设] Ghost :2368 [Web设置] [Web设置] cpolar :9200 31494327@qq.com [cpolar账户密码]
相关文件路径
- 本文档:~/router_setup_notes.md
- cpolar 同步脚本:/tmp/sync_cpolar_links.js(部署后才有)
- attendance-portal-v2:~/ClaudeCode/attendance-portal-v2/
- v2 plist:~/Library/LaunchAgents/ai.openclaw.attendance-portal-v2.plist