chifan的blog - 折腾
type: channel
link: https://chifan.de/category/tinkering/
items: MIUI 通过 adb 安装app失败的解决办法
items: scoop--一款Windows中的包管理器使用体验
items: 再见：所有的Windows10
items: 路由器通过校园网网页验证
items: 自建图片 api，压缩图片优化网站加载速度
items: Arch Linux使用picgo
items: arch linux 安装
items: vps 备份docker到nas
items: NAS媒体库自动下载
items: oect刷机

MIUI 通过 adb 安装app失败的解决办法
type: item
date: 2025-11-06T10:30:00+00:00
description: 最近给手机刷的类原生待机耗电一直都很高，试了很多办法都无法解决。而且如果不刷谷歌框架的话，通过 aurora store 安装的 telegram 登录又提示要收费一美元。Microg 用来代替谷歌框架又很不优雅。还是刷回 MIUI 吧。刷机半生，归来仍是 MIUI。刷了 MIUI 后，待机暂时又正常了。但是又遇到一个问题：使用 adb install 命令安装 app 失败，给我提示 Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]。然后今天摸索，只要打开 USB 调试 和 USB 安装，并且最重要的 关闭 MIUI 优化。就可以通过 adb 安装 app 了。不过居然要插入 sim 卡才能开启 USB 安装，和类原生相比限制多多......至于 MIUI优化 这个开关倒是有点陌生，关闭时会提示：多项系统应用可能无法使用，文字排版、账号、文档界面会发生重大变化。这个功能大概就是 MIUI 修改了 Android 的一些接口，让其更适合国内的应用环境。所以才会导致 adb install 命令失败。以下这篇文章介绍 miui 优化 比较详细。小米手机的系统优化（MIUI 优化）是什么？如何关闭？ | 部落驿站

scoop--一款Windows中的包管理器使用体验
type: item
date: 2025-11-01T11:59:36+00:00
description: Scoop 是在 Windows 中的一个包管理软件。优点环境纯净：不修改注册表，不污染 Windows 环境。删除应用时，直接删除文件夹即可，不留注册表垃圾。安装自动化：安装应用时无需手动“下一步”，Scoop 社区已经写好了安装脚本，一键执行。更新方便：可以方便地手动更新所有应用到最新版。在我看来，Windows 上的应用多更新利大于弊，能避免很多问题（比如我最近遇到 v2ray 旧版被 ufw 识别的风险，以及旧版 QQ 发文件对方看不到等问题）。数据持久化：使用 uninstall 命令卸载应用会保留数据，但是可以使用 scoop uninstall --purge <app_name> 命令完全删除。不用担心下载到盗版 steam。遇到的一些问题因为它不碰注册表，像“添加到右键菜单”这样的功能就需要手动操作。它没有安装页面，一些选项（如创建快捷方式、设为默认程序）就无法选择。比如我安装 Wireshark 时，它没有自动帮我装 npcap 驱动。一些写的不好的调用脚本不会调用 path 环境变量找程序，而是硬编码在 program files 目录下寻找。比如说我在安装 rime 输入法后，使用脚本安装雾凇拼音时，找不到 scoop 安装的 git。一些比较冷门的应用，比如说 picgo，就没有将脚本更新到最新。旧版 picgo 打不开 npm 插件仓库。解决办法但后来我发现，前两个问题其实都不是问题。Scoop 的维护者们早已考虑到了，并通过一种巧妙的方式解决了：答案就在 scoop info <应用名> 命令里。一般这样写：Name : 7zip Description : A multi-format file archiver with high compression ratios Version : 25.01 Source : main Website : https://www.7-zip.org License : LGPL-2.1-or-later Updated at : 2025/9/27 17:19:33 Updated by : Rafael Ledo Installed : 25.01 Binaries : 7z.exe | 7zFM.exe | 7zG.exe Shortcuts : 7-Zip Notes : Add 7-Zip as a context menu option by running: reg import "<root>\install-context.reg"就需要我们打开管理员，输入上面的 "reg import \"$dir\\install-context.reg\" 导入注册表了。对于第三个问题，一些老的或者写的不好的脚本用的硬编码解决不了，这时候只能手动调用程序解决了。第四个问题，只能手动安装新版的了，更优的方案是，在 GitHub 上找到对应的 Bucket 仓库，修改应用的 Manifest 文件（JSON格式），然后提交一个 Pull Request。这既解决了自己的问题，也帮助了整个社区。我用 bucket：dorado，主要是对国产软件适配。main，自带的。extra，主要安装的软件。game，Epic Games 或者 steam 在这里安装。参考Scoop——也许是Windows平台最好用的软件（包）管理器

