GTX690战术核显卡导弹 - Linux
type: channel
link: https://www.nekopara.uk/category/Linux/
description: Linux
items: 主题开发日志03：在Manjaro上搭建Nginx+PHP环境
items: 调用API实现Typecho博客VisitorLoggerPro插件IP信息更新
items: V100 GPU 初体验：AlmaLinux 8.10 快速部署 ComfyUI
items: 用 Python 破解网易云 iframe 反爬，全自动构建本地音乐库
items: 个人博客低成本CC防护：抵御85%+常见CC攻击
items: Manjaro Linux 安装 Abaqus 2022 踩坑记
items: 绕过黑洞！利用VPC内网互通低成本实现DDoS攻击下网站高可用
items: 矿渣再就业：双卡 P104-100 运行大语言模型可行性报告
items: P104-100 矿渣再就业指南：赚取SheepIt渲染农场积分
items: 使用 EasyTier 自建服务器组网

主题开发日志03：在Manjaro上搭建Nginx+PHP环境
type: item
date: 2026-01-26T13:38:10+08:00
description: 在Manjaro Linux上部署Typecho开发环境因为后面主题的开发就需要实时修改php文件查看效果了，为了方便开发，我决定在自己的电脑上面设置一个基本的Nginx+PHP环境。对于数据库就使用sqlite好了，只是为了搭建一个本地的typecho作为测试平台。在配置期间踩了几个坑，记录一下。软件的安装非常简单，一条命令梭哈：pacman -S nginx php php-fpm php-sqlite php-gd配置软件因为manjaro和其他发行版不太一样，并且我需要这个web服务器以我的用户权限进行运行，方便我更新文件，所以我们需要做出一些更改。php.ini首先是php的配置文件，文件位于/etc/php/php.ini找到下面的部分进修改：上传大小限制：upload_max_filesize = 2M改为upload_max_filesize = 16M然后启用必要的模块，找到以下部分取消注释：extension=curl extension=gd extension=gettext extension=pdo_sqlitewww.conf然后是php的另一个配置文件，让php-fpm以用户身份运行，文件位于/etc/php/php-fpm.d/www.conf找到下面的部分进修改：user = chocola ; <--- 修改这里 group = chocola ; <--- 修改这里 listen.owner = chocola ; <--- 修改这里，确保 Nginx 能和 PHP 通讯 listen.group = chocola ; <--- 修改这里nginx.conf将Nginx的配置文件修改为如下所示： user chocola; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; # Load all installed modules include modules.d/*.conf; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root /run/media/chocola/DATA/wwwroot; index index.php index.html index.htm; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .*\.php(\/.*)*$ { # 你的网站根目录 (如果 server 块里已经写了 root，这行可以省略，但加上保险) root /run/media/chocola/DATA/wwwroot; fastcgi_pass unix:/run/ph…

