openssl
静态链接,所以最基础的 hook
函数的方法不可持续了,只能回到了和毛子一样的老路上unraider
改成了动态 keymaker
,每次启动随机生成 RSA keypairs
和 BTRS.key
GUID
倒是没什么,最后会验证下 RSA modulus
的 SHA1
k8s
来部署的,抛开复杂度看,能够以统一的方式控制所有机器并灵活调度的特性深得我心。k8s
具备了很强大的 api-server
所以我决定基于其上搞个简单的导航页。简单介绍下我用到的组件,如果觉得还行的话,其实可以拉代码简单适配自己的设施
ingress
我选择的是 traefik
,这部分其实只要你喜欢,可以随便换cert-manager
管理证书,所以我新增服务只要按照模板写一下配置就轻松跑起来kubectl
来作为 api-server
的 proxy
,配合 caddy
来做反向代理caddy
还负责作为静态资源服务器,我的所有逻辑都是前端完成,frontend -> caddy -> kubectl -> api-server
ingress
资源我都使用 annotations
来添加自定义字段,字段都以 homelab
开头,以 jellyfin
举例:---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: jellyfin
annotations:
kubernetes.io/ingress.class: traefik
homelab/name: Jellyfin # 导航页上显示的名字
homelab/host: jellyfin # 子域名前缀
homelab/order: "33" # 顺序,就是个排序的作用
spec:
entryPoints:
- websecure
routes:
- match: Host(`jellyfin.dosk.host`)
kind: Rule
services:
- name: jellyfin
port: 8096
这部分相对就复杂些了,不过,可以直接参考我封装好的代码 Infinity-Server/dockerset 或镜像 docker.io/springhack/aura
caddy
的代码,反向代理了 kubectl proxy
并提供 file-server
::8000 {
handle_path /services {
rewrite * "/apis/{env.API_GROUP}/{env.API_VERSION}/{env.API_CRD}"
reverse_proxy 127.0.0.1:6000 {
header_up Host {upstream_hostport}
}
}
file_server * {
root /etc/caddy
}
}
简单,如下:
ServiceAccount
,我都放在了独立的 aura namespace
下面:---
apiVersion: v1
kind: Namespace
metadata:
name: aura
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: aura-role
namespace: aura
rules:
- apiGroups:
- ""
- "traefik.io"
- "metrics.k8s.io" # 这部分,是因为镜像添加了 metrics 信息显示
resources:
- "pods" # 同上
- "nodes" # 同上
- "ingressroutes"
verbs:
- "get"
- "list"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: aura-binding
namespace: aura
subjects:
- kind: ServiceAccount
name: aura-account
namespace: aura
roleRef:
kind: ClusterRole
name: aura-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: aura-account
namespace: aura
Deployment
,配合这个 ServiceAccount
:---
apiVersion: apps/v1
kind: Deployment
metadata:
name: aura
namespace: aura
labels:
app: aura
spec:
revisionHistoryLimit: 0
selector:
matchLabels:
app: aura
strategy:
type: Recreate
template:
metadata:
labels:
app: aura
spec:
serviceAccountName: aura-account
containers:
- image: springhack/aura:latest
imagePullPolicy: IfNotPresent
name: aura
ports:
- containerPort: 8000
name: aura
ingress
带有相应 annotations
就会被自动显示到首页上并按照 order
排序ingress controller
几乎可以不用改代码1
个大项目,然后项目华丽转身,倒是没什么损失homelab
,下半年也几乎不折腾它了,稳定跑11
月的时候到二阶梯了179w
,公积金没看光口旁边的电口是一个
rtl8125b
但是还没插线,买的转接卡在路上
上面挂了一个利民的 8 厘米风扇,后面看看如果压不住就换 12 厘米的
XE-99S
还是挺稳定的,CPU
我干脆放弃散热了,热就热吧 =。=前情提要 N100 万兆软路由测测速,接下来魔改下散热
CPU
周围有预留螺丝孔,不过没有对应的散热器4010 PWM
风扇上去(貌似只有猫扇信得过T_T),刚好主板背面有风扇接口(不拆下来我都没发现)其实就是玩,本身家里机柜已经上了万兆的服务器,想要折腾直接虚拟化一个就好了,但是我本人是拒绝
AIO
的,也不用纠结哪个方案好,整活从来不看这个嘛
这个经过十分的曲折,我先列出我用的材料,后面再说坑
N100
小主机,有 PCIe 3.0 x4
通道的那款,毕竟通道是扩展的基础x520-da2/sr2
网卡,双口的,这里是最坑的地方,下文细说NVMe
转 PCIe
的转接卡,本身机器带了一个 sata
供电线,所以找额外供电是 sata
接口的最方便,不需要额外的电源SD
卡,够用就行,软路由嘛,不需要很高性能的 IO
所以直接 SD
卡开机拼装如图:
效果如图(懒得开机,BIOS 里一样看,能识别到就 ok 了):
PCIe 3.0 x4
是 8GT/s x4
,但是 82599ES
芯片组都是 PCIe 2.1
的,受影响下总带宽其实只有 20GT/s
,理论上两个口同时跑是跑不满的,但是宽带的场景一个上行一个下行,在全双工加持下是没有问题的,不过这个还是要测一下,我懒得测试了(因为我们没有万兆的宽带T_T)2.5GbE x4
和一个 WiFi
的插槽,每个占用一条通道,所以占满了所有通道,机器也就没有 USB 3.0
可用,不过我觉着我的目标是软路由嘛,也用不上踩坑分两方面:外部因素和技术踩坑
cx341a
魔改双口,和一张四口 2.5GbE
网卡,接上去之后前者压根识别不到,后者只能识别到 PCI Bridge
设备,这个现象我以前在其他机器上见过,当时觉得是因为 PCI Bridge
之间不兼容导致的x520-sr2
,山寨的那种,不识别x520-sr2
,这张识别了,后面我研究了下可能是和 eeprom
有关,不过这方面我也不是很懂,但是也算是提醒了下,这玩意别乱买,整不好不兼容就亏钱啊,奉劝想要复现我这个玩意的人慎重选择从哪儿买我是对照着
R86s-N
这款新机器来的,差别有四个:
WiFi/BT
,但是我觉得不是必要,想要有加点块装一个就行R86s-N
是 eMMC
,其实和 SD
卡用起来一样2.5GbE
网口比他多一个USB 3.0
接口,但是对我并不重要,可以在 WiFi/BT
和 USB 3.0
两者间取舍一下,因为还有额外的 PCIe 3.0 x1
可以用1300
上下,对比起来我觉得超值
R86s-N
的淘宝截图
N100
型号,BIOS
似乎可以魔改自由分配通道,这点我也没法确定,但是官方确实提供了几个预置的 BIOS
可刷,我也测了下在 BIOS
里对通道可以自由的开启关闭R86s-N
不用 cx341a
换成 x520-sr2
的原因,和我踩的坑可能多少有点关系,毕竟前者特别便宜,没理由换呀书接上文 整活新玩具,半 DIY 一个万兆软路由,测了个速
eth0
作为 wan
接入我的万兆交换机,dhcp
协议(办不起万兆宽带T_T),走 DAC
线(手头没有光纤和模块了)eth1
作为 lan
使用 AOC
线,对端是威联通的雷电三万兆网卡,接入 Macbook Pro
2.5GbE
网口闲置,什么都没接入,所有 MTU
设置 1500
,我知道需要开启巨型帧,但是受限于我的交换机设置,委屈下使用 1500
吧,反正数据也是仅供参考如果所说,协商
5GT/s x4
,是降级了的
WebAuthn
的事情Pico
所以就测试了一波,感觉是个不错的东西WebAuthn
的鉴权,然后给个 cookie
来临时登陆内网RP2040 One
,微雪家的感觉很适合干这个事儿]]>这里就放一个图吧,因为硬件并不是最重要的部分,写代码做鉴权才是麻烦事儿
最近再忙活几件事儿吧
o0o
,其实就是个 vpn
,主要面对于内网穿透的场景,实现了绝大部分可以和 tailscale
/zerotier
媲美的功能unraider
源码更新,只是我不会再放代码出来了,偶尔会在 telegram
群里放一个二进制,佛系更新(感觉没啥意思了,把人家扒的底裤都不剩了)o0o
作为工作之外的另一个收入来源呗unraider
想找个人接着维护,没有维护的欲望了