西区代码小仓库 - 计算机科学
type: channel
link: https://www.lisper517.top/category/CS/
description: 计算机与代码艺术
items: 自建网盘-nextcloud
items: 使用r730xd组建NAS及AIO
items: 小米CR6609路由器刷pandora与breed
items: 自建DNS与广告过滤-adguardhome与pihole
items: AX9000使用docker
items: Python，爬虫与深度学习（19）——stable diffusion入门
items: Python，爬虫与深度学习（18）——Ubuntu下安装stable diffusion
items: IPv6与DDNS
items: 私密聊天室-Matrix
items: linux状态监控-Ward , ServerStatus

自建网盘-nextcloud
type: item
date: 2024-08-17T14:23:00+00:00
description: 步骤/目录： 1.背景介绍 2.拉取nextcloud镜像 3.nextcloud的基本配置 4.其它问题 （1）外部存储写入权限本文首发于个人博客https://lisper517.top/index.php/archives/1848/，转载请注明出处。本文的目的是使用nextcloud搭建私人网盘，类似一个私人的百度云盘。本文写作日期为2024年8月17日，在Ubuntu 22.04LTS系统演示。1.背景介绍目前市面上主流的网盘有百度、阿里、夸克、天翼、115等，但是最大的问题是基本都要买VIP才能有较快的下载速度，而且一些私有的敏感文件也不宜放在公共网盘上，比如你的公司和百度在同一个项目中竞标，那总不能把标书放在百度网盘里，万一泄露了。本文将使用nextcloud搭建私有网盘。除了nextcloud，还可选择owncloud、sealife等。2.拉取nextcloud镜像在2024年6月左右，docker官方对中国ip采取了封禁的措施（据说是由于中华有为。诶，美团实在是太坏了），所以目前大陆无法安装docker、docker-compose，也无法从docker官方仓库拉取镜像。解决方法见 这篇文章 ，这里摘取重要的说。（1）安装dockercurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg #添加阿里云的Docker GPG密钥 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null #配置阿里云的Docker APT源 apt-get update apt-get install docker-ce docker-ce-cli containerd.io docker -v docker-compose -v（2）更换docker源或者翻越目前无法从docker官方仓库拉取镜像（据说是由于华晨宇，详情见 github项目 ，华晨宇手机可能无法打开），所以只能换为国内docker镜像仓库，或者翻越，笔者建议直接翻越，更简单一些（见 Docker实践——如何查阅wiki百科及V2Ray 。但是这篇文章中使用的v2rayA也是docker，所以还是要先改docker源）。更换docker源的操作具体如下：vim /etc/docker/daemon.json写入：{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://registry.docker-cn.com", "https://dockerhub.azk8s.cn", "https://mirror.ccs.tencentyun.com", "https://registry.cn-hangzhou.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://dockerhub.icu", "https://docker.anyhub.us.kg", "https://docker.1panel.live" ], "features": {"containerd-snapshotter": true}, "log-driver": "json-file", "log-opts": { "max-size": "20m", "max-file": "3" } } }registry-mirrors 里列举了一些国内能连的镜像，但是最近也被封禁的厉害，说不定什么时候就连不上了（所以尽量翻越，更省事）。"features": {"containerd-snapshotter": true} 则是开启容器快照功能，目的是使得拉…