调用API实现Typecho博客VisitorLoggerPro插件IP信息更新
type: item
date: 2025-12-17T23:30:06+08:00
description: 利用B站IP查询API更新访客记录IP地理信息偶然的一次机会，在群里面聊天的时候，群友指出纯真数据库的数据并不准确，并且说有一个可以免费调用的IP地理信息库——B站的IP查询API。据说还是用的ipip.net的企业版，这下得狠狠白嫖了。前置任务：修复VisitorLoggerPro插件BUG如果使用过这个插件一段时间，你就应该发现了，在国家统计图表这项，非常的混乱，似乎是只要记录的字符不一致，就会被当作不同的国家处理，例如美国加利福尼亚洛杉矶和美国纽约就被当作不同的国家列在上面。经过深挖代码斗智斗勇，我发现这个问题我无法从根本解决，因为整个代码太奇怪了，而且用的本地IP数据库也都是乱七八糟的，根本没有做好国家的细分地区分类，一股脑返回，导致所有的信息被集中在一起写进了国家字段。于是，我放弃治疗，直接在后面的调用代码中，增加分类逻辑进行分类：这是原来的代码，单独处理和提取了国内省份： foreach ($countryCountsResult as $row) { $countryName = $row['country'] ?: '未知'; $count = $row['count']; if (!isset($countryData[$countryName])) { $countryData[$countryName] = 0; $totalCountries++; } $countryData[$countryName] += $count; if (strpos($countryName, '中国') !== false) { foreach ($provinces as $province) { if (strpos($countryName, $province) !== false) { if (!isset($provinceData[$province])) { $provinceData[$province] = 0; } $provinceData[$province] += $count; break; } } } }我决定在返回国家信息的时候，进行提取合并并返回： foreach ($countryCountsResult as $row) { $rawCountry = $row['country'] ?? ''; $count = (int)($row['count'] ?? 0); if ($rawCountry === '') { $stdCountry = '未知'; } elseif (strpos($rawCountry, '中国') !== false) { // 所有含“中国”的都归为“中国” $stdCountry = '中国'; // 同时尝试提取省份 foreach ($provinces as $province) { if (strpos($rawCountry, $province) !== false) { if (!isset($provinceData[$province])) { $provinceData[$province] = 0; } $provinceData[$province] += $count; break; // 匹配到第一个即停止 } } } else { // 非中国：尝试匹配标准国家名（用于归一化，如“美国加州”→“美国”） $stdCountry = $rawCountry; // 默认保留原值 foreach ($countries as $country) { if (strpos($rawCountry, $country) !== false) { $stdCountry = $country; break; // 匹配到即停止（因列表已按长优先排序） } } } // 累计国家统计 if (!isset($countryData[$stdCountry])) { $countryData[$stdCountry] = 0; $totalCountries++; } $countryData[$stdCountry] += $count; }当然了，需要补上完整的国家地区列表： $countries = [ // 长名称国家（必须放前面） '波斯尼亚和黑塞哥维那', '赤道几内亚', '圣文森特和格林纳丁斯', '特立尼达和多巴哥', '圣多美和普林西比', '阿拉伯联合酋长国', '沙特阿拉伯', '巴布亚新几内亚', '所罗门群岛', '马绍尔群岛', '密克罗尼西亚联邦', '帕劳共和国', '瓦努阿图共和国', '基里巴斯共和国', '瑙鲁共和国', '图瓦卢', '美属萨摩亚', '英属维尔京群岛', '美属维尔京群…

V100 GPU 初体验：AlmaLinux 8.10 快速部署 ComfyUI
type: item
date: 2025-12-05T23:21:00+08:00
description: 在 AlmaLinux 8.10 上部署 ComfyUI最近买了一张 V100，为了爽玩 AI 绘图，我单独组装了一台 X99 平台主机来运行 ComfyUI。操作系统方面，我选择了 AlmaLinux 8.10，看中的是其稳定性以及对多版本 Python 的良好支持。硬件介绍显卡本体Tesla V100 显卡展示（和RTX2080Ti同框）：安装到转接板上：转接板是200买的，虽然比最便宜的99元转接板贵了一倍，但用的是原装座子，原装座子的转接板就算是10X10CM的小板子都170+了。我加多30，买个带温控的，尺寸大一点的板，还自带螺栓孔位固定，完美安装，他不香吗？装上散热器后的样子：我为了尽可能降低温度，延长使用寿命，买了最大的散热器，到手发现确实巨大无比，比想象中的要大得多。但是其实现在看，买小一号的9CM高度的可能更合适，因为更好安装8CM风扇，不会浪费散热面积。我最后还是选择了8CM的风扇来散热，放弃了之前使用12CM风扇的想法——因为没办法彻底吹透散热器，温度还高。装上风扇Be Like:因为两边会漏风，导致无法彻底吹透散热器，所以搞了一张纸包了一下，迫使气流贯穿散热器。配套硬件平台开头我先说一下我踩到的坑，首先平台选择就先栽了一头：一开始我想用我闲置的H61平台来带这个玩意，而且也确认看过那个主板有Above 4G Decoding选项，也打开了，但是就是死活没办法驱动这个显卡，系统识别到了这个设备，但是NVIDIA驱动无法初始化设备，导致无法使用。这个问题折磨了我很久，检查日志具体表现是：[root@Neko-P104 ~]# dmesg | tail -100 | grep -i -E 'nvidia|nvrm|gpu|bar' [ 3.121900] NVRM: This PCI I/O region assigned to your NVIDIA device is invalid: NVRM: BAR4 is 0M @ 0x0 (PCI:0000:01:00.0) [ 3.121902] NVRM: This PCI I/O region assigned to your NVIDIA device is invalid: NVRM: BAR5 is 0M @ 0x0 (PCI:0000:01:00.0) [ 3.322080] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 580.105.08 Tue Apr 8 12:41:17 UTC 2025 [ 3.369648] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 580.105.08 Tue Apr 8 12:09:34 UTC 2025 [ 3.376189] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver [ 3.376192] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 0 [ 112.149308] caller _nv041720rm+0x3a/0xb0 [nvidia] mapping multiple BARs [ 112.163383] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x24:0x72:1568) [ 112.163415] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0 [ 112.285687] nvidia-uvm: Loaded the UVM driver, major device number 237. [ 379.801748] caller _nv041720rm+0x3a/0xb0 [nvidia] mapping multiple BARs [ 379.815873] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x24:0x72:1568) [ 379.815912] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0这表明：BAR 分配失败：GPU 的某些地址空间没有正确映射到系统内存中。RmInitAdapter 失败：驱动尝试初始化 GPU 时遇到了错误，无法完成初始化。所以这是平台限制，必须换平台了。后…

用 Python 破解网易云 iframe 反爬，全自动构建本地音乐库
type: item
date: 2025-11-23T17:21:00+08:00
description: Python实现网易云音乐自动抓取整理事情的缘起很简单，我的jellyfin音乐库听腻的差不多了，想抓点新歌。虽然说之前已经抓取过1000多首歌曲，但是很多是我因为强迫症，为了媒体库的完整性，把整个专辑都抓下来了，实际上常听的就是两三百首。正因如此，我就想给我的媒体库补充点库存，于是开始折腾，有了这篇文章。媒体库的具体搭建教程可以去看这篇文章：自建Jellyfin私人媒体服务器，告别屌毛网易云！实现思路上次因为没能自动化搞下载，且因为心急，所以几乎是半自动半手动收集的，费时费力，花费了差不多一个星期。而这次，我决定使用Python自动化完成，下面是工作流实现思路：当遇到喜欢的音乐后，我就保存其网易云的URL到文本文件，例如https://music.163.com/#/song?id=1499823984你可以点开看看是什么曲子（，每个曲子放一行，随听随收集。读取这个歌曲列表文件，逐行解析，获取专辑的ID，例如https://music.163.com/#/album?id=99010037，取出99010037，以及歌手KOTOKO。然后去解析专辑的页面，获取其中所有歌曲的song?id，例如1499823984，1499826814，1499823975和1499826811。调用第三方API进行歌曲解析，获取音频文件，歌词和封面。例如这次我用的就是https://jx.chksz.top/按照jellyfin要求的格式保存歌曲文件，也就是歌手/专辑/01.歌曲.flac，如：[chocola@Neko-Server KOTOKO]$ tree . └── ネコぱら vol.4 OP ⁄ ED ├── 01.SWEET×SWEET.flac ├── 01.SWEET×SWEET.lrc ├── 02.NEGAIGOTO.flac ├── 02.NEGAIGOTO.lrc ├── 03.SWEET×SWEET (Instrumental).flac ├── 03.SWEET×SWEET (Instrumental).lrc ├── 04.NEGAIGOTO (Instrumental).flac ├── 04.NEGAIGOTO (Instrumental).lrc └── cover.jpg最后还要打上艺术家，专辑，歌曲名的标签既然确定了思路和方法，接下来开始逐个攻破吧！观察网页布局打开音乐网页，开启F12大法，检查元素，迅速就定位到了目标：其实，后面发现在页面的meta标签其实也有信息：对于专辑部分，抓取列表就好了：看起来并不难，使用Python的requests模块获取html，然后解析内容就好了。尝试实现爬虫逻辑和LLM友好交流后，得出了每一部分的代码逻辑函数，例如解析歌曲页面信息的：def extract_music_info(url): # 模拟浏览器请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } try: # 获取HTML内容 response = requests.get(url, headers=headers) response.raise_for_status() html = response.text print(html) # 提取艺术家（og:music:artist） artist_match = re.search(r'<meta property="og:music:artist" content="([^"]+)"', html) artist = artist_match.group(1) if artist_match else None # 提取专辑名称（og:music:album） album_name_match = re.search(r'<meta property="og:music:album" content="([^"]+)"', html) album_name = album_name_match.group(1) if album_name_match else None # 提取专辑ID（从music:album的URL中解析） album_url_match = re.search(r'<meta property="music:album" content="([^"]+)"', html) album_id = None if album_url_match: url_content = album_u…

个人博客低成本CC防护：抵御85%+常见CC攻击
type: item
date: 2025-11-02T16:47:03+08:00
description: 低成本CC防护：我的实战配置与效果喜报：被大规模CC了！平常的一天，突然受到了来自衣食父母华为云的服务器告警：虚拟机网络连接数突破15400个，CPU占用超过 85% 。就知道肯定是被CC了。果然网站被打是催更技术类博主最好的方式（雾不过我之前是设置过缓存的，有点好奇怎么绕过缓存，事后我抓取了对应时间的Nginx日志access.log：43.152.29.37 - - [30/Oct/2025:23:27:16 +0800] "GET /3bb6bfea9/90a2c9c9fc?limit=ef616a8b1b145df&token=176fe0f01f&utm_source=a5d4f247077b HTTP/1.0" 404 29335 "http://www.nekopara.uk/3bb6bfea9/90a2c9c9fc?limit=ef616a8b1b145df&token=176fe0f01f&utm_source=a5d4f247077b" "Mozilla/5.0 (Windows NT 11.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" "91.209.77.93, 43.152.29.37" 43.152.24.20 - - [30/Oct/2025:23:27:16 +0800] "GET /profile/config/delete?search=9844b7e151&version=504397e6490c&utm_campaign=bd5783ef290&page=4b9e8cc670d HTTP/1.0" 404 29335 "http://www.nekopara.uk/profile/config/delete?search=9844b7e151&version=504397e6490c&utm_campaign=bd5783ef290&page=4b9e8cc670d" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" "138.2.109.39, 43.152.24.20" 43.152.143.43 - - [30/Oct/2025:23:27:16 +0800] "GET /health/admin?utm_medium=eb37025 HTTP/1.0" 404 29335 "http://www.nekopara.uk/health/admin?utm_medium=eb37025" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" "163.61.245.58, 43.152.143.43" 43.174.55.12 - - [30/Oct/2025:23:27:16 +0800] "GET /5de3c/0727afb/info?type=f06d22885b8 HTTP/1.0" 404 29335 "http://www.nekopara.uk/5de3c/0727afb/info?type=f06d22885b8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15" "103.184.54.67, 43.174.55.12" 43.152.14.36 - - [30/Oct/2025:23:27:16 +0800] "GET /edit/a97b/cba81414/content.htm?offset=09cd68b44dd60&key=030f41284 HTTP/1.0" 404 29335 "http://www.nekopara.uk/edit/a97b/cba81414/content.htm?offset=09cd68b44dd60&key=030f41284" "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36" "49.145.113.40, 43.152.14.36" 43.152.…

Manjaro Linux 安装 Abaqus 2022 踩坑记
type: item
date: 2025-10-22T10:53:00+08:00
description: 在Manjaro Linux上安装Abaqus 2022本来没什么素材更新文章的，这下因为阴差阳错各种巧合，来素材了（ 刚立flag没几天说是其实在目前阶段我并不需要用这个软件，究其原因，是我朋友的电脑内存不够，他的研究生导师的课题组要用Abaqus这个软件进行有限元分析模拟，不出所料炸内存了。他想起来我有这么一个128G内存的“电脑”（服务器），于是想让我帮忙算一下。好巧不巧，这逼软件有Linux版，那就试试吧！然后试试就逝世，这逼养的古董屎山软件的安装方式，以及各种奇葩的要求和报错属实难绷，挂出来让大家品屎罢！踩坑报错把我搞傻了，国内各种资料网站参考了一遍没能解决，压力ChatGPT解决了，GPT yyds! 记录一下吧，给后面有需要的人指路。理论上这篇教程同样适用于在Arch Linux上安装，应该也可以作为在其他发行版进行安装时的参考。软件获取自己可以找一下，相对而言还算是比较好找的。如果找不到，我这里有：Abaqus_2022_Linux.7z.001 Abaqus_2022_Linux.7z.002 Abaqus_2022_Linux.7z.003 Abaqus_2022_Linux.7z.004 请下载全部压缩分卷后解压，解压密码是：www.nekopara.uk如果你下载我打包的版本，那安装前准备的修改Linux.sh脚本部分可以跳过，已经帮改好了。安装前准备首先，进入安装目录，赋予全部文件可执行权限已经修改权限，不然你会得到报错：Error: This media has been unzipped or copied in such a way that the permissions of some files have been lost. Please unzip or copy the media again.chmod -R 777 DS.SIMULIA.Suite.2022.Linux64/*接着，要修改安装目录里面的每一个Linux.sh文件，强行指定检测的发行版为CentOS或者其他位于支持列表的发行版。这些文件存在于：DS.SIMULIA.Suite.2022.Linux64/1/inst/common/init/Linux.sh （这个好像是主安装程序的，但是实际上主安装程序没屌用，就是套娃然后依此启动3 4 5文件夹里面的安装程序，套娃安装，也是唐完了。）DS.SIMULIA.Suite.2022.Linux64/3/NETVIBES_Exalead_CloudView/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/3/Search_Doc/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/3/SIMULIA_FLEXnet_LicenseServer/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/4/SIMULIA_EstablishedProducts/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/5/SIMULIA_Documentation/AllOS/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/5/SIMULIA_EstablishedProducts_CAA_API/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/5/SIMULIA_Isight/Linux64/1/inst/common/init/Linux.sh找到这一行：DSY_OS_Release=`lsb_release --short --id |sed 's/ //g'`修改为：DSY_OS_Release="CentOS"有一说一，这安装包的目录结构太抽象了，真的是唐完了。修改完成后，就可以开始安装了。安装软件我实测下来，是可以不使用root权限执行安装的，只需要安装在一个普通权限可以写入的文件夹里面即可。权限最小化，不轻易给出root权限！而且，直接不经包管理器修改/usr目录是不太好的。如你享受Windows上面那种套娃安装的操蛋感，那请执行:DS.SIMULIA.Suite.2022.Linux64/1/StartGUI.sh。他会一步一步引导你安装，记得勾选许可证服务器安装，用于验证：然后他就先给你吃一口屎：招笑完了，安装还…

绕过黑洞！利用VPC内网互通低成本实现DDoS攻击下网站高可用
type: item
date: 2025-09-29T11:34:00+08:00
description: VPC内网互通：让被黑洞的服务器仍能访问事情起因很简单，前段时间我的华为云服务器又被闲的蛋疼的人刷了DDoS礼物，也是成功地触发了EIP（弹性公网IP）黑洞封堵。喜报如下：尊敬的(Rin):感谢您使用华为云产品，非常抱歉打扰您。在北京时间2025/09/23 10:26，华为云监测到您的弹性公网IP(EIP)实例 发生EIP封堵事件。 详情：节点：亚太-新加坡实例名称：119.8.185.128实例ID：b002926d-60de-4951-a9e9-b337e3a550d8告警描述：{"reason_zh": 尊敬的Rin：华为云DDoS防护服务在2025-09-23 10:26:56检测到您的EIP 119.8.185.128 异常流量已超过DDoS防护峰值触发封堵，封堵时带宽为 79 Gbps, 您服务器的访问将受到限制，24小时后系统将自动为您解封。您可登陆官网购买DDoS高防服务提升防护能力，保障服务器稳定运行。, "reason_en": Dear Rin: HUAWEI CLOUD Anti-DDoS Service detects that your EIP 119.8.185.128 abnormal traffic has exceeded the DDoS protection peak at 2025-09-23 10:26:56 and triggers blocking. Bandwidth when blocking is 79 Gbps, Access to your server will be restricted, and the system will automatically unblock it for you after 24 hours. You can log in to the official website of HUAWEI CLOUD to purchase Advanced Anti-DDoS service to enhance protection capabilities and ensure stable server operation.}原因分析：尊敬的Rin：华为云DDoS防护服务在2025-09-23 10:26:56检测到您的EIP 119.8.185.128 异常流量已超过DDoS防护峰值触发封堵，封堵时带宽为 79 Gbps您服务器的访问将受到限制，24小时后系统将自动为您解封。您可登陆官网购买DDoS高防服务提升防护能力，保障服务器稳定运行。如有疑问，您可以登录华为云官网提交工单咨询，会有相应工程师为您核实查看。IP我就懒得打码了，反正就是这个网站域名平时解析的IP，有什么好打码的，ping一下就能看到了。我在之前的文章，就有说过一套抗DDoS的方案，并且已经付诸实践了（详见文章：《当网站遭遇DDoS：如何优雅地应对云服务器被封堵》）。很显然，并没有太大影响，在网站主服务器被打黑洞的三分钟后，脚本就自动切换服务器到备用服务器并且套上了Cloudflare的代理，无需我干预，唯一的不足就是在被DDoS期间网站访问变慢了。但是，当时我就有说过，那套方案是有缺陷的，也就是因为网站数据同步是单向的，在被攻击期间交互产生的数据，后面会被覆盖掉。好巧不巧，华为云又送钱了，我寻思着我之前开的华为云服务器已经续费十年多了，不如开个新的云服务器，搞VPC内网互通，彻底解决上述的痛点问题。这里说个题外话，我发现新开的华为云 Flexus L 实例相比于之前已经大幅缩水，网络回国优化没了，而且CPU性能只有原来的三分之一了，已经变得跟阿里云的轻量服务器一个水平了，而且价格还更高。除非你和我一样是白嫖的，否则真金白银买我是不推荐，因为差不多一样的东西，阿里云那边要大概便宜个10%-20%，买华为云真不划算了。现在华为云的 Flexus L 实例算是把华为手机的高价低配学过来了，难绷。但是老实例性能和网络那还是相当不错的。资源准备为了实现这个方案，你需要准备两台云服务器，并且两台服务器必须在同一个地域，以便进行VPC内网互通。虽然同一个地域就足够，但将两台服务器放在同一个可用区会获得更好的内网延迟（通常<1ms），而跨可用区的内网延迟可能会稍高（但通常也在1-5ms范围内）。这就是最重要的前提要求，日常访问的可以是两台服务器的任意一台，只需要它的性能可以满足业务要求。对于另一台服务器，那是作为网站流量跳板服务器，最低配即可，方便节约成本，因为只需要在上面运行一个代理流量程序，在主实例EIP被封堵时代理接管流量入口。因为本方案抗DDoS采用的是Cloudflare的CDN，所以跳板实例的网络可以差一点，只需要保证到Cloudflare的回源服务器线路通畅即可，国内访问…

矿渣再就业：双卡 P104-100 运行大语言模型可行性报告
type: item
date: 2025-09-28T10:33:00+08:00
description: 尝试使用双卡 P104-100 运行大语言模型Introduction（bushi 鉴定为搞学术搞的在我之前的文章，我说了我买了四张P104-100用于跑Blender Sheepit渲染积分，现在我想试试看开发出新的玩法——用P104-100通过Ollama运行大语言模型。因为大语言模型的话，显存大小很重要，很大程度上是显存即正义，一些比较大的模型，我的RTX2080Ti 11G显存还是力不从心。虽然说P104-100才8GB的显存，但是招架不住它便宜啊，79包邮的价格要什么自行车，买两张不就是16G了吗？虽然说不能这么算，但是Ollama支持把大语言模型拆分到不同的显卡进行运行，买都买了，不如试试看？目前的硬件情况目前的四张P104并不是安装在一起的，而是分别放在两个不同的机器上面。又因为我没有支持安装四卡的主板，所以想测试四卡并行跑比较大的模型还是算了。还有一个比较蛋疼的问题是，因为我算是为了利用闲置硬件买的卡，所以是一块H61+E3-1220v2+两条8G内存。这样子做主要是为了满足Sheepit的需求，因为它不支持多GPU同时渲染，所以只能每个GPU开一个实例，分开渲染，占用双倍资源，所以显卡并没有全部安装在一起。也正因为是这样，第二张卡是通过PCIe X1的延长线转接出来的，啊对，就是挖矿用的那种延长线，因为Cycles渲染只需要一次性加载数据，所以即使是PCIe 1.0 X1也影响不大，无非就是加载慢一点。但是，如果是多卡并行跑LLM就是另一个故事了，会涉及频繁的数据交换，这样子即使是显卡原来就砍废的PCIe 1.0 X4都会造成严重瓶颈，更何况转接板的PCIe 1.0 X1。虽然理论上跑起来的效果会非常难看，但是，实践是检验真理的唯一标准，不试试看怎么知道是什么情况呢？于是我打算尝试一下。部署Ollama这算是论文的 Approach 吗？（bushi 鉴定为搞学术搞的因为目前Pascal架构的N卡驱动还是支持的，但是今年10月就正式抛弃，所以，现在还是可以使用最新的Ollama，也算是赶上末班车了。如果后面Ollama也抛弃这些老架构，那就真的寄了，但是跑当下的模型，未来也是可以跑的，只不过有可能新的模型就跑不了了。Pascal架构的显卡最后支持应该是CUDA 12.9了。所以，直接打开Github下载最近版本的Ollama就行了，因为Ollama更新频繁，文章写作测试时用的是前不久的0.11.10版本，进行测试。如果你部署出现什么问题，建议切换到这篇文章使用的相同版本，也就是0.11.10。毕竟在0.11.11的What's Changed里面，增加了CUDA 13的支持，不知道会不会影响Pascal架构的最后CUDA 12.9版本，因为文章的重点不在这里，如果有需要请自行验证，也欢迎你在评论区说一下验证的结果。部署的方式也很简单，在Github的Releases找到对应版本的Ollama下载就行了，有点大，慢慢下就行。下完后解压即可使用：mkdir ollama mv ollama-linux-amd64.tgz ollama/ cd ollama/ tar -xzvf ollama-linux-amd64.tgz rm ollama-linux-amd64.tgz因为Ollama默认会把模型下载在用户文件夹的.ollama隐藏文件夹下，会占用大量空间。为了避免这种情况，我选择创建一个数据文件夹，并设置Ollama将模型文件放在那里。mkdir data然后指定创建的data文件夹为临时HOME目录后，启动Ollama。下面是启动脚本run.sh，请放在刚刚创建的ollama文件夹里面。export HOME=/home/rin/ollama/data/ ./bin/ollama serve/home/rin/ollama/data/请替换为你需要存放模型的实际路径。然后直接启动Ollama:./run.sh进入ollama/bin/目录，执行以下命令运行LLM：./ollama run qwen3:8b --verbose这里的实例用的qwen3:8b，可以根据实际需需要替换为目标模型。--verbose是设置显示 Ollama 每秒生成的 Token 数量。测试平台如图所示：以下测试均在Ollama 0.11.10进行。注意！数据为我本人实测结果，不同环境和提示词结果可能会有差异！单卡P104-100跑常见模型速度测试模型均使用最新模型进行测试，测试的提示词是：请帮我写一段2000字的小故事，讲述两只猫娘 Chocola 和 Vanilla 的日常生活。通义千问模型速度回答时 PCIe 最高交换速率qwen3:0.6b64.24 tokens/sRx:105MB/s Tx:85MB/sqwen3:1.…

P104-100 矿渣再就业指南：赚取SheepIt渲染农场积分
type: item
date: 2025-08-25T19:01:00+08:00
description: P104 矿渣转生超高性价比 CUDA 渲染卡P104-100 ，传奇矿渣卡，历经三次矿潮，本身也是专业矿卡，没有显示输出，PCIe被砍成1.1 x4，对于打游戏的人来说，这玩意表现不如P106-100。而比他同时代更高一档的卡P102-100，因为有10G的大显存，成为了玩AI炼丹人的入门玩具，价格在300元上下。而P104-100，拥有8G显存，相当于GTX1070，价格却只要79包邮，相当便宜！于是，我就一口气买了四张回来玩玩，看看纯种大矿卡到底是什么样的，看看能不能秽土转生为 Blender 渲染卡，为我赚取 SheepIt 渲染积分。关于 SheepIt 是什么，这是一个免费的社区渲染农场，通过用户贡献算力帮你渲染 Blender 项目，作为代价，你需要帮别人渲染项目来赚取积分，渲染项目会消耗积分。而我，并不打算直接用 P104 进行渲染，因为8G显存渲染相对复杂的场景是不够用的，我的正奶机 RTX2080Ti 都甩这玩意几条街。我的思路是用这张卡赚取足够多的 SheepIt 渲染积分，来给我的未来3D创作做准备，因为渲染农场的速度和效率是单台电脑没法比的。这样子就相当于用现在的空闲时间，换取未来的渲染时间。P104-100 你下辈子还是矿卡，但是不挖比特币，以太坊，而是给我挖 SheepIt Blender 渲染农场积分！从矿场中来，到矿场中去！召唤矿渣矿渣到手后，我先上机跑了一下 SheepIt，可以渲染，相对计算强度为32%，和榜单上的GTX1070Ti差不多。这要归功于GDDR5X显存和超频到了1860MHz的核心频率，温度低的时候甚至冲到了1920MHz。虽然每张卡的Boost频率都不太一样，但是基本盘都是在1860MHz左右，有一张卡低一点，1835MHz，但是也比GTX1070的1683MHz要高不少了。这玩意可以看作是超频版的GTX1070。我也测试了一下Ollama，跑Qwen2.5 7B的模型轻轻松松，速度很快。跑Ollama的时候功耗比跑Blender高，会干到170W左右，这个玩意功耗墙180W，SheepIt渲染的话，观察下来最高也就120W左右，没跑满功耗，但是nvtop显示已经占用100%了。该测的都测了，显卡被矿老板锻炼得肌肉发达，就是有点发烧，跑测试都干75度去了，性能没问题。现在就该让我乙女解剖了！让我看看！然后，我就拆开了——让我看看！这叫什么？崭新出土！已经不能用伊拉克成色来形容了，这叫出土文物！硅脂干得跟水泥一样，要用指甲刮下来！导热垫也已经硬邦邦的了。之前这货的工作强度可想而知。观察了一下塑料壳上面的生产印记，好家伙，2018年4月的卡，那会我还没中考呢！这个年份对得起这样的积灰。看一下散热器的积灰细节：看完了这玩意的内部情况，该让我给这位经历了三波矿潮风雨的老同志接风洗尘了。清理矿渣清理的时候，整个桌子都布满尘土，特别是清理风扇的时候，一扫就是一把土出来！真的绝了！不清理干净直接这个状态让他继续给我干活，估计没多久就要嗝屁了。清理完成后，瞬间舒适：散热器特写，好像并没有太严重的氧化，清理干净后整体成色还可以：清理后我只重新涂了硅脂，没有换导热垫，换导热垫成本就上去了，79包邮的矿渣卡不值得这么做，擦擦将就用吧！你这矿渣卡从矿老板的哥布林窝里面出来，能遇到我这样的狗修金撒玛，对你这么好，就偷着乐吧！我给你洗干净了，你就该给我去赚 SheepIt 渲染积分了。装机本来我是想要一台机器插4张卡，但是，我发现就只插两张，E3-1220v2都不太顶得住，因为渲染完成后还需要用CPU进行降噪分析，并且渲染过程中会一直占满一个CPU核心，所以4C4T的E3-1220v2带两张P104已经比较极限了，基本上占用率都在50%+。所以我转换了思路，搞两台机器，一台机器装两张卡。也幸亏当时在家组装焊接副电源的时候，保险起见，500W的服务器电源只焊接了两条双8PIN供电线，让我可以分开部署。现在有两条8G内存，插上去就是16G，每个客户端分7.5G，给系统留1G就行，反正是无头模式启动，先看看效果怎么样。装好后Be Like:如果之前关注过我的应该就发现了，这是我宿舍云的电脑。我宿舍云的功能全部都迁移到家里云了，用来干这个也算是物尽其用吧。两张P104-100，一张直接插主板的PCIe X16，另一张通过挖矿的PCIe X1转PCIe X16转接线接上。一开始我还担心X1的转接线性能损耗问题导致性能下降，事实证明我是多虑了，几乎没有明显的性能下降，只是渲染启动的时候，数据加载会慢一点，仅此而已！其实这个电脑的电源才300W，用来带两张P104是包炸的。因为我家里面正好有服务器电源，这玩意是短接触点触发，然后稳定输出12V，于是我就想用这玩意单独给显卡供电。焊上从烂电源剪下来的PCIe 8PIN…

使用 EasyTier 自建服务器组网
type: item
date: 2025-08-24T16:37:00+08:00
description: EasyTier自建服务器组网教程之前有使用过 ZeroTier 进行校园网内网环境下设备穿透组网，但是发现并不是那么好用，自建服务器效果也不太好，官方服务器慢的要死。偶然的机会，听朋友介绍了 EasyTier ，试了一下确实不错，写一篇博客记录一下折腾过程。官方文档算比较完善了，看看自己也能搭建成功，如果你只是单纯想要自建一个服务器并且配置电脑进行连接组建虚拟局域网，不使用其他的功能，那就可以参考这篇教程。下载 EasyTier直接在官方的文档界面就可以下载，而且提供了Github加速，非常贴心。直接wget梭哈：cd /opt/ wget https://ghfast.top/https://github.com/EasyTier/EasyTier/releases/download/v2.4.2/easytier-linux-x86_64-v2.4.2.zip unzip easytier-linux-x86_64-v2.4.2.zip rm easytier-linux-x86_64-v2.4.2.zip cd easytier-linux-x86_64/配置 EasyTier 启动参数注意，请在root权限下运行 EasyTier ，因为创建 TUN 设备需要root权限。服务端配置在服务器端，开放11010端口的TCP和UDP防火墙连接许可。然后启动服务端：./easytier-core --private-mode true --network-name nekopara-uk --network-secret 3bbca7ed-a114-4821-b61f-f3b214af97da -i 10.6.6.1参数解释：--private-mode：启用私有模式--network-name：网络名称（可以理解为客户端连接时的用户名）--network-secret：连接的密钥，建议使用uuidgen命令生成UUID作为密码。-i：服务端IP地址网段，这里指定了10.6.6.1，那服务器给连接的节点分配的就是10.6.6.2-10.6.6.255这个个IP段。至此，服务端已经配置完毕，是不是很简单？启动后服务端会打印toml格式配置文件文本，可以复制出来方便后面指定配置文件启动：NekoHost:/data/easytier-linux-x86_64# ./easytier-core --private-mode true --network-name nekopara-uk --network-secret 3bbca7ed-a114-4821-b61f-f3b214af97da -i 10.6.6.1 Starting easytier from cli with config: ############### TOML ############### ipv4 = "10.6.6.1" listeners = [ "tcp://0.0.0.0:11010", "udp://0.0.0.0:11010", "wg://0.0.0.0:11011", "ws://0.0.0.0:11011/", "wss://0.0.0.0:11012/", ] rpc_portal = "0.0.0.0:0" tcp_whitelist = [] udp_whitelist = [] [network_identity] network_name = "nekopara-uk" network_secret = "3bbca7ed-a114-4821-b61f-f3b214af97da" [flags] private_mode = true ----------------------------------- 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener: tcp://0.0.0.0:11010 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener: tcp://[::]:11010 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener: udp://0.0.0.0:11010 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener:…