再见：所有的Windows10
type: item
date: 2025-09-27T09:38:13+00:00
description: 以前我是一个保守派，认为系统和应用只要用旧的就好，新的都是堆了一些华而不实的功能，容易出 BUG ，并且为了新特性会消耗更多硬件资源。但是当我从最近的事情中改变了我的看法。WindowsWin 10 的睡眠问题困扰了我很久。Win 10 进入长时间睡眠后，大概率无法唤醒 (也就是睡死)，不得不强制关机。本来我是可以容忍的，因为我安装了 Linux 并打算大部分时间都使用 Linux。但是我为了解决 win 10 睡眠问题，打算用 s 3 睡眠，修改了注册表，关闭了虚拟机功能。最后也没成功开启 s 3 睡眠。恢复回去的时候，就遇到让我头疼的问题了。Linux 的睡眠功能也出现了异常：从睡眠中唤醒后反复进入睡眠两次。在 Linux 中改了一些设置还是无效。估计是 Windows 的异常睡眠影响到 Linux。而且 Windows 强制关机后，Linux 还会掉 Windows 所在固态的挂载，不得不使用启动 Windows 使用 chkdsk C: /f 修复才能重新挂载。将 Windows 的驱动更换成笔记本官方推荐的也无济于事。无奈重装一下系统，看看 Windows 11 怎么样，却发现 Windows 11 带来了意外之喜。睡眠问题终章更新 Windows 11 系统解决了睡眠问题。睡眠功能需要进入 cmd 键入 powercfg /hibernate on 打开睡眠功能。然后在 控制面板、硬件与声音、电源选项、系统设置 里面关闭快速启动。恢复 Windows 的右键菜单和磁贴磁贴通过 start 11 恢复 Windows 10 样式。右键菜单通过 zyperwin++ 恢复成 Windows 10 样式。（这个软件还可以激活 Windows 和下载 office 并激活的功能）Windows 11 升级体验然后是 Windows 从 10 升级到 11，带来了以下改进：休眠睡眠功能迎刃而解。有了平铺和工作区。文件资源管理器有了类似浏览器的标签页。声音设置可以单独控制多个应用的音量大小。文件压缩支持 rar、7 zip、tar。（我重装系统前的 7 zip 大概版本太久了，Win 11 的解压不能解压之前的 7 zip 压缩包）Win 11 也优化了开机自启文件的逻辑，现在是启动桌面后优先保证桌面的流畅度，然后依次打开自启动应用。以上的功能我都曾在 Windows 10 上浪费时间搜索过通过其他应用弥补。Windows 11 也不是十全十美，内存占用比 Win 10 更多。但这是为了人的体验带来的硬件消耗，如果这么想也不是不能接受。Win 11 当然也有在内存紧张的时候释放内存的策略，所以没必要有内存焦虑。自动平铺快捷键Win + 方向键 移动窗口。Win + m 隐藏。工作区快捷键Win + Ctrl + 左右 移动工作区。Win + Tab 移动打开任务视图。Win + Ctrl + D 创建工作区。手机系统升级体验手机从 HyperOS 2 升级到 HyperOS 3，有了岛的功能。这个感知最明显。还有一些细节上的优化，让我之前觉得特别丑陋的都重做了。大多数人说升级后系统流畅很多，我不是细节怪就感知不大了。并且功耗也稳住了。HyperOS 2 一天充多少次电，HyperOS 3 也差不多。一些新功能、新特性，只有大版本更新才会有。但是考虑到我朋友由于自动更新 Windows 11 导致蓝屏，和我遇到过更新显卡驱动导致打开 Steam 就系统崩溃，更新的风险也是不容忽视。更新策略思考那么该更新什么，不该更新什么？以下是我的思考：国内软件非必要不更新，如果一个软件功能完善，更新一般是为了增加广告和一些非必要的功能。国外软件如 Telegram，国际版 Bilibili 考虑可以更新。系统大版本更新看风评，是否有自己需要的功能。比如说 MIUI 13 到 HyperOS 1 就是掉进一个坑，但是 HyperOS 2 到 HyperOS 3 就是提升。电脑操作系统尽量更新安全补丁。结语Windows 10 将于 2025 年 10 月 14 日停止支持。所以，如果你像我一样之前对 Windows 11 有偏见，大可以趁这个机会换到 win 11。它带来了新的特性，持续的维护，还有解决 Windows 10 顽固 bug 的可能。至于好不好用，自己试了才知道。人生就像巧克力，你永远不知道下一块是什么味道。但是，尝试是一切的起点......

