在之前的 Proxmox VE + Ceph 集群搭建 一文中,完成了 PVE 集群的搭建,在虚拟化平台的日常使用中,经常需要创建新的虚拟机。
通常的交付流程是:确定所需配置,创建虚拟机,安装操作系统,配置网络,安装必要的软件,最后交付使用。
如果每次都按照这个流程来,既耗时又容易出错。为了提高效率,可以使用模板虚拟机来快速创建新的虚拟机实例。
本文将介绍一种基于 Cloud-init 的虚拟机模板的创建和使用方法。
在 Cudy 路由器使用 ZeroTier
买了一款很小很好看的路由器 Cudy TR3000,官方提供刷 OpenWrt 的方法,在下载页能看到根据 GPL 许可证要求提供的 OpenWrt 源码,在 bilibili 和酷安有不少拆解和刷机评测,因为不需要太多定制功能,就先使用官方原版固件。
官方原版固件的操作界面可以参考:Cudy 管理界面模拟器
我需要在外面访问路由器下局域网的设备,官方固件支持 VPN 设置,有 OpenVPN、WireGuard、ZeroTier 等,可惜不支持 Tailscale,只能选择 ZeroTier。
参考官方教程:如何通过 Zerotier 远程连接 Cudy 路由器?
Vaultwarden 在 Windows 上的编译与使用
Vaultwarden 是一个用 Rust 编写的非官方 Bitwarden 服务器实现。
Bitwarden 是一个密码管理器,可以在浏览器、Android 实现密码填充功能。使用自托管 Vaultwarden 服务器可以在离线环境下使用 Bitwarden 客户端、浏览器插件、网页端管理密码。
Vaultwarden 有提供 Docker 容器运行方式,也可以通过 Docker 容器提取预编译的二进制文件,但预编译的二进制文件并没有 Windows 版本,所以需要手动编译。
为了实现开箱即用和便携化,编译时尽可能选择静态链接、二进制文件无额外依赖的方法。
本文主要为 x86_64 架构编译,arm64 的方法可能不同,所有命令使用 PowerShell 执行。
2025-05-06 更新:添加了使用 GitHub Actions 的编译方法。
2025-11-02 更新:可以从这里获取已配置完成的仓库:
使用 fork 仓库编译最新版本:nameless-name/vaultwarden
自选版本编译:nameless-name/vaultwarden-windows-build
使用 Xray 解决谷歌翻译不可用的问题
在 Windows 上,使用 WinSW 将 Xray-core 配置为开机自启服务,浏览器使用 SmartProxy 管理网络请求,可以避免 TUN 模式或系统代理对其他应用的影响。
但 Chrome 的翻译功能并不使用 SmartProxy 设置的代理,所以会出现谷歌翻译不可用。
解决方法是,使用 Xray 的 Dokodemo-Door 功能,将请求转发到代理。
配置文件示例:
1 | { |
在 C:\Windows\System32\drivers\etc\hosts 内添加以下内容:
1 | 127.0.10.100 translate.googleapis.com |
hosts 文件将谷歌翻译的域名指向 Xray 监听的地址,浏览器发起的请求将会由 Xray 处理,Xray 内部经过 routing 判断后,请求会转发到合适的出站代理。
在 dokodemo-door 配置里的 listen 写的不是 127.0.0.1,不会影响其他软件监听 443 端口。
事实上,127.0.0.0/8 都属于本地环回地址,可以使用多个地址来实现而不出现端口冲突。
使用 containerd 作为 K8s 运行时
在 使用 Ansible 部署 K8s 集群 部署完成后,重新阅读了 K8s 的文档,发现使用 containerd 需要先修改配置文件,之前配置失败的主要原因是没有配置 SystemdCgroup。
参考:
containerd 安装手册
配置 systemd cgroup 驱动