使用r730xd组建NAS及AIO
type: item
date: 2024-07-14T07:50:00+00:00
description: 步骤/目录： 0.raid介绍 1.背景介绍 2.r730xd的详细参数与扩展 3.esxi系统的安装 4.esxi虚拟机安装TrueNAS 5.esxi虚拟机安装Win10 6.esxi虚拟机安装Ubuntu 7.其它本文首发于个人博客https://lisper517.top/index.php/archives/1562/，转载请注明出处。本文的目的是使用r730xd组建NAS。本文写作日期为2024年7月14日，参考文章将会在正文中列出。0.raid介绍raid技术可以将多块物理硬盘合并成一个存储单位使用，比如说在电脑上显示为1个盘符。raid最大的作用是提升安全性或者读写性能。常用的raid如下（来自于 这篇文章 ）：RAID 0：条带化（数据分块）但没有冗余，提供较高的读写性能。 RAID 1：镜像，数据完全复制到另一个驱动器，提供容错能力。 RAID 5：条带化加分布式奇偶校验，提供数据冗余和读取性能。 RAID 6：类似于RAID 5，但提供更高级别的容错能力。 RAID 10：RAID 1+0，将RAID 1镜像组合成RAID 0条带化，提供较高的容错能力和读写性能。 RAID 50：RAID 5组合成RAID 0，提供较高的性能和容错能力。 RAID 60：RAID 6组合成RAID 0，提供更高级别的性能和容错能力。总的来说，追求简单就raid1（至少2块硬盘），追求速度就raid10（至少4块硬盘），raid1与raid10都只能使用一半的硬盘空间。想提高读取性能、空间利用率、容错率就raid50、raid60。另外需要注意的是，大量数据时，raid5硬盘恢复的失败率会上升。软硬raid的区别：（1）软raid不需要专门的硬件设备，可以在不同的操作系统中读写数据；缺点是消耗CPU、内存，高负载时性能不如硬raid。（2）硬raid需要专门的阵列卡，读写性能高；缺点是必须特定的硬件才能读写数据。另外一个重要的区别是，用软raid时硬盘无法作为系统盘，只有硬raid才能把系统盘也组raid。IT（initiator target）即直通模式，阵列卡只作为总线适配器，把硬盘直接交给操作系统处理，方便做软raid。一般是便宜的阵列卡支持IT模式。1.背景介绍在笔者之前的文章中，曾经用 Ubuntu + samba 的方式组建NAS，使用的硬件为 2盘位硬盘座 + 树莓派 + UPS （见 树莓派+Samba+frp搭建NAS（网络云存储） ），后来将树莓派改成了旧笔记本。这套配置的主要问题有：（1）树莓派的CPU不够强，旧笔记本的CPU可以、但散热不行，所以都无法运行一些其它占资源的东西，比如模拟器多开。（2）扩展性的限制，硬盘座需要通过USB3.0接到树莓派或者笔记本上，想再加硬盘就要再买硬盘座，但USB接口是比较少的。如果换大型硬盘柜则USB接口又容易发热。（3）达不到AIO的要求。AIO即all in one，用一台主机实现NAS、远程云游戏主机、网页服务器等多种功能，树莓派性能孱弱，旧笔记本又没有雷电接口（不能外接显卡）。综合下来，最好的选择是换一台淘汰的存储服务器，能插显卡的。买旧服务器唯二的缺点是：风扇噪音大（一般在60-100dB），耗电高。经过一系列比对，笔者最终在黄鱼上自提购买了Dell的r730xd，原因如下：（0）github上有针对Dell服务器的风扇调节工具，可以把风扇噪音降低到40dB，放在卧室也不影响入睡。作为对比，耳语大概在30-35dB。（1）耗电量，与卖家当面沟通，双CPU（2630L）、12硬盘，正常跑一些服务的情况下，功率为200W，不关机的话每月144度电，可以接受（按0.5计算，约72元/月，和便宜的云服务器差不多）。（2）保有量大，相关资料多，问题好解决，而且Dell的手册也比较详细。（3）工业设计成熟，看起来有一种信息技术革命的美感，赏心悦目。r730xd在2023年左右经过了一些炒作，价格略上涨，涨价前准系统据说只要￥650。笔者购买时￥1550，胜在卖家已经调好了，包括2颗2630L的CPU，4根2133频率的16GB、ECC内存，1张双千兆电口+双万兆光口的网卡（intel X520/I350），H330 mini阵列卡，1个750W电源，3张PCIe扩展卡，iDrac已授权，另外￥400收了卖家的单风扇1050ti。如果不是自提，最好在发货前让卖家拍照，因为对于准系统的定义不太一样。另外自购了2690v4的CPU（￥330），两个千兆光转电模块（￥150），750W电源1个（￥62），额外一张H330 mini卡备用（￥50，后来发现自带的H330 mini已经刷了直通模式，就买了个没刷直通的），硬盘用东芝的N300-16T（618活动￥1889）。2.r…