路由器通过校园网网页验证
type: item
date: 2025-09-09T13:19:00+00:00
description: 本笔记详细记录了使用 Redmi AC 2100 路由器刷入第三方固件，并通过脚本实现校园网网页认证的步骤和经验。Rm 2100选择这个型号的原因是 5 g 能通过刷老毛子固件开启 160 mhz。而且恩山讨论数挺多，感觉也许有很多刷机的方案。宿舍宽带就 500 m，rm 2100 的 5 G Wi-Fi 速率是 1733 Mbps，使用起来绰绰有余。为什么不用之前刷过的 r3g 呢？因为 r3g 散热弱于 rm 2100，5g 信号速率也才 800 mbps，宿舍使用还是追求信号好和稳定，就不打算折腾这么多插件了。固件和一些需要的软件老毛子 支持开启 160 mhz 的固件： padavan，搜索 RM 2100，下载 RM 2100_3.4.3.9-099. Trx。QB-BOOT: 适配RM2100的pb-boot正式版（大雕）-小米无线路由器及小米网络设备-恩山无线论坛 - Powered by Discuz!Breed：因为官方breed 这个网站挂掉了，然后自己找到了放自己网盘里：来自 123 云盘的分享：breed 链接：https://www.123684.com/s/rlO3jv-8s4nH 提取码：Kzg 5Openwrt 带过校园网检测插件：这个看情况选择，有多播。【2024-9-15】自编译Redmi AC2100固件，集成UA2F等，可用于校园网防检测等功能-小米无线路由器及小米网络设备-恩山无线论坛 - Powered by Discuz!官方降级包：来自 123 云盘的分享：miwifi_rm 2100_firmware_d 62... 链接：https://www.123684.com/s/rlO3jv-Ks4nH 提取码：d 8 sA降级首先需要将官方固件降级成 2.0.7 。因为旧版固件才有注入漏洞。进入路由器后台，上传上面的官方降级包。重启之后就降级成功了。注入刷入 breed从恩山中看到的注入刷入 breed 方案小米 红米【AC2100】一键刷BREED【30秒刷完】小白帅小伙专用 检查坏块 | 无需Telnet-小米无线路由器及小米网络设备-恩山无线论坛 - Powered by Discuz!核心步骤主要是因为官方breed 无法访问了，不能直接使用教程里面的注入 url，只能先下载 breed，然后开一个本地服务器，获取本地的 breed 刷入。（如果后面还是无法访问，只能使用我这个方法了）获取本机 ip 和路由器 ip。登录路由器后台，查看 url，将 stok 后面的值复制下来。在 breed 固件下载文件夹目录输入 cmd 进入命令行。开启一个本地服务器，python -m http.server 8080 --bind 0.0.0.0 。不要关闭这个窗口。然后是获取 breed 的 sha 256 值，certutil -hashfile breed.bin SHA256。一定要关闭 Windows 的防火墙和杀毒软件!!!然后就可以拼接成一个注入 url 了。http://【路由器的IP地址】/cgi-bin/luci/;stok=【路由器的Stok】/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=%0Acd%20%2Ftmp%0Acurl%20http%3A%2F%2F【您电脑的IP地址】%3A【HTTP服务器端口】%2F【固件文件名】%20-o%20B%0A%5B%20-z%20%22%24(sha256sum%20B%20%7C%20grep%20【固件的SHA256校验值】)%22%20%5D%20%7C%7C%20mtd%20-r%20write%20B%20Bootloader%0Ahttp://【路由器的IP地址】/cgi-bin/luci/;stok=【路由器的Stok】/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid= cd /tmp curl http://【您电脑的IP地址】:【HTTP服务器端口】/【固件文件名】 -o B [ -z "$(sha256sum B | grep 【固件的SHA256校验值】)" ] || mtd -r write B Bootloader回车后看到路由器重启，灯会从蓝变橘，最终变蓝进入系统。接着断开电源，顶住 reset 键，接上电源，如果闪蓝灯那就是 BREED。如果是闪橘灯那就是原厂 UBOOT。闪蓝灯就可以松开 reset 键了。用网线将电脑连接路由器的 lan 口，将以太网中的 ip 改成固定 ip 192.168.1.100，子网掩码 2…

