Clash局域网代理共享

Clash局域网代理共享

本文介绍基于 Windows Clash Desktop 的代理服务器设置,可以为局域网内的设备提供代理服务,该方案可以解决一定的科学上网需求,但是没办法覆盖所有的场景,例如 PS5 的 Netflix ,其不走代理服务器,因此无法通过该方案解决,(软路由可破)

本篇的设置内容主要会从两个方面出发:一个是服务器的开启和防火墙的设置、另一个是客户端如何设置使用对应的代理服务器。

Clash开启代理服务器

Clash 作为局域网代理服务器开启的方式十分简单,主要是以下几步。

开启局域网访问 -> 设置端口,查看 ip -> 防火墙允许通行

配置代理服务器

开启局域网访问: Allow LAN 打钩即可。
端口:设置好想要的 mixport 即可。

image.png

防火墙允许通行: 防火墙-> 高级设置,找到 Clash 所有项,允许其在专用网络上通行。

image.png
查看 ip:命令行输入 ipconfig/ all 里面的 WLAN 模块,可以找到自己的局域网 ip

image.png


Docker Configuration01 Install on Linux

Docker Configuration01 Install on Linux

不同于 Docker 在 Windows 端借助 Desktop 可视化进行安装和配置,Linux 端没有默认的 Desktop 界面,因此会额外安装 portainer 作为我们 docker 的 Dashboard.

Install Docker on Ubuntu

该部分完全转载自官方的安装指引,如果流程需要更新的时候可以移步官网检查,此外官网还包含了其他几种安装方式,这里就不介绍,这里只介绍基于 apt 的安装方式。

设置 apt 的 repo

1 更新 apt 的索引,同时通过下载包来允许 Apt 基于 http 来索引仓库

1
2
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

2 安装 docker 官方的 GPG 秘钥

1
2
3
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3 配置对应的 repository

1
2
3
4
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

完成上述设置之后,就可以开始安装 Docker 了。


树莓派00 组装和亮机篇

树莓派00 组装和亮机篇

最近入手了树莓派 4B,打算基于树莓派做一些有趣&有用的项目,该系列笔记来记录个人树莓派学习和开发的历程。

连载确认!该系列文章将会从装机开始,介绍树莓派用于以下几个项目的开发和部署过程:

  • [x] 基于 Docker 的家庭服务器
  • [x] 智能家居控制中枢
  • [x] 影音中心 & 电视机顶盒
  • [ ] 物联网 or AI 的衍生应用实践

本篇首先介绍亮机和开发环境设置过程,包含:组装、系统安装、远程开发环境设置(SSH、XRDP)

树莓派组装

树莓派组装上比较防呆接口,唯一需要注意的是散热块和风扇的安装:

  • 在 CPU 和缓存等模块上装上散热片
  • 风扇的固定位置在外壳上,接线如下图所示
  • SD 卡的安装位置在背面

微信图片_20230626091027.jpg

系统安装

该部分仅介绍我使用的系统安装和烧录软件,系统的选择需要根据自己所拥有的设备,以及目的去选择。

硬件准备:SD 卡,读卡器,一台正常运行的 PC,可外接的屏幕。


Terminal multiplexer Zellij

Terminal multiplexer Zellij

Tmux 作为一款优秀的终端复用器,前面已经介绍过,这里在介绍一款有着相同功能的平替,个人认为 zellij 的 UI 各方面的设计,使得其相比于 Tmux 有着更低的入门难度,也避免了需要记大量快捷键,因此这里介绍一下该工具。

Zellij 是一款终端复用器,有什么功能可以完全参考 Tmux ,还支持了许多有趣的特性和自定义 Layout 等功能(可能后续用到的话会完善该部分笔记),详细的可以参考官网的介绍,接下来就简单的介绍一下安装和一些自定义的 Alias。

Install 安装

Zellij 是基于 Rust 编写,因此在安装之前需要安装 rust 和 cargo(类似 rust 的包管理器),安装可以参考 Rust 官方网站(推荐) | The Cargo Book | Rust Wiki CN

官方网站中介绍了 WSL 的安装指令如下:

1
2
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#--proto以及--tlsvl在Linux或者Macos安装的时候可以忽略

安装完成后可以使用如下命令,基于 Cargo 安装 zellij:

1
cargo install --locked zellij

如果出现了问题也可以尝试先更新 rust

1
rustup update

AIGC05 Stable Diffusion Model Training

AIGC05 Stable Diffusion Model Training

该章节主要介绍 Stable-Diffusion 中模型的训练,考虑到硬件条件的限制,实际上这里介绍的训练,都是针对大模型的各种微调技术(Lora,Dreambooth,HyperNetwork, …),这里会以 LoRA 模型的训练为主。