小米CR6609路由器刷pandora与breed
type: item
date: 2024-02-08T03:24:00+00:00
description: 步骤/目录： 1.准备工作 （1）另一台路由器 （2）CR6609降版本 （3）下载文件 2.开启SSH 3.连接SSH 4.刷入pandora 5.刷入breed 6.刷入AX1800固件本文首发于个人博客https://lisper517.top/index.php/archives/554/，转载请注明出处。本文的目的是在小米CR6609路由器上开启SSH，刷入pandora、breed固件，最后刷Redmi AX1800的固件。本文使用的方法应该也适用于所有CR660X的路由器。本文写作日期为2024年2月8日，主要参考了 参考文章一 和 参考文章二 。1.准备工作（1）另一台路由器需要另一台刷好openwrt的路由器（最好reset一下）。也可以用虚拟机，但是后面的流程可能有一些不同，笔者没有试过。（2）CR6609降版本本文使用的开启SSH的方法适用于1.0.103及以下的版本，所以最好回退CR6609版本。笔者实验时不知道当前固件版本，也没找到旧版本固件，测试时CR6609后台显示版本号6.0.xxx，这个6开头的版本可能对应某个1.0.103以后的版本。（3）下载文件两位原贴主提供了网盘：百度网盘一 （提取码: love）百度网盘二 （提取码: pvg4）阿里云盘下载3个网盘中的所有东西。或者直接下载 笔者提供的压缩包 。2.开启SSH笔者在每一步操作后会加上自己的理解，不一定对。openwrt路由器通电并用LAN口连接电脑，用WinSCP将 xqsystem.lua 文件上传到 /usr/lib/lua/luci/controller/admin 下，注意用SCP协议。（上传脚本）网页登录openwrt后台，在 Network - Interfaces 中 Edit 第一个 LAN ，将 IPv4 address 改为 169.254.31.1 ；然后关闭DHCP功能，该 LAN 的 DHCP Server - General Setup 中，勾选 Ignore interface ，最后 Save & Apply 。这之后需要换到 169.254.31.1 以操控该路由器。（ 169.254.31.1 可能是小米路由器留下的后门）在win10电脑中， 设置 - 网络和Internet - 状态 - 更改适配器选项 中，选择连接到openwrt路由器的网卡，右键单击，选择 属性 - 网络 页，找到 Internet 协议版本 4 (TCP/IPv4) ，更改它的属性，从 自动获得IP地址 改为 使用下面的IP地址 ， IP地址 填 169.254.31.3 ， 子网掩码 为默认的 255.255.0.0 即可。（保证等一下CR6609获得相同的IP）在 Network - Wireless 中，更改默认的名为 OpenWrt 的Master网络，ESSID（wifi名）改为 abc ， wifi密码改为 12345678 ，最后 Save & Apply 。如果不只一个Master网络（比如一些路由器有2.4G、5G两个甚至更多wifi），都需要改一下，但是各个wifi不要重名。（CR6609需要连接到openwrt路由器的wifi。同时确保等下没有CR6609之外的其它设备连接openwrt路由器）浏览器访问 http://169.254.31.1/cgi-bin/luci/api/xqsystem/token ，返回如下：{"token":"; nvram set ssh_en=1; nvram commit; sed -i 's\/channel=.*\/channel=\"debug\"\/g' \/etc\/init.d\/dropbear; \/etc\/init.d\/dropbear start;","code":0}将电脑与openwrt的连接断开，电脑从 169.254.31.3 改回 自动获得IP地址 。openwrt路由器不要断电。（测试脚本。 ssh_en=1 表示ssh已经enable， "code":0 是成功的状态码）电脑与CR6609的LAN口连接，登录路由器后台。笔者的后台是 192.168.31.1 ，这里以及后续的后台IP请自行查看是否需要更改，比如其它的CR660X可能是 192.168.1.1 、 192.168.2.1 、 192.168.10.1 。浏览器的网址会变成：http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/home#router这样的形式。记住这个32位的stok（该stok在每次登录CR6609后台时都会变化）。浏览器访问：http://192.1…

自建DNS与广告过滤-adguardhome与pihole
type: item
date: 2024-01-29T12:25:00+00:00
description: 步骤/目录： 1.背景介绍 2.adguardhome （1）安装 （2）配置 3.pihole （1）安装 （2）配置 附录： （1）macvlan （2）macvlan下的网段 （3）macvlan的其它操作 （4）pihole配置详解本文首发于个人博客https://lisper517.top/index.php/archives/476/，转载请注明出处。本文的目的是介绍自建DNS、过滤广告的两款软件。本文写作日期为2024年1月29日，在Ubuntu 22.04LTS系统演示。1.背景介绍在用电脑、手机平板浏览网页时，经常能看到网页上各种广告。这些广告最常见的形式是一些图片或视频，而图片和视频资源一般是通过网址加载的。如果在路由器中屏蔽这些广告网址，就能实现去广告。路由器默认设置下，会自动选择本地运营商的DNS，而运营商有时候会劫持DNS，情节轻时在返回的内容中加上广告，严重时则返回错误的内容。在这种情况下也有必要自建DNS。2.adguardhomeadguardhome最初应该是国人做的一款去广告DNS。（1）安装根据其 docker网址 的引导，在Ubuntu上如下操作：mkdir -p /docker/adguardhome/data/adguardhome mkdir -p /docker/adguardhome/conf/adguardhome cd /docker/adguardhome vim docker-compose.yml写入如下内容：version: '3.8' services: adguardhome: image: 'adguard/adguardhome' container_name: adguardhome ports: - '53:53' #DNS端口 - '3000:3000' #网页UI，初始配置端口 - '8500:80' #网页UI，后续配置端口 volumes: - ./data/adguardhome:/opt/adguardhome/work - ./conf/adguardhome:/opt/adguardhome/conf restart: unless-stopped以上设置仅将adguardhome作为DNS服务器使用，其实它还可用用来做DHCP服务器（动态分配内网ip）、HTTPS/DNS-over-HTTPS服务器（DNS的过程用HTTPS加密）、DNS-over-TLS服务器（用TLS加密DNS）、DNS-over-QUIC服务器（QUIC加密DNS）、DNSCrypt服务器（不太清楚，应该也是加密），详见原文，需要注意的是HTTPS、TLS、QUIC好像都需要公网ip+域名+HTTPS证书（所以需要在云服务器部署adguardhome），而DNSCrypt虽不需要证书、却需要客户端（电脑，手机平板等使用adguardhome进行DNS的设备）配置软件。另外需要注意，3000端口是adguardhome初始配置的端口，后续WebUI则会在80端口，已被占用的话可以改到其它端口（此处改到8500端口）。最后打开端口，运行即可（其实docker会自动打开，笔者用ufw是为了方便查看）：ufw allow 53 comment "DNS-adguardhome" ufw allow 3000 comment "WebUI-adguardhome-initial" ufw allow 8500 comment "WebUI-adguardhome" docker-compose config docker-compose up如果提示53端口被占用，可以把53改到其它端口，前提是你的路由器支持DNS服务器使用非53端口；或者使用笔者更推荐的macvlan，见附录。（2）配置访问 本地ip:3000 端口，设置登录用户名密码，其它一路默认，完成初始化配置；然后到8500端口进行进一步配置。在adguardhome配置前，或者配置完成后，到你的路由器管理页面，将ipv4的DNS改到adguardhome的ipv4地址。以下配置参考了 这篇文章 。a.DNS服务器在 设置 - DNS设置 - 上游 DNS 服务器 中，填入cloudflare和google的DNS：1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844后备 DNS 服务器 使用adguardhome提供的DNS：94.140.14.14 94.140.15.15 2a10:50c0::ad1:ff 2a10:50c0::ad…

