终于还是被限速了
前言 笔者一直使用 wireguard + phantun 进行家 -> 公司 -> 香港某CN2GIA小鸡的异地组网方案,家里是上海电信,有公网 IP,之前一直使用这套方案打通三地的网络,一直稳定使用,但今年开年电信做活动,趁此机会更换了电信 1000M/100M 的家宽,于此同时还能保留公网IP (其实是打 10000 号索要的🤣),这 1000M 的下行其实我并不是很感冒,因为原来 200M 的下行我也觉得够用了,但是 100M 的上行可就不一样了,我原来就苦于家里上行只有区区 30M 而无法好好的访问家里的媒体服务,像是 jellyfin 或者是 moonlight 串流的体验都很差,看片都是马赛克画质还动不动转圈,我心想有了这 100M 上传不得起飞? 然而事与愿违,在获取到公网 IP 之后我就开始使用 iperf3 来测试公司和家里的网络吞吐情况。 网络情况 公司是联通 100M 对等商业宽带,但显然办公室那么多人不可能跑满,实际上IT给每个客户端做了 5M 下行的限速,不过好在内网的服务器限速被放宽到了 20M。而香港 CN2GIA 的小鸡是一个跨境网络情况尚可的 VPS, 实测上海电信高峰期可以联机「喷射战士」不丢包,网络是 1Gbps 上下对等,不过我使用的协议在家测速的时候达不到千兆,只有 500M 左右的下行,可能是使用 tun 模式性能损耗太大的锅,不过这是题外话了,所以这三个节点的网络情况如下: 项目 公司 家 香港VPS 可用带宽 20M/20M 1000M/100M 1G /1G vpn协议 wireguard wireguard wireguard udp流量转tcp phantun phantun phantun 家中openwrt 开启 iperf3 服务...
AI 弄崩了我使用已久的ArchLinux系统
起因 我这套 ArchLinux 的系统是安装在 esxi 里面的虚拟机,还是3年前装的系统,作为我的远程开发机器一直稳定使用,期间很少更新,前几天弄了一个 zed 的教育优惠,我琢磨这弄个 zed 来使用,况且宿主机还有一个闲置的 Nvidia 1060的亮机卡,将它直通来使用岂不美哉,于是启动了我的升级之旅。 开始升级 我这套系统估计 2 年没更新了,而 ArchLinux 这样滚动更新的版本更新频率那是相当的快,好处嘛自然是能用到最新的软件包,但是稳定性就无法保障了,虽然但是,为了用到免费的 Claude 4.6 Sonnet还是硬着头皮更新了,期间遇到的第一个问题就是 nvidia 的驱动,nvidia 最终还是大发善心维护了开源的驱动,但是 nvidia-open的驱动却是不支持 10 系的显卡了,于是升级的时候需要屏蔽 nvidia 驱动的更新,这更新时问题就来了,当然在 AI 高速发达的今天,小孩子都知道遇到问题就找 AI,于是我打开了大家公认最为靠谱的 claude ai,免费用户可以使用 Claude 4.6 Sonnet模型,看似很良心,问了一通问题之后 AI 给出了建议,也都解决了一些问题,让我颇为满意,但在最后一步 AI 让我使用以下命令: sudo pacman -Rdd linux-firmware sudo pacman -Syu --overwrite '*' 我隐约觉得有点不对,但是前面都很流程的解决了问题,让我暂时打消了疑虑,所以就执行了,执行之后看似问题解决了,但是当我重启之后: 啪,这还是我第一次见到 Kernel Panic,证明还是折腾的不够多哈哈。 然后我就开始问起 AI: 不是,你还好意思笑! 无奈,只能挂 ISO 盘开始修复。 挂了之后发现由于我删除了 linux-firmware 模块,导致很多指令执行不了,pacman 报错, yay 报错, 只能一步步修复,好在 curl 可以使用,下载了 pacman-static 之后才将 linux-firmware 包安装回来,可是此包的版本已经是最新了,又和 nvidia 的驱动不兼容,所以只能来一次系统的大更新,好在系统是救回来了。...
私有知识库和笔记工具 Affine 搭建, 修复导入 Markdown 图片丢失的问题
私有知识库和笔记工具 Affine 搭建, 修复导入 Markdown 图片丢失的问题 前言 一直以来我使用 Obsidian 作为我的知识库管理和编辑工具,配合自建的图床和 Nextcloud 的同步,我几乎可以在任何地方随意维护我的知识库,后面因为 Obsidian 的 Vim 模式用起来不顺手,在中文之间移动有卡顿的感觉,所以索性编辑器直接就用了 Vim ,但我一直苦恼一个问题,就是我的知识库一直以 Markdown 源文件的方式在 Nextcloud 的同步下,我虽然可以随时打开 Obsidian 查看,但是在移动端查看不方便,以及每次想查询的时候还得打开客户端,我本人是很不喜欢客户端的,我希望能在 web 上就可以查看,当然 Nextcloud 也能在网页端查看渲染的 Markdown 文件,但是效果也差强人意,正好刷 Koala 聊编程的时候看到了 Affine,其主打的 Notion 替代品的概念吸引了我,虽然我也用 Notion, 但用的并不多,而且 Notion 无法迁移我的本地知识库,导入的 Markdown 格式各种问题,抱着试试看的心态部署了一下,虽说官方提供了完整的 docker-compose配置文件,但实际配置下来还是遇到了一些问题,在此权当记录一下。 安装 affine 服务端 Docker compose 安装服务端 还是使用 dokcer compose部署,下载最新版本 docker-compose.yaml文件。 wget -O docker-compose.yml https://github.com/toeverything/affine/releases/latest/download/docker-compose.yml 下载配置模板修改配置 wget -O .env https://github.com/toeverything/affine/releases/latest/download/default.env.example 下面是我的配置 # 数据库挂载目录 DB_DATA_LOCATION=./postgres # 上传的附件目录 UPLOAD_LOCATION=/mnt/media/affine # 配置文件目录 CONFIG_LOCATION=....
基于纯开源方案的指纹浏览器和同步器方案
1. 背景 先叠一个甲,此方案并不适用于小白,且有很高的学习成本,在使用这个方案之前,你需要熟练使用 vim 的常用热键。 去年 3 月份接触了空投赛道,说来也奇怪,当时接触到的空投信息还是一个诈骗信息,当时无意间刷到一篇博客,说是在 Shiba(柴犬币)的 Telegram 频道发布的一个 bot 中签到,每 8 小时签到一次,累计到 50w 积分(具体积分数额记不清了,大致是这个数)之后,就可提现到链上。为此还有人写了个 telegram 的 bot 定时签到,我还运行了一段时间,当时提现需要创建链上钱包,而创建钱包不可避免要了解各大公链,尤其是以太坊,还要注册交易所入金,由此走上了空投之路,也因此经历了一轮币圈的沉浮,见证了 BTC 的 ATH,和 meme 季大爆发,然而我去年的空投并没有赚到钱,投入了 1000u 左右,在川普上任之后资产到达顶峰 1200u 左右,之后就一蹶不振,最终只能勉强算不赚不亏。究其原因,就是起的号太少了,全年只有一个主号,选择的项目也是冷门项目,有一些项目也没能坚持,总之就是种种原因导致效果不好。 扯远了,说回正题,今年我决定重来,这次就先起 5 个号。工欲善其事必先利其器,既然要操作多号,而碍于种种原因我又不想用商业指纹浏览器,那就只能自己想办法了,经过重重阻拦,最终摸索出了现今这套模式,且听我慢慢道来。 2. VirtualBrowser 指纹浏览器选择 VirtualBrowser ,这是一款基于 Chromium 的指纹浏览器,目前只支持 Windows 平台,看 README 计划支持 Linux 和 Mac,不过目前尚未开发完毕,它支持的指纹环境如下: Operating System: Modify the operating system part in userAgent. Browser version: Modify the browser version in userAgent. Proxy settings: Modify the browser proxy which supports “Default”, “Do not use proxy”, “Custom”....
自签名证书部署内网 https 版 lobe-chat
1. 背景 一开始部署了 Nextchat 作为我日常的 AI 问答网页应用,原因很简单: 该项目启动早,社区很活跃 网页应用结合 PWA 使用起来也很方便 支持模型供应商全面 但是使用了一段时间之后接触到了更为全面和强大的 lobe-chat,lobe-chat 发展迅速,社区更为活跃,社区版支持子部署,且没有功能限制,公司级的开源项目,产品 UI 设计很现代,社区 Roadmap 还计划支持更多的功能,如文生视频,助手自主学习等功能(无恰饭,纯使用感受)。 起初仅通过 docker-compose 部署了纯前端版本的 lobe-chat,这个版本由于是纯前端,没有多端同步的功能,同一份配置需要在家里电脑、公司电脑和手机上重复配置,相当麻烦,所以还是部署数据库版本的完全体 lobe-chat 更为合适。 2. 官方脚本部署 2.1 脚本部署 说干就干,目前版本是 v1.49.12,使用官方 docker-compose 部署脚本部署: bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN 支持 3 种模式部署: 本地模式(默认):仅能在本地访问,不支持局域网 / 公网访问,适用于初次体验; 端口模式:支持局域网 / 公网的 http 访问,适用于无域名或内部办公场景使用; 域名模式:支持局域网 / 公网在使用反向代理下的 http/https 访问,适用于个人或团队日常使用; 第一种模式纯自身访问,无法从其他设备访问,局限性很大;第二种模式在局域网中访问可行,但是 IP 端口访问的方式在局域网环境中我并不推崇,一是需要记忆特定的 IP 端口,而是 http 的方式无法安装 PWA 应用,仅适用于初次体验,而我自身用于家庭服务器,并且部署了一个自签名证书的 Nginx,完全可以试用该证书部署 https 的服务,而不用担心暴露公网,通过 VPN 即可在任何地方访问家庭服务也很方便,关于自签名证书和我的服务器拓扑 VPN 配置等信息我在 这篇文章 以及 这篇文章 中有详细介绍,这里不再赘述。...
在 Oracle Arm Linux 服务器下打造一个足够好用的 TT-RSS
1. 起因 我的 ttrss 容器一直部署在我的 HomeLab 服务器中,我的 HomeLab 配置在 这篇文章 的背景章节有提到,这里再列一下: 类别 项目 价格 CPU i5-10400 – 主板 华擎 B-460M 钢铁传奇 – 内存 酷兽 8G * 4 = 32G – SSD 三星 980 1TB – SSD 爱国者 128GB – HDD 希捷酷狼 4TB * 2 – 机箱 先马趣造 – 散热 九州风神 – 电源 先马 500W – 这套配置是 4 年前入手的全新硬件,入手之后一直当作 HomeLab 服务器 24 小时开机使用,但毕竟不是服务器级别的硬件,终于,我的主板还是在 8 月份倒下了,于是我立马着手更换硬件,但是 B460 的芯片组主板早就停产了,加上我的虚拟机系统是 Pve,所以我还是倾向于购买相同的硬件,这样配置都不用改了,于是我打开了拼多多。 1.1 PDD 买电子产品还是得小心 拼多多我也用的并不多,以往我的电子产品大多都是京东入手,但是这次京东并没有全新硬件,都是二手,想着也差不多就在拼多多购买了一块华擎的 B460Pro4,没办法,钢铁传奇这个主板估计是当时出货太少,导致二手货也没多少,只能入手相同品牌的 Pro4,好在收到主板后修改的配置也不是很多,拿到货修改 bois 配置后通过 pve 安装 u 盘进入恢复模式,将网卡配置改一改就好了,所有虚拟机和 CT 完美运行。可高兴了没几天这块主板就坏了,毫无疑问翻车了,主板寄回去修了之后还是老样子,商家卖了一块有暗病的主板给我,无奈只能继续维修。...
简单记录一下 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 文件。...
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....
用 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 。...
记一次 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....