自建图片 api，压缩图片优化网站加载速度
type: item
date: 2025-08-23T10:09:00+00:00
description: 之前一直是用第三方图片 API 当作博客文章封面，但是有一些图片并不符合我的审美。API 的图片挺大的，用来当作壁纸合适，但是用来当小小的文章封面未免大材小用。一页博客，加载一张 API 的图片还好，加载多张就算是懒加载也有点力不从心了。尝试过给 API 后面加上参数，限制长宽，似乎无效。那还不如自己搞一个图片 API，里面放上我喜欢的图片。于是就有了下面的折腾。还有就是用上了 picgo cli，好像还有个压缩插件，就研究了下。用到了 FFmpeg，Cloudflare worker，picgo compress 插件，还有几个图片在线处理网站。图片获取用了几张原来的 API 的图片，其他的是 B 站一个 up 的视频封面。用了获取B站(bilibili)视频封面图 – 下载 🦊 Firefox 扩展（zh-CN） 这个拓展获取。油猴脚本都过期无效了，功能也正常。图片处理抠图在线抠图软件\_图片去除背景 | remove.bg – remove.bg，用了这个网站抠图，效果还不错。在线处理Photopea | Online Photo Editor，本来想左侧左下角任务占比百分之五十的，想了想没必要，不过这个网站还是比较直观的。切割指定大小，转化 webp 格式用到了 FFmpeg，这个真是个强大的软件。用 F12 查看到封面图片的宽度，不过一般要留大一点，可能有写屏幕大一点避免模糊。#!/bin/bash # --- 配置 --- # 输入文件夹名 (仅在批量模式下生效) INPUT_DIR="半成品" # 输出文件夹名 OUTPUT_DIR="output_webp" # 目标宽度 (高度会按比例自动缩放) TARGET_WIDTH=570 # WebP 图片质量 (0-100, 推荐 80) QUALITY=80 # --- 脚本开始 --- # 创建输出文件夹 (这是一个通用操作，提前执行) mkdir -p "$OUTPUT_DIR" # 检查脚本运行时是否带有参数（文件名） if [ "$#" -gt 0 ]; then # 如果参数数量大于0，则进入“单独处理模式” echo "--- 单独处理模式 ---" echo "准备处理 $# 个指定文件..." echo "" # 遍历所有传入的参数（也就是文件名） for file in "$@"; do # 检查一下文件是否存在，避免报错 if [ -f "$file" ]; then # 获取不带路径和扩展名的文件名 filename=$(basename -- "$file") name_no_ext="${filename%.*}" echo "正在处理: $filename ..." # 使用 ffmpeg 进行转换 (核心逻辑和原来一样) ffmpeg -i "$file" -vf "scale=$TARGET_WIDTH:-1" -q:v "$QUALITY" -y "$OUTPUT_DIR/$name_no_ext.webp" else # 如果文件不存在，给个提示 echo "警告: 文件 '$file' 不存在或不是一个文件，已跳过。" fi done else # 如果参数数量为0（即没有传入任何文件名），则进入原有的“批量模式” echo "--- 批量处理模式 (处理 '$INPUT_DIR' 文件夹) ---" echo "" # 查找所有图片文件并进行转换 (这里的代码和原来完全一样) find "$INPUT_DIR" -maxdepth 1 -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.bmp" -o -iname "*.tiff" | while read -r file; do # 获取不带路径和扩展名的文件名 filename=$(basename -- "$file") name_no_ext="${filename%.*}" echo "正在处理: $filename ..." # 使用 ffmpeg 进行转换 ffmpeg -i "$file" -vf "scale=$TARGET_WIDTH:-1" -q:v "$QUALITY" -y "$OUTPUT_DIR/$name_no_ext.webp" done fi echo "" echo "--- 所有图片处理完成！---"chmod +x convert.sh # 赋予执行权限批量重命名下载下来后图片名都是乱码难以分辨，可以用以下命令将文件夹种的所有图片命名为 1. WebP 2. WebP，方便后续增加图片分辨。$i = 1; Get-ChildItem | Where-Obj…