AX9000使用docker
type: item
date: 2024-01-18T12:20:00+00:00
description: 步骤/目录： 1.背景介绍 2.准备工作 3.安装与使用docker （1）portainer （2）busybox开启SSH （3）docker-compose （4）adguardhome 4.收尾及注意事项 （1）docker备份 （2）注意事项 附录： （1）AX9000上adguardhome开启v6失败本文首发于个人博客https://lisper517.top/index.php/archives/423/，转载请注明出处。本文的目的是在小米AX9000路由器上开启docker。本文写作日期为2024年1月18日，主要参考了 参考文章一 和 参考文章二 和 小米论坛 。1.背景介绍2021年小米出了一款 AX9000旗舰路由器 ，其主要参数如下：处理器：Qualcomm IPQ8072A 4核 A53 2.2GHz CPU ⽹络加速引擎：双核 1.7GHz NPU 内存：1GB 2.4G Wi-Fi：4×4（最高支持 IEEE 802.11ax协议，理论最高速率可达 1148Mbps） 5.2G Wi-Fi：4×4（最高支持 IEEE 802.11ax协议，理论最高速率可达 4804Mbps） 5.8G Wi-Fi：4×4（最高支持 IEEE 802.11ax协议，理论最高速率可达 2402Mbps） 产品天线：外置高增益天线 + 内置 AIoT天线 产品散热：主动散热 整机接口：1个10/100/1000/2500M 自适应 WAN/LAN口（Auto MDI/MDIX） 1个10/100/1000M 自适应 WAN/LAN口（Auto MDI/MDIX） 3个10/100/1000M 自适应 LAN口（Auto MDI/MDIX）它有2.4G、5.2G、5.8G三个频段的wifi，网口正常使用时1个2.5G入口，4个千兆出口。这款路由器刚出来时售价￥999，后来涨到￥1299，偶尔有折扣也会卖￥999。另外2023年又出了万兆路由器（￥1799，折扣时￥1599），外观和其它参数差不多，但是网口是2个万兆、4个2.5G。这款路由器是 4核2.2GHz的CPU + 1G内存 ，性能和可玩性比较强，刚好小米官方提供了能装docker的固件。接下来就展示使用官方固件使用docker、开启ssh。需要说明的是，AX9000有稳定版和开发版固件，其中只有开发版能装docker。目前小米的路由器应该只有AX9000的开发版固件，和万兆路由器的稳定版能装docker，其它厂商不知道有无官固docker。2.准备工作首先做一些准备。（1）小米路由器修复工具：到 小米官网 ，在下面有一个 小米路由器修复工具 。如果出了什么问题，可以尝试用这个工具拯救路由器，但它也不是万能的。另外该工具会报毒，需要允许运行。（2）开发版固件：点击旁边的ROM（即固件），下载小米路由器AX9000的开发版即可。目前该开发版固件最后一次更新是2021年11月12日，估计以后也不会再更新了。（3）路由器备份：在路由器后台， 常用设置-系统状态-备份与恢复 里，把当前的路由器的大部分设置备份一下，方便恢复。（4）U盘准备：准备一个至少64GB的U盘，在windows上用diskgenius（一个windows下管理存储器的强大软件， 官网 的免费版本就能格式化）格式化为ext4，或者在ubuntu下 unmount 并 mkfs.ext4 /dev/xxx 。由于路由器的存储空间、内存不够，所以docker需要装在该u盘中，并且该u盘可以划出虚拟内存（因此最好不要用机械硬盘）。也可以用固态硬盘，稍微有点奢侈，不过最近固态都比较便宜。这个u盘会被挂载到 /mnt/docker_disk 下（同时也在 /extdisks/分区一名称 下）。该u盘的所有要求如下：有32GB以上的空闲空间；如果有多个分区，需要保证第一个分区为ext4格式，不能用sd卡。3.安装与使用docker登录路由器后台，在 常用设置-系统状态-升级检测 里，选择 手动升级 ，使用刚才下载的开发版固件。升级过程中切勿断电、重启，可以用UPS保险。升级完成后登录路由器后台，初始设置一下，然后把备份好的设置恢复一下（有些设置无法备份，需要手动恢复）。设置完成后重启，等待重启时可以插上u盘。重启后到 存储状态 中可以看到u盘已被识别，在 高级设置 下找到Docker，安装并使用docker。值得注意的是 虚拟内存 选项，AX9000的内存为1GB，一般的u盘读取大概在百兆、写入可能在20-100MB/s。如果你要在路由器上运行很多容器的话可以划虚拟内存，但虚拟内存的读写速度比较慢，也可以把u盘换成读写更快的固态硬盘，但是笔者更建议尽量把docker容器放在电脑上。接下来笔者装一些容器以演示。也…

