Hello 👋

欢迎访问我的博客!生命不息,折腾不止,本博客主要记录平时的一些折腾记录。

简单记录一下 Docker 容器中信任一个自签名证书的案例

1. 背景 起因是我的 ttrss 容器需要订阅一个自部署的微信公众号订阅服务 wewe-rss ,在 web 页面添加订阅一个订阅源 http://192.168.5.128:8109/feeds/MP_WXS_3925660753.atom,添加之后 ttrss 报错 无法从指定的网址下载:cURL error 7: Failed to connect to 192.168.5.128 port 80 after 0 ms: Couldn't connect to server (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://192.168.5.128/feeds/MP_WXS_3925660753.atom 但是仔细看报错日志,我的服务端口明明是 8109 但是 ttrss 却访问了 80,暂时不知是不是 ttrss 的 BUG,所以我便换了一个 nginx 代理的本地服务来反代 wewe-rss 的服务,由于我 nginx 配置了一个自签名的证书,客户端信任这个证书之后可以开启一些自部署服务只能 https 才能开启的功能,比如密码管理器 vaultwarden 。扯远了,回到正题,现在我已经配置好了反代的服务,新的订阅服务链接为:https://wewe.linkzz.hm/feeds/MP_WXS_3925660753.atom,但是直接在 ttrss 中配置还是会报错证书无法信任,所以这就来解决这个问题。 2. 信任证书 以下的操作是基于 Ubuntu 2204 版本,其他发行版没测试过。 2.1 确认证书类型 我是使用的 mkcert 生成的 CA 证书,证书包含 rootCA.crt 和 rootCA.pem 文件,crt 是二进制文件,只包含证书内容,在 windows 环境下可以直接安装,而 pem 是 base64 编码的文本文件,它包含了证书内容、证书链等信息,在 Ubuntu 中信任证书需要 pem 文件。...

2024-04-10 · 3 min · 592 words · Linkzz

Docker 环境下的 qBittorrent 容器迁移至 lxc 保留配置

1. 背景 我的 qBittorrent 下载器是部署在 Docker 容器中的,而这个 Docker 的宿主机是一个 pve 的容器,他有一个独立的 IP,这个 IP 的网关指向了一个透明网关以实现大陆网络优化(国内特色),关于我的网络拓扑可以查看我以前的这篇 文章 但是下载器的流量经过 clash 之后需要单独对 BT 流量命中规则,我用的是 clash-meta 的核心,支持逻辑规则,于是我是这样写的: # bt下载全直连 - AND,((SRC-IP-CIDR,192.168.5.128/32),(NOT,((DST-PORT,443)))),DIRECT 以上规则解释就是:来自 192.168.5.128IP 的目标端口非 443 的连接全直连,比较简单粗暴一刀切,但是这个规则还是会误杀一部分的流量,但至少可以避免大部分的 BT 流量了。 虽然问题是暂时解决了,但这个方案并不是最优,存在以下坑: 如果 Docker 的宿主机 IP 换了规则得更新 目标端口 80 的流量也应该继续下面的规则匹配 (当然这是因为懒没加到规则里面) 会误杀掉一部分的流量 2. 迁移 为了解决上面提到的问题,也为了把 qbittorrent 版本升级一下,我决定单独给他一个创建一个 lxd 容器,这样可以将网络直接指向上级网关,不必走透明网关。 2.1 创建容器 通过 pve 的内置 pct 命令创建容器: pct create 117 \ ugreen:vztmpl/archlinux-base_20230608-1_amd64.tar.zst \ --cores 6 \ --memory 512 \ --hostname qbit \ --net0 name=eth0,bridge=vmbr0 \ --features mount="nfs;cifs" \ --swap 512 \ --rootfs volume=local-lvm:8 2....

2024-04-09 · 1 min · 196 words · Linkzz

用 Thunderbird 统一管理我的邮件