Arch Linux使用picgo
type: item
date: 2025-08-21T15:33:30+00:00
description: GUI一样是在 obisidian 里使用 telegram 图床，之前写过一篇配置教程，大差不差。就不赘述。cloudfare+telegram图床的使用 - chifan的blogsudo pacman -S wl-clipboard # 安装 Wayland 剪贴板工具yay -S picgo # 安装picgosudo pacman -S nodejs npm # 安装Node.js和npm，否则插件无法导入配置好后如果能手动添加图片上传，obisidian 使用 image auto upload 插件无法上传，那就是无法读取剪切板内的照片，要在软件设置里面，打开 调用内置剪切板 这个功能。由于用了 electron，后台内存占用达到了夸张的 800m，考虑使用下 CLI。CLIsudo npm install picgo -g # 安装picgo—cli picgo install web-uploader-byzh # 安装使用cf图床需要的插件picgo set uploader # 设置插件，选择web-uploader设置好了后，发现 obisidian 的插件 auto upload 无法调用，原因是 CLI 并不是一个服务，没有运行在本机的某个端口。如果只是单独使用 CLI 的话，需要我在终端输入 picgo upload，然后复制一串返回图片的 URL，在 obisidian 粘贴，最后修改成 markdown 格式，这太不优雅了。想到搞个脚本，绑定一个快捷键。当按下快捷键的时候，调用 picgo upload 这个命令上传剪切板的照片，然后通过管道命令得到 picgo upload 的包括 URL 的输出，然后将其转化为 markdown 格式，保存到剪切板。但还未结束，有时候因为网络问题，这个过程并不会马上完成。如果需要我一直点开剪切板看看有没有得到输出，或者一直按粘贴键还是不优雅。这需要一个反馈，过程已完成，然后我粘贴。或者是完成后自动帮我粘贴。一开始我是想让脚本自动帮我粘贴的，但是因为我是 Wayland，由于安全性考虑，Wayland不允许任何程序（wtype）以编程方式模拟键盘输入，这条路行不通。干脆让脚本运行结束的时候来一个通知吧，通知用到了 linotify 这个工具。sudo pacman -S libnotify # 安装linotify#!/bin/bash # 确保脚本能在正确的环境下找到所有命令 export PATH=/usr/bin:$PATH # 创建临时文件 TMP_FILE="/tmp/picgo-clipboard-upload-$$.png" wl-paste > "$TMP_FILE" # 检查文件是否创建成功 if [ -s "$TMP_FILE" ]; then # 运行 picgo upload 并提取最后一行（URL） URL=$(picgo upload "$TMP_FILE" | tail -n 1) EXIT_CODE=${PIPESTATUS[0]} rm "$TMP_FILE" # 检查是否成功 if [ $EXIT_CODE -eq 0 ] && "$URL" == http* ; then MARKDOWN_LINK="![]($URL)" echo -n "$MARKDOWN_LINK" | wl-copy # -u normal: 设置通知级别为“普通” # "PicGo 上传成功": 通知的标题 # "Markdown 链接已复制到剪贴板": 通知的内容 notify-send -u normal "PicGo 上传成功" "Markdown 链接已复制到剪贴板" # -------------------------------- else # --- 失败时也发送通知 --- notify-send -u critical "PicGo 上传失败" "未能从 PicGo 获取有效 URL" # ------------------------------ exit 1 fi else # 剪贴板没图片时也发个通知 notify-send -u low "PicGo 操作取消" "剪贴板中没有图片" exit 1 fi将 . sh 的绝对路径绑上一个快捷键 A。使用前先截图，然后使用快捷键 A 上传，通知出来（大概一秒钟），就可以粘贴了。虽然不比 image auto upload 这个插件优雅，回报是我不用用庞大的 GUI。而且 GUI 开机启动有一个图标弹出来，需要手动隐藏... 这个设计太蠢了。

arch linux 安装
type: item
date: 2025-08-21T14:46:00+00:00
description: 我有两个硬盘，一个安装了 Windows，另一个是空硬盘，但里面有 efi 分区。没写到的基本都是照抄教程的和一些安装后的配置，就懒得写了。Linux 启动流程主板固件（UEFI）启动，并读取其内部存储（NVRAM）中的启动顺序列表。如果 ARCH 启动项位于第一位，UEFI 会根据该条目记录的物理地址，找到并执行 GRUB 的 EFI 文件。GRUB 启动后，读取其配置文件 /boot/grub/grub.cfg。配置文件告诉 GRUB 内核位于 /boot 目录，随后 GRUB 将内核加载到内存中。内核启动，系统开始运行。Arch Linux 目录结构概览/ ├── boot/ (启动目录) │ ├── efi/ <-- EFI 分区挂载点，存放 GRUB 和 Windows 的引导文件 │ ├── grub/ <-- GRUB 的配置文件 (grub.cfg) │ ├── initramfs-linux.img <-- 内核的内存镜像文件 │ └── vmlinuz-linux <-- Linux 内核本身 │ ├── etc/ (配置目录) -> 存放所有系统级软件的配置文件，如 pacman.conf, environment 等 │ ├── home/ (用户家目录) │ └── kkk/ <-- 普通用户 kkk 的家目录，所有个人文件和桌面设置都在这里 │ ├── root/ (root 用户的家目录) -> 与普通用户完全分开的专属目录 │ ├── usr/ (用户程序目录) -> 安装的绝大部分软件、库、文档都在这里，是系统最庞大的部分 │ ├── bin/ -> 用户可执行程序 │ └── lib/ -> 程序的库文件 │ ├── var/ (可变文件目录) -> 存放经常变化的文件，比如日志(log)、缓存(cache)等 │ ├── bin/ (二进制文件) -> 存放最基础的、系统启动时就需要用到的命令 (如 ls, cp) ├── sbin/ (系统二进制) -> 存放只有 root 才能使用的基础管理命令 ├── dev/ (设备文件) -> 将硬件设备（硬盘、鼠标、键盘）抽象成文件，供系统读写 ├── lib/ (库文件) -> 存放最基础的、系统启动就需要用到的库 ├── mnt/ (挂载点) -> 临时挂载其他设备的目录 └── tmp/ (临时目录) -> 存放临时文件，重启后通常会清空第一部分：安装前准备1. Windows 环境准备下载镜像：从官网下载最新的 Arch Linux 镜像。archlinux.org/download/制作启动盘：推荐：使用 Ventoy 制作，一个 U 盘可以放入多个启动镜像，非常方便。备选：使用 balenaEtcher 将镜像烧录到 U 盘。准备硬盘：在 Windows 的磁盘管理中，删除目标硬盘上的所有分区，仅保留 EFI 系统分区（这个分区将与 Arch Linux 共享）。2. BIOS 设置设置启动项：重启电脑进入 BIOS，在 Boot 页面将 U 盘（如 USB_EFI）设置为第一启动项。关闭安全启动：务必关闭 Secure Boot 选项。第二部分：在 Arch Live 环境中进行安装这一步是将 Arch Linux 临时加载到内存中，以便我们对硬盘进行分区、格式化和安装核心系统。1. 检查启动模式确认系统是以 UEFI 模式启动的。如果以下命令成功执行且没有报错，则说明是 UEFI 模式。ls /sys/firmware/efi/efivars2. 连接网络使用 iwd 工具连接到 Wi-Fi：# 1. 进入 iwd 交互工具 iwctl # 2. 查看网卡设备名 (通常是 wlan0) [iwd]# device list # 3. 扫描 Wi-Fi 网络 [iwd]# station wlan0 scan # 4. 列出扫描到的网络 [iwd]# station wlan0 get-networks # 5. 连接到你的 Wi-Fi (将 SSID 替换为你的 Wi-Fi 名称) [iwd]# station wlan0 connect "SSID" # 6. 退出 iwd [iwd]# exit # 7. 测试网络连通性 ping www.baidu.com3. 更新系统时钟timedatectl set-ntp true4. 硬盘分区首先，使用 lsblk 确认目标硬盘的名称（例如 /dev/nvme0n1）。lsblk使用 cfdisk 工具进行分区，请务必选择正确的硬盘！cfdisk /dev/nvme0n1在 cfdisk 界面中操作：删除旧分区：使用方向键 ↑ ↓ 选中目标硬盘上已有的分区（除了 EFI 分区），然…