Python，爬虫与深度学习（19）——stable diffusion入门
type: item
date: 2024-01-05T15:46:00+00:00
description: 步骤/目录： 1.背景介绍 2.使用LCM加速 3.文生图 （1）入门 （2）tag通用写法 （3）通用写法的画面调整 （4）tag进阶 a.强短句 b.循环绘制 c.分步渲染 d.表情符号 （5）反推tag（图生文） （6）SD大致原理 （7）tag示例 4.Control Net （1）CN的使用 （2）CN常用预处理器 5.模型下载及使用 （1）模型分类 （2）大模型 （3）LoRA （4）Embedding/Textual inversion （5）VAE （6）Hypernetwork （7）Dreambooth与Native Train （8）DreamArtist 6.SD结构及进阶 7.图生图 （1）图生图 （2）局部重绘 （3）涂鸦重绘 （4）其它 （5）图生图的理论与技巧 （6）修手 （7）添加元素 （8）差分图 （9）LoRA协同 （10）草图生图 8.训练LoAR 9.使用技巧 （1）复制参数 （2）保存预设 （3）更换整合包时迁移数据 10.大模型简介 11.小模型推荐 12.保护画师作品本文首发于个人博客https://lisper517.top/index.php/archives/287/，转载请注明出处。本文的目的是讲解stable diffusion的初步使用。本文写作日期为2024年1月5日。系统为 Ubuntu 22.04 LTS ，显卡为 GTX 1050Ti mobile，4G显存。主要参考了 秋葉aaaki 等大佬制作的文档 ，以及其它各种分享。由于笔者也不是AI从业人员，本文难免出现各种错误，请在评论区指出。1.背景介绍在上一篇文章中，在Ubuntu下安装了Stable Diffusion（ 秋葉aaaki 整合包），这篇文章通过各路资料，初步讲解SD的使用。在开始之前需要强调：（1）目前为止，AI绘画的知识完全可以免费获取；（2）尽可能用safetensors后缀的模型，少用、不用pt、ckpt后缀的模型，以防电脑被注入病毒；（3）能够翻越的，优先在hugging face、civitai、github获取第一手信息，看不懂英文可用GPT翻译。2.使用LCM加速在开始介绍之前，建议安装LCM Lora以大大减少缩短出图时间，步骤如下：（1）关闭SD，在 webui-user.sh 中的 export COMMANDLINE_ARGS 加入 --enable-insecure-extension-access flag，保证从非本机访问SD时（ip不是127.0.0.1）也能安装插件；出于安全原因，不加这个flag就只能从本机装插件，装完插件后这个flag可以去掉，或者笔者建议用NPM给SD加密码（见 可视化管理Nginx-Nginx Proxy Manager ）。另一种方法是建立SSH隧道（或者用frp等工具），比如在本机（跑SD的机器）运行 ssh -L 127.0.0.1:7860:127.0.0.1:7860 ... ，参考 github问题 ；（2）通过 夸克网盘 或者到 huggingface 下载 LCM-LoRA_sd15.safetensors ，放到 models/Lora 下。从名字上也可以看出它适用于SD 1.5，但是SD 1.6也可以；（3）启动SD，在 扩展-从网址安装 下，在 扩展的git仓库网址 内粘贴 https://github.com/mcmonkeyprojects/sd-dynamic-thresholding （动态CFG插件，有助于LCM表现），点击 安装 ，到 扩展-已安装 下点 应用更改并重启 以重启SD；（4）操作方面，正常填提示词，在 Lora 里选择LCM的Lora， 迭代步数 (Steps) 调到7（生成步数，和耗时有很大关系）， 采样方法 (Sampler) 选择 Euler 或者 Euler a 采样器， 提示词引导系数 (CFG Scale) 调到最常用的7，下面还有个 Dynamic Thresholding (CFG Scale Fix) （刚才装的动态CFG插件），把 Mimic CFG Scale 调到1，该插件的高级选项中 CFG Scale Scheduler 选择 Half Cosine Up （也可选其它的）， Minimum value of the CFG Scale Scheduler 和 Minimum value of the Mimic Scale Scheduler 都调1，即可出图；（5）笔者实验时，512*512正常48s，用LCM仅9s。想要快速出大图，可以在 高分辨率修复 (Hires. fix) （用于放大小图）中放大算法选择 R-ESRGAN 4x+ Anime6B （这个…