1. 前言 因为国内工作一直是用 微信 或者 钉钉,所以我一直不怎么使用邮件客户端来收发和管理邮件,就是收验证码的时候打开网页临时用一下,这就导致了我的邮件长期以来未读 99+ ,这其中大部分是 Twitter、Nintendo、Steam 的推送,还好我不是一个强迫症,所以就还好。但是最近我还是决定用一个邮件客户端来统一管理电子邮件,不是因为换了要用电子邮件办公的公司,而是收验证码的时候一个个邮件账号要切换,光是谷歌邮箱就有 3 个,是在是麻烦。还有一个重要的点,有时候绑定的账号用了一个不常用的邮箱,比如 Steam 小号,当小号异地登录(被盗)的时候发送的邮件我收不到提醒,可想而知小号就危险了。 2. 客户端选择 所以我需要一个邮件客户端来同意管理我的所有邮箱账号,由于我使用的系统为Windows,客户端的选择也并不多,我对邮件客户端的要求有: 免费 颜值高,简洁 内存占用尽量少,要常驻后台 方便集成常用的邮箱 QQ、Google、Outlook 等 不想用国产 基于以上选择我选了几个客户端来尝试一下,先放个比较图表: 客户端 优点 缺点 适用性 Outlook For Windows 微软官方支持,界面一致 字体渲染差,阅读体验不佳 适合微软生态用户 邮件 (UWP) 简洁,内存占用小 功能有限,UI 设计一般 适合简单邮件收发 Thunderbird 开源,功能丰富,支持扩展 UI 略显紧凑 适合需要高级功能的用户 2.1 Outlook For Windows 微软专门推出的邮件客户端,功能界面和 Web 版 outlook 一致,支持 Google、QQ、outlook 等常用邮箱,界面简洁,缺点就是在 Windows 下字体渲染巨差,在我使用了 MacType 替换了字体之后还是没有丝毫优化,阅读体验为负分,所以 Pass 。 2.2 邮件(UWP) 微软原装 UWP 应用,可以方便的添加 outlook 邮箱,布局简洁,内存可忽略不计,如果只使用 收验证码 这个朴素的任务的化是完全可以胜任的,但是对我来说还是功能太少,而且 UI 对我实在不是很有眼缘,所以 Pass 。...

2024-03-21 · 1 min · 133 words · Linkzz

记一次 vue-cli-service 迁移至 vite 构建工具的过程