vps 备份docker到nas
type: item
date: 2025-08-06T11:40:00+00:00
description: 添加 acls 规则进入后台的 ACL 页面，添加一条规则，明确允许 VPS 访问 NAS 的 SMB 服务端口 (445)。// 规则: 允许 VPS 访问 NAS 的 SMB 445 端口 { "action": "accept", "src": ["tag:vps"], "dst": ["tag:nas:445"] },Vps 上挂载 nas 共享文件夹此步骤的目的是让 VPS 可以像读写本地文件夹一样操作 NAS 上的共享目录。安装 SMB/CIFS 工具 (在 VPS 上执行):sudo apt update sudo apt install cifs-utils创建本地挂载点 (在 VPS 上执行):sudo mkdir -p /mnt/nas_backup创建凭证文件 (在 VPS 上执行，推荐): 为了安全，我们将 NAS 的用户名和密码存放在一个受保护的文件中。# 创建并编辑文件 sudo nano /etc/nas-credentials # 在文件中写入以下内容并保存 # username=您NAS的用户名 # password=您NAS的密码 # 锁定文件权限，确保只有 root 能读取 sudo chmod 600 /etc/nas-credentials**执行挂载 (在 VPS 上执行):通过 tailscale status 命令获取您 NAS 的 Tailscale IP (例如 100.x.x.x)。确认您 NAS 上的共享文件夹名称 (例如 vps_ryzen)。sudo mount -t cifs //100.x.x.x/vps_ryzen /mnt/nas_backup -o credentials=/etc/nas-credentials验证挂载: 运行 df -h，如果看到 /mnt/nas_backup 的条目，说明挂载成功。部署备份脚本这是执行备份任务的核心。最终备份脚本 (backup_to_nas.sh):#!/bin/bash # ================================================================= # Docker 数据卷与指定文件夹备份脚本 - 备份至 NAS (全功能版) # # 功能: # 1. 为每一次备份任务创建一个带时间戳的独立文件夹。 # 2. 同时支持备份 Docker 数据卷和服务器上的任意文件夹。 # 3. 将所有备份文件 (.tar.gz) 存入该次任务的独立文件夹中。 # 4. 自动清理指定天数前的旧备份文件夹。 # 5. 提供详细的日志输出和错误检查。 # ================================================================= # --- 可配置部分 --- # 1. 备份文件存放的根目录 (请确保这是您挂载的 NAS 目录) BACKUP_ROOT_DIR="/mnt/nas_backup" # 2. 需要备份的 Docker 卷名称列表 (用空格隔开) # 留空则跳过: VOLUMES_TO_BACKUP="" VOLUMES_TO_BACKUP="typecho_mariadb_data typecho_caddy_data" # 3. 【新增】需要备份的文件夹绝对路径列表 (用空格隔开) # - 请确保路径是绝对路径 (以 / 开头)。 # - 留空则跳过: DIRS_TO_BACKUP="" # - 示例: DIRS_TO_BACKUP="/etc/nginx /var/www/my_website" DIRS_TO_BACKUP="/root/typecho" # 4. 备份文件夹保留天数 (例如，保留最近7天的备份) RETENTION_DAYS=7 # --- 脚本核心逻辑 (一般无需修改) --- # 设置时区 export TZ='Asia/Shanghai' # 本次备份任务的唯一时间戳 DATE=$(date +%Y%m%d_%H%M%S) # 为本次备份创建一个独立的、带时间戳的子目录 CURRENT_BACKUP_DIR="${BACKUP_ROOT_DIR}/${DATE}" echo "=====================================" echo "备份任务开始于: $(date)" echo "=====================================" echo "本次所有备份文件将保存至: ${CURRENT_BACKUP_DIR}" # 确保本次备份的独立目录存在 mkdir -p ${CURRENT_BACKUP_DIR} # --- 1. …