Python，爬虫与深度学习（18）——Ubuntu下安装stable diffusion
type: item
date: 2024-01-05T13:40:00+00:00
description: 步骤/目录： 1.背景介绍 2.安装CUDA （0）卸载之前的CUDA、驱动 （1）安装依赖项 （2）检查PyTorch兼容的CUDA （3）安装CUDA （4）将CUDA添加到PATH （5）安装PyTorch （6）初运行Stable Diffusion WebUI 3.SDW的更新 4.安装问题 （1）无法连接到github （2）运行webui.sh时提示没有pip3模块 （3）运行webui.sh时提示TCMalloc （4）SafetensorError （5）其它模块 附录-显卡厂商的区别本文首发于个人博客https://lisper517.top/index.php/archives/278/，转载请注明出处。本文的目的是在ubuntu机器上安装stable diffusion。本文写作日期为2024年1月5日。系统为 Ubuntu 22.04 LTS ，显卡为 GTX 1050Ti mobile，4G显存。主要参考了 文章一 。1.背景介绍2020年笔者读到了一本深度学习的书：《深度学习入门：基于 Python 的理论与实现》，作者是斋藤康毅，书上介绍的东西简单易懂（比如深度学习界的Hello World-识别手写数字），比较适合入门。后来从一些量化交易的论坛获得了中国股市过去30年每天的开盘、收盘、最高、最低价数据，试图用机器学习找出其中的规律，最后得出结论：股市的数据是完全随机的、或者有其它的隐变量，不适用于机器学习。之前笔者还写过系列文章：《Python，爬虫与深度学习》，但是只介绍完了爬虫，还没有涉及深度学习。2022-2023年stable diffusion、chatgpt如火如荼，今天便重拾这个系列。Stable Diffusion刚出来时笔者也在windows上进行了尝试，当时用的 AMD RX 5500 XT 大概30s一张图。如果想浅尝，笔者建议用Nvidia的p104显卡（8G显存魔改版），闲鱼只要￥120左右（显卡扩展坞都值4张p104），跑512*512的图大约10s（但是装驱动有点麻烦）；目前商用跑图性价比最高的应该是￥3500的 4060Ti 16G ，但是这个价格还是太高了。只生成图片，至少需要4G显存，推荐8G；要训练自己的模型，推荐12G；内存推荐16G；固态硬盘。如果要买新显卡，关于各种显卡厂商的区别，可参考 知乎回答 ，或 附录。接下来笔者将在Ubuntu上安装SD。如果想在Windows上体验，可以下各位大佬的安装包，见 秋葉aaaki ，网盘为 夸克 ；Win + AMD ，则用 这个整合包 ，使用说明见 b站 （A卡跑图性能大概是同价位N卡的一半）。2.安装CUDA以下的操作需要切换到有sudo权限的非root用户进行。创建该用户的操作如下（参考 提升树莓派安全性 ）：mkdir /home/SD useradd -d /home/SD SD -m #SD也将装在该家目录下，建议至少有100GB空间 chown -R SD:SD /home/SD passwd SD usermod -aG sudo SD vim /etc/sudoers.d/SD加一行：SD ALL=(ALL) NOPASSWD: NOPASSWD: ALL（0）卸载之前的CUDA、驱动如果之前装过CUDA，或者在本次流程装CUDA时出现了意外，可以卸载后重装。参考 Nvidia官方文档 ，执行以下命令：sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \ "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" sudo apt-get --purge remove "*nvidia*" "libxnvctrl*" sudo apt-get autoremove（1）安装依赖项安装一些依赖项：python3 -V #如果没有显示python3版本，就apt install python3，或者参考后文 sudo apt install wget git python3-venv安装python的版本需要注意，由于后文 --xformers 选项，笔者安装的是python-3.10.11。（2）检查PyTorch兼容的CUDA到 PyTorch官网 ，找到下面的 INSTALL PYTORCH 。需要选择以下几项：PyTorch Build 选 Stable Your OS 选 Linux Package 选 Pip Language 选Python下面的 Compute Platform …