1. 为什么要迁移 当初项目创建之际正处于 vite 早期,不敢冒险尝试,现在 vite 版本更新到了 5.x ,而且有着比 vue-cli-service(基于 webpack)好得多的性能,构建速度更快,热更新支持更完善,所以有什么理由不迁移呢。 2. 迁移 2.1 移除 vue-cli-service 相关依赖 现有 package.json 内容如下: { "name": "sfarm-front-vue", "version": "1.0.0", "private": true, "scripts": { "serve": "vue-cli-service --mode development serve", "build": "vue-cli-service build", "build:test": "vue-cli-service --mode development build", "lint": "vue-cli-service lint", "start": "yarn serve", "start:local": "vue-cli-service --mode local serve", "start:prod": "vue-cli-service --mode production serve", "prepare": "husky install" }, "dependencies": { "@element-plus/icons-vue": "^1.1.4", "axios": "^0.24.0", "core-js": "^3.6.5", "echarts": "^5....

2024-03-07 · 4 min · 697 words · Linkzz

pve 宿主机挂载虚拟机磁盘镜像

1. 背景 有的时候我们需要修改虚拟机的文件,但是此时虚拟机却因为某些原因无法启动了,比如说虚拟机黑苹果修改了 EFI 导致启动不了,这时我们有什么办法呢,有人说我们添加一个可以启动的 EFI 启动设备再来修改原来 ESP 分区 (即原 EFI 文件系统) 不就好了,诚然,这是一个办法,但我们今天要介绍的是另一个办法,直接在宿主机挂载虚拟机的磁盘分区,就拿黑苹果 EFI 分区为例。 2. Raw raw 格式的磁盘镜像文件可以使用 losetup 虚拟成一个块设备。再使用 kpartx 读取分区表英创建设备映射,从而可以从设备挂载到宿主机: 2.1 挂载 安装 kpartx apt install kpartx 下面以虚拟机编号为 108 的 disk1 为例子 虚拟块设备 losetup /dev/loop0 /dev/mapper/pve-vm--108--disk--1 读取设备的分区表并创建设备分区映射 kpartx -av /dev/loop0 查看分区映射 ➜ ~ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 1G 0 loop └─loop0p1 253:23 0 1024M 0 part sda 8:0 1 14.6G 0 disk ├─sda1 8:1 1 11....

2024-01-16 · 3 min · 579 words · Linkzz

记一次 Moonlight 10054 错误的解决经历

1. 起因 最近看到很多 Linux 平铺窗口管理器的视频,总觉得很炫酷,体内的折腾之心在沸腾,于是就打起了体验(折腾)平铺窗口的想法,看到这里各位看官肯定要说:这和 Moonlight 串流有啥关系,标题党!辣鸡! 哈哈,各位别急,且听我慢慢道来。 首先,我主力的生产系统是 Windows ,我不想在 Windows 下开发,所以 Windows 平铺窗口就 pass 掉了,只能转向 Linux,正好公司一台 Exsi 主机还剩很多资源,并且还有一块 GTX 1060 的显卡可以用来直通加速,那不正好创建一个带显卡的虚拟机,运行 Linux 桌面,然后我再远程串流这台虚拟机不就行了吗,那串流体验最好的自然是 Moonlight 了, 诶,你看,这不就关联大了吗! 2. 环境 好吧,废话少说,我描述一下我的环境,我要远程串流的是一台 Exsi 创建的虚拟机,参数如下: 项目 值 备注 系统 Arch Linux CPU 8 vCPU 宿主机 CPU 为 AMD Ryzen Threadripper 1950X RAM 8GB GPU NVIDIA GeForce GTX 1060 6GB 显卡直通 显示器 无 远程串流服务 Sunshine v0.21.0 显示服务 X11 窗口管理器 awesome Windows 客户端 Moonlight-qt 2....

2023-12-29 · 2 min · 406 words · Linkzz

pve 安装 Bliss OS - Android-x86 并配置显卡直通

1. 前言 我的 这篇文章 中介绍了在 pve 环境中安装 Android-x86 实现 x86 架构的云手机,可惜 Android-x86 的版本停留在了 Android 9.0 ,这个版本的 Android 无法实现音频的串流,scrcpy 的音频串流最低支持到 Android 10 ,无法听到音频的云手机是不完美的,今天我们就来试下另一个 Android-x86 的项目 - BlissOS ,看它是否可解决以上问题,成为真正可用的云手机。 2. 安装 2.1 ROM 选择 简单介绍一下 BlissOS ,它是基于 AOSP 优化定制,集成了很多专为 PC 优化的功能,比 如 Dock,Desktop 模式,兼容 arm 应用,也就是说他的 ROM 定制得更像一个平板系统,而不是原生 AOSP 那样,AOSP 如果作为远程使用,没有触摸屏的情况下还是有很多操作上的不便,但是它定制的版本则很好的解决了鼠标操作的问题,因为它目标就是专为Chromebook、桌面PC、平板等设备优化。 目前官方提供了两个稳定的分支,BlissOS 14 基于 安卓 11 ,另一个 BlissOS 15 基于 Android 12L ,我这里选择了 BlissOS 14。 BlissOS 14 提供了几个 ROM,我们下载带谷歌框架的这个版本: 2.2 显卡加速 Bliss OS 由开源技术构建,内核基于 Linux 所以支持大部分显卡加速,然而由于 Nvidia 专用驱动对很多开源软件的支持问题,BlissOS 仅支持极少的 Nvidia 显卡,我的上篇文章中使用了 VirtualGL 为 Android-x86 提供显卡加速,那个方案是可行的,而且性能也足够,但缺点时没有物理输出,今天我们换个方案,参照 这篇文章 中提取出的核显 vbios ,就能实现核显直通并具有物理输出,我们不仅可以用来当作云手机,甚至可以外接显示器作为 HDPC 使用。...

2023-12-15 · 3 min · 476 words · Linkzz

Tesla P4 - Nvidia 专业卡 vGPU 解决方案体验

1. 前言 之前体验过 intel 的 vGPU 解决方案 Intel GVT-g ,我的古早处理器 i5-10400 还是 intel 很老的gpu架构的 UHD630 分配到一个 Win10 虚拟机使用,哪怕是只分配一个 vm 的情况下性能依然不够看,使用 parsec 1080P H264 串流的情况下帧数无法保证60,这时视频播放就更不用说了,直接GPU占用100%,更不用谈 2k、4k 等高分辨率串流了。早就了解到 Nvidia 的 vGPU方案支持 kvm 平台,而且支持 Windows 和 Linux 客户操作系统,性能较 intel 核显好得多,于是我弄来了这块小小的 Tesla P4。 2. 硬件 这块 Tesla P4 是个单槽半高卡,刚好我的 pve 宿主机剩下一个 x16 的 PCIE 插槽,虽然只有 X4 的速度,但咋对性能没有极致的追求,所以损失一点性能还能接受(主要是穷换不起主板),而且这块显卡最高功耗仅为 75W 无需外接供电,实测无负载的时候功耗仅十几瓦,最惊讶的还是他的价格,仅仅只需300块,这简直就是“年轻人的第一台特斯拉”呀,哈哈。缺点就是其是为了数据中心设计的,没有主动散热,所以我们需要外接一个小小的风扇为其降温,就是图中这个,我多花了50从PDD购入。 拆机安装 内部紧凑的空间,一番折腾终于装上了,这台主机的配置可以在这篇文章中找到。 安装的过程中还有2的小插曲: 我的手在拆机的时候碰到散热器挂彩了(所以一定是要祭点什么吗)。 安装之后开机系统识别不了我的 2 块 PCIE 的 M.2 固态,还以为是这块主板的接口有屏蔽关系,最后发现是因为我打开了 GSM,需要关闭 GSM 才能正确识别 M.2 硬盘。 3....

2023-12-13 · 3 min · 566 words · Linkzz

甲骨文免费Arm主机新玩法-云安卓手机

1. 前言 我的一篇 文章 中有提到过云安卓手机的项目-redroid,该 项目 基于容器技术,构建一个安卓的运行时,同时通过Linux的内核模块,支持调用宿主机的硬件资源,同时其可运行于 x86 架构之上,通过转译来运行仅支持 arm 架构的安卓应用,用来跑app测试可以一试,正好甲骨文的arm主机资源没有好好利用,今天就来折腾一下这个玩法。 2. 加载内核模块 ashmem_linux、binder_linux 2.1 基于 Ubuntu 20.04 以上发行版 这两个模块是容器运行必须的内核模块,按照官方文档,在 Ubuntu 20.04 以上版本中,这两个模块已经编译到内核里了,可以直接 modprobe 命令加载,所以如果你的 arm服务器 正好是Ubuntu 20.04 以上版本,按照一下命令即可运行: # 安装额外内核模块 apt install linux-modules-extra-`uname -r` # 加载内核模块 modprobe binder_linux devices="binder,hwbinder,vndbinder" modprobe ashmem_linux # 运行容器 docker run -itd --rm --privileged \ --pull always \ -v ~/data:/data \ -p 5555:5555 \ redroid/redroid:11.0.0-latest \ androidboot.redroid_gpu_mode=guest 2.2 Oracle Linux 8 否则如果你像我一样开主机的时候选了 Oracle Linux 8 的话,很遗憾,官方没有该系统的运行文档,以上两个内核模块也并没有编译,奈何我对该发行版不熟,升级了官方内核到 5....

2023-12-06 · 2 min · 368 words · Linkzz

一加 3T 刷 LineageOS 18.1记

现在用的手机是一加8 Pro,旧手机一加3T放在公司作为备用机和必要时候的远程打卡机,最近在在使用scrcpy连接手机发现音频的传输需要系统在Android 10以上,然而这个手机早已失去了官方的支持,最终最新版系统停留在安卓9.0,幸好这手机在国外很受欢迎,有 LineageOS 的官方支持,最新的系统也有基于Android 11 的 LineageOS 18.1,今天就来记录一下安装过程。 本文不是教程文章,只是自己的折腾记录,如果你要按照本文的方式来操作,请确保你了解必要的手机刷机的知识如 adb、fastboot、解锁 bootloader 等。 1. 解锁 Bootloader, 刷入第三方 recovery 手机刷机第一步,由于我的一加3T很早以前就已经解锁BL并刷入了第三方TWRP recovery,这里就写一写步骤就好了 1.1 安装 oem usb 驱动 Mac和Linux系统无须安装usb驱动,但在Windows上则必须安装,否则 adb 和fastboot无法连接设备。 由于设备古老,在中文互联网上已经很难找到官方驱动了,还好在外网有专门的网站下载,虽然标的是官方,但具体是否还待验证,用起来是没有什么问题。 下载之后是 setup.exe 文件,点击安装之后用手机连接Windows,设备管理器里没有Android设备的感叹号就好了。 1.2 解锁 Bootloader 安装 adb 工具 scoop install adb 打开USB调试模式,连接手机并允许usb调试。 adb reboot bootloader 或者关机状态下按住 ”音量+“ + “电源” 键进入 fastboot 模式。 fastboot devices 键入一下命令解锁 Bootloader fastboot oem unlock 没有报错就解锁成功了。 1.3 刷入 Recovery 下载 LineageOS 的 recovery 镜像 进入 fastboot 模式...

2023-11-30 · 2 min · 229 words · Linkzz