参考文献:

Train LoRA

LoRA 的优势就是其模型更小,且更加模块化;也就是说其的训练成本和要求都更低,同时使用代价小,可以作为某种风格插件或者角色插件来使用。

image.png

其中蓝色的是预训练好的源网络,而橙色的是新加的网络,通过控制 R 的宽度(文章主要论证了大模型的参数可能存在较低维度的秩,因此可以使用较小的 R 来对大模型的参数造成有效的影响),可以有效的减少需要训练的网络的 Size。

事前准备

这里只介绍本地训练,训练也可以在 Colab Notebook 等在线训练集群中进行,这里就不进行介绍了

  1. WebUI + 想训练的基础 SD 模型
  2. .txt 带说明的文本文件
  3. Training Repo(sd-scriptlora-script
  4. 数据集准备(准备好训练图像)

训练包准备

这里我们使用 lora-script 来进行模型训练,lora-script 实际上是 sd-script 之外在包了一层,新增了一些可视化的功能和一些其他的脚本,让 sd-script 更加易用,它调用 sd 中的脚本来实现训练,但是封装了一些注释和整理,此外还支持的 tensorboard 可视化。

sd-script 本身包含了训练 lora、dreambooth、text-embedding、UNet、Text Encoder、图像生成、模型转换等多种功能。lora-script 还是主要专注于 LoRA 训练

查看 repo 也能知道 lora-script 中包含了 sd-script,所以我们部署的时候只需

1
git clone --recurse-submodules https://github.com/Akegarasu/lora-scripts

即可将需要的库安装下来,然后安装环境和相关以来只需要执行 .\install.ps1 即可(该脚本有 cn 版本,但是可能会出现问题),其会安装 sd-scripts 和 lora-scripts 需要的库。具体的可以参考相关 repo(sd-script 详细说明,lora-script 有简化版说明)。

安装的时候可能会出现虚拟环境未激活的问题,我们可以提前在改目录执行一次 python -m venv venv 一次即可。

Finish.


Docker-App 1 Backup Photos by Immich

Docker-App 1 Backup Photos by Immich

手机到电脑端的图像备份和预览往往是一个大问题,特别是当多个手机要备份的时候,说难不难,但说简单也确实有很多麻烦的地方,因此我推荐 Immich 的解决方案。

Immich 是一个基于个人开发者开发的开源 Github 项目,immich-app/immich,该解决方案有以下的一些优势:

  • 移动端支持:移动端实现便于手机的随时和自动同步;
  • 多用户支持:多用户的权限管理、分割、以及用户间的相册共享;
  • Live 格式支持:支持各种原生格式存储,

Self-hosted photo and video backup solution directly from your mobile phone.

因此我本人推荐按照以下的方式来使用:针对家庭等环境,多用户部署在 NAS 或者某台 PC 上,可以长期或者定期的启动备份服务,然后就可以将手机中的照片空间释放掉。由此可以实现:

  1. 通过共享文件夹共建家庭相册;
  2. 权限分割个人相册;
  3. 定期/自动备份手机中的照片,并清理对应的存储空间;

Windows App01 Potplayer & Alist

Windows App01 Potplayer & Alist

本篇主要介绍一下播放器 PotPlayer 的设置以及结合 Alist&小雅 alist 的使用,这样就可以直接在播放器访问本地网盘上的内容,便于使用和观看。

Alist Deploy

Alist 作为一个网盘管理中心,可以将各大网盘中的资源进行统一管理,同时支持视频的 webdav 播放,这里推荐的安装方式是使用 Docker-Compose 进行安装,根据自己的情况来选择对应的挂载和安装目录。

由于官方的文档已经事无巨细,这里就不在赘述如何安装和配置 alist 的各个网盘挂载,详情参见:Home | AList Docs (nn.ci)

安装完并启动 Alist 服务即可,记住自己的端口和设置的账号密码

Aria2离线下载支持

该部分介绍如何通过 docker 为 Alist 添加 Aria2 作为离线下载服务,以及一些常见的问题解决方法。

参考资料:aria2-pro | aira2-pro-github | aria2认证失败

这里介绍使用 docker-compose 安装 aria2的方法,并将 docker 版本的 aria2和 alist 结合起来使用,在基于 docker 安装之前,我们先准备几个文件夹:

1
2
cd <your-path-2-aria2> && mkdir aria2-config && chmod 777 aria2-config
mkdir aria2-downloads && chmod 777 aria2-downloads

其中 downloads 目录是我们用来下载文件的目录,我们也可以使用挂载的目录或者共享的目录来存储下载的文件;然后我们准备一下 alist 中用于离线下载的目录,该目录需要在 alist 的 docker 和 aria2的 docker 中都将该 volume 挂载到同一个地方

本文将 aria2的队名目录挂载到 alist 的对应目录中,对应的 alist 的 compose 文件有

image.png

而 aria2的 compose 文件则有:

image.png

再将该目录的权限改成777,chmod 777 <this-dir> 之后即可再 alist 中离线下载成功,而且该下载文件会在指定的网盘中上传,当上传完成时会删除临时文件,不占用本地磁盘空间。

完整的 Compose 文件可以参考 Aria2-Pro-Docker/docker-compose.yml at master · P3TERX/Aria2-Pro-Docker · GitHub 官方的配置进行安装,我个人的 compose 文件则会上传到AikenH/aikenh-DockerComposeYML (github.com)中。

Aria2Ng 界面认证失败的问题,是因为我们再 compose 中设置了密码之后,要在该界面的设置中设置密码后才能正常认证。

image.png

密码需要到如下地方设置:

image.png

设置完成后应该就不会有认证失败的提示了。

alist 设置 Aria2失败,由于使用的 docker 部署的 aria2,这里不能使用 localhost,要使用对应的 ip 来设置该服务,如下图所示

image.png

完成这些设置后应该就可以正常使用了,但是由于现在都是网盘场景更多,所以离线下载的可能使用场景也有限,而且通过测试发现,如果完全装在树莓派上的话,可能会对系统的性能造成一定的负担。

Xiaoya Deploy

Xiaoya 是基于 Alist 做改版的个人资源站,里面涵盖了大量的影视资源,并在不断的更新,通过在本地挂载 xiaoya 我们也可以用来通过 webdav 在播放器中直接选择视频进行播放,大多数情况下都免去了找资源的痛苦。

官方网站:主页 | 小雅的分类 Alist (xiaoya.pro)

拥有了 Docker 环境后,就可以基于 xiaoya 提供的脚本实现一键拉取镜像和启动 Docker,默认的端口是 5678,安装指令如下:

1
sudo bash -c "$(curl -s http://docker.xiaoya.pro/update_new.sh)"

安装过程中会需要填入如下内容:token、open_token、转存目录的 folder id,具体和后续更新参考配置页,(跟随安装引导界面进行安装即可。)


AIGC04 Stable Diffusion Write Prompt Better

AIGC04 Stable Diffusion Write Prompt Better

该章节主要包括 Promot 生成和部分工作流的分析,旨在了解如何写出更好的关键词,如何生成更好的图片,当我们不知道怎么描述的时候也可以将该工作交给 ChatGPT,让其为我们攥写一般基础的提示词

Prompt 编写范式

参考资料:【Stable Diffusion】Prompt

通常编写可以遵照以下的类别进行组织,主要有 <质量控制> + <前置> + <主体> + <场景词> 几类,其中分别包括以下的几类词:

  • 质量控制:画质、镜头效果、光照效果
  • 前置词:画风、艺术家、风格
  • 主体:人物&对象、姿势、服装、道具
  • 场景:环境、背景、细节
  • Additional Network:载入额外模型

分割符号: 各个关键词之间用 , 分割,且对应的权重从前到后依次递减,因此在编写关键词的时候也要注意先后顺序。

权重加权符号:各种括号代表各种不同的加权系数,这里建议用 (prompt: weight) 统一来编写提示词的权重规则,整体可读性会更好。

这里的 weight 指的是权重变成原本的 weight 倍,就可以调整加强或减弱。

各个括号的默认系数如下: () -> 1.1 ; {} -> 1.05 ; [] -> 0.952
可以通过(())进行叠加即 1.1*1.1


AIGC03 Stable Diffusion Control Net

AIGC03 Stable Diffusion Control Net


AIGC02 Stable Diffusion 基础功能介绍

AIGC02 Stable Diffusion 基础功能介绍

本篇章介绍关于 Stable DIffusion 的一些基础概念和 WebUI 的基本功能元素,同时介绍一些启动项和模型加载的东西。

启动项设置(局域网)

最常用的启动项是 --listen,通过该启动项允许局域网内的其他设备通过 ip 和端口访问部署好的 Stable Diffusion 服务。而设置启动项的方式有以下几种:

  1. 命令行执行启动脚本的时候携带
1
2
./webui.bat --listen
# ./webui.sh --listen
  1. 修改主入口脚本中的启动选项 vim launch.py
1
2
3
# 修改下面这一行的参数, 将" "中填入需要的参数
# commandline_args = os.environ.get('COMMANDLINE_ARGS', "")
commandline_args = os.environ.get('COMMANDLINE_ARGS', "--listen")
  1. 其他的启动项介绍可以参考:2.3. 命令列引數 | Stable Diffusion WebUI使用手冊(正體中文)|Ivon的部落格 (ivonblog.com)