IPv6与DDNS
type: item
date: 2024-01-03T16:17:00+00:00
description: 步骤/目录： 1.背景介绍 2.测试IPv6 3.购买域名，DNS解析 4.安装ddns-go 5.端口被封禁的解决方法 6.安全措施 7.进阶搭配使用本文首发于个人博客https://lisper517.top/index.php/archives/246/，转载请注明出处。本文的目的是使用 IPv6 + DDNS 以访问内网ubuntu机器。本文写作日期为2024年1月4日，主要参考了 这篇文章 。1.背景介绍在以前的文章中，笔者介绍过frp，也介绍过DDNS。通过frp，购买一台有公网IPv4地址的云服务器，可以将内网机器开放到公网，还可以搭配NPM给内网机器分配不同的子域名。缺点有：（1）服务器成本；（2）如果被封禁80、443端口，需要换ip，但除了vultr等少数厂商外，很多厂商都不能免费换ip；（3）受服务器网速限制，家里的上传带宽一般都不能跑满。优点则是：（1）内网机器不直接暴露端口，获得了一层额外的保护。DDNS（动态DNS），如果你有幸获得了公网IPv4地址（前几年的电信据说比较容易获得），一般是一个动态的公网v4，每次拨号都会变化。通过DDNS，一个固定域名可以与你每次都不同的v4地址绑定，从而方便使用。参考 路由器与DDNS 。随着IPv6的普及，现在基本上一半的网址都能通过v6访问（手机基本上都支持v6）。由于v6能提供的地址太多，协议也比较新鲜，美国暂时没有管制v6发放，现在使用v6的机器都能分配到公网v6地址。但是v6地址太长且经常变化，使用不方便，所以需要搭配DDNS（动态DNS）使用。最后需要提醒，v6 + DDNS 的方案会将内网机器直接暴露到公网，所以一定要设置好防火墙。对于linux系统，这里推荐ufw防火墙（见 ufw简介与树莓派安装ufw ）和fail2ban端口封禁（见 Fail2ban提升服务器安全性 ）。2.测试IPv6第一步确认自己的路由器、光猫能否访问IPv6。先到光猫、路由器后台找到v6相关设置，把v6打开，如果路由器自带v6防火墙可以暂时先打开。然后访问 IPv6 连接测试 和 ddnspod提供的v6检测 （如果有代理，此时需要关闭代理），正常情况下会显示电脑的v6地址，并且结果相同。接下来最好把光猫改桥接，因为光猫的性能较差，而且光猫的防火墙喜欢拦截入站的v6请求。直接打电话给运营商转人工服务，要求光猫改桥接，几分钟就好了。如果不知道自己的宽带账号密码，可以顺便问一下。接着到主路由管理页面，上网方式从DHCP（或者静态IP）改到PPPoE，输入宽带拨号的账号密码即可。另外，ipv6、ipv4的DNS也可以手动改一下，以缓解DNS污染，这里提供cloudflare和google的：cloudflare: 1.1.1.1；1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 google: 8.8.8.8；8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844路由器PPPoE能成功上网后，查看路由器的v6地址，复制到 IP查询 ，看一下路由器是否公网v6，也可以在cmd中 ping -6 你的v6地址 能否ping通，不是的话可以先关闭路由器防火墙，还是不行的话问一下运营商。最后，在浏览器访问路由器的v6地址（注意网址栏的v6地址要用 [] 括起来），应该能看到路由器的登录界面。显示 ERR_CONNECTION_REFUSED ，那一般是防火墙的问题。这里如果看不到也没关系，后面的方案是把内网的其它机器开放而非路由器开放到公网。3.购买域名，DNS解析以下购买域名的厂商称为域名厂商，提供DNS的厂商称为DNS厂商。购买一个自己的专属域名，最便宜的依然推荐 namesilo ，因为没什么套路，域名续费也很便宜。如果不会用namesilo，也可以在cloudflare、阿里云、腾讯云等购买，当然可能会稍微贵一点。普通的top域名一般一年在￥9.9-99比较合理。如果在namesilo购买域名，还要设置一下DNS解析，因为namesilo的DNS不是很给力。把DNS服务器修改到DNS厂商，笔者最推荐cloudflare。然后转到DNS厂商，把域名解析到路由器的v6地址进行测试（cloudflare），等几分钟（解析记录需要几分钟扩散），浏览器访问该域名，也许能看到路由器的登录页面（看不到也没关系）。最后，登录到你的DNS厂商，获得一个token令牌。以阿里云为例，在头像处的下拉菜单中找到AccessKey，创建一个，保存好（忘记保存就再创建一个），AccessKey ID相当于用户名，AccessKey Secret相当于密码。各家DNS厂商可能有一些细小的区别，其它厂商可能叫toke…

