本博客运行平台迁移至RISC-V

RISC-V powered!

好消息:迁移非常顺利,跟x86平台迁移一样,原平台就叫server,rv板子就叫board吧:
在自己的机器上:

  1. mysqldump database > db.sql 备份mysql数据库
  2. rsync -azv -R server:/home/mzh ./ 转移家目录
  3. rsync -azv -R mzh board:/home
  4. scp db.sql board:/home/mzh

在rv板子上

  1. apt install php-fpm caddy mariadb-server
  2. 配置好caddy (其实就官方文档就好)
  3. 导入数据库 mysql -u mzh < db.sql
  4. 最关键的一步,把板子的80、443暴露给服务器

设置反向代理,添加以下文件/lib/systemd/system/reverse-tunnel\@.service

[Unit]
Description=Reverse SSH Tunnel
After=network-online.target
[Service]
EnvironmentFile=/etc/default/remote-tunnel@%i
ExecStart=/usr/bin/ssh -i ${ID_KEY} -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -nNT -R 0.0.0.0
:${REMOTE_PORT}:localhost:${LOCAL_PORT} ${REMOTE_SERVER}
RestartSec=5
Restart=always
KillMode=mixed
[Install]
WantedBy=multi-user.target

每个端口一个进程

systemctl daemon-reload && systemctl start reverse-tunnel@https

搞定,这速度杠杠的。

mzh@muse-card-1:/etc/default$ wp --info                                                                  
OS:     Linux 6.6.63 #2.2.4.2 SMP PREEMPT Thu Jun 26 05:06:32 UTC 2025 riscv64                           
Shell:  /bin/sh                                                                                          
PHP binary:     /usr/bin/php8.3                                                                          
PHP version:    8.3.6                                                                                    
php.ini used:   /etc/php/8.3/cli/php.ini                                                                 
MySQL binary:   /usr/bin/mariadb                                                                         
MySQL version:  mariadb  Ver 15.1 Distrib 10.11.8-MariaDB, for debian-linux-gnu (riscv64) using  EditLine
 wrapper                                                                                                 
SQL modes:                                                                                               
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli                                          
WP-CLI vendor dir:      phar://wp-cli.phar/vendor                                                        
WP_CLI phar path:       phar:///usr/local/bin/wp                                                         
WP-CLI packages dir:                                                                                     
WP-CLI cache dir:       /home/mzh/.wp-cli/cache                                                          
WP-CLI global config:                                                                                    
WP-CLI project config:                                                                                   
WP-CLI version: 2.12.0                                                                                   

KubeCon China 2025参会小记

战利品

注册

  • 会议的个人门票755港币,包午饭,总体来说还是比较划算的
  • 香港的个人通行证要在福田地铁附近的公安机器上刷新,我是深圳户口,所以15块一次.
  • 地铁可以直接到会场,所以很方便,就是香港的酒店怪怪的,入口不显眼(可能因为山多?)

    会议感想

  • 现场没有翻译字幕(参会的老外和中国人各种懵逼)
  • 大公司都是老样子,复杂的解决方案,底下的人哪里用得上
  • 小公司讲得大部分题目又过于琐碎,记得有个演示多云部署还失败了(crossplane的你们就不会录好视频直接放么)
  • 很多人英语口语不好也让硬讲(对,说的就是华为)何苦呢……
  • 演讲不要双人讲的时候,感觉特别明显,两人口音不一样,节奏不同的话,千万不要分开讲!听众会晕的
  • 开篇的keynote不错,分析了整个CNCF生态的状态,还cue到了riscv,看得出中美的技术竞争真的是方方面面的
  • AI,AI,到处是AI,喂,这里是CNCF啊!跟AI相关的基本不记得是啥玩意了。

    maintainer meetup

    这个才是重头戏,本来是闭门会议的,我悄咪咪的溜进去了

  • CNCF有专门的3人doc team,其实也做技术辅导,文章辅导还有promotion
  • ToC有个理论是,首次贡献者的贡献必须要一周内反馈
  • CNCF有完整的项目孵化流程,每个都是要符合特定标准的,如果不符合,可以找专门的team来帮助完成,而且CNCF人会定期检查是不是真的落实了,而不是停留在纸上
  • 重要的是“供应商中立性”,比如一个社区不能超过50%的贡献者是同一家公司,amd64 和 arm64都要支持(riscv讨论的时候说到的)
  • CNCF 有专门的 https://clomonitor.io 来监控各个项目的健壮性之类的指标,666

    活动

    刷各种二维码回答问卷才能抽奖得奖品,有点小气。
    CNCF会议方有发衬衫,但是就一件,有些贴纸啥得

    偶遇

  • 午饭时偶遇了个老外,humanlogio的Antoine Grondin,E人就是E人,直接隔壁吃着饭就能跟你握手say hi,我两交换了Github账号(没名片就是痛)
  • Maintainer meetup后,因为太冷跑去喝茶,听到隔壁两日本人教个法国人认识汉字,竖起耳朵旁听才知道,日本人是苹果的,法国人叫Sara,竟然是联合国的,对,联合国也在搞上云CNCF,后来聊到迁移联合国的系统也是极度痛苦,又老又旧没文档那种哈哈哈
  • 另一个日本人是游戏公司的tech leader,kahirokunn 特喜欢用Go写代码,聊了不少Go的贡献和底层实现的趣事
  • 碰到个上交的研究生maintainer,聊了一通,不得不感慨东部发达城市的孩子就是有想法,敏锐的感知到了知道云原生行业发展已经不行,要好好顺应潮流搞AI,还要去最好的地方学(啊,老美)

    餐食

  • 一直有咖啡饮料供应,还是不错的
  • 午饭是高档盒饭,味道不错

