LinuxTOYhttps://linuxtoy.org/2023-12-30T12:35:00+08:00在 Fedora 39 上配置 AMD ROCm 加速的 Stable Diffusion2023-12-30T12:35:00+08:002023-12-30T12:35:00+08:00lovenemesistag:linuxtoy.org,2023-12-30:/archives/configure-stable-diffusion-with-amd-rocm-on-fedora-39.html<p>随着硬件性能的提升和技术的改进,以往仅能通过云端服务体验的生成式 AI 绘图也出现了可以在本地运行的版本,其中最受欢迎的就是<a href="https://stability.ai/stable-image">Stable Diffusion</a> 。以往这个过程需要依赖 <a href="https://developer.nvidia.com/cuda-toolkit">Nvidia 显卡及闭源的 CUDA 框架</a>,经过一系列社区开发者的努力,现在能在 <a href="https://fedoramagazine.org/announcing-fedora-linux-39/">Fedora 39</a> 中经过简单的配置,用开源社区友好的 AMD 显卡加速本地运行的<a href="https://stability.ai/stable-image">Stable Diffusion</a>。</p>
<h2>安装 AMD ROCm 计算框架</h2>
<p><a href="https://www.amd.com/en/products/software/rocm.html">AMD 的 ROCm 计算框架 …</a></p><p>随着硬件性能的提升和技术的改进,以往仅能通过云端服务体验的生成式 AI 绘图也出现了可以在本地运行的版本,其中最受欢迎的就是<a href="https://stability.ai/stable-image">Stable Diffusion</a> 。以往这个过程需要依赖 <a href="https://developer.nvidia.com/cuda-toolkit">Nvidia 显卡及闭源的 CUDA 框架</a>,经过一系列社区开发者的努力,现在能在 <a href="https://fedoramagazine.org/announcing-fedora-linux-39/">Fedora 39</a> 中经过简单的配置,用开源社区友好的 AMD 显卡加速本地运行的<a href="https://stability.ai/stable-image">Stable Diffusion</a>。</p>
<h2>安装 AMD ROCm 计算框架</h2>
<p><a href="https://www.amd.com/en/products/software/rocm.html">AMD 的 ROCm 计算框架</a> 严格上来讲<a href="https://rocm.docs.amd.com/projects/install-on-linux/en/latest/tutorial/quick-start.html">仅支持少数几个面向企业的 Linux 发行版</a>,但得益于 Fedora 异构计算兴趣小组成员的努力,ROCm 框架中相当一部分软件包已经进入了 Fedora 的标准仓库中,截至本文发布时为 ROCm 5.7.1 版本。详细的步骤推荐参考<a href="https://fedoraproject.org/wiki/SIGs/HC">Fedora Wiki</a>,这里简单说明下:</p>
<ul>
<li>将当前用户添加到 <code>video</code> 组使得非 <code>root</code> 用户亦可使用显卡加速功能:<code>sudo usermod -a -G video $LOGNAME</code></li>
<li>安装对应运行时环境、编译工具和辅助工具:<code>pkcon install rocminfo rocm-opencl rocm-hip rocm-smi</code></li>
</ul>
<p>这一步就完成了!由于 Fedora 38 之后的内核已经开启了 GPU 计算支持,这一步甚至比在官方支持的 Linux 发行版上安装还要简单。</p>
<p>此时可以尝试运行 <code>rocminfo</code> 确保显卡已经被 ROCm 框架正确识别。 </p>
<h2>配置 Conda 安装 Python 3.11</h2>
<p><a href="https://fedoraproject.org/wiki/Changes/Python3.12">Fedora 39 中默认预装的 Python 3.12</a> 很可惜暂时还不被 <a href="https://stability.ai/stable-image">Stable Diffusion</a> 支持,所以我们需要使用 <a href="https://conda.io/">Conda</a> 创建一个使用 Python 3.11 的单独运行环境。所幸的是 Fedora 中已经收录了较新的 Conda 版本,直接从软件仓库安装配置即可:</p>
<ul>
<li>从软件仓库安装:<code>pkcon install conda python3-pip</code></li>
<li>创建使用 Python 3.11 的运行环境: <code>conda create -n py311 python=3.11 -y</code></li>
<li>打开一个新的终端,启用刚刚创建的运行环境:<code>conda activate py311</code></li>
</ul>
<h2>安装适用于 ROCm 的 PyTorch</h2>
<p><a href="https://stability.ai/stable-image">Stable Diffusion</a> 的底层运用了流行的 PyTorch 框架,这里我们需要安装其支持 ROCm 的版本,而又因为 Pytorch 尚未提供 Conda 版本的软件包,所以又需要使用 pip 安装…… 参考其<a href="https://pytorch.org/get-started/locally/">PyTorch 官方页面</a>,在刚才<strong>启用的 Python 3.11 环境</strong>中,运行如下命令安装目前尚处于预览阶段但支持 ROCm 5.7 的版本:</p>
<p><code>pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm5.7</code></p>
<p>这一步骤涉及约 1.8GB 的依赖安装,用时较长且需要稳定的网络环境。</p>
<p>安装过后,建议参考<a href="https://pytorch.org/get-started/locally/#linux-verification">官网的验证过程</a>确保可以正确识别到显卡加速支持。</p>
<h2>Stable Diffusion Web UI</h2>
<p>流行的 <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">Stable Diffusion Web UI</a>的<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs">一键式安装脚本</a>尚未支持 ROCm 5.7 版本,所以需要使用手动安装的方式。</p>
<ul>
<li>下载其<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases">发布版源代码包</a>,本文发布时<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.7.0">为 1.7.0 版本</a>。</li>
<li>解压并进入其目录:<code>tar xf stable-diffusion-webui-1.7.0.tar.gz && cd stable-diffusion-webui-1.7.0</code></li>
<li>利用 pip 解决其依赖关系:<code>pip3 install -r requirements.txt</code></li>
</ul>
<p>这一步骤涉及约 4.5GB 的依赖安装,默认会下载 <code>v1-5-pruned-emaonly.safetensors</code> 版本的 checkpoint,用时较长且需要稳定的网络环境。</p>
<p>至此安装步骤完成~</p>
<h2>启动及运行</h2>
<p>启动和运行有几点需要注意的:</p>
<ul>
<li>记得切换至 Python 3.11 环境:<code>conda activate py311</code></li>
<li>除非使用的是 AMD ROCm 正式支持的显卡,绝大部分消费级别显卡需要添加环境变量以声明显卡型号,例如笔者使用的 Radeon 7800 XT 启动时需要添加 <code>HSA_OVERRIDE_GFX_VERSION=11.0.0</code></li>
<li>直接在 <code>stable-diffusion-webui-1.7.0</code> 目录下运行 <code>launch.py --listen</code> 即可,比如笔者为 <code>HSA_OVERRIDE_GFX_VERSION=11.0.0 python launch.py --listen</code></li>
<li>如果需要使用 WebUI 的插件支持的话,参照<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Extensions">其 Github Wiki</a> 添加运行时参数 <code>--enable-insecure-extension-access</code></li>
<li>如果想用脚本方式将上述启动过程一次性整合到的话,可以使用 <code>conda run</code> 的方式,比如 <code>conda run -n py311 --live-stream HSA_OVERRIDE_GFX_VERSION=11.0.0 python launch.py --listen --enable-insecure-extension-access</code></li>
<li>更多的 Checkpoint 和 Refiner 可以<a href="https://huggingface.co/stabilityai">在 Hugging Face 找到</a>。</li>
<li>工作的时候可以在另一个终端使用 <code>watch -n 1 -d rocm-smi</code> 监控 GPU 加速的运行状态。</li>
</ul>
<h2>法律声明</h2>
<p>使用过程中请<a href="https://stability.ai/use-policy">遵守 Stability AI 的使用条款</a>并<a href="https://stability.ai/s/Grassroots-innovation-in-open-models-suggested-amendments-to-the-AI-Act.pdf">尊重其他艺术家原创工作</a>,其结果切记<strong>不可用于任何商业获利、歪曲事实、损害他人或违法所在国家法律的场景</strong>。</p>
<h2>参考</h2>
<ul>
<li><a href="https://zhuanlan.zhihu.com/p/656480759">AMD显卡满血Stable Diffusion无脑部署笔记</a></li>
<li><a href="https://stable-diffusion-art.com/beginners-guide/">How to use Stable Diffusion</a></li>
</ul>小企鹅输入法 fcitx5 0.0.6 安卓版本发布2023-06-17T12:20:00+08:002023-06-17T12:20:00+08:00lovenemesistag:linuxtoy.org,2023-06-17:/archives/fcitx5-for-android-006-released.html<p>桌面 Linux 平台上知名的开源输入法框架 fcitx5 发布了 0.0.6 安卓版本,带来了插件系统,方便接下来支持更多输入法和语言。 </p>
<p>0.0.6 版本在使用体验上的改善有:</p>
<ul>
<li>通过新增的 Plugin 系统支持了 <a href="https://f-droid.org/en/packages/org.fcitx.fcitx5.android.plugin.anthy/">Anthy 输入法</a>,从而引入了<strong>日语输入</strong>支持</li>
<li>通过分页实现了按需加载候选词,浏览性能提升明显</li>
</ul>
<p><a href="https://f-droid.org/packages/org.fcitx.fcitx5.android/">F-Droid 输入法框架下载</a></p>
<p><a href="https://f-droid.org/en/packages/org.fcitx.fcitx5.android.plugin.anthy/">F-Droid 日语输入 Anthy …</a></p><p>桌面 Linux 平台上知名的开源输入法框架 fcitx5 发布了 0.0.6 安卓版本,带来了插件系统,方便接下来支持更多输入法和语言。 </p>
<p>0.0.6 版本在使用体验上的改善有:</p>
<ul>
<li>通过新增的 Plugin 系统支持了 <a href="https://f-droid.org/en/packages/org.fcitx.fcitx5.android.plugin.anthy/">Anthy 输入法</a>,从而引入了<strong>日语输入</strong>支持</li>
<li>通过分页实现了按需加载候选词,浏览性能提升明显</li>
</ul>
<p><a href="https://f-droid.org/packages/org.fcitx.fcitx5.android/">F-Droid 输入法框架下载</a></p>
<p><a href="https://f-droid.org/en/packages/org.fcitx.fcitx5.android.plugin.anthy/">F-Droid 日语输入 Anthy 插件下载</a></p>
<p><a href="https://fcitx5-android.github.io/faq/">常见问题</a></p>
<p><a href="https://pinyin.sogou.com/dict/">来自的第三方词库下载</a></p>
<p><strong>PS</strong>: fcitx5 是目前 F-Droid 仓库中提供为数不多的支持中文支持的输入法,大大弥补了之前在 <a href="https://linuxtoy.org/archives/linux-phone-review-ubports-sony-xperia-x.html">LineageOS 体验</a>一文中本地化使用体验的短板。</p>GoldenDict-ng 多格式字典查询软件2023-06-03T15:19:00+08:002023-06-03T15:19:00+08:00slbttytag:linuxtoy.org,2023-06-03:/archives/goldendict-ng.html<p>GoldenDict-ng 是一款开源、功能全面、多格式的字典软件,可以在查询一个单词的时候从多本词典中显示结果。</p>
<p>支持包括 MDict、StarDict、DSL、Zim/Kiwix 等常见的离线字典格式 和 Wiktionary、DictD、LinguaLibre 等在线的资源。并且可以添加任意的网站和程序来当作字典的来源。</p>
<p>GoldenDict-ng 是由国人从原版 GoldenDict 分支出来的,相比原版:</p>
<ul>
<li>支持最新版的 Qt6,用 QtWebEngine 取代不再维护的 QtWebKit</li>
<li>处理了大量原版中多年没有解决的 …</li></ul><p>GoldenDict-ng 是一款开源、功能全面、多格式的字典软件,可以在查询一个单词的时候从多本词典中显示结果。</p>
<p>支持包括 MDict、StarDict、DSL、Zim/Kiwix 等常见的离线字典格式 和 Wiktionary、DictD、LinguaLibre 等在线的资源。并且可以添加任意的网站和程序来当作字典的来源。</p>
<p>GoldenDict-ng 是由国人从原版 GoldenDict 分支出来的,相比原版:</p>
<ul>
<li>支持最新版的 Qt6,用 QtWebEngine 取代不再维护的 QtWebKit</li>
<li>处理了大量原版中多年没有解决的 bug 和功能需求,比如暗黑模式、大字典的支持、high DPI 显示、修改字典名称、和 Anki 整合等等</li>
<li>内部代码经过重构和优化后可维护性高</li>
<li>使用 Xapian 来支持全文搜索</li>
<li>通过 libzim 支持最新的 zim 标准</li>
<li>...</li>
</ul>
<p><a href="https://github.com/xiaoyifang/goldendict-ng">仓库地址</a> 和 <a href="https://xiaoyifang.github.io/goldendict-ng/">文档和安装说明</a></p>
<p><img alt="goldendict-ng" src="https://linuxtoy.org/images/gdimg1.png">
<img alt="goldendict-ng" src="https://linuxtoy.org/images/gdimg2.png"></p>开源跨平台非线性视频编辑器 Shotcut 23.05.14 发布2023-05-16T18:00:00+08:002023-05-16T18:00:00+08:00lovenemesistag:linuxtoy.org,2023-05-16:/archives/shotcut-230514-released.html<p>基于<a href="https://www.mltframework.org/">开源非线性编辑媒体框架 MLT</a> 的 <a href="https://www.shotcut.org/">Shotcut</a> 最近发布了 23.05.14 版本,包含了众多改进和新功能。
实际上该版本为问题修订版,修复了在 23.05.07 版本发布后不少社区反馈的包括<a href="https://forum.shotcut.org/t/missing-translated-message-in-23-05-07-ui/38755/4">本地化语言缺失</a>在内的重大问题,更适合非英语母语用户团体使用。</p>
<p>整个 23.05 版本包含了众多改进,可谓是功能满满:</p>
<ul>
<li>迁移至 Qt6 界面框架,意味着在 Win10 …</li></ul><p>基于<a href="https://www.mltframework.org/">开源非线性编辑媒体框架 MLT</a> 的 <a href="https://www.shotcut.org/">Shotcut</a> 最近发布了 23.05.14 版本,包含了众多改进和新功能。
实际上该版本为问题修订版,修复了在 23.05.07 版本发布后不少社区反馈的包括<a href="https://forum.shotcut.org/t/missing-translated-message-in-23-05-07-ui/38755/4">本地化语言缺失</a>在内的重大问题,更适合非英语母语用户团体使用。</p>
<p>整个 23.05 版本包含了众多改进,可谓是功能满满:</p>
<ul>
<li>迁移至 Qt6 界面框架,意味着在 Win10+ 和 OS X 平台将分别使用性能更好的 DX11 和 Metal API 进行界面渲染任务;</li>
<li>现在 OS X 的安装包平台将统一支持 X86 和 ARM 指令集;</li>
<li>恢复长期停更的 <strong>Linux ARM64 版本</strong>,经笔者测试可在 <a href="https://linuxtoy.org/archives/pinebook-pro-review.html">PineBook Pro</a> 上运行;</li>
<li>得益于界面不再依赖 OpenGL 渲染,重新引入了 <strong>GPU 特效</strong>,这些特效不仅性能更佳且<strong>原生支持 10bit 色彩</strong>。<strong>注意</strong>虽说可以在一个项目内混用 CPU 和 GPU 效果,但后期无法单独移除 GPU 特效且会回退到 8bit 色彩支持;</li>
<li>带来了备受期待的<strong>动作追踪滤镜</strong>,可以追踪视频中的一个元素,将其的运动变化和关键帧关联起来,配合其他诸如位置剪裁、文字等滤镜实现和动作相关联的剪辑效果;</li>
<li>带来了使用更佳便捷的“仅快进”和“快进和回退”滤镜,方便调整剪辑片段中部分段路的播放速度;</li>
<li>支持<strong>设定“滤镜分组”</strong>,方便保存和加载各种自己频繁使用的滤镜组合;</li>
<li>更新 MLT、ffmpeg、Glaxnimate 等依赖库至最新版本,带来诸如<strong>大幅度改善的 AV1 视频编解码</strong>支持,在 Win 平台甚至支持 Intel 的 10-bit AV1 及 VP9 硬件编码加速。</li>
</ul>
<p>Linux X86/64/ARM64 Flatpak 下载:<code>flatpak install flathub org.shotcut.Shotcut</code></p>
<p><a href="https://shotcut.org/download/">其他平台官方预编译安装包下载</a></p>
<p><a href="https://shotcut.org/blog/new-release-230507/">官方发布公告</a></p>
<p><strong>PS</strong>: 如果尝试在 Pinebook Pro 或者 Raspberry Pi 4 上进行视频剪辑工作的话,不妨参考之前分享的<a href="https://linuxtoy.org/archives/proxy-editing-using-shotcut.html">使用代理素材的技巧</a>改善流畅度。</p>入门级打印扫描一体机的飞升:借助树梅派实现无线打印扫描2023-04-27T20:00:00+08:002023-04-27T20:00:00+08:00lovenemesistag:linuxtoy.org,2023-04-27:/archives/using-rpi-to-add-wireless-print-scan-for-allinone.html<p>入门级别或者早年购买的扫描打印一体机通常只具备 USB 连接功能,很难满足当下无线办公环境下的多人共享需求。而市面上销售的无线打印盒子几乎都依赖第三方的云端服务实现基本的功能,安全及长期可靠性难以保障。
实际上,只需要借助空闲的树梅派甚至 <a href="https://linuxtoy.org/archives/osmc-vero-4k-review.html">Vero 4K 机顶盒</a>,就可以为这些老旧的设备插上飞升的翅膀,拥抱无线办公/教学的浪潮。</p>
<p>接下来要描述的实现方案设计出发点为:</p>
<ul>
<li>服务器端基于 Debian Linux / Raspberry Pi OS 的系统,长期可靠性有保证;</li>
<li>桌面操作系统客户端无需额外驱动安装,降低客户端接入复杂度;</li>
<li>Android 客户端使用厂商中立的 <a href="https://mopria.org/">Mopria 系列应用</a>;</li>
<li>远程功能限制到局域网内 …</li></ul><p>入门级别或者早年购买的扫描打印一体机通常只具备 USB 连接功能,很难满足当下无线办公环境下的多人共享需求。而市面上销售的无线打印盒子几乎都依赖第三方的云端服务实现基本的功能,安全及长期可靠性难以保障。
实际上,只需要借助空闲的树梅派甚至 <a href="https://linuxtoy.org/archives/osmc-vero-4k-review.html">Vero 4K 机顶盒</a>,就可以为这些老旧的设备插上飞升的翅膀,拥抱无线办公/教学的浪潮。</p>
<p>接下来要描述的实现方案设计出发点为:</p>
<ul>
<li>服务器端基于 Debian Linux / Raspberry Pi OS 的系统,长期可靠性有保证;</li>
<li>桌面操作系统客户端无需额外驱动安装,降低客户端接入复杂度;</li>
<li>Android 客户端使用厂商中立的 <a href="https://mopria.org/">Mopria 系列应用</a>;</li>
<li>远程功能限制到局域网内,避免不必要的信息外溢;</li>
</ul>
<p>下面将以在 Raspberry Pi 3+ 上完成基本配置的 Debian 11 / Raspberry Pi OS 配合通过 USB 接口连接的 HP Deskjet 的入门打印一体机作为范例来介绍下配置过程。</p>
<h2>打印服务器端配置</h2>
<p><a href="https://www.pwg.org/ipp/">Internet Printing Protocol(IPP)</a> 是拥有广泛终端和应用支持的网络打印协议,下来将配置 CUPS 打印服务程序把连接的打印机用该协议共享出来。</p>
<ol>
<li>安装打印机驱动及 <a href="https://openprinting.github.io/cups/">CUPS 打印服务进程</a>:<code>sudo apt install hplip cups</code> ;</li>
<li>允许默认的 <code>pi</code> 用户管理打印服务: <code>sudo usermod -aG lpadmin pi</code> ;</li>
<li>开启并允许打印服务: <code>sudo systemctl enable --now cups</code> ;</li>
<li>因为是局域网配置,所以可以允许远程管理: <code>sudo cupsctl --remote-any && sudo systemctl restart cups</code> ;</li>
<li>最后,可以通过在浏览器以端口号 631 访问树梅派设备的 IP 来访问并配置打印机了,仅需要记得<strong>勾选"共享这台打印机"</strong>即可。过程简单直观,不再赘述。</li>
</ol>
<p>经过这番配置之后,打印机会通过 IPP 协议在局域网内分享。</p>
<h2>打印客户端配置</h2>
<h3>Linux 工作站</h3>
<p>常见的桌面 Linux 发行版都可以直接通过预装的 mDNS 找到网络中的 IPP 共享打印机,无需额外配置可以立即使用。</p>
<h3>Android 手机</h3>
<p>Android 手机自带的打印服务对于 IPP 的支持有限,建议前往 <a href="https://mopria.org/print-from-android">Mopria 联盟官网下载 Mopria Print 应用</a>(提供 Play Store 和直接下载),稍后便可搜索并连接到共享打印机了。</p>
<h3>Windows PC</h3>
<p>最新版本的 Win10 和 Win11 都可以直接连接并使用网络中的 IPP 共享打印机,亦无需安装驱动。</p>
<h2>扫描服务器端配置</h2>
<p>虽说 Linux 环境下的 SANE 本身提供网络共享服务进程 <code>saned</code> ,但与其对应在 <a href="https://play.google.com/store/apps/details?id=com.sane.droid">Android 系统上的前端</a>早已年久失修,无法在最新的 Android 13 权限下保存扫描结果。
于是这里转而使用 AirSane 通过跨平台兼容性更好的 AirScan 协议将扫描功能在局域网共享出来。</p>
<ol>
<li>由于软件相对较新,尚未被 Debian 11 收录,所以需要从 <a href="https://github.com/SimulPiscator/AirSane/releases">AirSane Github 仓库</a>下载最新 Release 版本源代码进行编译,本文截稿时为 0.3.5 版本;</li>
<li>之后安装必要的编译依赖环境:<code>sudo apt install libsane-dev sane-utils libjpeg-dev libpng-dev libavahi-client-dev avahi-daemon libusb-1.*-dev git cmake g++</code> ;</li>
<li>AirSane 使用 cmake 构建,遵循其常规解压并创建构建目录:<code>tar xf AirSane-0.3.5.tar.gz && mkdir AirSane-build && cd AirSane-build</code> ;</li>
<li>构建编译依赖并开始编译,该软件体积小巧,哪怕在树梅派也仅需不到三分钟:<code>cmake ../AirSane-0.3.5 && make</code> ;</li>
<li>在正式安装 AirSane 之前,需要确保扫描仪已经可以被 SANE 识别:<code>sudo scanimage -L</code> ;</li>
<li>如上述结果无误,可以继续 AirSane 的安装并启用:<code>sudo make install && sudo systemctl enable --now airsaned</code> ;</li>
<li>最后,可以通过在浏览器以端口号 8090 访问树梅派设备的 IP 来访问并检查扫描仪是否正常工作了。AirSane 默认的配置已经适用绝大多数场景,如需更多微调可以编辑 <code>/etc/airsane/options.conf</code> 文件实现。</li>
</ol>
<h2>扫描客户端配置</h2>
<h3>Linux 工作站</h3>
<p>常见的桌面 Linux 的 SANE 套间中已经包含了 <code>sane-airscan</code> 组件,但是默认使用的是 eSCL 协议后端,需要切换后端为 AirScan。</p>
<ol>
<li>使用顺手的文本编辑器打开 SANE 配置文件:<code>sudo vim /etc/sane.d/dll.conf</code></li>
<li>注释掉 <code>escl</code> 所在行的一行</li>
<li>添加新行 <code>airscan</code></li>
</ol>
<p>之后在 Linux 工作站用 <code>sudo scanimage -L</code> 或者 <a href="https://gitlab.gnome.org/GNOME/simple-scan">Simple Scan</a>程序便能发现局域网共享的扫描仪了。</p>
<h3>Android 手机</h3>
<p>前往 <a href="https://mopria.org/scan-to-android">Mopria 联盟官网下载 Mopria Scan 应用</a>(提供 Play Store 和直接下载),稍后便可搜索并连接到共享扫描仪了。</p>
<h3>Windows PC</h3>
<p>最新版本的 Win10 和 Win11 都可以直接连接并使用网络中的 AirScan 共享扫描仪,亦无需安装驱动。</p>
<h2>绿色办公</h2>
<p>如果现有打印一体机工作正常的话,参照上述的方法利用已有硬件,配合开源软件即可扩展新的功能。
此举不仅避免了购买第三方打印盒子的开销,同时也避免了产生电子垃圾。
绿色办公,何乐而不为?</p>Duplicacy 3.0.1 发布2022-10-09T22:00:00+08:002022-10-09T22:00:00+08:00lovenemesistag:linuxtoy.org,2022-10-09:/archives/duplicacy_cli_3.0.1.html<p><a href="https://duplicacy.com/home.html">Duplicacy</a> 是一款跨平台的开源文件备份工具,在提供健壮的增量式备份机制的同时又不依赖索引数据库,独具一格。最近发布了其<a href="https://github.com/gilbertchen/duplicacy/releases/tag/v3.0.1">命令行 3.0.1 版本</a>。</p>
<p>相对于其他开源文件备份工具诸如 <a href="https://duplicity.gitlab.io/">duplicity</a> / <a href="https://wiki.gnome.org/Apps/DejaDup">Deja Dup</a> 和 <a href="https://www.borgbackup.org/">BorgBackup</a> / <a href="https://apps.gnome.org/app/org.gnome.World.PikaBackup/">Pika Backup</a>,Duplicacy 有如下特点:</p>
<ul>
<li>使用 Go 语言实现的<strong>完整的跨平台支持</strong>,支持 Win 32/64,Linux X86 …</li></ul><p><a href="https://duplicacy.com/home.html">Duplicacy</a> 是一款跨平台的开源文件备份工具,在提供健壮的增量式备份机制的同时又不依赖索引数据库,独具一格。最近发布了其<a href="https://github.com/gilbertchen/duplicacy/releases/tag/v3.0.1">命令行 3.0.1 版本</a>。</p>
<p>相对于其他开源文件备份工具诸如 <a href="https://duplicity.gitlab.io/">duplicity</a> / <a href="https://wiki.gnome.org/Apps/DejaDup">Deja Dup</a> 和 <a href="https://www.borgbackup.org/">BorgBackup</a> / <a href="https://apps.gnome.org/app/org.gnome.World.PikaBackup/">Pika Backup</a>,Duplicacy 有如下特点:</p>
<ul>
<li>使用 Go 语言实现的<strong>完整的跨平台支持</strong>,支持 Win 32/64,Linux X86/64/ARMv7/ARMv8 和 OSX Intel/Apple;</li>
<li><strong>不依赖索引数据库</strong>的<a href="https://github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication">无锁式去重机制</a>;</li>
<li>支持多个设备备份至同一存储目标,实现<a href="https://forum.duplicacy.com/t/about-duplicacy-nomenclature/2514">跨设备去重且允许并行操作</a>;</li>
<li>支持文件加密以及非对称密钥,除了基本的本地磁盘备份以外还支持超多的<a href="https://forum.duplicacy.com/t/supported-storage-backends/1107">云端备份供应商</a>;</li>
<li>实现核心功能的<strong>命令行版本开源且可供个人免费使用</strong>,商业使用或其 GUI 版本则需少量<a href="https://duplicacy.com/buy.html">授权费用</a>。</li>
</ul>
<p>新版本的 duplicacy 命令行引入了新的快照格式,在运用此格式时<a href="https://forum.duplicacy.com/t/memory-usage-optimization/5671">大幅度降低了备份时的内存占用</a>。新版本兼容既往老版本创建的快照,所以可以平滑过渡,但老的版本将无法读取新版本创建的快照格式。</p>
<p>笔者在 <a href="https://linuxtoy.org/archives/osmc-vero-4k-review.html">Vero 4K</a> 上使用 duplicacy 进行文档和媒体文件的定期备份一年有余,感受如下:</p>
<ul>
<li>命令行版本功能完备,很适合脚本化执行;</li>
<li>得益于无索引数据库的去重机制,进行<strong>增量备份时的内存占用很小</strong>,且不影响同时运行的其他同步应用;</li>
<li>因其配置文件完全存放于备份原目录的设计,在异地恢复备份的方式和其他软件思路稍有不同,务必建议<a href="https://forum.duplicacy.com/t/restore-to-a-different-folder-or-computer/1103">参考官方指南</a>熟悉清楚;</li>
<li>由于需要维持跨平台兼容,目前仍不具备其他类 Unix 专属备份工具那样<strong>将备份快照的当作镜像挂载的功能</strong>,如要从备份仓库中恢复单一文件或目录,则需要熟悉<a href="https://forum.duplicacy.com/t/filters-include-exclude-patterns/1089">过滤表达式</a>;</li>
<li>文件扩展属性支持有限,所以更<strong>适合备份数据文件</strong>,而不是系统备份。</li>
</ul>
<p><a href="https://github.com/gilbertchen/duplicacy-cli/releases">duplicacy 命令行版本下载</a></p>
<p><a href="https://forum.duplicacy.com/t/duplicacy-quick-start-cli/1101">快速上手指南</a></p>PineBook Pro 暨 Wayland 下使用 Clapper 实现硬件解码视频回放2022-07-20T22:00:00+08:002022-07-20T22:00:00+08:00lovenemesistag:linuxtoy.org,2022-07-20:/archives/pinebook-pro-wayland-hwdec-video-playback-with-clapper.html<p>去年花了<a href="https://linuxtoy.org/archives/pinebook-pro-review.html">不少时间折腾的 Pinebook Pro</a> 凭借着还算趁手的键盘配合无风扇的轻量化设计特别适合外出的时候做些本地化工作。相比 Apple 今年挤牙膏式的 M2 升级,Pinebook Pro 的可用性在社区各个层面的开发者努力下有了不小的提升,其中之一就是<strong>硬件加速的本地视频回放</strong>。</p>
<p>硬件加速的视频回放是一个需要从内核层到应用层、解码库到播放器都逐步发展才能实现的功能,其中:</p>
<ul>
<li>名为 <a href="https://wiki.pine64.org/wiki/Mainline_Hardware_Decoding#Hantro">Hantro 的内核模块</a>暴露了 Rockchip R3399 VPU 硬件解码功能</li>
<li><a href="https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1141">GStreamer 的 V4L2 支持 …</a></li></ul><p>去年花了<a href="https://linuxtoy.org/archives/pinebook-pro-review.html">不少时间折腾的 Pinebook Pro</a> 凭借着还算趁手的键盘配合无风扇的轻量化设计特别适合外出的时候做些本地化工作。相比 Apple 今年挤牙膏式的 M2 升级,Pinebook Pro 的可用性在社区各个层面的开发者努力下有了不小的提升,其中之一就是<strong>硬件加速的本地视频回放</strong>。</p>
<p>硬件加速的视频回放是一个需要从内核层到应用层、解码库到播放器都逐步发展才能实现的功能,其中:</p>
<ul>
<li>名为 <a href="https://wiki.pine64.org/wiki/Mainline_Hardware_Decoding#Hantro">Hantro 的内核模块</a>暴露了 Rockchip R3399 VPU 硬件解码功能</li>
<li><a href="https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1141">GStreamer 的 V4L2 支持</a> 从而可以<a href="https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/dev-stateless-decoder.html">处理 stateless 编解码器</a></li>
<li>播放器对于编解码器库的正确调用从而可以适配各类媒体及复杂的桌面环境,譬如 <a href="https://flathub.org/apps/details/com.github.rafostar.Clapper">Clapper</a>。</li>
</ul>
<p><a href="https://flathub.org/apps/details/com.github.rafostar.Clapper">Clapper</a> 是一款基于 GStreamer 的 GNOME 媒体播放器, 特别之处在于其使用全新的 GTK4 实现界面渲染并仅依赖 GL/EGL 完成视频输出 。此外它还具备以下特点:</p>
<ul>
<li>支持 GStreamer <a href="https://gstreamer.freedesktop.org/documentation/playback/playbin3.html?gi-language=c#playbin3-page">前瞻性的 playbin3 媒体调用接口</a>,支持实时流切换和高效的 zero-copy 视频渲染;</li>
<li>对于 A 卡和 I 卡默认使用 GStreamer <a href="https://gstreamer.freedesktop.org/documentation/va/index.html?gi-language=c">新的 VA-API 接口插件 va</a>,可以实现 AV1 硬件解码回放,对于 N 卡默认使用<a href="https://gstreamer.freedesktop.org/documentation/nvcodec/index.html?gi-language=c#plugin-nvcodec">新的 nvdec 系列硬件解码插件</a></li>
<li>无标题栏的精简化设计,配合<a href="https://extensions.gnome.org/extension/4691/pip-on-top/">扩展</a>实现 GNOME 桌面环境的常驻画中画模式</li>
<li>内建<strong>部分流媒体站点 URI 解析功能</strong>,经测试 YouTube 和 Bilibili 的非付费内容均可播放; </li>
<li>支持在<strong>移动设备 SoC 常见的 V4L2 的硬件加速接口</strong>。</li>
</ul>
<p>现在划重点了,下面就是目前来说最便捷的<strong>在 Wayland 窗口管理协议下实现硬件加速视频回放</strong>的步骤:</p>
<ol>
<li>通过 <a href="https://flathub.org/apps/details/com.github.rafostar.Clapper">Flathub 安装 Clapper</a> 后,点击左上角菜单,进入“选项”/“Perference”;</li>
<li>进入 “调整” /“Tweak”选项卡,开启实验性的 <code>playbin3</code> 支持;</li>
<li>关闭并重启 Clapper,播放支持硬件加速的视频文件,点击播放进度条右侧的摄像机图标,检查所调用编码器;</li>
<li>若 A 卡和 I 卡提示 va 开头解码器(例如 <code>vah264dec</code>) ,或 N 卡提示 nv 开头的解码器(例如 <code>nvh264dec</code>),或在 Pinebook Pro 上提示 v4l2 开头的解码器(例如 <code>v4l2slh264dec</code>),则代表硬件加速已正确启用。</li>
</ol>
<p>是不是很简单?经过和另外两大开源媒体播放器(<a href="https://www.videolan.org/vlc/">VLC Media Player</a> 和 <a href="https://mpv.io/">mpv</a>)的对比,使用 Clapper 可谓是目前所需额外设置最少的能工作在 Wayland 窗口协议下的硬件加速视频回放方案。</p>
<p>硬件加速的视频回放在 Pinebook Pro 这类设备上的影响是巨大的。在开启硬件加速后,视频播放的时候 RK3399 两个 A72 的<strong>大核负载几乎为 0%</strong>,而同样视频的在先前使用软件解码回放时会使得两个大核长期保持 50% ~ 60% 的中度负载,这对于热量和电量的益处是显而易见的。此外,stateless 的 memory-to-memory 特性也使得内存需求大幅降低,现在亦可<strong>流畅播放 4K H264 和 VP9 视频</strong>。根据最新的消息,<a href="https://www.phoronix.com/scan.php?page=news_item&px=RkVDEC-HEVC-Patches">Hantro 模块针对 H265/HEVC 的硬件加速和 H264 的硬件编码加速支持</a>也已提交内核邮件列表审阅了,Pinebook Pro 未来可期。</p>跨平台 XMPP 即时聊天软件 Gajim 发布 1.4.1 版本2022-05-25T11:40:00+08:002022-05-25T11:40:00+08:00lovenemesistag:linuxtoy.org,2022-05-25:/archives/gajim-141.html<p>使用 PyGTK 开发的 XMPP 即时聊天软件 Gajim 迎来了全新设计的 1.4.X 系列,并过去的周末发布了第一个修订版本 1.4.1。</p>
<p>Gajim 上一个稳定版本发布已经为 20201 年 10 月份的 1.3.3,而阔别已久的 1.4 系列引入大量的变化,其中非常明显的便是拥抱<a href="https://gajim.org/post/2021-08-27-workspaces/">工作区设计 …</a></p><p>使用 PyGTK 开发的 XMPP 即时聊天软件 Gajim 迎来了全新设计的 1.4.X 系列,并过去的周末发布了第一个修订版本 1.4.1。</p>
<p>Gajim 上一个稳定版本发布已经为 20201 年 10 月份的 1.3.3,而阔别已久的 1.4 系列引入大量的变化,其中非常明显的便是拥抱<a href="https://gajim.org/post/2021-08-27-workspaces/">工作区设计</a>的主窗口:</p>
<p><img alt="gajim 1.4 main window" src="https://linuxtoy.org/images/gajim-window-1-4.png"></p>
<p>除了用户交互体验方面的大量全新设计外,新版本还有下列变化:</p>
<ul>
<li>完整支持 <a href="https://xmpp.org/extensions/xep-0393.html">XEP-0393</a> 消息样式(包括输入框的实时样式设定)和 <a href="https://xmpp.org/extensions/xep-0425.html">XEP-0425</a> 群聊消息审核;</li>
<li>移除不常用的 <a href="https://xmpp.org/extensions/xep-0174.html">XEP-0174</a> Zeroconf 通讯、 <a href="https://xmpp.org/extensions/xep-0107.html">XEP-0107</a>用户心情和<a href="https://xmpp.org/extensions/xep-0108.html">XEP-0108</a> 用户活动 支持;</li>
<li>整合了图片预览、插件安装器、语法高亮和 AppIndicator 通知插件,无需另行安装;</li>
<li>调整了“给自己的笔记”的功能,方便给另一台设备上登录的自己发送消息;</li>
<li>切换至 Python 3.9,在使用更新的依赖库的同时结束对于 Win7 和 32 位系统的支持;</li>
<li>大量的 Bug 修复。</li>
</ul>
<p><strong>PS</strong> 由于新版本的大量变化,本地化工作也不出意外地近乎重头再来,笔者在过去一个月中对其 2K+ 的条目逐一进行了翻译或润色。但孤军奋战难免会有疏忽,如果在使用中遇到简中本地化的问题,欢迎联系我。</p>
<ul>
<li><a href="https://gajim.org/download/">适用于 Win 和各个 Linux 发行版的官方下载</a></li>
<li><a href="https://flathub.org/apps/details/org.gajim.Gajim">适用于 Linux 的 Flathub 下载</a></li>
</ul>Kiwix 离线维基百科阅读器2022-04-06T18:00:00+08:002022-04-06T18:00:00+08:00lovenemesistag:linuxtoy.org,2022-04-06:/archives/kiwix-offline-wikipedia.html<p>Kiwix 是一款针对在没有网络的情况下查阅维基百科内容设计的阅读器,同时也可以阅读任何使用 Zim 存档的网站内容。经过简单的配置,也可以方便将其内容分享给局域网中的其他人。</p>
<p>Zim 是构建于 <a href="https://webrecorder.net/faq">Web Recorder 项目愿景之上</a>的网页存档格式,可将网站的全部内容整合并压缩为便于离线分享和存储的单一文件中。
Kiwix 项目使用该格式,将部分教育类资源站点保存下来,供没有网络或者网络不畅的社区或个人使用,实现知识的共享。其特点有:</p>
<ul>
<li>Zim 文件的阅读、检索和共享的时候无需生成临时文件,对于系统的负载也比较很小;</li>
<li>项目收集了多种语言的知名教育资源类内容,包括<a href="https://www.wikipedia.org/">维基百科</a>、<a href="https://www.gutenberg.org/">古登堡计划</a> 、<a href="https://www.ted.com/">TED</a> 等 …</li></ul><p>Kiwix 是一款针对在没有网络的情况下查阅维基百科内容设计的阅读器,同时也可以阅读任何使用 Zim 存档的网站内容。经过简单的配置,也可以方便将其内容分享给局域网中的其他人。</p>
<p>Zim 是构建于 <a href="https://webrecorder.net/faq">Web Recorder 项目愿景之上</a>的网页存档格式,可将网站的全部内容整合并压缩为便于离线分享和存储的单一文件中。
Kiwix 项目使用该格式,将部分教育类资源站点保存下来,供没有网络或者网络不畅的社区或个人使用,实现知识的共享。其特点有:</p>
<ul>
<li>Zim 文件的阅读、检索和共享的时候无需生成临时文件,对于系统的负载也比较很小;</li>
<li>项目收集了多种语言的知名教育资源类内容,包括<a href="https://www.wikipedia.org/">维基百科</a>、<a href="https://www.gutenberg.org/">古登堡计划</a> 、<a href="https://www.ted.com/">TED</a> 等;</li>
<li>维基百科类内容除了完整的内容包以外,还有依据学科题材分类单独下载,以及仅简介、详情但不包含图片的更小尺寸压缩包,适合于不同的需求;</li>
<li>Kiwix 的开源免费阅读器覆盖了<a href="https://www.kiwix.org/en/download/">常见的桌面操作系统和智能手机平台</a>;</li>
<li>亦可使用<a href="https://www.kiwix.org/en/downloads/browser-extensions/">浏览器插件或者 PWA 网站应用</a> 阅读 Zim 文件;</li>
<li>提供了<a href="https://www.kiwix.org/en/documentation/how-to-set-up-kiwix-hotspot/">生成 Raspberry Pi 专属镜像的工具</a>,方便创建预先灌装有内容且完成服务器、WiFi 热点等设置的 SD 卡;</li>
</ul>
<h3>搭建并配置 Kiwix-Serve</h3>
<p>Kiwix 的桌面版阅读器都内建了服务器功能,可将当前正在加载的 Zim 生成一个本地站点,使得同一局域网内的用户可以直接使用浏览器访问而无需任何额外工具。Kiwix-Serve 则是将这一部分功能独立分发的服务器端工具,非常适合在学校或者家庭网络内供多人分享。这里简述其配置过程:</p>
<ol>
<li>首先从 Kiwix 网站上<a href="https://www.kiwix.org/en/downloads/kiwix-serve/">下载 Kiwix-Serve 工具包</a>,这里以适用于 ARMv7 Linux 的版本为例。</li>
<li>将其压缩包内的四个文件安装至系统目录,譬如 <code>sudo install -Z kiwix-* /usr/local/bin/</code>;</li>
<li>使用 <code>kiwix-manage</code> 创建对应的资料库管理文件,譬如 <code>kiwix-manage library.xml add wikipedia_zh_all_maxi_2022-03.zim</code>;</li>
<li>之后便可以使用 <code>kiwix-serve</code> 启动服务,譬如 <code>kiwix-serve --library library.xml --port 9000</code>,端口号这里使用了 9000,也可以换成其它的;</li>
<li>然后在客户端的浏览器里就可以使用运行 <code>kiwix-serve</code> 的 IP 或者域名加端口号的方式浏览内容了,无需任何扩展或者阅读器。</li>
</ol>
<p>如果需要设置成系统服务的话,这里提供一个 systemd unit 的模板作为参考:</p>
<div class="highlight"><pre><span></span><span class="k">[Unit]</span>
<span class="na">Description</span><span class="o">=</span><span class="s">kiwix-serve Service</span>
<span class="na">Wants</span><span class="o">=</span><span class="s">network-online.target</span>
<span class="na">After</span><span class="o">=</span><span class="s">network.target</span>
<span class="k">[Service]</span>
<span class="na">Type</span><span class="o">=</span><span class="s">simple</span>
<span class="na">Restart</span><span class="o">=</span><span class="s">on-failure</span>
<span class="na">RestartSec</span><span class="o">=</span><span class="s">3</span>
<span class="na">WorkingDirectory</span><span class="o">=</span><span class="s">/var/lib/kiwix/</span>
<span class="na">ExecStart</span><span class="o">=</span><span class="s">/usr/local/bin/kiwix-serve --library /var/lib/kiwix/library.xml --port 9000</span>
<span class="na">StandardOutput</span><span class="o">=</span><span class="s">journal</span>
<span class="na">StandardError</span><span class="o">=</span><span class="s">null</span>
<span class="c1"># Hardening</span>
<span class="na">DynamicUser</span><span class="o">=</span><span class="s">true</span>
<span class="na">MemoryDenyWriteExecute</span><span class="o">=</span><span class="s">true</span>
<span class="na">NoNewPrivileges</span><span class="o">=</span><span class="s">true</span>
<span class="k">[Install]</span>
<span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span>
</pre></div>
<p>这里使用的一些 systemd 提供的安全强化措施,减少由于 <code>kiwix-serve</code> 本身潜在安全漏洞对于系统整体的影响。</p>
<p><a href="https://flathub.org/apps/details/org.kiwix.desktop">适用于各种 Linux 发行版的 Flatpak 安装包</a>
<a href="https://download.kiwix.org/release/kiwix-android/kiwix.apk">适用于 Android 平台 APK 直接下载</a>(F-Droid 版本较老,无法用于新版 Android 系统)</p>跨平台加密 DNS 和广告过滤 personalDNSfilter2022-01-13T22:00:00+08:002022-01-13T22:00:00+08:00lovenemesistag:linuxtoy.org,2022-01-13:/archives/personaldnsfilter.html<p>作为从互联网诞生之初便存在的域名解析服务 DNS,在现在日益险峻的网络环境下面临各种挑战。于是激发了多个平台上的各种实现,尝试在各自的领域解决相关的问题,但这也无形中对于普通用户和网络管理员增加了学习成本和维护难度。personalDNSfilter 是一款轻量级的跨平台 DNS 过滤代理,可以使用一套配置满足横跨 Android 移动端、桌面 Win 和 Linux 平台的安全 DNS 需求,且支持远程控制。</p>
<p>personalDNSfilter 的特点有:</p>
<ul>
<li>通过 Java(OpenJDK) 实现的完整加密 DNS 支持,包括 …</li></ul><p>作为从互联网诞生之初便存在的域名解析服务 DNS,在现在日益险峻的网络环境下面临各种挑战。于是激发了多个平台上的各种实现,尝试在各自的领域解决相关的问题,但这也无形中对于普通用户和网络管理员增加了学习成本和维护难度。personalDNSfilter 是一款轻量级的跨平台 DNS 过滤代理,可以使用一套配置满足横跨 Android 移动端、桌面 Win 和 Linux 平台的安全 DNS 需求,且支持远程控制。</p>
<p>personalDNSfilter 的特点有:</p>
<ul>
<li>通过 Java(OpenJDK) 实现的完整加密 DNS 支持,包括 <a href="https://en.wikipedia.org/wiki/DNS_over_HTTPS">DoH</a> 和 <a href="https://en.wikipedia.org/wiki/DNS_over_TLS">DoT</a>,IPv4 和 IPv6;</li>
<li>支持大多数现有的广告、恶意软件和行为追踪过滤列表,支持定期更新和规则自动去重,<strong>过滤操作完全本地完成</strong>;</li>
<li>Android 版本支持以 VPN 方式,无需 root 权限;</li>
<li>支持应用和域名白名单操作;</li>
<li>桌面版本不仅可用作本地域名解析,亦可配置接受局域网其他设备的请求;</li>
<li>支持<strong>通过 Android 远程配置和检索桌面版本</strong>;</li>
<li>一套<strong>配置文件通用于移动端和桌面端</strong>;</li>
<li>默认开启 CNAME 隐藏保护,破解使用 CNAME 伪装的跨站点追踪行为;</li>
<li>基于 GPLv2 发布的<a href="https://github.com/IngoZenz/personaldnsfilter">开源软件</a>,其 <a href="https://f-droid.org/en/packages/dnsfilter.android/">Android 版本亦发布在 F-Droid</a> 上。</li>
<li>轻量级设计,哪怕上百万条过滤规则内存占用也仅有数 MB。</li>
</ul>
<p>经过笔者一段时间的使用,相比其他针对 DNS 相关问题的应对方案,personalDNSfilter 不仅弥补了 <code>systemd-resolved</code> 不支持 DoH 的缺陷,同时规避了使用私人 DNS 执行过滤的隐私泄漏风险;且一套方案无论是居家办公还是出门在外都适用,维护起来方便不少。遂在此分享一些配置和使用方面的经验,以期有所帮助。</p>
<h3>手机 Android 版本配置</h3>
<p>这款软件的界面设计实属清奇,虽然已有完整的中文本地化,但还是强烈建议仔细阅读下<a href="https://www.zenz-solutions.de/help/">官方帮助文档</a>。</p>
<p>其 Android 版本适配性还算凑合,笔者尝试了只有 1GB RAM 的初代 Fire 7 平板,亦能流畅使用。Android TV 也能用,但是需要外接鼠标键盘操作,不支持遥控器。</p>
<p>如果深度定制的 Android 系统有类似后台节电功能的话,请不要忘了将其加入白名单,并<strong>在 VPN 设置中将其设定为“始终开启的 VPN”</strong>市保护常在。</p>
<h3>桌面 Linux 版本配置</h3>
<p>自 <a href="https://github.com/IngoZenz/personaldnsfilter/releases/tag/1.50.52.2">1.50.52.2 版本</a>之后,在<a href="https://www.zenz-solutions.de/?smd_process_download=1&download_id=67">官方的完整安装包</a>中提供了适用于 Win 和 Linux 系统的配置脚本,可以阅读其 README 之后直接使用。</p>
<p>如果已经配置好了 Android 版本的话,可以将其 <code>dnsfilter.conf</code> 文件复制到完整安装包解压后的文件夹中直接使用,非常的方便。</p>
<h3>手机远程配置和管理</h3>
<p>personalDNSfilter 的手机端还支持远程控制桌面端版本,只需要在桌面版本的 <code>dnsfilter.conf</code> 中配置好 <code>server_remote_ctrl_keyphrase</code> 密码,之后在手机 Android 版本就能随时切换至远程桌面版进程,进行配置和使用情况监控了。</p>
<p>这一点比诸如 <a href="https://pi-hole.net/">Pi-Hole</a> 和 <a href="https://openwrt.org/docs/guide-user/services/ad-blocking">Adblock</a> 的方案在实际中着实好用不少。</p>
<h3>局域网旁路 DNS 配置</h3>
<p>如果希望安装和配置了 personalDNSfilter 的设备也为局域网的其他设备提供加密 DNS 和隐私保护功能,那么可以在<code>dnsfilter.conf</code> 中将 <code>dnsProxyOnlyLocalRequests</code> 选项设置为 <code>false</code>,之后再在对应设备网络设置中的 DNS 指向到运行 personalDNSfilter 的设备即可。</p>
<p>或者更直接一些,将路由器的首选 DNS 指向运行 personalDNSfilter 的设备,这样局域网内所有设备的 DNS 都会转交由它处理,这种方式特别适合 IoT 等不支持配置网络详情的设备。</p>
<p><a href="https://www.zenz-solutions.de/personaldnsfilter-wp/">官方网站</a></p>
<p><a href="https://www.zenz-solutions.de/?smd_process_download=1&download_id=67">包含桌面版本的完整安装包下载</a></p>