私密聊天室-Matrix
type: item
date: 2023-12-31T18:05:00+00:00
description: 步骤/目录： 1.背景介绍 2.Matrix与element的安装 3.Matrix的设置与使用 （1）初始化 （2）注册管理员账号 （3）关闭注册功能 （4）其它本文首发于个人博客https://lisper517.top/index.php/archives/225/，转载请注明出处。本文的目的是介绍一款去中心化的私密聊天软件-Matrix。本文写作日期为2024年1月1日。主要受up主 我不是咕咕鸽 的启发。他还分享了很多其它有趣的内容，讲解也很详细、基础，很适合小白学习。1.背景介绍在日常管理服务器的过程中，一些工具能大大减轻工作量。前几天在up主 我不是咕咕鸽 的空间看到了很多有趣的分享，也尝试自己搭建一下。Matrix是一款支持端到端加密、去中心化的聊天服务器软件，比较适合小公司或者需要保护公司秘密、个人隐私时。你可以搭建自己的Matrix服务器，借助一些Matrix的客户端，在自己的服务器内，或者与其它的Matrix服务器通信。2.Matrix与element的安装在服务器上如下操作：mkdir -p /docker/matrix/data/matrix mkdir -p /docker/matrix/conf/element接下来需要运行一次Matrix，生成默认的配置等文件（把域名改成自己为Matrix准备的域名）：sudo docker run -it --rm \ -v /docker/matrix/data/matrix:/data \ -e SYNAPSE_SERVER_NAME=matrix域名 \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest generate修改一下homeserver.yaml，允许注册、允许无验证注册：vim /docker/matrix/data/matrix/homeserver.yaml在末尾加入以下两行（也可以不加，因为能通过其它方式创建用户）：enable_registration: true enable_registration_without_verification: true修改后该文件内容如下：# Configuration file for Synapse. # # This is a YAML file: see [1] for a quick introduction. Note in particular # that *indentation is important*: all the elements of a list or dictionary # should have the same indentation. # # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html # # For more information on how to configure Synapse, including a complete accounting of # each option, go to docs/usage/configuration/config_documentation.md or # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html server_name: "你的matrix域名" pid_file: /data/homeserver.pid listeners: - port: 8008 tls: false type: http x_forwarded: true resources: - names: [client, federation] compress: false database: name: sqlite3 args: database: /data/homeserver.db log_config: "/data/你的matrix域名.log.config" media_store_path: /data/media_store registration_shared_secret: "一串密码" report_stats: true macaroon_secret_key: "一串密码" form_secret: "一串密码" signing_key_path: "/data/你的matrix域名.signing.key" trusted_key_servers: - server_name: …

linux状态监控-Ward , ServerStatus
type: item
date: 2023-12-31T11:46:00+00:00
description: 步骤/目录： 1.背景介绍 2.Ward 3.ServerStatus （1）服务器端 （2）客户端 （3）SS的使用本文首发于个人博客https://lisper517.top/index.php/archives/202/，转载请注明出处。本文的目的是介绍一些监控linux状态的工具，类似windows的任务管理器。本文写作日期为2023年12月30日。主要受up主 我不是咕咕鸽 的启发。他还分享了很多其它有趣的内容，讲解也很详细、基础，很适合小白学习。1.背景介绍在日常管理服务器的过程中，一些工具能大大减轻工作量。前几天在up主 我不是咕咕鸽 的空间看到了很多有趣的分享，也尝试自己搭建一下。windows上有任务管理器，可以方便地查看电脑的CPU及内存使用量，网速，硬盘状态等。linux也有类似的工具。2.Ward之前笔者介绍过 Pi Dashboard ，一个可以在网页监控树莓派状态的项目。Ward比较类似Pi Dashboard，也能通过网页监控linux电脑的状态。根据 github-ward 的说明，在linux中如下操作：mkdir -p /docker/ward cd /docker/ward vim docker-compose.yml内容为：version: "3.9" services: ward: image: antonyleons/ward ports: - "4000:4000" environment: - WARD_PORT=4000 privileged: true restart: unless-stopped打开4000端口，运行ward：ufw allow 4000 comment "ward" docker-compose config docker-compose up浏览器访问 ip:4000 即可，非常简单。3.ServerStatusWard适用于单个linux机器的监控。如果有多个linux机器，可以使用ServerStatus。设置一台SS的服务器端，在SS的客户端运行客户端代码，SS客户端就能将运行状态数据提交到SS服务器端，此时访问该服务器端网页就能看到所有客户端机器的状态。（1）服务器端mkdir -p /docker/server_status/month_traffic mkdir -p /docker/server_status/conf/server_status cd /docker/server_status wget --no-check-certificate -qO /docker/server_status/conf/server_status/config.json https://raw.githubusercontent.com/cppla/ServerStatus/master/server/config.json vim docker-compose.yml内容为：version: "3.9" services: server_status: image: cppla/serverstatus:latest container_name: server_status ports: - "80:80" - "35601:35601" volumes: - /docker/server_status/conf/server_status/config.json:/ServerStatus/server/config.json - /docker/server_status/month_traffic:/usr/share/nginx/html/json restart: always80是网页访问，35601是接收客户端数据，记得打开（如果用NPM，把80注释掉，配置反代）。最后运行：docker-compose config docker-compose up此时在网页访问80就能看到了。config.json里自带了几个示例服务器，现在的状态都显示为关闭。（2）客户端客户端不需要有公网ip，所以家庭内的服务器也可。首先确认客户端已安装了python：python3 -V一般云服务器都是装了的，没有装的参考 runoob 。SS客户端只需运行几行命令：mkdir -p /docker/SS_client wget --no-check-certificate -qO /docker/SS_client/client-linux.py 'https://raw.githubusercontent.com/cppla/ServerStatus/master/clients/client-linux.py' chmod +x /docker/…