OpenWRT 防火墙开启IPv6 端口转发的方法

前言

OpenWRT当启用IPv6时,默认情况下流量会经过主路由防火墙。在外部网络环境中,若想访问家庭局域网内的服务(如SSH、Proxy、NAS等),默认请求将被防火墙拦截,因此需在主路由防火墙中添加允许规则。
这里并不推荐禁用IPv6防火墙:虽然IPv6地址和端口扫描难度较大,但仍存在被扫描风险。所有局域网服务可能暴露于外网,即使未受攻击,家庭宽带提供公网服务也可能被ISP警告。

LUCI网页界面配置

打开OpenWRT路由管理页面,进入 网络 - 防火墙 - 流量规则。

点击 添加 创建新规则。流量规则区的规则优先级高于默认规则,无需担心与默认规则冲突,但需注意同页其他规则的优先级。可通过拖拽调整规则顺序。

规则配置示例:

  • 名称:清晰标识规则用途(例如如 NAS IPv6)。
  • 协议:按需选择协议,不确定时可同时选TCP和UDP。
  • 源区域:选择 WAN(外网流量入口)。
  • 源地址/源端口:留空。
  • 目标区域:选择 LAN(内网目标区域)。
  • 目标地址: 链路本地IPv6地址(通常以 fe80:: 开头)。

移除链路本地前缀(如 fe80::20c:29ff:fed7:fbf 改为 ::20c:29ff:fed7:fbf)。

追加掩码 /::ffff:ffff:ffff:ffff,最终填入 ::20c:29ff:fed7:fbf/::ffff:ffff:ffff:ffff。此配置确保客户端即使因ISP分配的前缀变化仍能被匹配。

目标端口:指定允许的端口(如 80-443)。留空将放行所有端口,存在重大安全风险,不建议。

动作:选择 接受(Accept)。

高级设置:地址族改为 IPv6,其他保持默认。

保存后,可测试外网访问内网服务。若在 状态 - 防火墙 的 forward_wan 链中看到规则及计数器,则规则已生效。

凑了台DL20Gen9

最近攒了台DL20Gen9垃圾服务器,准备做成All-in-one(路由、NAS、监控)。
为了节省磁盘的电,就买了2块硬盘的版本。

DL20gen9

配置清单:

  • 某宝淘的准系统 (¥700)
  • Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz (¥113)
  • 4 x 16GB 2133 ECC Unbuffered 三星内存 (¥600)
  • 2 x 12 TB 氦气盘 (¥1180)
  • 256G 长城nvme (¥113)
  • HP Ethernet 10Gb 2-port 560SFP+ Adapter (¥99)

总记:¥2777

  • DL20gen9 支持最大64G 2133/2400 ECC内存(Unbuffered,某宝上一般叫纯ECC,别买错了)。
  • 想用最大的内存,2133只能配v5的CPU,2400只能配v6,如果混着了,就只能识别一半出来。
  • 如果你买到了坏的CPU,可能会出现DIMM cann't train的错误提示(我就因此换了所有硬件,最后只能是归到CPU上了)
  • 各种固件需要自己更新,要不然一些v5的CPU是无法识别的。

方便链接

iLo4 更新,主要是为了HTML5 的remote console
https://pingtool.org/latest-hp-ilo-firmwares/

System ROM(BIOS)
https://www.chiphell.com/forum.php?mod=viewthread&tid=2643119&extra=page%3D1&ordertype=2&mobile=no

HP这iLo还要许可证,坑爹到家了,贴一个在这了。
iLO 4 高级许可证密钥:
35DPH-SVSXJ-HGBJN-C7N5R-2SS4W
35SCR-RYLML-CBK7N-TD3B9-GGBW2

FreeBSD ports初体验

在开源操作系统的世界里,FreeBSD凭借其稳定性和强大的功能,赢得了不少技术爱好者的青睐。
而FreeBSD中的Ports系统,更是为这款操作系统增添了不少色彩。今天我就分享下我的初次ports体验。

Ports的背景和优势

Ports是FreeBSD中的一个软件包管理系统,它类似于其他操作系统中的包管理器(如Linux中的apt、yum等)。apt,yum更类似FreeBSD中的pkg程序,分发的是二进制包,而Ports系统是为用户提供了一个集中的地方来存储、分发和更新各种开源软件源码编译方式

Ports系统具有以下几个显著优势:

  • 统一管理:Ports提供了一个集中的地方来管理所有的软件包,软件的安装和维护更加方便。
  • 易于更新:Ports会自动处理依赖关系,确保软件包之间的兼容性,提供自动或手动更新选项。
  • 可定制性:用户可以根据自己的需求对软件包进行定制,例如添加额外的功能或修改配置,针对宿主机的CPU类型和使用方法优化。

构建使用的命令行

下面来实战一下,使用Ports系统构建和安装软件包主要依赖于命令行工具。以下是一些常用的命令及其功能,Ports有意思的点就是,全部功能都是用Makefile实现的:

  1. 如果你安装的时候就选择了Ports,就跳过第1步,如果没有就更新Ports
    cd /usr/ports && make fetchindex
  2. 克隆Ports Tree:
    git clone --depth=1 --branch <你的版本号> https://github.com/freebsd/freebsd-ports /usr/ports
  3. 安装软件,例如vim
    cd /usr/ports/editor/vim && make BATCH=yes install clean
  4. 如果需要搜索可用的软件包,可以用search
    make search key=^vim- | grep -E "Port:|Path:|Info:|^$"
  5. 卸载软件包的话,例如,要卸载vim,可以执行以下命令
    cd /usr/ports/editor/vim
    make deinstall
  6. 使用make clean命令可以清理编译过程中产生的临时文件。
  7. 使用make distclean命令可以清理软件包及其临时文件

参考文章: