阅读视图

发现新文章,点击刷新页面。

我的 5.10.1 代 homelab

仅仅更新了一点微小的东西。

为什么又双叒叕升级了?

又几个月过去了,没有什么设备变化,主要是网络上的变化。

跟 cola 大老板起了一个 OpenVPN,用于互相内网访问资源,当然因为一些网段冲突了所以无法访问。

在 Wireguard 的基础上起了个 VXLAN,于是在我这边开了个 VLAN,并且在 GS316EPP 处设置好 VLAN 并物理接入了一台设备,这台设备直接从对方的 Router 获取 DHCP,从而除了变相的实现代理上网以外,同时也能直接访问所在网段的资源。

现在是个什么样子?

2024.11 的构造.png

怎么在已有的上面配置?

因为其余不是我设置的,我只能发一下 GS316EPP 的设置:

VLAN ID lan1 lan13 lan14 lan15 lan16
1 U - T T U
10 - - T T T
20 - - T T T
30 - - T T T
50 - U - - T
40 - - T T T
100 - - T T T
200 - - T T T

大功告成。

自动化压制?

每一周现在我都会压制日本电视的录制,目前都是在我自己的 PC 上压制,感觉很费时间,还要手动上传,打算借着将 E5 OneDrive for Business 同步接入 QNAP 的东风顺便把自动压制做了。

经过一个小时的考察,打算在 Proxmox 上再开一个 lxc,用 iGPU 来压制,这样可以跟 Jellyfin 共用一个 iGPU。如果在 QNAP 或者 Synology 上实现虽然也不是不行,但是感觉会影响 CPU,因为 yadif 这种 deinterlacer 好像是在 CPU 上跑的?

遂开始新建一个 Unprivileged container,同样的,因为我的 E5 同步是在 NAS 上的,所以要在 host 创建一个目录用于挂载文件。

mkdir -p /mnt/lxc_shares/e5

然后将挂载的相关信息写入 /etc/fstab

{ echo '' ; echo '# Mount CIFS share on demand with rwx permissions for use in LXCs ' ; echo '//SynologyIP/mount/QNAP-e5 /mnt/lxc_shares/e5 cifs _netdev,x-systemd.automount,noatime,uid=100000,gid=110000,dir_mode=0770,file_mode=0770,user=SynologyUsername,pass=SynologyPassword 0 0' ; } | tee -a /etc/fstab

其中,SynologyUsernameSynologyPassword 是你的群晖登录信息。也不要忘记更改 //SynologyIP/mount/QNAP-e5 这一部分,例如 //10.0.0.1/Videos

_netdev 让 systemd 认为挂载的是一个网络载点。

x-systemd.automount 如果 NAS 离线然后重新在线了,可以让它被自动挂载。

noatime 设置读取文件(夹)的时候不修改时间戳。

uid=100000,gid=110000 的设置是为了让 host 跟 LXC 内的 UID 和 GID 对应上。简单来说,host 内的 UID 是 100000 的话,LXC 内对应的 UID 就是 0。host 内的 GID 是 110000 的话,LXC 内对应的 GID 就是 10000。

dir_mode=0770,file_mode=0770 设置只有这个 UID 和 GID 才有读写执行权限。Proxmox 的 root 用户对任何文件都有权限。

接下来手动挂载。后面重启之后就是自动挂载。

mount /mnt/lxc_shares/e5

假设你已经创建好了 LXC,修改你的 LXC 设置。

{ echo 'mp0: /mnt/lxc_shares/e5,mp=/mnt/backup' ; } | tee -a /etc/pve/lxc/LXC_ID.conf

我这里需要读写文件夹(压制完再 copy 回去,从而直接上传到 E5),所以去掉了 ro=1

不要忘记将 LXC_ID.conf 里面的 LXC_ID 修改成你实际的 ID。

随后进入 LXC 的终端,添加一个用户组。GID=10000 的话会跟 host 的 GID=110000 对应上。

groupadd -g 10000 lxc_shares

因为我们之前已经做了 Jellyfin 的编解码支持已经设置过一次了,只需要照猫画虎。但这里我遇到了一个问题,我发现跟 Jellyfin 那边不同,我这边的 render 组默认是 993,而 108 被一个叫做 rdma 的组占领了。

root@machine:~# cat /etc/group | grep render
render:x:993:

此时我们需要做一个交换,思路就是,先更改 rdma 组的 GID 为 110,然后过一遍 filesystem 上的文件,将 108 组所有的文件改成 110,最后再将 render 组的 GID 更改为 108。

groupmod -g 110 rdma
groupmod -g 108 render
find / -gid 108 ! -type l -exec chgrp 110 {} \;

此时就大功告成了。因为我给自己开了个用户,所以我还需要将自己添加至 renderlxc_shares

usermod -aG render misaka00251
usermod -aG lxc_shares misaka00251

之后我在 lxc 内用 qsv 遇到了各种莫名其妙的问题,甚至遇到了 Intel 都知道的 bug,然后我转投了 vaapi 虽然可以压制但是画质不尽人意,而且参数非常复杂,最终跟 qsv 硬刚了一个周末,因为 bug 的原因,以前用 hevc 压制,目前只能用 h264 压制了。期待我能找到更好的方法吧。

压制脚本我就先留着不放了吧,怕还有 bug,有需要可以戳我,我单独给你 :D


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

中国移动吉比特 P22g-Clac 企业网关 telnet 教程

本来我是想获取 LOID 的,结果未果,先记录一下吧。

访问 192.168.1.1 使用用户名 CMCCAdmin 登录,密码为 aDm8H%MdA。此时,你应该会被跳转到 192.168.1.1/start.ghtml 这个页面,此时不要关闭这个标签页 A。

新开一个浏览器标签页 B 或者窗口,访问 http://192.168.1.1/usr=CMCCAdmin&psw=aDm8H%MdA&cmd=1&telnet.gch,如果出现 error 1010 代表你的密码错了,如果出现 TelnetSet Success! 代表 telnet 被开启了。

然后在这个新开的标签页 B 内访问 http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch,就可以看到 Telnet 的设置窗口,但不要在这里设置,我们回到最初的 URL 为 192.168.1.1/start.ghtml 的标签页 A,点击刷新,此时应该就会加载跟新标签页 B 一样的 Telnet 设置窗口。

这一步非常重要,如果是在新开的标签页 B 内更改密码的话是不会生效的。

在最初的标签页 A 内设置 telnet 密码之后,可以使用 putty 等软件用 telnet 协议登录啦。

用户名是 CMCCAdmin,密码就是你自己刚刚设置的密码。进入光猫之后,输入 su 来获取 root 权限,密码是 aDm8H%MdA

然后运行 sidbg 1 DB decry /userconfig/cfg/db_user_cfg.xml 来 dump 你现在的光猫配置。解密后的文件在 /tmp/debug-decry-cfg,如果想获取全文的话可以开启 putty 的 log output 功能,这样 cat 一下这个文件就可以变相的存在你的电脑上了。

但我在这个配置文件里面完全没有看到 LOID 信息,这个企业网关貌似不重置也无法重新认证来下发业务数据。不过在光猫的关于认证的设置页面里,可以看到 Password 模式 / LOID 模式 / SN 模式一闪而过,但随后又显示认证成功了。


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

奇怪的 RDP 不保存密码的现象

注意:这里讨论的是 mstsc.exe。

经常我在使用系统的远程桌面连接来连接 RDP 的时候选择了保存密码,但下一次连接时依然会让我输入密码。这太糟心了!

于是我从网上嫖了一个方法,打开你的 PowerShell:

  1. cmdkey /list:TERMSRV/* 列出你所有存储的 RDP 登录信息。
  2. 你可能会发现,每次都让你连接的那个 Target 的 Type 时 Domain Password。使用命令 cmdkey /delete:<你的 target 名字> 先删除它。
  3. 之后,我们使用 cmdkey /generic:TERMSRV/<IP 地址或者域名> /user:<用户名> /pass:<密码> 重新添加一个 Generic Type 的 Target。
  4. 再去连接看看,应该完全没问题了。

如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 5.10 代 homelab

也是一个小升级。

为什么又双叒叕升级了?

为了后续想部署一些 PoE+ 的设备,并且交换机还得有 VLAN 配置,所以购买了 Netgear 家的 GS316EPP。

然后,感觉现在的 9U 柜子太小,就想买个大点的柜子,然后为了让卧室变安静所以想放在客厅。结果当然是发现买的 12U 也太小了,里面真的超级热。

并且,我想将我的房间跟主干网(这个后续本来就想弄在客厅)之间使用光纤连接。正好我手上的 GS316EPP 和 CCR1009 都有 SFP 口。

现在是个什么样子?

2024.06 的构造.png

怎么在已有的上面配置?

客厅

首先将所有设备搬到客厅的机柜内,然后针对两个房间连接的需求拉明线(钉墙上)。因为我的移动光纤接入点在我的卧室,所以还需要买针对这个情况的光纤延长线。

之后,Mikrotik 上因为基本所有的设备都变动了,所以大改了一下。

  • SFP+ 口原来是空的,目前作为跟卧室 SFP 口连接的发射端。SFP 模块使用的是 S-85DLC05D。
  • ETH 口(这是个 combo port,它的旁边还有一个 SFP 口,两者只能同时用一个)原来是在 SFP 口接入了猫棒,用于联通宽带拨号,目前是作为 Linksys E8450 的口。
  • ETH1 口原来是作为移动家宽接入,不变。
  • ETH2 口原来是作为移动企宽接入,不变。
  • ETH3 口忘记原来作为什么了,目前作为 Synology 的口。
  • ETH4 口原来是作为鲲鹏机器的网口,目前作为 QNAP 的口。
  • ETH5 口原来是作为 Redmi AX6000 的网口,目前作为 MS-01 的口。
  • ETH6 口原来是作为 Linksys E8450 的网口,目前作为联通家宽接入,这次购买了另一块 VSOL V2802RH 来作为联通宽带的拨号。
  • ETH7 口备用,作为管理口。

随着网口设备的变动,VLAN 也要跟着变动:

  • LANBridge 仅包含 eth3、eth4、eth5、eth7、combo1 和 sfp-sfpplus1。
  • 对设置 Bridge 下的 Ports 进行设置,其中 eth3、eth4 和 eth5 的 PVID 为 10,剩下均为 1
  • VLAN 1: 对 LANBridge、combo1 & sfp-sfpplus1 做 Unagged
  • VLAN 10: 对 LANBridge、combo1 & sfp-sfpplus1 做 Tagged,对 eth5、eth3 和 eth4 做 Untagged
  • VLAN 20、30、40、100 & 200: 对 LANBridge、combo1、sfp-sfpplus1 eth5 做 Tagged

基本就完成了。因为想把一些吵的设备放在客厅,其中包括了一些工作用的开发板,所以稍微对 Linksys 的 VLAN 进行调整:

VLAN ID Local lan1 lan2 lan3 lan4 wan
1 v - - - - U
10 v U U - - T
20 v - - - - T
30 v - - U U T
40 v - - - - T
100 v - - - - T
200 v - - - - T

基本就完成了。

卧室

卧室的新交换机上,16 号口为 SFP,插入的同样为 Mikrotik S-85DLC05D 光模块。

随后就是设置 VLAN,选择 802.1Q Advanced 之后开始设置。这里我就小小的偷懒一下了。

VLAN ID lan1 lan14 lan15 lan16
1 U T T U
10 - T T T
20 - T T T
30 - T T T
40 - T T T
100 - T T T
200 - T T T

其它口没有插,就空着吧。1 号口之所以 lan 设置成 Untagged 是因为想用这个口也能作为管理口。

然后卧室基本也大功告成了,因为剩下的设备不动,RX6000 还留着呢,有开发板可以往上面插。

遇到的坑

接好光纤没有网

我这样光纤内网对内网传输的话不要勾选 sfp-sfpplus(也就是 SFP+)口 Ehternet 内的 Auto Negotiation,需要手动选择 Speed 为 1G base X。这样的话你会遇到一个看似光纤通了,发送端有在发包但是接收端没有反应的情况。我被这个坑了快 1 个小时。

homepod 指定 Wi-Fi

因为 homepod 肯定跟你共用 Apple ID,而像我一样你自己的手机连上 Self Network 的话,在 IoT Network 的 homepod 会不时地尝试连接到跟你手机一样的 Wi-Fi 网络,这样就糟糕啦!

还好我们可以通过下发配置文件解决这个问题。当然,你需要一台 Mac。

首先,下载 Apple Configurator。然后打开它,点击 File > New Profile 来创建一个新的配置文件。

之后,找到程序左侧的 Wi-Fi,并填写好你的 IoT Wi-Fi 信息。最后不要忘记在 General 那里给自己的配置文件起个名字。最后点击 File > Save,编写配置文件大功告成了。

接下来,我们需要将配置文件 AirDrop 到你的 iOS 设备上。发送成功之后,你的 iOS 设备应该会自动弹出这个配置文件问你安装到哪里,选择其它装置,然后选择你的 homepod。接下来安装即可。

通常,你可能要多试几次——甚至要将你的手机靠近 homepod,或者临时的将手机和 homepod 放在同一个 Wi-Fi 下,不过成功之后,你的 homepod 就不会随着你的手机跑了。

homepod 跨 VLAN 通过别的苹果设备连接不上

本来有一个可以在 RouterOS 上部署 Bonjour-reflector 的(见参考链接第二条),但我的 Mikrotik 设备并不支持 container 特性。Mikrotik 官方说他们会有一个简单的关于 mDNS 的解决方法,但现在依然没兑现。

不过还好,在 Mikrotik 论坛内有人弄出来了只用 Bridge filter 的办法,试了一下还真的能用。

首先,创建你想让 homepod 在哪些 VLAN 工作的 MACVLAN:

/interface macvlan add interface=ServerVLAN name=macvlan10
/interface macvlan add interface=SelfVLAN name=macvlan20
/interface macvlan add interface=IoTVLAN name=macvlan100
/interface macvlan add interface=GuestVLAN name=macvlan200

然后,创建一个 non-VLANed 的桥,并将所有的 MACVLAN 添加进去。

/interface bridge add name=BridgemDNS protocol-mode=none
/interface bridge port add bridge=BridgemDNS interface=macvlan10
/interface bridge port add bridge=BridgemDNS interface=macvlan20
/interface bridge port add bridge=BridgemDNS interface=macvlan100
/interface bridge port add bridge=BridgemDNS interface=macvlan200

接下来,设置这个桥的 Filters 规则,在这个桥上只允许 mDNS 流量。

/interface bridge filter add action=accept chain=forward comment="Allow mDNS only" dst-address=224.0.0.251/32 dst-mac-address=01:00:5E:00:00:FB/FF:FF:FF:FF:FF:FF dst-port=5353 in-bridge=BridgemDNS ip-protocol=udp mac-protocol=ip out-bridge=BridgemDNS src-port=5353

/interface bridge filter add action=drop chain=forward in-bridge=BridgemDNS out-bridge=BridgemDNS comment="Drop all other L2 traffic"

最后,记录下你这个新桥的 MAC 地址,创建一个桥的 NAT 规则。将下方的 11:22:33:44:55:66 改成你桥的 MAC 地址。

/interface bridge nat add action=src-nat chain=srcnat dst-mac-address=01:00:5E:00:00:FB/FF:FF:FF:FF:FF:FF to-src-mac-address=11:22:33:44:55:66 comment="SNAT to Primary VLAN bridge"

大功告成了。

机柜太热

这个没办法,肯定要加散热的东西。不过现在硬盘在 50 多°C左右徘徊,感觉还行……估计又要买大一点的机柜了。

参考链接


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 5.9 代 homelab

不算大升级吧。

为什么又双叒叕升级了?

Dell optiplex 7060 不是很稳定。第一次出现不稳定是当时起了个 Gentoo 的 LXC,然后里面编译 glibc 的时候总是死机。之后就是莫名其妙的死机了好几次。最终想要一台 MS-01 替换掉这台 optiplex,前者比后者性能又强大,还省电。并且,客厅目前的 Koyori 风扇太吵了,打算将 Koyori 的职责推到 Proxmox 上的 Yamada 上。还好我早已经将 HomeFolder 放到 Synology 上了。

五一黄金周的时候,朋友告诉我移动企业宽带的优惠回来了,遂办了一根。200Mbps 上下行对等,1 个静态 IP,3600 一年,每年返费 1800 为话费。

现在是个什么样子?

2024.05 的构造.png

Koyori 虽然放到了我的房间,但是已经不是 7*24 小时运行的状态了。睡觉的时间点是 99.9999% 不会开它的。

怎么在已有的上面配置?

因为我要将 Koyori 从 Linksys 上拔出了,Dell Optiplex 也要从 Mikrotik 上拔出了,正好 Redmi AX6000 还有一个 LAN 空位,而且我正好配置给了 VLAN 10,所以我将 Mikrotik 上原来分配给 Dell Optiplex 的 eth2 分给了企业宽带,而 Koyori 插到了 AX6000 上。因为是静态 IP 的连接方法,所以直接在 IP Address 处设置好静态 IP 的参数就行了。

然后去 Mangle 规则那边设置 mark routing,我将 VLAN 10 划分给了企业宽带,因为可以用端口开各种服务了(80 和 443 还挺麻烦的,别的端口可以用)。

之后,因为我之前的 Proxmox 设置了 Synology 上的备份,所以再做一次备份之后直接在 MS-01 上恢复即可。

Koyori 上还有一些服务,也一并花时间迁移到了新的 Proxmox 上,这方面单独写了博客文章。

同时,这样也正好解决了除了 Mikrotik 外,各个核心服务在断电后需要正常关机的问题。

VLAN 划分又出了问题?

因为将 Proxmox 搬到了客厅,虽然 VLAN 10 可以应用到大多数的机器,但是 Proxmox 内有一个 UU 加速器,需要 VLAN 40。现在的奇怪现象是,Mikrotik 能检测到这台 VM,并且有 offer IP,但是 OpenWRT 拿不到这个 IP。想了半天感觉不是 OpenWRT 的问题,应该是我需要重新划分 VLAN。到 Linksys 后台看果然是这样。

那么怎么设置呢?只需要将对应网口的 VLAN 30 和 40 设置为 Tagged 即可。因为后续可能在 30 下面搞一些东西,所以将 30 也先勾选上了。

VLAN ID Local lan1 lan2 lan3 lan4 wan
1 v - - - - U
10 v U U U U T
20 v - - - - T
30 v - T - - T
40 v - T - - T
100 v - - - - T
200 v - - - - T

设置完之后,必须重启 OpenWRT 才生效

期待下一次 homelab 会变成什么样子呢!


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 5.9 代 homelab

不算大升级吧。

为什么又双叒叕升级了?

Dell optiplex 7060 不是很稳定。第一次出现不稳定是当时起了个 Gentoo 的 LXC,然后里面编译 glibc 的时候总是死机。之后就是莫名其妙的死机了好几次。最终想要一台 MS-01 替换掉这台 optiplex,前者比后者性能又强大,还省电。并且,客厅目前的 Koyori 风扇太吵了,打算将 Koyori 的职责推到 Proxmox 上的 Yamada 上。还好我早已经将 HomeFolder 放到 Synology 上了。

五一黄金周的时候,朋友告诉我移动企业宽带的优惠回来了,遂办了一根。200Mbps 上下行对等,1 个静态 IP,3600 一年,每年返费 1800 为话费。

现在是个什么样子?

2024.05 的构造.png

Koyori 虽然放到了我的房间,但是已经不是 7*24 小时运行的状态了。睡觉的时间点是 99.9999% 不会开它的。

怎么在已有的上面配置?

因为我要将 Koyori 从 Mikrotik 上拔出了,正好 Redmi AX6000 还有一个 LAN 空位,而且我正好配置给了 VLAN 10,所以我将 Mikrotik 上的 eth2 分给了企业宽带。因为是静态 IP 的连接方法,所以直接在 IP Address 处设置好静态 IP 的参数就行了。

然后去 Mangle 规则那边设置 mark routing,我将 VLAN 10 划分给了企业宽带,因为可以用端口开各种服务了(80 和 443 还挺麻烦的,别的端口可以用)。

之后,因为我之前的 Proxmox 设置了 Synology 上的备份,所以再做一次备份之后直接在 MS-01 上恢复即可。

Koyori 上还有一些服务,也一并花时间迁移到了新的 Proxmox 上,这方面单独写了博客文章。

期待下一次 homelab 会变成什么样子呢!


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

搬迁服务至 Proxmox LXC 的一些 tips

个人记录 Jellyfin、ZeroNet & i2p 的搬家,以 Ubuntu 为例。

Jellyfin

秉持着没事不要创建 Privileged Container 的原则,略复杂。

首先,在 host 上挂载你的 NAS。我这里使用的是 Synology,然后采用 NFS Share 的方式。

先创建一个目录用于挂载文件。

mkdir -p /mnt/lxc_shares/synology_multimedia

然后,将挂载相关信息写入 /etc/fstab

{ echo '' ; echo '# Mount CIFS share on demand with rwx permissions for use in LXCs ' ; echo '//SynologyIP/Multimedia /mnt/lxc_shares/synology_multimedia cifs _netdev,x-systemd.automount,noatime,uid=100000,gid=110000,dir_mode=0770,file_mode=0770,user=SynologyUsername,pass=SynologyPassword 0 0' ; } | tee -a /etc/fstab

其中,SynologyUsernameSynologyPassword 是你的群晖登录信息。也不要忘记更改 //SynologyIP/Multimedia 这一部分,例如 //10.0.0.1/Videos

_netdev 让 systemd 认为挂载的是一个网络载点。

x-systemd.automount 如果 NAS 离线然后重新在线了,可以让它被自动挂载。

noatime 设置读取文件(夹)的时候不修改时间戳。

uid=100000,gid=110000 的设置是为了让 host 跟 LXC 内的 UID 和 GID 对应上。简单来说,host 内的 UID 是 100000 的话,LXC 内对应的 UID 就是 0。host 内的 GID 是 110000 的话,LXC 内对应的 GID 就是 10000。

dir_mode=0770,file_mode=0770 设置只有这个 UID 和 GID 才有读写执行权限。Proxmox 的 root 用户对任何文件都有权限。

接下来手动挂载。后面重启之后就是自动挂载。

mount /mnt/lxc_shares/synology_multimedia

假设你已经创建好了 LXC,修改你的 LXC 设置。

{ echo 'mp0: /mnt/lxc_shares/synology_multimedia,mp=/mnt/nas,ro=1' ; } | tee -a /etc/pve/lxc/LXC_ID.conf

如果你不想设置为只读,想要读写权限,可以去掉 ro=1

{ echo 'mp0: /mnt/lxc_shares/synology_multimedia,mp=/mnt/nas' ; } | tee -a /etc/pve/lxc/LXC_ID.conf

不要忘记将 LXC_ID.conf 里面的 LXC_ID 修改成你实际的 ID。

随后进入 LXC 的终端,添加一个用户组。GID=10000 的话会跟 host 的 GID=110000 对应上。

groupadd -g 10000 lxc_shares

开始安装 Jellyfin。

curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash

将需要访问 NAS 文件的用户添加进 lxc_shares 组,这里我们的用户是 jellyfin

usermod -aG lxc_shares jellyfin

默认端口是 8096。

Intel iGPU 编解码支持

首先,去 LXC 内查看 /etc/group 来找到 render 这个组的 GID,我这里是 108。

然后去 Proxmox 的终端内通过 ls -l /dev/dri 命令查看相关硬件的信息:

root@ikazuchi:~# ls -l /dev/dri
total 0
drwxr-xr-x 2 root   root         80 May  7 09:48 by-path
crw-rw---- 1 root   video  226,   1 May  7 09:48 card1
crw-rw---- 1 100000 100108 226, 128 May  7 09:48 renderD128

通常来说,中间的输出都会是 226, 128

之后,去 LXC 的配置文件 /etc/pve/lxc/LXC_ID.conf 内添加以下参数,记得可能需要修改 100108 这个参数,即上面的 render 组 GID+100000。

lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.hook.pre-start: sh -c "chown 100000:100108 /dev/dri/renderD128"

之后,回到 LXC 内,将 jellyfin 用户添加至 render 组:

usermod -aG render jellyfin

然后安装 Intel OpenCL runtime 即可,不要忘记去 Jellyfin 后台设置编解码的选项!

apt install -y intel-opencl-icd

如果想测试的话,可以在 Proxmox 上安装 intel-gpu-tools 这个包,然后运行 intel_gpu_top 来查看状态。在你的 Jellyfin 上触发一下编解码看看吧!

ZeroNet

使用 ZeronetX 作为分支,直接在 release 下载后直接解压即可。将已有的数据文件夹(data 目录)放置于跟 ZeroNet.sh 同级的目录即可。

因为需要局域网内访问控制台,而不是在 headless server 上访问,所以启动参数为 ./ZeroNet.sh --ui_ip '*'

如果需要把它做成一个 systemd 服务,可以创建 /etc/systemd/system/zeronet.service

[Unit]
Description=Zeronet daemon
After=network.target

[Service]
WorkingDirectory=/root/ZeroNet/ZeroNet-linux
ExecStart=/root/ZeroNet/ZeroNet-linux/ZeroNet.sh --ui_ip '*'
User=root
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

你可能需要重新去设置里面设置你的 tracker 来源,端口号等等。

默认端口是 43110。

i2p

首先安装 i2p 本体。

sudo apt install software-properties-common
sudo apt-add-repository ppa:i2p-maintainers/i2p
sudo apt update
sudo apt install i2p

之后,跟 ZeroNet 一样,我们需要在局域网内访问控制台。修改 /var/lib/i2p/i2p-config/clients.config.d/00-net.i2p.router.web.RouterConsoleRunner-clients.config,将 127.0.0.1 替换成 Server 的内网 IP 即可。

默认端口是 7657。

qBittorrent

因为我希望单独划分一个数据盘内有一个文件夹给 qBittorrent,所以我在 ext4 的数据盘(新建的是 Directory)内创建了一个 torrent 文件夹。假设这个文件夹的路径为 /mnt/pve/data-for-all/torrents

首先,去 LXC 内安装 headless 版本的 qBittorrent。

sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https
sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable -y
sudo apt install qbittorrent-nox

然后,创建一个名字为 qbittorrent-nox 的用户和用户组。

sudo adduser --system --group qbittorrent-nox

然后创建一个 systemd service 方便管理,路径为 /etc/systemd/system/qbittorrent-nox.service,内容如下:

[Unit]
Description=qBittorrent Command Line Client
After=network.target

[Service]
Type=forking
User=qbittorrent-nox
Group=qbittorrent-nox
UMask=007
ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=8080
Restart=on-failure

[Install]
WantedBy=multi-user.target

最后启动服务即可。

sudo systemctl daemon-reload
sudo systemctl start qbittorrent-nox
sudo systemctl status qbittorrent-nox
sudo systemctl enable qbittorrent-nox

如果正常启动了,默认用户名是 admin,密码是 adminadmin。去 Tools > Options > Web UI > Authentication 改掉默认的用户名和密码。

之后,同样的,我们采用 Jellyfin 一样的挂载方法。不过需要提前掌握 qbittorrent-nox 这个用户和用户组的 ID。最简单的方法是查看 /etc/passwd。假设这是我的输出:

qbittorrent-nox:x:110:118::/home/qbittorrent-nox:/usr/sbin/nologin

那么接下来我可以将 LXC 关机,然后在 host 内这样挂载:

chown 100110:100118 -R /mnt/pve/data-for-all/torrents
{ echo 'mp0: /mnt/pve/data-for-all/torrents,mp=/mnt/torrents' ; } | tee -a /etc/pve/lxc/LXC_ID.conf

其中,我设置不要忘记将 LXC_ID.conf 里面的 LXC_ID 修改成你实际的 ID。

然后启动 LXC,进入 qBittorrent 的网页端,在 Tools > Options > Downloads > Saving Management 处设置 Default Save Path 为 /mnt/torrents/Downloads

最后去下载 Ubuntu 的 Torrent 试试成功了没有吧!

默认端口是 8080。

与 Jellyfin 同步 qBittorrent 下载文件夹

LXC_ID 替换成 Jellyfin 的 ID。因为 mp0 被占用了,所以用 mp1

{ echo 'mp1: /mnt/pve/data-for-all/torrents,mp=/mnt/torrents' ; } | tee -a /etc/pve/lxc/LXC_ID.conf

禁止吸血

因为可能会下载 PT,所以不能使用 qBittorrent Enhanced,但我也不想再开一个实例(懒),发现了 qBittorrent-ClientBlocker 这个东西。

下载之后,解压到一个临时的地方。

# 拷贝本体
cp qBittorrent-ClientBlocker /usr/local/bin
mkdir -p /etc/qBittorrent-ClientBlocker/qbittorrent-nox/
cp config.json /etc/qBittorrent-ClientBlocker/qbittorrent-nox/

我们这里使用 systemd 服务来用于开机自启和后台运行。创建 /etc/systemd/system/qbittorrent-clientblocker@.service

[Unit]
Description=qBittorrent-ClientBlocker service
Wants=network-online.target
After=qbittorrent-nox.service

[Service]
Type=simple
Restart=always
User=%i
WorkingDirectory=/etc/qBittorrent-ClientBlocker/%i/
ExecStart=/usr/local/bin/qBittorrent-ClientBlocker --nochdir

[Install]
WantedBy=multi-user.target

然后编辑 config.json,主要注意以下几行:

        "clientType": "qBittorrent",
        "clientURL": "http://127.0.0.1:8080",
        "clientUsername": "你的网页登录用户名",
        "clientPassword": "你的网页登录密码",

如果不需要日志可以将 logToFile 设置为 false。最后给予权限即可。

chown -R qbittorrent-nox:qbittorrent-nox /etc/qBittorrent-ClientBlocker/qbittorrent-nox/
systemctl daemon-reload
systemctl start qbittorrent-clientblocker@qbittorrent-nox.service
systemctl status qbittorrent-clientblocker@qbittorrent-nox.service
systemctl enable qbittorrent-clientblocker@qbittorrent-nox.service

使用第三方 Web UI

一直有在用的是 qb-web。直接下载 release 解压,然后 chown -R qbittorrent-nox:qbittorrent-nox dist,最后在设置内指定备用 Web UI 路径 (例如 /opt/dist) 即可。

Linux 下 non-ASCII 字符显示为 .

这个 issue 在 2022 年都有了。不过 4.6.x 应该修复了?

mkdir /etc/systemd/system/qbittorrent-nox.service.d
nano /etc/systemd/system/qbittorrent-nox.service.d/locale.conf

locale.conf 内添加以下内容:

[Service]
Environment="LC_ALL="C.UTF-8""
Environment="LANG="C.UTF-8""

之后 sudo systemctl daemon-reload,然后通过以下命令看是否设置成功了环境变量。

systemctl show --property Environment qbittorrent-nox

如果没有问题的话重启即可。

systemctl restart qbittorrent-nox.service

参考网址


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 5.5 代 homelab

添加了一点点东西

为什么又双叒叕升级了

mac mini M1 用于工作虽然很不错,但是 Wi-Fi 经常会有问题,不知道是不是我的 WLAN 漫游导致的,关了之后的确有好一点,但 Xbox 联机的时候也经常感觉网络延迟比较高。故就想要一个比较便宜的千兆的网管型交换机(因为要 VLAN 功能)。

其实很早就想拉网线到我桌子这边,但是苦于没有方法。我桌子这边的墙因为受潮,防水没有做好,所以墙面有地方已经脱落了,再钉钉子来拉线不太理想,直接走地下也不太理想,会影响扫地拖地等等。后来突发奇想,一边不行就试试另一边嘛,而且不会很长——我的床下面是可以粘东西的,直接粘理线器就好了。所以买了一根 8 米的线,外加一台 Netgear GS105E v2,5 个口的千兆网管型交换机。

这个的优点是——够用。一条 in 的线,剩下 4 个口子一个给 Xbox、一个给 mac mini、一个给我的 Workstation,还剩余一个口备用。缺点就是,没有 POE,不能做好玩的东西。

现在是个什么样子?

2024.03 的构造.png

怎么在已有的上面配置?

新的要怎么配置呢?Netgear 被我插在了 Mikrotik 的 eth4,并且需要有 VLAN 20 和 40 支持。

  • VLAN 1: 增加对 eth4 做 Untagged,这样我们只能通过 Management VLAN 来控制。
  • VLAN 20: 增加对 eth4 做 Tagged。
  • VLAN 40: 增加对 eth4 做 Tagged。

随后进入 Netgear 后台设置:VLAN 选择 802.1Q,然后开启 Advanced。

我预想的设置:

  • Port 1 连接到 Xbox 的 VLAN 40
  • Port 2-4 连接到 Self 的 VLAN 20
  • Port 5 连接到 Management 的 VLAN 1

一个一个来,先去 VLAN identifier settings 设置:

VLAN ID Port Members
1 5
20 2 3 4 5
40 1 5

VLAN membership 设置:

VLAN ID Local lan1 lan2 lan3 wan
1 - - - - U
20 - U U U T
40 U - - - T

PVID Configuration 设置:

Port PVID
1 40
2 20
3 20
4 20
5 1

大功告成!


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

Ultra Mobile 的 3 USD/月 手机卡心得

从 VoIP 内解放了!

为什么不想要 Google Voice 了

PayPal 从 2019 年左右开始就禁止 VoIP 注册了。目前 PayPal 账号遇到了一些问题,需要发送验证码,而当我点击发送之后直接就提示失败,故想将号码换成实体的。

在网上搜寻了一番之后看到了 Ultra Mobile 的手机卡,100 分钟语音+100 条短信,100 MB 流量,支持 eSIM,支持漫游 Wi-Fi calling,支持漫游,每个月 3 美刀,对于我这种只需要保号的特别划算。但这个只有一个缺点——无法直接购买 eSIM plan,需要线下 T-Mobile 店铺或者 ebay 购买实体卡。

我看到这个消息之后,就想着早点解决 PayPal 的问题,所以暂时换了另一家—— US Mobile。

US Mobile

US Mobile 在开通 eSIM 的时候提供了两个 Network,一个 Warp 5G,一个 GSM 5G。我选择了后者,但是看他们的 plan 最低只有 10 美刀一个月的,1 GB 流量,但是不限量语音和短信。想着就先入这个吧,也是看到最便宜并且能现开 eSIM 的。

在注册之后,US Mobile 会询问你是想注册新号码还是 Porting 已有号码,这里选择已有,然后选择运营商,并且填写相关信息之后就会开始 Porting。

此时我犯傻了,不知道要先去 Google Voice 侧解锁,所以失败了。在 Google Voice 侧转出号码需要先付 3 美刀,解锁之后过程就很顺利了。

US Mobile 有一个好处,就是在号码开通之后会直接在官网给你 eSIM 的 QR Code 以及文本版的 eSIM profile 信息,故可以将 eSIM profile 利用 OpenEUICC 写入 esim.me 等卡。

此处要注意一下,如果要将你的号码再次 Porting 到 Google Voice,费用是 20 美刀,并且需要使用 Google Pay 支付。

Wi-Fi calling 可以在网页上自主开启,随后在手机上就能通过 Wi-Fi 来发送短信了,这样根本不算漫游,太棒了。

Ultra Mobile

在这样使用了几天之后,我问了一个朋友他怎么整的,他说——淘宝。

行吧,我就去淘宝整了一张。等了 3 天之后卡到了,遂赶紧开始激活。

在进入激活页面之后,首先将 ACT CODE 填入,然后会让你选择新号码还是已有号码,选择已有号码之后会让你填写相关的信息,包括手机号码、Account Number、PIN 和 ZIP Code。ZIP Code 大概就是你 US Mobile 处 E911 的邮编(总之我是这么写的),而 Account Number 和 PIN 则需要联系 US Mobile 的客服,说明你想转出,在验证手机号和邮箱之后就会发送到你的邮箱。

之后会让你可选绑卡以及注册账号。绑卡我选择了国内发行的外币卡,无问题。

待流程完毕之后,我首先将卡插到了 Android 机器(当然是 LineageOS)上,结果一直都没有激活 Wi-Fi calling,收验证码的延迟也超级大,起码要等半小时(而有效期只有 10 分钟),而且流程完毕之后长达 40 分钟内我甚至没有收到类似”欢迎来到 Ultra Mobile”之类的短信,差点认为是激活失败了,号没了……后面把卡插到了 iPhone 上,然后利用 iPhone 内置的设置开启了 Wi-Fi calling 功能,终于延迟消失了。之后再插回 Android 机器 Wi-Fi calling 功能也是正常的,至少可以正常拨打客服热线,以及收发短信。

后记

在非美国的其它地方至少 US Mobile 和 Ultra Mobile 的这两个套餐是无法通过注册新号码来漫游激活的。千万要记住这个。

如果你是新号码漫游激活并且是在 US Mobile 买的,遇到 eSIM profile 写入了且启用了但收不到信号(因为本来就无法漫游激活)的话,可以找 US Mobile 的客服退款,需要提供你写入 eSIM profile 的那台手机 IMEI。


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 macOS 软件一览

工作现在都在用 macOS 了,所以记录一下安装了什么 App,有爱自取,顺便水文。带 🚫 是我曾经用过又卸载掉的。

Update (2024-05-06): 增加了六款软件: Keycastr、Cyberduck、Orbstack、balenaEtcher、Quantumult X & Affinity Photo。 Update (2024-09-09): 增加了 Firefox、更新了 balenaEtcher 的近况。

文档

Notesnook

Notesnook 是来自巴基斯坦的一个团队从 2019 年开始就在开发的一个📒服务,服务器目前位于德国。可免费使用。我从 2024 年 2 月开始使用。

对我来说的优点:全平台及时 Sync,月费相对来讲便宜。未来还可以 Self-host。

对我来说的缺点:编写不是用的 Markdown,而是。虽然可以导出成 Markdown。

🚫Inkdrop

Inkdrop 是由日本的一名开发者开发的一个📒服务,服务器使用 Amazon Web Services。必须付费使用,订阅制,9.98 USD/mo。它是我从 2022 年 8 月开始一直用到 2024 年 1 月的服务。

对我来说的优点:界面易用,可以很方便的 Share link,拥有 plugin 市场。

对我来说的缺点:价格。从原来的 4.99 USD/mo 涨价成了 9.98 USD/mo,这也是目前我暂时放弃使用的原因。

待办 TODO

Things 3

来自德国公司的一款代办软件。付费才能使用,详见官网。

对我来说的优点:全平台同步,可以让同事发邮件到 Things 给你的邮箱里,这样就自动在你的 TODO list 内了。

对我来说的缺点:目前还没见到。

文档

Microsoft Office 全家桶

微软家的 Office 应该是人人办公必备的。

浏览器

Firefox

最近开始 Self host Firefox Sync 服务,终于调试好了,可以同步标签页,历史记录核安装的 Add-ons,但不能同步 Add-ons 的数据,这个需要每个 Add-ons 自己解决。所以把 Firefox 当作自用的浏览器了,唯一的缺点大概就是 Captcha 非常讨厌 Firefox。

Chrome

这个就不用多说了,我工作的时候依然会用到。

密码

KeepassXC

这个是作为本地使用的,使用 Syncthing 同步。

Bitwarden

这个是作为在线同步使用的,我自己搭建了服务端。

远程桌面

Microsoft Remote Desktop

对于 RDP 相关这个就是必备的了,官方出品总没有错。

同步盘 / 文件传输

Syncthing

这个用于同步是非常好的,不依赖一个中心化服务器传输(但是依赖中心服务器来发现节点?),而且还加密。

Localsend

这个用于局域网传输,比如 Apple 设备到 non-Apple 设备无法使用 Airdrop。

音乐

Apple Music

Apple 生态圈不可或缺,歌库齐全(我是日区),我也常在 iTunes Store 上面购买音乐。

Neptunes

在桌面上显示一个小工具窗口,可以调整音量、上下曲以及按爱心,还可以显示专辑封面和当前歌曲信息。甚至可以将你的歌曲播放记录同步到 Last.fm。

LyricsX

歌词显示和搜索工具,其实很久都没有开了。

IM

Discord

用于跟朋友和技术社群聊天。

Element

用于跟朋友和技术社群聊天。

Telegram

用于跟朋友和技术社群聊天。

QQ

用于跟朋友们聊天。

WeChat

工作需要。推荐双开

Tencent Meeting / Voov Meeting

前者是国内版,后者是海外版,两者账号不通用,在国内登录后者时需要绑定手机号,所以登录的时候需要代理。工作需要。

飞书

工作需要。

钉钉

工作需要。

监控

iStat Menus

老牌的系统状态显示工具,显示在菜单栏上。

网络

Loon

必备的网络工具。便宜又实惠,功能还特别强大。虽然没在使用但没有卸载,作为备用。

Quantumult X

我在 iOS 和 macOS 上使用 Loon 近半年之后终于意识到了一个比较严重的问题,就是打开网页比较慢不是因为我的网络问题(期间 homelab 更新换代了多次),可能是因为 Loon 的配置问题,或者是 Loon 本身的问题。所以我又用回了 Quantumult X,结果的确后者更适合我。相同的网络配置下,YouTube 1080p 前者比后者卡顿多了。也可能是我的玄学吧。

文件

BuhoNTFS

纯粹是限免的时候领了一下,不过不用 FUSE 读 NTFS 也好。

Cyberduck

老牌 FTP、SSH、WebDAV 等等协议的客户端。

balena etcher

这个不好归类,只能先放这里。给各种开发版刷系统必备的软件!

目前如果要下载 Apple Silicon 版本的安装包,需要手动去 Releases 下载 v1.19.x 的 Pre-Release。直接使用 brew 会使用 latest release version,这个版本需要 Rosetta。已经支持直接用 brew 安装了。

截图

Snipaste

老牌的截图软件,免费的功能很够用。

图片处理

🚫Adobe 全家桶

不是盗版,对,不是盗版。

Update: 它厚颜无耻的涨价了。

Affinity Photo

买断制,它不香吗?打折的时候可以将它家三个全部拿下,分别对应 Adobe 的 PS、Ai 和 iL。

屏幕录制 / 直播

OBS

目前 OBS 终于有了 Apple Silicon 版本。偶尔录制一些屏幕教学以及直播推流非常有用。

Keycastr

在你敲键盘的时候,屏幕上显示对应的键位。在监测到你输入密码的时候会自动不显示。录制教程/直播的时候会非常有用。

系统

AppCleaner

卸载 App 必备,一点残留都不能有。

我的壁纸

因为 macOS 上没有 Wallpaper Engine,所以有这样一款工具。虽然不知道它的数据库是哪里的,因为很明显没有 Wallpaper Engine 上的一些壁纸。

开发工具

Jetbrains 全家桶

因为目前的工作很少使用到,所以兴趣开发的时候会用一下。

Visual Studio Code

我用作文本编辑器的,不知道以后 Jetbrains 的 Fleet 出来之后能不能一决高下。

Termius

用于连接各种 Linux Server。唯一的缺点是在电脑上好像不能跳过创建账号。

Insomnium

Insomnia 做出一些很恶心的举动之后,就换了这个来搞 RESTful API。

串口调试助手 Pro

非常好用的串口调试工具。不一定需要花钱购买,只是不花钱购买的版本在遇到大量数据的时候会卡顿。

虚拟机 & 容器

UTM

Apple Silicon 开 aarch64 虚拟机肯定是很流畅的。

OrbStack

可以把这个当成 Docker Desktop 的平替,非常好用。前提是你要安装 docker


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

本地运行 Open Build Service 的 _service 踩坑

在本地使用 osc 命令拉取的时候,大概率会遇到以下错误:

Error: Package ('obs-service-tar_scm_kernel_repo',) is required for this operation

我们需要手动安装这个 Pacakge,以下教程在 Ubuntu 22.04 LTS 上测试通过:

$ git clone https://github.com/openSUSE/obs-service-tar_scm.git
$ cd obs-service-tar_scm
$ sudo make install
$ # 此时有可能遇到 ModuleNotFoundError: No module named 'dateutil' 这个错误
$ sudo apt install python3-dateutil

此时应该就无问题了。如果要使用 osc up -s 在本地下载源的话,还需要做以下的操作

$ git clone https://github.com/openSUSE/obs-service-download_url.git
$ sudo cp obs-service-download_url/download_url /usr/lib/obs/service/
$ sudo cp obs-service-download_url/download_url.service /usr/lib/obs/service/

大功告成。osc up -sosc up -S 有什么区别呢?可以从 manpage 发现,前者是在本机上运行 _service 文件,后者是从 obs 实例上下载文件。


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 2023

R.I.P 奶奶

差不多一年前写下了 2022 的总结,是时候写 2023 年的总结了!

三次元

  • 第一次拿到年终奖,第一次自己去别的城市玩,但没有见到想见到的人
  • 第一次到北上深(并没有去广出差,只是自己去玩了一下)以及港出差,也第一次去香港玩了一下
  • 完成黑雨警报在香港乱转的成就,结果回去的时候雨伞在 MTR 上被偷了
  • HSBC 和 BOCHK 的卡都寄丢了,最终让 HSBC 用 EMS 补寄了,下次有机会去 HK 再想 BOCHK 的事情吧
  • 第一次收到厂商送的开发板体验
  • 省吃俭用+臭不要脸白嫖将自己的 homelab 增添了新设备
  • 人人骂的断卡行动还在持续,中行被限额多次
  • 第二次得了胃食道逆流
  • 令人非常气愤的 Comiday 26,没有买到票,黄牛应该赚烂了
  • 第一次买 Comiket 102 场贩(并没有亲自参加),ちょこ!
  • 第一次拔牙,还是智齿,疼。
  • 第一次买了属于自己的游戏机 Xbox Series X,虽然之前入手 Switch 但是是二手的。下次再也不想买国行了!

网络上

  • 收到了好朋友非常贵重的生日礼物!因此组了人生中第一台 PC!

技术上

  • 作为 openEuler RISC-V 23.03 的总出品人,自认为并不完美有很多缺陷

浏览器 A – Z

我 11 月才换的电脑,一点也不准确,更多的只是象征了吧

  • ascii2d.net
  • baka251.ao.space
  • cpubenchmark.net
  • dash.cloudflare.com
  • emojipedia.org
  • fantia.jp
  • github.com
  • homarr.home.251s.cloud
  • image.google.com
  • jd.com
  • kernel.home.251s.cloud
  • leagueoflegends.com
  • mail.google.com
  • n8n.home.251.sh
  • oray.com
  • pekora.home.251s.cloud
  • qb.home.251s.cloud
  • rarlab.com
  • shop.geekjack.net
  • taobao.com
  • uu.163.com
  • v2ex.com
  • wenshushu.cn
  • xbox.com
  • youtube.com
  • zh.wikipedia.org

我认为的 Amazing 2023

  • 并没有什么特别 Amazing 的,虽然依然穷苦但是感觉生活过得比去年好了算不算呢?

荣誉

  • 开放原子开源基金会 2023 年开源贡献之星,这应该是继承的去年的奖

愿景

  • 换新老板了,期待不被新老板太早开除
  • 第二个依然是早睡早起,感觉这两点跟去年大概一样

如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

Homelab 内简单的 Active Directory Domain Controller 搭建

0x00 需求

  • 我有一个 Windows Server 2022 物理机器作为第一个 Domain Controller。
  • 我有一个在 Proxmox 内的 Windows Server 2022 Core 的虚拟机作为第二个 Domain Controller。
  • 我有一个在 Proxmox 内的 Windows 11 机器作为测试 Client。
  • 我有一台 Synology,我想将 Profile 和 Home Folder 放在 Synology 内。
  • 我的 Domain 是 home.251.sh。

0x01 开始搭建第一个 Domain Controller

在 Server Manager 内,选择 Manage –> Add Roles and Features。

在 Installation Type 内,选择 Role-based or feature-based installation。然后在 Server Roles 内选择 Active Directory Domain Services。

等待安装功能完成之后,回到 Server Manager,选择刚刚安装的 Active Directory Domain Services,这时应该会跳出来 Configuration Wizard(或者在 Add Roles and Features Wizard 的 Results 页面点击 Promote this server to a domain controller)。

因为我们是要创建新的,所以点击 Add a new forest,然后在 Root domain name 出填写你要的 domain。

在 Domain Controller Options 内,将 Forest & Domain functional level 都保持 Windows Server 2016 即可(可以适当根据你的需求调整)。下方勾选上 DNS server(这样我们可以局域网内通过 Domain 访问机器,而不需要 IP),然后填写你的密码。千万不要忘记这个密码。

DNS Options 页面保持默认,随后的 NetBIOS domain name 系统可能已经给你生成了一个,如果你不喜欢的话可以换掉,我这里使用了 251SH

随后指定 Database、Log files 和 SYSVOL 的 folder,这个可以保持默认,也可以根据自己的需要选择。

然后就没有什么要设置的了!如果后续需要批量这么做或者重装的话,可以在 Review Options 这个页面点击 View script,保存一下它吧。以下是我的实例:

#
# Windows PowerShell script for AD DS Deployment
#

Import-Module ADDSDeployment
Install-ADDSForest `
-CreateDnsDelegation:$false `
-DatabasePath "D:\NTDS" `
-DomainMode "WinThreshold" `
-DomainName "home.251.sh" `
-DomainNetbiosName "251SH" `
-ForestMode "WinThreshold" `
-InstallDns:$true `
-LogPath "D:\NTDS" `
-NoRebootOnCompletion:$false `
-SysvolPath "D:\SYSVOL" `
-Force:$true

之后会进行一轮重启。这时我首先推荐检查一下 Upstream DNS 的配置,因为后续接入设备的 DNS 地址都会指向 Domain Controller,设置不正确会导致没有其它的 DNS 解析。

在 Server Manager 内,选择 Tools –> DNS。右键你的 DNS Server,然后选择 Forwarders,看看这里的设置正不正确,如果不正确请自行调整。

接下来,给自己创建一个用户。同样在 Server Manager 内,选择 Tools –> Active Directory Users and Computers。在这里我们找到 Users,然后点击工具栏内的 Create a new user in the current container 来新建一个我们自己的用户。

新建完之后,你可能想将这个用户提拔成管理员。右键这个用户,选择 Properties,找到 Member of,随后点击 Add 并添加以下第一个 Group,后面几个可选:

Domain Admins
Enterprise Admins
Group Policy Creator Owners
Schema Admins

这样,我们初始化就完成了。

0x02 开始搭建第二个 Domain Controller

因为 Windows Server 2022 Core 是没有 GUI 界面的,所以需要在命令行下做。在进入 SConfig 之后,首先可以检查一下网络设置,检查 DNS 是否预先设置成了有效ed Upstream DNS。之后输入 15 来退出到 PowerShell。

接下来,我们开始安装 Role。

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
# 在安装完之后可以通过 Get-Command -Module xxx 来查看有什么指令可以用
# Get-Command -Module ADDSDeployment

之后,我们将会 promote 这个 DC 进入我们之前设置好的 domain:

Install-ADDSDomainController -InstallDns -Credential (Get-Credential <251SH\misaka00251>) -DomainName home.251.sh -SafeModeAdministratorPassword (ConvertTo-SecureString -AsPlainText "mypassword" -Force)

这时会有一个框弹出,让你确认 Domain 管理员的密码。随后的提示内,输入 y 确认。如果设置成功,系统会自动提示重启,设置完成了。

为了确认是否设置成功,可以在 Active Directory Users and Computers 的 Domain Controllers 内查看是否有新增一台 Computer。

0x03 设置 Synology

在这里,我想让 Synology 也可以使用 AD 来进行用户认证。这里以 DSM 7.x 为例:

首先找到 Control Panel,选择 Network –> Network Interface,选择你的目标 LAN(你可能有多个 LAN,选择 DC 所在的内网的那个),然后将 DNS Server 设置成 DC。

之后选择 Doamin/LDAP,选择 Join。Server type 选择 Domain,Server address 输入你的 Domain(DC 的 IP 也可以,会自动变成 Domain),然后在这里 double check 你的 DNS Server。

在下一页,输入你之前创建的管理员账号(如果你只有一个 forest 可以选择 Single domain with OU,但是如果随便玩玩无所谓)和密码进行认证,在 DC IP/FQDN 处,因为我有两个 DC,所以我在这里可以输入它们的 IP,或者它们两个的 Domain:

# 假设是两个 IP
10.0.0.2 10.0.0.3
# 假设是两个 Domain
firstdc.home.251.sh seconddc.home.251.sh

在 Register DNS interface 选择你 DC 所在内网的那个 LAN,可以不用勾选 Register machine accounts on a specific OU,然后点击下一步。如果没有任何问题的话,应该就大功告成了。

注意,最好 Synology local account 和 AD 内的用户名没有相同的,不知道为什么我有相同的账号,local account 登录不进去。

之后,我们可以在 Domain User 一栏,选择 User Home 来给所有用户分配家目录。这个目录会成为我们之后 AD 用户在 Windows 下的 Home Folders。

如果想让 AD 上的管理员也在 Synology 上拥有管理员权限,可以在 Domain/LDAP 内选择 Settings,然后点击 Advanced,选择 Domain Administrators。

加入相关管理员的组后,回到 Domain/LDAP 内,选择 Domain group,然后选择之前加入的组,修改 Permissions 和 Applications 即可。

最后,我们在 Control Panel 的 Shared Folder 内,添加一个新的 Share,我在这里其名字叫做 ADUserFolders,然后在 Permissions 内,找到 Domain groups,给对应的组 Read/Write 权限,Synology 的地方就大功告成了。

0x04 将 Windows Client 加入 Domain

在此之前,我们要设置好用户。回到 Windows Server 上的 Server Manager,选择 Tools –> Active Directory Users and Computers,在 Users 内找到你的账号,右键选择 Properties,在里面找到 Profile。

在这里,你可以设置 Home folder,因为是放在 Synology 上的,所以不能选择 Local path。选择一个你喜欢的盘符,然后填写对应的目录。我这里的示例是 \\SYNOLOGYWITH251\homes\@DH-251SH\0\misaka00251-1104

之后,我们也想将用户的 Profile 放在 Synology 上,这样用户可以在内网上更换机器登录,Windows 能及时的能同步用户家目录下所有的文件。例如用户的文档目录,下载目录,图片目录等等。甚至可以同步 Appdata 下的 Romaing 文件夹。如果机器重装了系统的话,各个用户的资料也安全的保存在 Synology 上,有效的避免了数据丢失。当然,我们想批量的设置这个,而不想一个一个的手动去设置……

在 Server Manager 内选择 Tools –> Group Policy Management,选择你的 Forest 然后展开 Domains,选择你需要配置的 Domain(我这里只有 home.251.sh),然后右键选择 Create a GPO in this domain, and link it here...,名字输入 Folder Redirection。

右键刚创建的 GPU,选择 Edit。此时会弹出来一个 Group Policy Management Editor,选择 User Configuration –> Policies –> Windows Settings –> Folder Redirection。

我们可以先设置 Documents,右键它然后选择 Properties,在 Setting 一栏中选择 Basic - Redirect everyone's folder to the same location,在下方选择 Create a folder for each user under the root path,然后 Root Path 就填写我们刚刚在 Synology 上创建的 Share,我这里的例子是 \\SYNOLOGYWITH251\ADUserFolders

如果你不想将这个应用给某个用户应该怎么办?

我推荐的方法是,在 Group Policy Management 找到你的 Policy,在右边选择 Delegation,选择 Advanced...,然后添加你想生效的组/用户(没错,你要自己 track 这个用户组),下方选择 Apply group policy 这项 Allow。

然后注意有一个叫做 Authenticated Users 的用户组,这个用户组是代表登录进的所有用户,我们要取消掉这个用户组的 Apply group policy 这一项。否则上方设置好之后,你登录不想应用的用户依然是生效的。


随后我们可以对 Pictures、Music 等等文件夹也这样右键设置,一些选项内有一个选项叫做 Follow the Documents folder,选择它可以不必重复填写。

设置好之后,就大功告成了。最后我们去我们的 Windows 11 机器,在设置内选择 System –> About,有一个 Domain or workgroup (Windows 10 叫 Rename this PC) 的选项,点击它,然后点击下方的 Change... 按钮,我们可以在 Member of 出选择 Domain,然后输入我们的 Domain 即可。输入我们的管理员账号,如果成功的话会建议你重启,重启之后使用 AD 的管理员账号登录,就可以在 This PC 内看到用户自己的文档等等有绿色的同步图标,并且挂载了一个网络分区。

大功告成了!

0x05 参考资料


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 homelab 历程 (Up to 2023-12) & 坑

Update(2023-12-11): 更新第 5 代,补了第 3 代的图。

记录一下我的 homelab 2023 改变了什么,顺便这里面整合了一篇去年写的草稿(因为太短就没有发布)。

什么是 homelab?

homelab 就是家庭实验室,任何东西都可以算 homelab(此处应搬出九宫格图?)。在我眼里,homelab 则是一个玩各种服务,以及各种环境演练的地方。

我为什么要整 homelab 呢?

首先就是为了好玩,想自己本地搭建一些服务,这样就不用怕自己的一些数据被搜集了。不仅如此,因为特殊的网络大环境,如果一些常用的服务无法访问,至少本地还有的玩。除此之外还逐步变成了松鼠党,想存储东西。More storage means more devices,设备就逐步增多了。

第 1 代 homelab

大概是高二的时候,我买了一台树莓派 2B。在此之前,我虽然有自己的台式机,但主要还是作为个人电脑用,虽然当年在极影动漫以及 VeryCD 为了 BT/eMule 下载有一些时间让它 7*24 小时运作。

当时的我刚知道 PT 是什么,所以这台树莓派 2B 被我安装了 Transmission,然后插上了一块 Toshiba 移动硬盘用。家里当时正好也有公网 IP,所以我在学校用手机也可以控制下载什么。

第 2 代 homelab

在高中毕业之后,准备上大学之前,我亲戚给了我一些钱用于购买大学用的电脑,我从其中拿了一半购买了一些硬盘,以及一台 Mikrotik 路由器(用到 2022 年),另一半则购买了一台在学校用的小米轻薄本。这时,之前的台式机就派上用场了!

这台台式机的 CPU 是 AMD Athlon II X2 250,内存我依稀记得是 4 GB,高中的时候加到了 8 GB,显卡是七彩虹主板板载的 HD3200。

我在上面装了个 Windows 10,然后安装了 qbittorrent。因为当时那台电脑支持 6 个 SATA 位,所以我将 6 个 SATA 位全部接满,而这也导致只要开机十多分钟之后硬盘的温度就在 60 度左右徘徊。不过好处就是,我可以轻而易举的在学校通过远程桌面连接连回家,然后控制下载,甚至能远程看影片(只不过画质很烂)。

在这样半年之后,温度方面的困扰让我终于将一些满了的硬盘取出,只留还没存满的硬盘,这样散热问题也解决了。为了持续满足存储需求,我还新增了每半年购置一块新硬盘的计划。

第 2.5 代 homelab

不知道怎么想的,我想着给老电脑超频。最后的结果就是烂了。我哥听到这个之后就把他那边用不到的电脑给我了,之后跟上一台电脑一样,做着一模一样的工作。

第 2.5 代 homelab.jpg

这台电脑的 CPU 为 i3-3240,内存依旧为 8 GB,显卡变成了 GT 630。比之前稍微高端了一点,所以我在上面除了下载以外,还跑了 ZeroNet、Syncthing 等等服务。不过依旧是 HDD 驱动,所以速度还是很慢,不过我能忍受!

这次我考虑到了电费——所以我设置了早上 9 点自动开机,晚上 10 点自动关机。唯一的缺点就是如果晚上 10 点之后我想远程控制 PC 的话就没门了。

至于第一代里面的树莓派?被我放在学校用于 Dr.com 的上网拨号了(Dogcom 开发者们辛苦了)。

第 3 代 homelab

随后的一段时间我都在使用这一台电脑作为服务器,直到去年我成为了打工人。虽然家里经济状况依然没有好转,但总算有点小钱钱可以升级一下配置——比如 HDD 换成 SSD 之类的。当然,各个朋友们的帮助也是不可或缺!像之前做的 1000 元将老电脑打造成 NAS 企划,如果我的同学没有送我那台老电脑的话,也不会有目前的情况。我在那台 1000 元老电脑上装了黑群晖,用了之后非常喜欢成品 NAS,所以就想购置一款。没过多久在京东上看到了 QNAP 促销就购入了 QNAP(当然一并购置了硬盘)。

之后我又在群内收了一个 4 盘位改的蜗牛星际,在上面装了 Windown Server 2022。而之前的树莓派除了被我安装了一个 Pi-Hole 用来当作 DNS 服务器外,还装了个 homeassistant。

2022.06 的构造.jpg

没过不久,我在闲鱼上看到有人卖 Dell Optiplex 就也买下了,这导致我的经济状况雪上加霜了,不过精神需求有了,并且还换掉了一直以来在用的我哥的 PC,一举两得,:D。

下面这张图是 蜗牛星际(左)、QNAP(中)和黑群晖(右)在一起时候的照片。

早期第 4 代 homelab.jpg

第 4 代 homelab

在今年年初的时候,将人生中的第一份年终奖除了用于南下第一次去广州 & 深圳 & 香港的非常小一块(这里应该也有一份咕咕咕的游记……)之外,还购置了一台 Synology。感谢群晖特有的 SHR-2,我可以不用那么着急的批量购置硬盘。除此之外节后还购置了一款华为的鲲鹏 W510,用于 aarch64 测试用。

又过了一段时间,cola 大老板送了一台他闲置的 Mikrotik 过来,遂把之前的老 Mikrotik 替换掉了。

2023 年 6 月的时候,我有做过一期影片,比下面这张图还老一点,不过我大概详细的讲了每个都是做什么的。

2023.09 的构造.png

转眼间时间就到了 2023 年 9 月,比影片内多了一些设备和细节,新拉了一条没有公网的移动宽带想组双线,以及跟富黑黑家打了 wireguard 隧道。之前的树莓派上 Pi-Hole 从今年开始运行过几天就无响应了,需要重启,所以换到了 x86 机器上试一试。

第 4 代有什么缺点?

第一个缺点就是没有做好 VLAN 的划分。虽然我划分了 2 个 VLAN 分别给 IoT 和 Guest,但因为 Mikrotik 这样的一个特性导致让我十分不爽,非常想重新划分 VLAN:

  1. Mikrotik 的 IP 分配是倒过来的,其实这个都不是很大的问题
  2. 如果你接入的设备 mac 地址会变化,Mikrotik 不会复用空闲的 IP 地址,而是会给你新的 IP 地址,频繁接入的话很容易造成设备可能就 10 多个但是 IP 地址已经从 x.x.x.254 分配到了 x.x.x.100。

第二个缺点是,我想开一些 VM 来安装国产软件 & 测试好玩的东西,但我不想让这些 VM 内的程序可以扫描到整个网段内的设备,这个说白了也是需要单独的 VLAN 分配。

第三个缺点是,我新购置了 Xbox,然后购买了 UU 加速器。我不想在我的设备上跑 UU 加速器,就想开一个 OpenWRT 来跑 UU 加速器。但我又不想让这个 OpenWRT 在我的主 VLAN 内,这个也是需要单独 VLAN 分配……

第四个缺点其实是 Pi-Hole,在我把相同的配置换到 x86 机器上后,依然是会过几天无响应,需要重启程序,这让我动了换 DNS 服务器的注意,正好我要重新整网络,那么就一起弄吧!

第 4.5 代 homelab

所以在某一天,我打算开始动工划分 VLAN。理论上我划分好了,但是我想让它们之间互通,却发现无法 ping 通。可能这时候有读者会说,VLAN 默认是无法互相通讯的呀?我的答案是,如果 Mikrotik 内的 Firewall 没有禁止的话,那就是允许的。但我此时的问题正好就是这个——我把所有的 drop 禁用掉还是无法 ping 通,所以打算重置所有的网络设备然后重来一次。

设计的图如下(这也是目前的样子):

2023.11 的构造

  • 原有的 VLAN 1 变成了 Management VLAN
  • 专门给各种 Server 和 Service 设置了一个 VLAN 10
  • 专门自己以及各种可信设备设置了一个 VLAN 20
  • 专门给 MAC 地址变动的设置了一个 VLAN 30
  • 专门给 UU 加速器,以及需要 UU 加速器的设备设置了一个 VLAN 40
  • 老样子的 IoT 和 Guest VLAN 100 & 200

除了上面的 VLAN 划分之外,还有一些细节:

  • 两个 OpenWRT 都作为交换机 & AP 使用
  • Linksys 的所有 LAN 口都接入 VLAN 10
  • Redmi 的一个 LAN 口接入 VLAN 10,剩下两个 LAN 口接入 VLAN 30
  • 让 VLAN 10 出口走 China Unicom,剩下的 VLAN 出口走 China Mobile
  • 所有 VLAN 都可以互通,除了 Guest 不能访问其它所有 VLAN

看起来非常复杂。不过在富黑黑的帮助下这都不是问题!

遇到的坑

Mikrotik 处 VLAN 设置

我的 Mikrotik 上 eth1 是留给 China Mobile 拨号的,而 eth2-eth7 分别有不同的用处:

  • eth2 是 Huawei W510,预计接入 VLAN 10
  • eth3 是 Dell Optiplex 7060 SFF,预计接入 VLAN 10
  • eth4 目前是空的,估计作为 Management 接入 VLAN 1
  • eth5 接入 Redmi AX6000,作为 AP 以及 VLAN 10&30 的有线 switch
  • eth6 接入 Linksys E8540,作为 AP 以及 VLAN 10 的有线 switch
  • eth7 目前是空的

在将这些 interface 桥接之后,要怎么在 Bridge 下设置 VLAN 呢?乱设置然后开启 Bridge 的 VLAN Filtering 的话,全家就没网了。

所以在配置的时候,这就要知道 Untagged(未标记) 和 Tagged(已标记) 是什么了。

当数据帧从一个设备传输到另一个设备时,如果携带有关其所属 VLAN 的标记信息,那么这个就是 Tagged 的。这允许同一物理链路上传输属于不同 VLAN 的数据。交换机和路由器通过这个标记可以正确地将数据帧路由到正确的 VLAN。

当数据帧在传输时没有关于所属 VLAN 的标记信息,这个就是 Untagged 的。这通常用于在同一物理链路上传输属于相同 VLAN 的数据。这种情况下,接收设备会假定这些数据帧属于特定的 VLAN。

简而言之,Tagged 用于在同一物理链路上传输不同VLAN的数据,而 Untagged 用于在同一链路上传输相同 VLAN 的数据。

说了这么一大堆,我要怎么配置呢?

从我们的构想可以看出,我们只需要让所有允许 Tagged,除了 eth2 & eth3 默认 VLAN 10,其余默认 VLAN 1:

  • 对设置 Bridge 下的 Ports 进行设置,其中 eth2 & eth3 的 PVID 为 10,剩下均为 1
  • VLAN 1: 对 LANBridge、eth5 & eth6 做 Unagged
  • VLAN 10: 对 LANBridge、eth5 & eth6 做 Tagged,对 eth2 & eth3 做 Untagged
  • VLAN 20、30、40、100 & 200: 对 LANBridge、eth2、eth3、eth5 & eth6 做 Tagged

两个 OpenWRT 交换机的配置

因为全部由核心 Router 下发 IP 地址等,所以只需要在 VLAN 1 下留一个 DHCP client interface 来方便管理。

两个都需要做的事情是,删掉 wan & wan6,然后将 wan 接口放入 br-lan 内,并将 br-lan 的网桥 VLAN 过滤启用,然后先添加各个 VLAN ID,此时可以将 wan 设置 Untagged,后续再来设置其它端口。如果不一次性做这些的话,你的 OpenWRT 将会失联。

首先说一下比较简单的 Linksys 吧:

VLAN ID Local lan1 lan2 lan3 lan4 wan
1 v - - - - U
10 v U U U U T
20 v - - - - T
30 v - - - - T
40 v - - - - T
100 v - - - - T
200 v - - - - T

设置好后,将各个软件 VLAN 创建各自的 bridge interface,协议选择不配置协议,然后按需绑定 AP 至桥内。

同样的,将上面的步骤应用在 Redmi 上:

VLAN ID Local lan1 lan2 lan3 wan
1 v - - - U
10 v - - U T
20 v - - - T
30 v U U - T
40 v - - - T
100 v - - - T
200 v - - - T

QNAP 作为 NUT 服务端的 UPS 构造

由于 UPS 只有一个 USB 信号输出口,无法直接给其余的 NAS 和 Server 提供各自独立的 UPS 信号。并且目前我的 homelab 设计只有 QNAP、Synology 和那台 WinServer 2022 蜗牛星际接入了 UPS,实际上如果 QNAP 检测到 UPS 断电之后是无法通过网络下法给各台设备的——因为核心提供路由的 Mikrotik 早已经断电了。所以最终选择了将 QNAP 和 Synology 通过 RJ45 接起来,组一个 /30 的网段。

待两边的网络都设置好之后,在 QNAP 侧设置 UPS 相关的设置。之后需要在 Synology 侧修改 /usr/syno/bin/synoupscommon,找到第 193 行(我是 DSM 7.x),将 ups@${server_ip} 修改成下面这个样子:

/bin/sed -i "/^MONITOR/c\\MONITOR qnapups@${server_ip} 1 admin 123456 slave" $UPSMON_CONF

Synology 在外部电源失去后,默认进入的是安全模式,而不是彻底关机。可以修改 /usr/syno/bin/synoups,找到第 183 行,将下方的 /usr/syno/sbin/synopoweroff -s & 修改成 poweroff 即可。

随后,可以通过这个指令来测试两者是否连接成功,成功的反馈是命令输入后输出 Synology 的 IP 地址:

我发现不加后面的东西只会提示 Init SSL without certificate database。

upsc -c qnapups@QNAP的IP地址 2>&1 | grep -v '^Init SSL'

Synology 作为 NUT 服务端的 UPS 构造

在 Synology 处设置好后,在 QNAP 处找到 /etc/config/ups/upsd.users,将其中关于 [admin] 部分的注释掉,然后在文档最后添加用户 monuser

[monuser]
    password  = secret
    upsmon slave

然后复制一份 /etc/config/ups/upsmon.conf 配置文件为 /etc/config/ups/upsmon_syno.conf,以免在 QNAP GUI 端设置 UPS 后被覆盖。 修改 upsmon_syno.conf 中的 MONITOR 一行为:

MONITOR ups@Synology的IP地址 1 monuser secret slave

修改 SHUTDOWNCMD 一行为:

SHUTDOWNCMD "/sbin/poweroff"

然后新建 /etc/config/ups/upsmon.sh,写入如下内容:

#!/bin/bash
UPSMONSH="/usr/sbin/upsmon"

case "$1" in
  start)
        # Start demons.
        if upsc -c ups@Synology的IP地址 | grep -q "QNAP的IP地址"; then
                echo "ups already run"
        else
                rm /etc/config/ups/upsmon.conf
                cp /etc/config/ups/upsmon_syno.conf /etc/config/ups/upsmon.conf
                killall upsutil
                killall upsmon
                $UPSMONSH
        fi
        ;;
  stop)
        # Stop demons.
        $UPSMONSH -c stop
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

最后,因为 QNAP 的 crontab -e 在重启后会失效,所以需要直接修改 /etc/config/crontab,加入以下内容:

* * * * * /etc/config/ups/upsmon.sh start

之后使用 /etc/init.d/crond.sh restart 重启 crontab,然后使用 upsc -c ups@Synology的IP地址 检查返回列表中是否有 QNAP 的 IP 地址,如果有代表设置成功。

如果 Synology 经常在几个小时后显示 UPS 掉线的话,可以通过 Control Panel > Task Scheduler 添加一个每小时用 root 用户执行的 Task:

upsdrvctl stop ups
upsdrvctl start ups

第 5 代 homelab

2023.02 的构造.png

刚刚写完这篇文章不久就收到了一台替换掉蜗牛星际的新设备,非常开心。这是我觉得对于目前来讲一个十分完美的 homelab。相比第 4.5 代,第 5 代解决了另外的一个痛点——UPS。

按照之前 4.5 代 homelab 的规划,实际上是以 QNAP 作为 NUT 服务端,然后预计断电时通过网络下发关机指令。但这有个非常大的缺点:在断电后虽然所有机器还在通过 UPS 供电,就算 OpenWRT 交换机还在通电,Mikrotik router 也早已断电,根本无法传递数据包。

所以通过活用 Synology 后面的 4 个 1 G 口,实现了以 Synology 作为 NUT 服务端,QNAP、WinServer 和 lpi4a 作为 NUT 客户端(还好这些设备都至少有两个 G 口),在断电之后服务端首先下发至各个客户端关机请求,然后 NUT 服务端在安全休眠之后对 UPS 本体下达关机指令以保留电量,经测试可以在 10 分钟左右完成所有的指令。这样最大化的保护了存储设备,并且也不耗尽 UPS 的电池,保存电力以备应急时刻使用。

当然,你会发现剩下的设备都没有被 UPS 保护到——主要是连接上述设备的 OpenWRT 和我房间内的所有设备。OpenWRT 和 Mikrotik 我倒不担心,至于两台 Server——一台是按需开启,另一台 Proxmox 设置了每日备份,没什么问题。

下一次升级大版本(?)估计是加很大的机器了,不过在此之前我还想再加一台小主机当新番盒子,顺便写篇配置的文章,这个就丢到明年的许愿池子吧。


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

我的 10 个浏览器插件 & Userscripts 脚本推荐

其实是因为自己重装系统次数过多所以想自己记录一下。以及好久没有写博客了。

浏览器插件

这里会给出 Google Chrome & Firefox 的商店链接和源代码链接(如果有),Safari 如果也有的话会给出提示。

0. Proxy SwitchyOmega

ChromeFirefoxSource

这个大概不必多说,浏览器使用代理必备的一个插件。

1. uBlock origin

ChromeFirefoxSource

屏蔽广告和追踪器的利器。

2. Neat URL

ChromeFirefoxSource

这个插件因为可以自定义参数,所以我一般用于国内网站。以下是我的一些配置:

spm@*.aliyun.com, spm@*.alibabacloud.com, ad_id@*.taobao.com, am_id@*.taobao.com, cm_id@*.taobao.com, _input_charset@*.taobao.com, pm_id@*.taobao.com, spm@*.taobao.com, scm@*.taobao.com, pvid@*.taobao.com, refpid@*.taobao.com, ns@*.taobao.com, abbucket@*.taobao.com, tag@*.taobao.com, _u@*.taobao.com, ad_id@*.tmall.com, am_id@*.tmall.com, cm_id@*.tmall.com, _input_charset@*.tmall.com, pm_id@*.tmall.com, spm@*.tmall.com, scm@*.tmall.com, pvid@*.tmall.com, refpid@*.tmall.com, ns@*.tmall.com, abbucket@*.tmall.com, tag@*.tmall.com, _u@*.tmall.com, gws_rd@*.google.com, __so__@*.facebook.com, __rv__@*.facebook.com, spm@*.aliyundrive.com, spm@aliyundrive.com

Alternative: ClearURLs

ChromeFirefoxSource

同样的东西,不过它内置了更多的规则?

3. Bitwarden

ChromeFirefoxSafariSource

因为我自己 self-host 了密码管理器,所以这也是我必备的插件之一。不敢想象没有这个插件的日子。

4. Cookie-Editor

ChromeFirefoxSafariSource

一个导入导出 Cookie 的利器。

Worth mentioning: Open Cookies.txt

Chrome – Firefox – Source

如果要导出 Cookies 到 yt-dlp 等程序的话,这个插件就是必不可少的了。这个插件的好处是,你只需要在你欲导出的网站上授权即可,而不必担心这个插件访问到其它网站的 Cookies。

5. JSON Formatter

Chrome – Firefox – Source

浏览器内看没有格式化过的 JSON 是很头疼的一件事情,不过还好我们有它。

6. Wappalyzer

ChromeFirefoxSafari Proprietary

这个插件可以帮你了解正在访问的网站使用了哪些技术。

7. 购物党自动比价工具

ChromeFirefox – Proprietary

这是我目前购物必不可少的工具了。它可以很方便的看你欲购买的商品是否涨价还是降价,以及怎么买最优惠。

8. Violentmonkey

ChromeFirefoxSource

浏览器的 Userscripts 管理器。

9. Fast Forward

ChromeFirefoxSource

短链接跳转,无需等待。

10. 终结内容农场

ChromeFirefoxSource

杜绝垃圾讯息 & 假讯息。

New tab redirect

Chrome – Firefox – Source

这其实是我写出来自己用的一个插件。因为 Microsoft Edge 的 NTP 是一个 Online 的 msn.com(中国 IP 被强行捆绑到 msn.cn),所以我打算强制浏览器使用 Offline 的 NTP 网页。

Userscripts 脚本

在安装下方的脚本之前,请先确认浏览器内安装了 Violentmonkey、Greasemonkey 或者 Tampermonkey。

1. Google Image Search – Show Image Dimensions

GreasyFork

2. Google Image Direct View

Greasyfork

在 Google 图片的搜索界面,点击你想要的图片,等待大图加载完成之后点击即可。

3. anti-redirect

Greasyfork

这个脚本主要去除国内外各大网站的重定向。

4. Resize Image On “Open image in new tab”

Greasyfork

虽然已经停止维护的脚本,但是至少 Twitter 还是可以用的。

Alternative: Twitterᴾˡᵘˢ (View Twitter Origin Images)

Greasyfork

5. Block Youtube Users

Greasyfork

很方便的一个脚本,用于屏蔽你不想要的频道,例如 Linus Media Group 旗下的所有频道:

linus tech tips, lmg clips, shortcircuit, practical painting, channel super fun, techquickie, they're just movies, techLinked, Mac Address

6. Youtube shorts redirect

Greasyfork

这个脚本会将 shorts 重定向到普通的影片界面播放。

Worth mentioning: Youtube Anti Shorts

Greasyfork

当然,如果你完全不喜欢 YouTube Shorts 的话可以使用这个脚本完全屏蔽。

7. YouTube – Non-Rounded Design

Greasyfork

如果你喜欢 2022 年之前 YouTube 的样子,可以使用这个脚本。

8. Restore YouTube Username from Handle to Custom

Greasyfork

在 2023 年 YouTube 把评论区的昵称换成了用户名,挺难看的。使用这个可以 revert 一下。

9. Return YouTube Dislike

GitHubOfficial Website

当然,怎么可能少的了这个呢?这是我见过 YouTube 最脑残的更改。虽然这里以脚本的形式推荐,不过他们也有提供浏览器插件。

10. 🔥🔥🔥文本选中复制🔥🔥🔥

Greasyfork

解除网站的复制限制!


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

2023.07 Hong Kong Trip

结果别的坑没有填先来填这个了。警告一下,这里面的图超级多。

大概是在去年的时候,中国收紧了办理港澳台通行证以及护照。我曾经用了一个方法去尝试但是未果,因为出入境是公安在管只能忍气吞声。好在今年在放开管制之后也放开了这方面的办理,所以借这个机会把证件先全部办下来了。

春节之后我去了一趟广州和深圳(没错,这个我也打算写游记但是一直拖到现在没有写),回来之后便立即去办证大厅预约了。过了一周之后,证件和签注(除了台湾,因为 2019 年国家暂停了个人行)都下来了。

本来打算 8 月的时候去香港玩,但 6 月的时候正好碰到了香港各界庆典委员会要在维园办一个庆祝回归 26 周年的展览,技术组长问我有没有兴趣去香港。我就答应了下来。

公费的缺点

公费旅游最大的问题就是报销。因为之前稀里糊涂办了一张中信跟国泰联名的信用卡,并且我只打算参加国航的常客计划,所以打算试试国泰的航班。

不过在购买后遇到了一个问题。我所在的团队报销需要登机牌+行程单,其中行程单是蓝色的航空运势电子客票行程单(民航局规定)。但国泰航空并没有这个东西,只提供一个 Itinerary。上网搜索之后有类似的情况,不过国泰航空的回复已经被隐藏了,还好我复制了一份:

您好,根据国家税务总局关于印发‘内地和香港避免双重征税安排文本并请做好执行准备的通知’-国税函【2006】884号的相关规定,国泰航空在中国内地的代表处适用零税率,免予征收企业营业税/增值税/企业所得税,因此国泰航空在中国内地的代表处无法为乘客提供相关税务专用发票。如乘客通过国泰航空官网预定机票,我们可为乘客出具相关收据。乘客可持收据及免税声明进行报销。如乘客通过代理购票,乘客可联系代理开具发票。 如有异议,请查询国家税务总局有关文件或访问国家税务总局网站http://www.chinatax.gov.cn。 感谢您的关注!

最后和财务拉扯了不少时间,终于报销的问题还是解决了,凭 Itinerary 和纸质登机牌就可以了。

至于酒店,我们带队的 leader 选了新华社(想不到吧,内地这边是新华社负责沟通协调,新华社会把全世界管起来)发的一个内部文档(记得不是很清楚了)里推荐了香港富豪酒店,然后后面开会讨论住宿问题的时候大家也没有什么异议,所以 leader 默认所有人住同一个酒店。

结果后面同事在看酒店评价的时候遇到了问题,发现评价两极分化——好的非常好,但差的非常差,所以同事去找 leader 沟通的时候也十分不愉快。

还有一个问题,一般酒店的费用报销都需要发票和酒水单,但财务只认增值税发票和带盖章的酒水单,香港没有这种东西,所以只能依靠国内大的第三方平台订阅了,因为预定之后不能退房,所以我也在这里花了不少时间研究,最终对于境外酒店的报销相关得出了下面的结论:

  • 携程:可以开具发票和酒水单。需要在订房之后致电客服,不过事先需要在下单界面确认是否可以这么做。
  • 去哪儿:可以开具发票和酒水单。下单之后可自助在订单页开具,不过事先需要在下单界面确认是否可以这么做。一个非常保险的确认方法就是挂单(即下单但不付款,然后此时就又致电客服询问的选项了)。
  • 飞猪:视售卖的商家而定。平台本身不提供发票和酒水单的开具。
  • 智行:可以开具发票,但水单如果联系客服不能开具的话,只能联系酒店。

6.28 – 出发当日

天府机场 T1 航站楼.jpg

因为双流机场还在维护,所以基本大部分航班都搬到了天府机场。找到国泰航空的值机柜台之后才发现人真的超级多。

在国泰值机柜台前排队.jpg

这个时候我便开始翻看各个运营商的境外流量购买方法。因为我当时没有 eSIM,也没有任何香港的实体 SIM 卡,而 @腹黑黑 则是晚上才送卡过来,所以有几个小时都需要境外流量。

中国联通的 1 GB/天价格为 25 元,但是当日购买次日才生效。早知道我就提前购买了呀!因为中国移动是 28 元,只不过到达所在地之后才生效,但流量好像是 2 GB。

排了 40-50 分钟之后终于轮到了我,办理值机和托运的手续之后让我去旁边有屏幕的的一个地方等 3 分钟看看有没有我的名字,没有就可以过关去禁区了。结果偏偏这里出了问题——上面有我的名字,而且后面写着”海关”。

进去之后,我看到我托运的行李被传送带传到面前,我问工作人员”是有什么问题吗?”,工作人员说他们也不知道,需要海关的人来看。等了几分钟之后,可能是因为起飞的时间很近了(只剩下 1 个多小时了),国泰(感觉应该是国航)那边的人不断的催促之后,终于有员工带着我去了另外一个房间,然后把海关工作人员叫了过来。以下是我回忆的一些大概的话:

  • 海关工作人员B:去哪里啊?
  • 我:香港
  • [海关工作人员A要了我的证件]
  • 海关工作人员A:你这一大块是什么东西?
  • 我:MacBook Air
  • 海关工作人员B:自用?
  • 我:自用,我看你们有一个规定 5000 元以上需要申报,是不是跟这个有关系?
  • 海关工作人员A:跟那个没关系。
  • 海关工作人员B:还有什么东西吗?
  • 我:一台 Nintendo Switch、一部手机、两个开发板。
  • 海关工作人员A:开发板是什么?带过去做什么?
  • 我:类似树莓派一样的小电脑,给香港朋友看看,会带回来(感觉这里不能说是去展览,毕竟不是商务签证)
  • [我把 VisionFive 1 和 VisionFive 2 拿出来给海关工作人员看]
  • 海关工作人员A:我们需要看一下是否涉及到机密相关的东西,你这是商业的产品?
  • 我:是,而且价格比较便宜,我这里还有淘宝购买记录。
  • 海关工作人员B:不用给我看了
  • [过了一会还给我了]
  • 海关工作人员A:那我这里给你登记一下,没问题了。

从那个小房间出来之后,国泰的人告诉我你就两个包应该直接拿着过安检,不需要托运,没这么多问题。

中国海关.jpg

之后开始过海关。先是第一道不知道是什么流程,然后第二道是安检,第三道是人工通道。这时工作人员问了一些问题:去哪里,去做什么,什么时候回来,酒店订好了吗。然后就让我通过了。

登机口.jpg

在上飞机之前坐的是摆渡车,不知道等了多久之后终于准备登机了。

飞机.jpg

因为我选择的是加长座位,椅子调控+能有很大空间伸展腿感觉非常的不错。但是唯一缺点大概就是没有机上娱乐设备的屏幕了吧。机上有杂志,里面有页面还特地说了精选了数个 LGBT+ 电影,不要太棒了吧。

热食提供有水果和哈根达斯冰淇淋,右边的旅客因为不想吃所以我额外多吃了一个哈根达斯。主食则是腊肠鸡肉饭,非常不错。

飞机到达之后,在香港海关自助通关的地方获得了通关小票。随后就是乘坐 MTR 运营的机场快轨进城啦!从机场到到香港站的票价是 115 HKD。

另外,机场还有旅客八达通卖。这种八达通可以在走的时候于 MTR 售票窗口办理退卡,余额都可以退掉并且还能保留卡片。

机场售卖的旅客版八达通.jpg

之后在中环站下车,并跑到 BOCHK 的 ATM 取了一点港币在身上用。随后坐 MTR 到达了铜锣湾站,并与其它几名同事在麦当当碰面。只不过发生了一件很奇妙的事情:

我在自助柜台上点餐之后,尝试了 Credit Card 支付。然后支付成功之后我也记住了我的号码是 486,但是打印机没有纸了。我就招呼了外面的一个 Staff 让她帮我处理一下,她说稍等一会,随后又在忙别的事情。等了 1-2 分钟之后我便再让她处理一下,这时她说去找取餐台的 Staff。我就去找取餐台的 Staff,但是那边的 Staff 只是说”没有号码不能过来取餐”,随后就不理我了。

最终我也没有吃上我点的麦当当套餐,回酒店了。后面 @腹黑黑 买了一样的麦当当并且拿着卡送过来,还好当晚就用上了 Club SIM,不然中国移动漫游是真的贵呀,而且还只能上 Google,上别的网站依然需要代理。

6.29 – 布置展会 & 乱跑

今天是展会的布置。不到 9 点就来到现场然后把所有设备 setup 之后,11 点多就撤了。这天也是体会到了香港的热,真的是烤箱一样。

庆祝香港回归祖国 26 周年牌.jpg

大妈们喜欢的拍照打卡地.jpg

各种 Staff.jpg

顺带相关负责人在当地找的租借公司是元朗的,而且带来的显示器是三星的远方亲戚 SAIVISUHG。

SAIVISUHG 显示器.jpg

还没吃饭,就想着去碰 BOCHK 开户的运气。@腹黑黑 推荐了深水埗那边的中行网点,结果我开着 citymapper 跑到了长沙湾的分行,而且那家人超级多,都是提钱的大爷大妈。后面坐 MTR 回深水埗然后再 B2 出口出来,往左掉头就能看到了。

进去之后,左边才是办理业务的柜台,右边是提款的队伍。门口有大堂经理一样的工作人员值班,还挺忙的。我问他能不能现场开户,他说可以,然后问了我一些信息后给了一张”开户/更新个人信息表格”和号码。

号码牌.jpg

开户_更新个人信息表格.jpg

我看我的号码是 B075,而目前才叫到了 B061,根据我在内地的中行经验,我得出结论——这应该要好一会去了,所以就去 @腹黑黑 推荐的泰国人海南鸡吃饭去了。

泰式海南鸡汤饭.jpg

我问可不可以 Credit Card 支付的时候,这家店说可以支付宝 & 微信支付,在我还没有给八达通增值那么多的时候有那么一点方便。吃完之后我回去一看,果然过号了,都到 B08x了。Flag 插好插满,办事效率太高了吧!赶紧找大堂经理说了一下,大堂经理一边说不一定能办成然后让我排在一名客人的后面。我看到还有一名大陆的人也来到了这家分行想 walk-in 开户,他在跟大堂经理说他想炒股,还展示了他在别的 App 的炒股记录,但大堂经理好像不怎么愿意直接想给他开,虽然也给了他号码,但希望让他提供更多资料。

给我办事的柜员是一名四五十岁的大妈,态度特别好,还不时跟我攀谈关于内地工资、我的名字以及香港相关的事情,最后她跟我说”你好喜欢香港哦”,一边给我办结了业务。中间出了一点小插曲——我要签名的时候 wacom 的机器坏掉了,等了快 15 分钟才好。随后就拿到了新账户/服务通知,上面有我的港元和外汇宝储蓄户口号码,以及服务账号。

新账户_服务通知.jpg

出来之后,赶紧往里面存了点港币。然后抬头看看天,闷热到总感觉要下雨一样。

深水埗.jpg

之后我还去了附近的黄金电脑商场新高登。新高登我至今不知道在哪(误打误撞进去的),黄金倒是挺明显的。

黄金电脑商场.jpg

各种老游戏主机以及游戏.jpg

黄金里面有很多卖游戏卡和光碟的,可惜我的游戏主机除了 Switch 之外就是 Xbox 360 了。新高登里面除了卖配件之外,还有很多 old-school 的东西。可惜我没有钱钱,也带不回去呀。

Power Mac G4 Cube.jpg

不知道是什么东西.jpg

很多不知道是什么的 PCI-E 接口卡片.jpg

Iomega ZIP CD 650.jpg

显卡报价.jpg

看起来很可爱的东西.jpg

在新高登碰到 leader 等一路人,看着一位同事买了 AMD 的某亮机卡和转接头之后我就走了,因为跟 @腹黑黑 约了在牛舞日本烤肉吃饭。期间我们在尝试用 OpenEUICC 救被刷坏(其实没有)的一张 esim.me 卡,然后把上面的移动到另外一张 esim.me 卡上,但两张卡都出了不同的意外情况。

深水埗.jpg

牛舞日本烤肉.jpg

对了!在吃烤肉之前,我们还去了优衣库买到了全是 golang 代码的 T 恤。这件我在国内等了好久也没有看到上架,甚至去了北京三里屯的那家也没看到。

UNICLO 全是代码的衣服.jpg

这天就这么结束了。

6.30 – 会展开幕 & 爬太平山

也是很早起来,然后就去会场开始布置,调试设备。听说这天有大领导来呢。

中国香港 26 周年的摆件.jpg

摆件后面的广场.jpg

果然,在我们展台的对面方向,也就是主会场的地方有一个大展台,周边除了记者,展会相关人员就是香港警察。

主会场.jpg

我以为李家超没有来,结果后面看照片才知道除了中联办的之外,李家超也来了。

宣布维园展启动.jpg

我们在等中联办的领导过来,结果因为管理这边会场的 staff 没有招呼于是并没有过来,有点失望。

待开放群众入场之后,基本过来的都是一些路过群众,或者稍微有一点点了解的。很少有精通硬件领域的跟我们一起聊。

leader 和同事在向群众宣传.jpg

除了这个,最热闹的应该属于我们展子前面一群龙的地方,大妈非常喜欢在那边拍照。我在拍其中一组的时候还被问能不能过去帮他们拍一张照片,早知道就不拍了...

手持标语拍照的大妈们.jpg

中午是 leader 带队吃萨莉亚。我听同事说是因为昨天他们也在萨莉亚吃的午饭,而且比较便宜。这是我第一次在萨莉亚吃饭,点了焗饭,感觉怪怪的。

吃完饭回来,没有什么人了,倒是有记者在现场开始取材了。不过我只认出来了 TVB 的记者。

之后因为 leader 下午走了,我们感觉没什么人就 6 点多的时候收摊了。@腹黑黑 来到现场接我,然后一起去太平山。在路上因为腿抽筋了停了好几次,但他坚持要带我去,呜呜呜。

坐地铁到金钟站后,就沿着标志一路往山顶缆车坚尼地道站走。推荐这里将你的八达通充好充满,因为排队买票太慢了。票价为 62 HKD。

山顶缆车.jpg

上山之后,可以沿着炉峰自然步道一直走,有几个地方可以将整个香港全部看到。

香港夜景1.jpg

香港夜景2.jpg

对了,这个地方还有一个小红书的打卡地。

小红书打卡地.jpg

看到右下角有个石头的地方吗?那个地方就是小红书的打卡地。香港一位 YouTuber 为此还做了影片,我的看法是千万不要学那些小红书傻逼们。

之后就是下山。其实上山下山都完全没必要排队缆车,因为有 15 路公交直达,只需要 HKD 12.1,还可以体验亡命小巴的快感(不是)。

15 路公交车.jpg

7.1 – 会展第二天 & 爬太平山

这天 leader 已经分好了两拨人轮流站岗,而我被分到了第一波,所以今天我也需要在会场。人流基本跟昨天一样,没有什么不同,但是带小孩的稍微多了一些,正好同事也调好了 Minetest,让我们的摊位也能吸引到小孩子来看。取材记者的话看到了凤凰卫视,其它的没有看到。

下午在各位同事不断的催促下终于跟昨天一样差不多时间收摊了。随后跟 @腹黑黑 一起去太子的元朗冰室(没错,元朗冰室不在元朗)吃猪排。感觉很不错,随后去了旺角的信和中心,看到了不少手办以及别的 ACG 相关东西,买了两个 hololive 的立牌和 YOASOBI 的 アイドル 单曲带小说的限定版 CD。有些商品跟淘宝和咸鱼对比了价格,感觉来这里买老的稀有东西总没错。这里付款一般都支持八达通和现金,有的店支持信用卡,但是要收 3% 手续费。

35 和 aqua.jpg

YOASOBI - iDOL.jpg

随后我们去金鸡游戏机尝试了 @腹黑黑 最喜欢的太鼓达人,好久没有玩音游的我仿佛一个老年痴呆一样。本来想尝试 WACCA 但是时间过了,所以没法玩了,但是旁边有中二节奏(CHUNITHM),第一次尝试了一下,本来想着太菜不需要办卡,结果越玩越好,早知道就办一张卡存储进度了。

7.2 – 长洲

今天我是休假,所以可以睡一个懒觉。在帮朋友带了 hahaSIM 然后收拾一下之后,就去油麻地跟 @腹黑黑 碰头了。

我们先去了现时点,比起昨天去的信和中心,虽然也有手办,但这里乐高更多一些,而且不少店也关着门。

有一家有意思的店,卖手表然后下面有二次元的图。听 @腹黑黑 说下面本来还有两张图的。

手表店x二次元.jpg

Update: @腹黑黑 发过来了原来的照片

Old手表店x二次元.jpg

很老的 TVB 装饰品.jpg

大猩猩的卡套.jpg

随后我们到了尖沙咀的渡轮,本来昨天他想带我坐尖沙咀到中环的这个航线的,但是时间太晚了,所以今天带我来。票价是 6.5 HKD。

尖沙咀渡轮附近.jpg

不过在刷卡入闸之前,我们见到了右边长长的一排人流,走到头才发现是买票的,这让我想起来”A:我用大都会扫码 B:你傻逼吗,我等你一分钟了”这个梗图。

买票的队伍1.jpg

这个队伍真的很长。

买票的队伍2.jpg

上了船,也没有什么好拍的,因为周围一片雾蒙蒙。下了船之后,我们就直接往去往长洲的码头走了。

中环码头.jpg

去往长洲的轮渡价格是 40.70 HKD,时长大概半小时。很不幸的是,因为这是我第一次坐这么长时间的轮渡,我发现我晕船了,还好没有严重到吐。

长洲港.jpg

下船之后,我们便往东湾走,准备前往环南岛一周的徒步路线。不过在此之前,我们在长洲教堂路发现了残余的没有被清理干净的文宣。可惜我来的时间太晚了,被贴满文宣的墙一定很壮观。

文宣1.jpg

文宣2.jpg

文宣3.jpg

随后我们到了东湾,不巧的是,刚到东湾就有雷暴警告。但 @腹黑黑 觉得这并不影响我们爬山,所以我们就继续沿着路开始走。

东湾.jpg

爬山路线1.jpg

走到观音湾之后,沿着路标往小长城走。

小长城.jpg

走到小长城后,向圣公会静修院的方向走。

大概是很好的打卡地点.jpg

然后,往花坪山庄 –> 慈幼静修院这条路线前进。

慈幼静修院.jpg

接着,向南氹(dàng)天后庙进发。

沙滩.jpg

庙前面有一个平台,也是不错的拍照地点。

庙前面的平台.jpg

南氹公园.jpg

天后庙.jpg

参观完之后,向兰苑 –> 中华基督教会长洲堂锦江小学 –> 众乐亭这个方向前进(这条路叫做长洲山顶道西),途中会经过第一个公共厕所。给我的感受就是在这种比较偏僻(?)的地方,厕所倒是打理的非常好。这点内地应该向香港学习。

路边停放的废旧自行车.jpg

电线杆与植物.jpg

香港天文台长州气象站.jpg

在经过第二个公共厕所之后,便会经过一个坟场,和更多坟场。随后,根据标志前往五行石 –> 张保仔洞。

细心的你可能会发现,这里我并没有把张保仔洞用链接标识出来,因为虽然这条路的标志(如下)告诉你五行石这条路不能去张保仔洞,但其实是可以的,只不过需要一点技术活。

此路不能通往张保仔洞.jpg

沙滩2.jpg

通向五行石的路.jpg

但是,在真正的难题来之前,我们可以在这条路前面的几块石头拼起来的算平的地上享受一下海风,休息一下。

享受海风1.jpg

享受海风2.jpg

然后在这条道路的尽头,你可以看到五行石。

五行石.jpg

接下来我们到了鯆鱼湾,这里就是比较难一点的路段了。你以为路走到尽头了吗?其实没有!

扭曲的路.jpg

沿着石头一路下来,然后再翻过几个石头,靠着高墙走到一个很老的梯子处下来就可以了。实在不会走的话,可以看看这里的 Google 街景,街景走完了 80% 的路,剩下 20% 的路可以看我的影片

之后,沿着这条路走,你就可以看到张保仔洞的路标了。

沿途的无人贩卖店.jpg

走到张保仔洞的路.jpg

这条路可以在 Google 街景确定位置

通向主路的地方.jpg

上来之后可以看到路标。

张保仔洞路标.jpg

张保仔洞很狭窄,太胖的人是不行的,并且需要手电筒,最好背包要取下来。

大概的构造就是一段垂直下去的路(但爬下去没问题),一段平但是狭窄的路,然后上来的梯子三个部分。

张保仔洞洞口.jpg

洞里面1.jpg

洞里面2.jpg

上去的梯子.jpg

出来之后,往香港会友堂纪念亭前进。这时候基本上爬山就结束了,沿着海岸线走可以一路走到长洲渡轮码头

南部线路终点.jpg

欢迎来到长洲.jpg

在登上码头之前如果还有空的话,不要忘记去购买一下这里的两个特色小吃,一个是大鱼蛋,一个是芒果糯米滋。注意这两家店只收现金。

东源大鱼蛋.jpg

芒果糯米滋.jpg

长洲渡轮码头.jpg

随后就是坐船回中环,然后坐 MTR 回铜锣湾会场收拾东西了。长洲 <–> 中环的轮渡是半小时一趟。

新巴与城巴.jpg

收拾之后,又去了一次附近 24 小时运营的堂吉诃德,这次带上了同事们;我忘了 @腹黑黑 什么时候带我去过一次了。收了一些好货和莫名其妙的东西。

堂吉诃德战利品.jpg

7.3 – 汇丰 & 离开香港

很早就通过朋友约了 7 月 3 日在铜锣湾 HSBC 开 HSBC One,这也是我自己主要来香港的另一个目的。因为约的是上午 10 点,所以打算开户完之后再去退房。

需要的资料和中行没有什么分别,在另一篇文章里也详细有讲,在这里就不多说了。总之这次完美的拿下了,还是很开心的。

香港汇丰.jpg

这次旅行的最后一个行程,因为都来铜锣湾了,肯定是要去铜锣湾书店的。位于香港岛铜锣湾骆克道531号2楼

入口.jpg

原书店门口.jpg

门口通知.jpg

有人贴的东西1.jpg

有人贴的东西2.jpg

随后就是去机场了。我的机票返程虽然返程是国泰的,但实际承运方是国航,所以导致我白白在国泰的值机口排了半个小时的队,还好赶上了。顺带一提我这种情况也是不能用国泰的自助系统 check-in 的。

国泰自助 check-in.jpg

又是国泰的排队.jpg

顺带排队的时候偶然遇见了女 35p,有点惊喜。

女 35p.jpg

香港国际机场的确有点大,我连我的登机口在哪里都找了半天。

很大的香港国际机场.jpg

这次还用掉了交通银行腾讯联名卡送的 1 点贵宾厅,需要找到环亚机场贵宾室(Plaza Premium Lounge)。能让我吃口饭我就很满足啦!

环亚机场贵宾室.jpg

可以吃饭的贵宾厅.jpg

回去的飞机有一点烂,餐食也不怎么样,发的面包特别干。

回去的登机口.jpg

上回去的飞机.jpg

到的时候已经是晚上 8 点了,但是天却还没黑。经过漫长的摆渡车后,我们来到了远机位到达的地方。入境倒是十分轻松,然后就是准备地铁回家了。但是此时 T1 航站楼非常的空,不知道为什么,像极了我当时的心情。

空空的 T1 航站楼.jpg

后记

感觉还有很多地方没有去成,什么时候多存点钱一定要再去一次,还要多 rua @腹黑黑 几下!


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

香港开户指北

简短的个人经验记录 (Update: 2023-07-05)

先问问自己,开户口做啥?

其实这也是最重要的,一般银行香港的开户不比内地松。所以,你需要一个好的理由。答不上来或者支支吾吾的话大概会直接拒绝你。

例如留学,可能需要让你出示证明材料。买保险也可能让你出示有关的东西。投资一定不会错,但需要提前做功课。

我去一趟香港能保底开到什么户口?

香港目前有三家虚拟银行,中国大陆旅客可以直接申请。

  • 众安银行:中资(母公司为众安在线财产保险股份有限公司,由蚂蚁金服、腾讯、中国平安等出资设立),能得到实体的 prepaid Visa,可自定义后六位。
  • livi 银行(理慧银行):中资(中银香港、京东等出资设立),能得到虚拟的 prepaid MasterCard。
  • 天星银行:中资(小米集团及尚乘集团合资成立),没有卡片。

但是入金依然是一个麻烦的事情。所以还是需要开通传统银行的户口。

那有什么推荐吗?

中国银行、中信银行和招商永隆。我在这三家内选择了中国银行。

中国银行

中国银行可以在微信公众号”中银香港”内提前预约,虽然预约界面说不支持中国大陆预约,但实际上可以用。只不过我是 walk-in 碰运气没有预约的,所以我也不能提供这方面的资讯。在此之前,可以先下载好 BOC HK 以及 BOC Pay 这两个 App。

首先找到大堂经理说明自己想开户口。大堂经理会问你想开户口做什么,如果没有问题的话他会给你一张开户口的申请表和号码牌,申请表需要自己事先填写。我去的那一家表示不一定能够开到。

随后排号到我之后,柜员需要我的身份证往来港澳通行证通关小票。虽然身份证也可以当地址证明,但是因为我的住址和身份证不一样,故另行携带了带地址 & 银行 logo 的信用卡账单带卡片激活信息 & 银行 logo & 地址的信用卡信封

为什么我要带额外的信封呢?因为我的信用卡账单地址没有写到门牌号,我需要证明这个地址我的确能收到邮件,故一并带上。至于自己打印的电子补账单,我是不知道能否通过的。我的账单是去自助柜台补打的,通常需要 3 个月以内的用作证明。

随后就是在那里坐着等开储蓄户口,大概 30 分钟左右的样子就开好了。中国银行的卡片需要等待邮寄,差不多 1 个月。

中国银行的入金可以从大陆的 BOC 通过手机汇款的方式汇入 BOC HK,这样目前是免手续费的。但我还没有尝试,后面更新再说吧。

P.S. 中国银行的 ATM 在香港是最多的,基本和 7-11 以及谭仔米线一样随处可见。

我听说还有别的外资银行诶,可以试试吗?

当然可以。我也有汇丰银行的经验。

因为汇丰银行的 HSBC Premier 需要 50 万港币,我没有这么多钱,只能开汇丰银行的 HSBC One。但我听别人讲,Premier 开是业绩,One 拒是业绩,所以这个比之前开的中国银行还要碰运气。

汇丰银行可以直接在微信公众号”汇丰香港”内提前预约,大概是隔天有专员会致电你,并且最主要会问你去哪个地点开户。选择好之后又会有个你选择欲开户地方的专员致电你,并且大概告诉你需要的东西以及约时间。然后可以事先下载 HSBC HK 这个 App。

在预约好的时间前到达,你预约的专员会带你进一个单独的小房间收你的资料并且开始开户流程,同时会有另外一名理财经理进来询问开户用途以及做推销。

和上面一样,我依然提交的是身份证往来港澳通行证通关小票带地址 & 银行 logo 的信用卡账单带卡片激活信息 & 银行 logo & 地址的信用卡信封

在他们觉得理由正当之后,理财经理便会离开,后续会做开户手续。这个开户比中国银行要长,大概 1 小时,所以要提前规划时间。

如果成功开到储蓄户口会当场发红色的狮子卡(当然是银联)给你。这张卡想绑定到 Apple Pay 的话需要等 7 天。

之后,如果要开证券账户,柜员需要复印你的身份证。然后流程就结束了。

P.S. 如果开户失败,不要叫专员录入你的信息。否则你会在汇丰的黑名单上呆半年。

太麻烦了,有没有更便捷的办法?

当然有,就是找中介。花几百到几千不等的价格可以让他们帮你做好各种工作,你只需要本人到场就没问题了。

那他们会不会叫我当场存钱?

会的,例如我申请中国银行的户口成功之后柜员告诉我需要存 1 万港币。所以带多点钱到香港总不是个坏主意。

Bonus

不过最终我没存 1 万港币进中国银行,我也不知道有没有账户管理费。后面更新看看吧。


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

Linux 下玩 3D 弹球

也就是 3D Pinball Space Cadet

找到你的 Windows XP 安装光盘内 i386 目录,然后在你 Windows 的 C 盘新建一个目录叫做 Pinball 来存放解压的文件。

expand -r pinball*.* C:\Pinball
expand -r sound*.wa_ C:\Pinball
expand -r font.da_ C:\Pinball
expand -r table.bm_ C:\Pinball
copy wavemix.inf C:\Pinball

接下来测试一下能不能运行。通常是没有问题的。

然后转到你的 Ubuntu 22.04 LTS 环境内:

$ sudo apt install build-essential cmake libsdl2-dev
$ git clone https://github.com/k4zmu2a/SpaceCadetPinball.git

接下来,将 C:\Pinball 目录下的 *.wav*.dat*.midWAVEMIX.INF 拷贝到 SpaceCadetPinball/bin 目录下。

最后,执行 cmake . && make 就行了。

Bonus

在 Fedora 内使用这个命令安装依赖:

sudo dnf install SDL2-devel SDL2_mixer-devel cmake gcc-c++

如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

华为擎云 W510 拆机 & 用它做日用开发怎么样?

多图预警。

国产信创(信息技术应用创新产业)产品究竟怎么样?

前言

去年有听到同事说了一句 openEuler 那边 aarch64 的编译机器的 CPU 是鲲鹏 920,问哪里能买到类似的呢?有人推荐了 W510,所以在愿望单上列了好久了。最近正好有全新的机器在闲鱼上出售,就果断下单了一台。

虽然我是极度讨厌华为这个品牌,但也是想看看拿它来做我的开发用环境怎么样。

拆封 & 配置

包装.jpg

这个卖家虽然发货有点慢,但给我包的还是非常厚实。值得一提的是,当前闲鱼上有两个不同地区的卖家都上架了同样的产品(即说自己是全新),但都是同一个仓库发货的。我朋友遇到了在一个卖家那里申请退款然后在另一个卖家那里拍下货物不给他发货的情况。

信息贴纸.jpg

全新的箱子侧面贴着产品配置 & S/N 信息的贴纸。我的这一款是 PGU-WBY0C。

配件.jpg

箱子内除了主机以及说明书、配件和带 S/N 信息的贴纸外,还附赠有华为的有线键盘和鼠标。这两个也有 S/N。

华为有线键盘和鼠标.jpg

主机是由一层塑料包装好的。拆封之后可以在底部看到设备信息及其它贴纸:

主机底部.jpg

值得注意的是,虽然有贴统信 UOS 正版授权这个贴纸,但实际上并无内置任何 OEM 授权。通过统信客服也是查询不到激活码信息。

顺带一提,找统信客服要激活码需要提供设备的 S/N、MAC 地址和采购的公司名称。即使不告知公司名称只提交前两者查询到有激活码的话,不说公司名称客服也不会给你激活码。所以个人买家只能去自己花 800 购买 UOS 20 Pro 的激活码了吧。

主机正面有一个电源按钮(带指纹识别),一个耳机接口,一个 USB Type-C (我没有测速度) 和两个 USB 2.0。正面还藏了一个聊胜于无的小音响呢。

主机背面上方有三个音频接口,分别是声音输出的绿色接口,麦克风输入的红色接口,和外接音频输入的蓝色接口。下方有 4 个 USB 2.0 和一个千兆 RJ45 网口。除此之外,还有一个 COM 接口。下方有独立显卡的输出接口,一个 VGA 一个 HDMI。

拆机前发现面板上有一个贴纸。

贴纸.jpg

这就是拆机之后内部的样子:

内部.jpg

下方可以放一个 SATA HDD,预留了电源和 SATA 线。忘记说了,这台电脑可是有光驱的,型号是 DU-8AESH55B,2020 年 8 月出厂的:

光驱.jpg

将光驱和硬盘位卸下之后可以看到两个 M.2 NVME 槽,速度都是 PCI-E 3.0。预装的这一条是 Samsung 的 PM981a,容量是 512 GB。

固态硬盘槽.jpg

左边是网卡和内存条的位置。

内存支持 DDR4 SODIMM 2600,原厂带了一条 Samsung 的 8 GB 内存。因为有两个插槽所以最大支持 32 GB * 2。

内存.jpg

值得注意的是这块网卡,这是华为的 Hi1103LPC Wi-Fi/蓝牙模块,到写文章为止 Google 这个型号只有三个结果,能查到其 CMIIT ID 是 2020AP1560。

网卡.jpg

说到这里,你们可能会想这个东西有没有驱动。我的回答是除了原厂 UOS 安装镜像(不是网上能在统信官网能下载到的那个)以外,任何地方你都不会找到至少以下三样东西的驱动:

  • 华为的无线网卡
  • 电源按钮上指纹识别
  • 内置小音箱

统信官网能下载到的那个针对鲲鹏 920 的镜像是没有以上三个驱动的,银河麒麟的桌面版 V10 的 ARM 版同样没有这三个的驱动。

我们再来看看显卡那里。上方预留了一个 PCIEx4 的槽。

预留的 PCIE 槽.jpg

显卡是一张聊胜于无的 Radeon 520,显存看上去只有 1 GB。

显卡.jpg

电源的型号是 PAC300D1205-C,所以我猜这是 300W 的电源。

电源.jpg

开机可以进入 BIOS,有网友查出来制作这个 BIOS 的公司是南京百敖软件股份有限公司。

BIOS1.jpg

BIOS2.jpg

BIOS3.jpg

安装系统 & 踩坑 & 使用感受

UOS 的生态我就不在这里阐述。因为我还没有花钱激活,体验不了。

主流的 Linux 发行版基本都有对 ARM 的支持。我首先测试了 Ubuntu 20.04 LTS,直接安装没有问题。

但是 Ubuntu 22.04 LTS 的时候,问题就来了——选择启动安装向导之后,系统假死了。这里其实是遇到了一个华为在 kernel 5.11 提交的功能变更触发了 BIOS 的 bug。因为 Ubuntu 20.04,甚至是 UOS 和银河麒麟的 kernel 版本是 5.4 所以不会触发,但是 Ubuntu 22.04 的内核版本是 5.15。费解的是,华为知道这个 bug,但就是不去修。

解决方法也很简单,看到 GRUB 启动界面后,摁键盘上的 e 键来编辑启动选项,在 Linux 启动选项中增加一个参数 initcall_blacklist=hisi_ddrc_pmu_module_init,然后用 Ctrl+X 组合键或者 F10 键启动就可以了。

同样的,在系统安装结束之后不要立刻重启,需要编辑 /etc/default/grub。在选项 GRUB_CMDLINE_LINUX_DEFAULTGRUB_CMDLINE_LINUX 后加入参数 initcall_blacklist=hisi_ddrc_pmu_module_init

如果只是要用 Ubuntu 的话,另一个方法是安装 20.04,然后通过 do-release-upgrade 升级到 22.04。

Ubuntu.jpg

而这次我想尝试 Fedora。在安装 Fedora 时,我碰到了一个非常奇怪的问题,在使用官方提供的 Fedora KDE Plasma (截至写这篇文章的时候版本是 Fedora-KDE-Live-aarch64-37-1.7.iso )镜像启动之后加入这个参数不工作。我甚至用了 modprobe.blacklist=hisi_uncore_ddrc_pmu 这种写法也不工作。10 次里面可能只有 1 次成功过(那一次我记得我是把两个参数都写进去了,感觉非常偶然和奇怪,因为后面这样做不工作了)。而使用 Everything 镜像(截至写这篇文章的时候版本是 Fedora-Everything-netinst-aarch64-37-1.7.iso)每次都能启动成功。

Fedora.jpg

安装好之后,有一个地方要去改掉:将系统自动休眠关掉,否则机器在休眠后会睡死,只能强行关机然后开机。

至于踩坑方面,我目前除了驱动外没看到有什么大坑,都是一些小坑:

  • 每次开机不会自动切换至 HDMI 音频输出,因为设备总是禁用状态。
  • Jetbrains Toolbox 还没有 ARM 版本。

因为我的工作基本都是要不然就是用 Visual Studio Code,要不然就是和 QEMU 这类开源软件打交道,所以感觉还挺流畅的。开了一个 QEMU 虚拟机+几个窗口的 Firefox 浏览器,在连续工作的情况下 CPU 温度没有超过 60°C。

后续我在想看看可不可以偷驱动出来给别的发行版用,但我感觉没啥希望。

后记 & 我推荐吗

这台 PC 满分 10 分的话我只能给 4 分。虽然鲲鹏 920 是一个性能足够强的 CPU,但是围绕着这台 PC 的其它东西足以让它掉分。如果你对 ARM 生态感兴趣,或者对信创产品感兴趣的话,这是一台不容错过的产品,毕竟性能强大,价格也不会太贵。

注意,如果不小心把硬盘格式化了,那么你可以在这里下载到原厂的安装镜像。但如果选择进入安装向导的话,它不会有任何确认的操作,直接会格式化掉他认为的第一块固态硬盘并开始自己安装。

如果你对跑分感兴趣,这里有一个这台机器跟 Ampere eMAG 8180 的对比,很明显它是优于后者的。

参考文献


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

❌