NAS媒体库自动下载
type: item
date: 2025-08-01T12:41:00+00:00
description: 一、需要的容器Radarr: 电影管理程序。负责维护电影列表、搜索缺失的资源、下达下载指令以及整理已完成的文件。Prowlarr: 索引器管理程序。集中配置并向 Radarr 等应用提供所有索引器的搜索接口。qBittorrent: BitTorrent 客户端。负责执行具体的下载任务。FlareSolverr: Cloudflare 解决方案。作为一个中间服务，用于绕过网站的 Cloudflare 防护，使其他应用能正常访问。Jellyfin / Plex: 媒体服务器程序。负责扫描媒体库、刮削元数据（海报、简介等），并提供跨设备的播放界面。数据交互流程: Radarr -> Prowlarr -> [FlareSolverr] -> qBittorrent -> Radarr (整理) -> Jellyfin (刮削与呈现)二、自动化系统的价值质量升级: 自动监控并下载更高质量的资源来替换旧版本。文件整理: 自动完成重命名和归档，保持库结构统一。规模化管理: 无需人工干预即可高效管理大量媒体资源。三、核心技术概念PUID / PGID默认状态：Docker 容器内的程序默认以 root 用户（ID 为 0）运行。引发冲突：当这个以 root 身份运行的容器在您的硬盘上创建文件时（通过卷映射），这些文件的所有者在宿主机上也是 root。如果涉及到卷映射的一般可以设置 PUID 和 PGID 为 1000（普通用户权限），避免任何可能破坏容器环境的“越权”行为。文件权限 (File Permissions)问题：当容器日志报告对某个目录“不可写 (not writable)”或“权限被拒绝 (Permission Denied)”时，问题根源在宿主机的文件系统。解决方案：在宿主机终端，对相应目录执行 chown 和 chmod 命令，以修正目录的所有权和读写权限。sudo chown -R 1000:1000 /path/to/directorysudo chmod -R 775 /path/to/directory三、组件设置照着以下视频操作：用四款套件搭建NAS观影全自动化,实现真正的NAS观影自由教程\_哔哩哔哩\_bilibili四、故障排查流程当在 Prowlarr 中添加索引器失败或测试超时，应按以下顺序进行检查。诊断网络状态使用 itdog.cn 等第三方网络检测工具，测试目标索引器网站的域名。此步骤用于判断问题是网站本身服务中断，还是由本地网络到目标服务器之间的连接被阻断。解决网络访问问题网络阻断：若网站本身可用但无法直连，则必须使用代理。在 Prowlarr 添加索引器的设置窗口中，找到“代理(Proxy)”选项并填入代理服务器信息。Cloudflare 阻断：若错误信息明确为 Blocked by Cloudflare，则需部署 FlareSolverr 容器，并在 Prowlarr 的设置中配置 FlareSolverr 的服务地址 (http://<主机IP>:8191)。解决请求超时问题当代理和 FlareSolverr 均已配置但请求依然超时，按以下次序检查：a) 延长应用超时：在 Prowlarr 的 设置 -> 通用 中，增大 索引器超时 (Indexer Timeout) 的秒数（如 120）。b) 为 FlareSolverr 配置代理：FlareSolverr 访问目标网站同样需要通过代理。在 FlareSolverr 容器的环境变量中，必须设置 HTTP_PROXY 和 HTTPS_PROXY。c) 验证代理节点：在代理客户端中，切换并测试不同代理节点的实际可用性和速度。五、系统高级配置下载文件大小控制在 Radarr 的 设置 -> 配置文件 中，可以创建或编辑质量配置文件。选择质量等级：仅勾选所需的分辨率和编码类型（如 WEBDL-1080p）。设置文件大小：点击质量等级旁边的齿轮图标，可以设定该质量等级可接受的最小和最大文件大小（GB），Radarr 将仅下载符合此范围的资源。后面发现下使用的硬盘大小是预估的两倍排查出以下解决办法：Radarr 的 设置 - 媒体管理 - 导入中，开启使用硬链接代替复制。软链接与硬链接 检查默认 Radarr 是打开的话，那基本可以确定是文件权限不匹配的问题：ls -ln 查看输出，一般是因为 radarr 以用户 1000 运行，但是文件夹权限是 root，写入被拒绝。使用 sudo chown -R 1000:1000 /mnt/Storage1/Media 将文件夹权限交给用户。修改前 drwxr-xr-x 4 0 0 4096 Aug 1 10:06 Media。意味 4 个文件夹，UID 和 GID 都是 0。修改后 drwxr-…

oect刷机
type: item
date: 2025-07-27T14:41:00+00:00
description: ocet刷armbian本笔记记录了 OCET 设备刷入 Armbian 系统、配置 CasaOS、硬盘挂载、Docker 目录迁移、网络代理设置、二次刷机以及系统优化等步骤。Armbian 系统自带的两个重要配置命令：armbian-config # 系统设置工具，用于配置网络、用户、软件等 armbian-software # 软件管理工具，用于安装和管理软件包1. 原系统刷机请参考以下文章进行刷机操作：post.smzdm.com/p/agwx06lm/固件下载地址：GitHub - ophub/amlogic-s9xxx-armbian: Support for Armbian in Amlogic, Rockchip and Allwinner boxes. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.下载文件名为 Armbian_25.08.0_rockchip_wxy-oect 的固件。2. 设置静态 IP通过 armbian-config 工具设置静态 IP：在终端输入 armbian-config。选择 network（网络）。选择 bns 001- basic network setup（基本网络设置）。选择 eth0 网口（通常是第一个有线网口），然后回车确认。选择 static set ip manually（手动设置静态 IP）。首先会弹出设置 MAC 地址的选项，直接回车保持不变。然后输入你想要设置的静态 IP 地址，删除掉原来的默认输入。重要： 务必输入正确的网关地址，然后一直回车，后面的设置通常保持默认即可。返回到主页面，一直返回退出 armbian-config。建议： 最好不要直接在 Armbian 系统内设置静态 IP。我设置后曾遇到 ping 百度失败的问题，原因不明。更推荐的做法是，将光猫改为桥接模式后，在路由器后台为 OCET 设备设置静态 IP，这样风险更低，操作也更方便。3. 安装 CasaOS执行以下命令安装 CasaOS：curl -fsSL https://get.casaos.io | sudo bash4. 添加第三方应用商店源进入 CasaOS 界面，点击“应用商店”——“更多”，然后将以下链接粘贴进去：https://play.cuse.eu.org/Cp0204-AppStore-Play.zip5. 挂载硬盘查看硬盘挂载位置并记录 UUID：lsblk # 列出所有块设备，查看硬盘分区信息获取指定分区的 UUID：sudo blkid /dev/sda1 # 假设 /dev/sda1 是你的目标分区，获取其唯一标识符 UUID编辑 /etc/fstab 文件以实现开机自动挂载：将以下内容添加到 /etc/fstab 文件中，请将 UUID 修改为你的目标硬盘的实际 UUID。UUID=b89f4261-e017-49fe-85f0-04b441da17b7 /mnt/Storage1 ext4 defaults,noatime,nodiratime 0 2卸载临时挂载（如果之前手动挂载过）：sudo umount /mnt/Storage1重新加载所有 fstab 中定义的挂载点：sudo mount -a注意： 如果有程序正在占用硬盘，可能需要 kill 掉相关进程。如果仍然遇到问题，可以尝试 cd ~ 返回主目录，或者直接重启系统。加载 systemd 配置：sudo systemctl daemon-reload6. 更改 Docker 挂载目录此操作旨在将 Docker 的数据目录从默认位置（通常是 /var/lib/docker）迁移到挂载的硬盘上，以节省系统盘空间。在进行此操作前，建议参考 Bilibili 上的教程：只要70元轻nas——矿渣oec刷casaos保姆级教程\_哔哩哔哩\_bilibili。6.1 暂停 CasaOS 服务systemctl stop casaos*.service # 暂停所有CasaOS相关服务 systemctl status casaos.service # 查看CasaOS服务状态，确认已停止按 CTRL+C 退出状态查看命令。6.2 暂停 Docker 服务systemctl stop docker.service # 暂停Docker守护进程 systemctl status docker.service # 查看Docker服务状态，确认已停止按 CTRL+C 退出状态查看命令。6.3 创建新的镜像和卷目录在目标挂…