物理设备部署安装openwrt系统

前缀、文档修改记录

20260417 初始化编辑此文章,完稿

章节1、需求描述

all in one 容易出现设备炸了,全部功能无法使用,于是乎,家里,还是需要把路由功能从all in one里面拆开,这样的好处是,即便all in one的设备挂了,我家里的网络还是okay的。故而,选择单独一台2网口的小主机部署openwrt即可。

章节2、 环境描述

2.5英寸的移动硬盘盒1个

120GB的2.5英寸的固态硬盘1个

网线2根

双网口的D525处理器的小主机1个

用于刷机的Windows主机1台

章节3、 软件准备

1、 openwrt官网: https://downloads.openwrt.org/ , 下载最新的镜像文件,目录路径为: https://downloads.openwrt.org/releases/25.12.2/targets/x86/64/,我这里,因为是旧D525的处理器,下载 ext4 / 非uefi的固件generic-ext4-combined.img.gz ,你们买的新款的小主机,基本都是要下载 ext4 / uefi的固件 generic-ext4-combined-efi.img.gz

我这里下载到的文件: openwrt-25.12.2-x86-64-generic-ext4-combined.img.gz 日期 2026-4-17

2、 rufus官网:https://rufus.ie/downloads/ , 下载最新的rufus程序,用于写openwrt镜像到移动硬盘。

我这里下载到的文件: rufus-4.13.exe 日期 2026-4-17

章节4、 写入镜像

在Windows电脑上,解压 文件: openwrt-25.12.2-x86-64-generic-ext4-combined.img.gz ,得到格式为.img的镜像文件,使用rufus写入到2.5英寸的固态硬盘,写入过程很快,不到1分钟就可以完工。

章节5、 Openwrt初始化配置

电脑网口配置1个 192.168.1.101 / 255.255.255.0 的私网地址,使用电脑的任意浏览器登录

https://192.168.1.1   

默认用户名 root   
默认密码 空
修改,系统,系统,常规设置,主机名: GW
修改,系统,系统,常规设置,时区: Asia/Shanghai 
修改,系统,管理权,SSH访问,接口,LAN
修改,系统,管理权,HTTP(S)访问,勾选 重定向到https
修改,网络,接口,确认LAN/WAN端口工作于哪个物理端口,贴标签纸
修改,网络,接口,WAN口,协议,PPPoE,输入自己的宽带账号,宽带密码
修改,网络,接口,LAN口,修改LAN的ipaddr,到10.X.X.X的内网网段,这个可以不设置,我自己用10的段,习惯了。
系统,关机

章节6、 安装常态需要的软件并扩容文件系统

我整个固体硬盘是120GB的,系统内只占用了100多个MB,需要扩容一些容量进文件系统,通过Powershell之类的SSH工具登录进openwrt系统,如下的操作,是扩容50G的容量进文件系统。

// 如果为2.5英寸的SSD盘
apk update
apk add parted losetup resize2fs blkid unzip lsblk losetup
parted -s /dev/sda resizepart 2 50GB
losetup -a
losetup /dev/loop0 /dev/sda2
resize2fs -f /dev/loop0
reboot

章节7、 安装中文界面

还是命令行里面,执行如下的命令,即可安装中文的语言包

apk add luci-i18n-base-zh-cn

安装完毕之后,不必重启,直接刷新openwrt的网页,即可看到中文,如果没有,则在路径 系统,系统,语言界面的路径下,语言选择 简体中文,保存并应用。

常规来说,安装到这里,一个稳定的路由器系统,就安装完成了。

章节8、 安装软件passwall

首先,还是在命令行中,安装必要的依赖软件。

apk add coreutils 
apk add coreutils-base64
apk add coreutils-nohup
apk add curl
apk add ip-full
apk add libuci-lua
apk add lua
apk add luci-compat
apk add luci-lib-jsonc
apk add resolveip

因为国内环境,还是用文件本地下载后,传到路由器,然后安装,会比较稳定可靠。

从github下载所需的文件 https://github.com/Openwrt-Passwall/openwrt-passwall/releases 共计下载2个apk文件。

从这里下载所需的依赖组件 https://sourceforge.net/projects/openwrt-passwall-build/files/releases/packages-25.12/x86_64/passwall_packages/ 共计下载33个apk文件,截图未显示全部。

先安装33个组件,再安装主程序和语言的2个,大概就这样的安装步骤即可。

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

华为交换机PPP(Point-to-Point Protocol)协议配置学习笔记

前缀、文档修改记录

20260414 初始化编辑此文章,完稿

章节1、需求描述

纯粹记录一下,在eNSP环境上,学习和使用PPP/CHAP的配置过程

章节2、拓扑图

章节3、配置过程服务端R1,模拟运营商侧

[Server] aaa
[Server-aaa] local-user myuser password cipher mypass
[Server-aaa] local-user myuser service-type ppp
[Server-aaa] quit
[Server] interface Serial 0/0/0
[Server-Serial0/0/0] ppp authentication-mode chap
[Server-Serial0/0/0] ip address 10.1.1.1 30

章节4、配置过程,客户端R2,模拟用户侧

[Client] interface Serial 0/0/0
[Client-Serial0/0/0] ppp chap user myuser
[Client-Serial0/0/0] ppp chap password cipher mypass
[Client-Serial0/0/0] ip address 10.1.1.2 30

章节5、 查看接口状态

display interface serial 0/0/0

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

关于openclaw的部署、更新、插件、使用

前缀、文档修改记录

20260315 初始化编辑此文章
20260316 更新内容
20260317 更新内容
20260324 更新内容
20260325 更新内容
20260329 更新内容, 从版本20260322升级为20260328
20260331 更新内容, 版本升级成功,对接微信成功
20260411 更新内容, 优化Windows安装的步骤
20260412 更新内容, 驱动谷歌浏览器
未完待续

章节1、需求描述

就是记录一下openclaw的部署,插件安装,功能使用。因为绝大部分人,都是习惯用Windows环境,本篇文章会以Windows 10系统为基础环境进行部署的讲解。也会讲解一下基于Ubuntu 24.04系统的部署。

官网: https://openclaw.ai

源码地址: https://github.com/openclaw/openclaw

章节2、openclaw的部署过程

2.1、系统环境Ubuntu 24.04

2.1.1、 资源规格

因为是个人需求,我这里,使用的2C 4G 60G SSD的规格的虚拟机,带宽有3Mbps应该足够了,保持24小时开机运行,操作系统选择Ubuntu 24.04 或者 Debian 13 。

本篇教程使用Ubuntu最新版本的 ubuntu-24.04.4-live-server-amd64.iso 系统。

2.1.2、 官方安装推荐

根据官方最新的安装推荐指南,目前,openclaw支持一键安装,自备水管通github/nodejs的资源才能正常运行哦。

zhangsan@server$  curl -fsSL https://openclaw.ai/install.sh | bash

2.2、 系统环境Windows 10

2.2.1、 资源规格

因为Windows系统占用的资源比Linux多,这里,虚拟机的规格为8C-4G-120G。

环境主要是 cmake, chrome浏览器, git工具, nodejs环境, visual studio。

2.2.2、 安装步骤

安装nodejs的安装包, node-v24.14.0-x64.exe这个安装包, 在Win环境上的安装简单,安装完成后,CMD/Powershell里面运行如下命令,确认安装成功。

// 检查nodejs版本 v24.14.0
node -v

安装pnpm包管理器,运行如下命令

//  管理员,CMD中,执行策略限制的释放。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
选择 A
回车

//  管理员Git Bash,安装pnpm
npm install -g pnpm

//  检查版本  v10.33.0
pnpm -v

解压缩openclaw 的源代码的压缩包,我一般就直接放在我这个用户的目录下,这样Git Bash页面中,初始位置就直接可以快速访问到。

C:\Users\admxn\openclaw-2026.3.23

后续的命令,基本都是在Git Bash管理员权限下运行

// 管理员权限
cd 你的路径/openclaw-2026.4.10
//  首先是设置国内的npm源
//  设置国内镜像源 腾讯
pnpm config set registry https://mirrors.cloud.tencent.com/npm/
//  或者
//  设置国内镜像源 淘宝
pnpm config set registry https://registry.npmmirror.com

// 安装依赖,本次更新发现有1234个包,需要比较久的下载和添加时间。 约30分钟
pnpm install
//  构建 UI 与核心,需要进git bash 且为管理员,执行如下的命令
cd C:
cd Users/admxn/openclaw-2026.4.10
pnpm ui:build
pnpm build
pnpm setup    // 全局目录配置

// 关闭原来的Git Bash窗口,重新开启1个Git Bash窗口
cd Users/admxn/openclaw-2026.4.10
pnpm link --global

//  启动初始化openclaw
openclaw onboard --install-daemon

章节4、 对接火山引擎的coding plan

我这里的测试环境,对接的是火山引擎的coding plan,40元/月的那个版本

火山引擎的coding plan的购买地址: https://ark.cn-beijing.volces.com/api/coding

火山引擎的模型,各个版本的作用: https://console.volcengine.com/ark/region:ark+cn-beijing/model?groupType=ModelGroups&vendor=Bytedance&view=DEFAULT_VIEW

官方的对接方案:https://www.volcengine.com/docs/82379/2183190?lang=zh

这种对接,都是比较简单的,保存备份一下配置文件,然后编辑配置文件,增加对应的模型的信息,然后openclaw gateway restart 一下,就可以了。

章节5、 对接腾讯的coding plan

腾讯coding plan的购买地址: https://cloud.tencent.com/act/pro/codingplan

章节6、 对接阿里云的coding plan

阿里云coding plan的购买地址: https://www.aliyun.com/benefit/scene/codingplan

官方的对接方案: https://help.aliyun.com/zh/model-studio/openclaw-coding-plan?spm=a2c4g.11186623.0.0.12984c4dTEXDPy

章节6、 openclaw版本升级

我前面都是用pnpm编译安装的,而不是使用内置的更新命令,这种方式的版本更新,对于整个openclaw版本升级工作来说,这个是最稳定的。

本次版本升级是2026-3-23版本升级到2026-3-28,版本升级成功。

//  构建 UI 与核心,需要进git bash 且为管理员,执行如下的命令
cd C:
cd Users/admxn/openclaw-新版本
pnpm ui:build
pnpm build
pnpm setup 

// 管理员身份,新开git bash 
pnpm link --global

//  完成 pnpm 编译升级后,一定要运行openclaw
openclaw doctor

章节7、 对接微信

在 20260328 版本中,OpenClaw 已经极大地简化了微信(个人微信和企业微信)的接入流程。你可以通过全新的插件系统 ClawHub 快速完成对接。

手机微信,升级到最新版本,设置,我,插件,选择”微信Clawbot”

官方地址:

https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin-cli

npx -y @tencent-weixin/openclaw-weixin-cli@latest install

启动扫码登录,执行以下命令,终端会弹出一个二维码(或显示二维码链接)

openclaw login wechat

完成绑定,使用你的手机微信扫码并确认登录。此时,OpenClaw 会作为一个后台进程接管你的消息。你可以通过 openclaw config 设置哪些好友或群聊可以触发 AI 响应。

章节8、 对接谷歌浏览器

我已经在电脑上运行了本地版 OpenClaw(CLI/Server 版),你可以通过 Chrome DevTools Protocol (CDP) 接口让它控制浏览器。

以远程调试模式启动 Chrome,在启动 Chrome 时需要添加一个特定的参数,允许 OpenClaw 连接

chrome.exe --remote-debugging-port=18800

配置 OpenClaw 技能,在 OpenClaw 中安装或启用 browser 或 playwright 相关的技能(Skills)。当你在聊天框中要求 OpenClaw “帮我看看这个网页”或“帮我买张票”时,它会自动寻找并连接到 18800 端口的浏览器实例。

= = 分割线 = = = = =

= = 分割线 = = = = =

= = 分割线 = = = = =

= = 分割线 = = = = = 教材已根据官网更新

# 升级版本
openclaw update

# 检查系统状态,确保配置已正确迁移
openclaw doctor

# 重启网关服务以应用新版本
openclaw gateway restart

备份数据: 升级前请务必备份 ~/.openclaw 目录。

2.2、资源部署(Docker方式,推荐)

Docker方式的部署,对于新手村的人,可能更友好一点,故而优先介绍这个方式的部署。

用Docker方式部署,自然先部署docker容器环境。

部署docker环境,建议根据你实际的操作系统版本,根据官方教材安装,参考 https://docs.docker.com/engine/install/ubuntu/ ,可选官方的一键脚本,或者手工分步执行

一键脚本:

root@server#  curl -fsSL https://get.docker.com | sh

分步执行

// 注释 Add Docker's official GPG key:
root@server#   apt update
root@server#   apt install ca-certificates curl
root@server#   install -m 0755 -d /etc/apt/keyrings
root@server#   curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
root@server#   chmod a+r /etc/apt/keyrings/docker.asc

// 注释 Add the repository to Apt sources:
root@server#   tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

// 注释 再次更新
root@server#   apt update

// 注释 安装最新版本docker-ce
root@server#  apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

本次测试环境安装到的版本 docker-ce (5:29.3.0-1~ubuntu.24.04~noble) 时间戳202603162208

测试是否安装成功:

root@server#  docker version
root@server#  docker run hello-world

将常用的用户加到用户组里,通过将用户 zhangsan 加入 docker 组,该用户就获得了与 Docker 守护进程通信的同等权限,后续方便用zhangsan用户执行相关docker命令。

root@server#  usermod -aG docker zhangsan
参数 -a :Append(追加)。极其重要!它确保将用户添加到新组时,不会从现有的其他组中移除。
参数 -G :Groups。后面跟着的是目标用户组的名字。

Docker服务的相关启动/重启/开机自动启动

root@server#  systemctl daemon-reload
root@server#  systemctl restart docker
root@server#  systemctl enable docker  

2.3、 Openclaw部署

创建并进入 Openclaw 工作目录,获取项目文件。为了安全性,建议用普通用户执行。

zhangsan@server$  mkdir openclaw && cd openclaw
zhangsan@server$  git clone https://github.com/openclaw/openclaw.git .

获取对应的容器镜像

root@server#  docker pull alpine/openclaw:latest

环境变量的配置

cp .env.example .env
必须配置的关键项:

API_KEY: 您的 LLM 提供商密钥(如 元宝,豆包,Claude,OpenAI)。

BASE_URL: 如果使用代理(如 OpenRouter 或国内中转),请在此填写。

ADMIN_PASSWORD: 进入 Web 管理面板的初始密码。

启动openclaw,使用 Docker Compose 启动,创建或检查目录下的 docker-compose.yml 文件。一个典型的配置如下

services:
  openclaw:
    image: openclaw/openclaw:latest
    container_name: openclaw
    ports:
      - "3000:3000"
    volumes:
      - ./data:/app/data
      - .env:/app/.env
    restart: always

执行启动

docker compose up -d

如果需要检查执行日志

docker logs -f openclaw

访问面板: 在浏览器中输入 http://服务器IP:3000

安全提示: 如果无法访问,请检查云服务器的 安全组/防火墙 是否已放行 3000 端口。

权限问题: 如果挂载的 ./data 文件夹无法写入,请执行 chmod -R 777 ./data。

数据库重置: 如果遇到数据库版本冲突,通常可以通过删除 ./data/db.sqlite 并重启容器解决。

浏览器组件: 如果您使用了需要自动化 UI 的插件,确保镜像版本包含 playwright 驱动,否则会出现“Browser not found”错误。

2.3、资源部署(物理系统方式)

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

附录3、其他信息

如果要限定安装某个特定版本的docker-ce,则如下执行:

// 注释 安装某个特定版本docker-ce
root@server#  apt list --all-versions docker-ce
docker-ce/noble 5:29.2.1-1~ubuntu.24.04~noble <arch>
docker-ce/noble 5:29.2.0-1~ubuntu.24.04~noble <arch>
root@server#  VERSION_STRING=5:29.2.1-1~ubuntu.24.04~noble
root@server#  apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

关于TikTok相关域名规则集

前缀、文档修改记录

20260311 初始化编辑此文章,完稿

章节1、需求描述

章节2、高级添加方式,规则集

# --- TikTok 官方核心域名 ---
DOMAIN-SUFFIX,tiktok.com,PROXY
DOMAIN-SUFFIX,tiktokv.com,PROXY
DOMAIN-SUFFIX,tiktokw.us,PROXY
DOMAIN-SUFFIX,tiktokv.us,PROXY
DOMAIN-SUFFIX,tiktokcdn.com,PROXY
DOMAIN-SUFFIX,tiktokcdn-us.com,PROXY

# --- 静态资源与 CDN 加速 ---
DOMAIN-SUFFIX,ttwstatic.com,PROXY
DOMAIN-SUFFIX,byteoversea.com,PROXY
DOMAIN-SUFFIX,ibyteimg.com,PROXY
DOMAIN-SUFFIX,ibytedtos.com,PROXY
DOMAIN-SUFFIX,myvzw.com,PROXY
DOMAIN-SUFFIX,pstatp.com,PROXY

# --- 广告、分析与 SDK 服务 ---
DOMAIN-SUFFIX,ads-tiktok.com,PROXY
DOMAIN-SUFFIX,ttads.com,PROXY
DOMAIN-SUFFIX,byte-fcdn.com,PROXY
DOMAIN-SUFFIX,appsflyersdk.com,PROXY
DOMAIN-SUFFIX,snapkit.com,PROXY
DOMAIN-SUFFIX,app-analytics-services.com,PROXY
DOMAIN-SUFFIX.onelink.me,PROXY

# --- 登录与第三方验证补充 ---
DOMAIN-KEYWORD,tiktokcdn,PROXY
DOMAIN-SUFFIX,musical.ly,PROXY
DOMAIN-SUFFIX,sgpstatp.com,PROXY
DOMAIN-SUFFIX,snssdk.com,PROXY
DOMAIN-SUFFIX,googleapis.com,PROXY
DOMAIN-SUFFIX,onelink.me,PROXY

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

FreeMediaHeckYeah(简称 FMHY)的官方网站

前缀、文档修改记录

20260301 初始化编辑此文章,完稿

章节1、需求描述

想要为Kindle找点书,如果寻找呢

章节2、网站介绍

FreeMediaHeckYeah(简称 FMHY)的官方网站,官网 https://fmhy.net/

网站定位:数字资源“活地图”,类似原先国内的hao123那种黄页网站,用于导航索引的。

不托管文件:该网站本身不存储任何电影、软件或书籍,它更像是一个精心编排的目录或指南。

资源聚合:它汇总了数千个提供免费内容的网站链接,涵盖了从娱乐到生产力工具的方方面面。

索引的方向:

影视娱乐:电影、电视节目、动漫、直播体育赛事等。

游戏资源:PC 游戏、主机游戏、模拟器及 ROM 镜像。

阅读资料:电子书(E-books)、漫画(Comics)等。

软件工具:各类破解/开源软件、系统工具、视频编辑工具。

AI 资源:最新的大语言模型(LLM)、AI 绘图工具等相关信息。

教育学习:免费课程、学习资料和学术资源。

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

Windows系统,装系统时,选择本地账号

前缀、文档修改记录

20260301 初始化编辑此文章,完稿

章节1、需求描述

章节2、本地账号

设置 Windows 账户时输入 no@thankyou.com 或者类似账号 a@a.com 是一种绕过微软强制联网并登录账户的常用“黑招”,创建“本地账户”的选项。

另一种方法:
shift + F10 然后运行 bypassnro.cmd 这是 Windows 11 特有的官方/半官方跳过指令。
执行后系统会重启,并在联网界面增加一个**“我没有 Internet 连接”**的选项,从而实现跳过。

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

Proxmox VE的虚拟机备份

前缀、文档修改记录

20260207 初始化编辑此文章,完稿

章节1、需求描述

我家里运行了1套PVE的环境,里面有挺多的虚拟机了,因为怕丢失数据,还是有必要给这个环境上一下虚拟机备份的。

方案上,来说,PVE有一套成熟的proxmox backup server的备份方案,直接用他官方的备份方案,既能满足生产环境的需要,也更能保障兼容性和稳定性。

章节2、部署proxmox backup server

备份的盘,弄了一个14TB的盘,专门用于放备份数据,肯定妥妥够用的,路径是 /mnt/datastore/backup

指纹信息

proxmox-backup-manager cert info

章节3、添加proxmox backup server到 proxmox ve环境

浏览器登录 PVE Web, https://PVE_IP:8006

添加pbs

Datacenter  数据中心
  → Storage 存储
    → Add 增加
      → Proxmox Backup Server 
项目说明
ID存储名称(如 pbs-backup
ServerPBS 的 IP 或域名
UsernamePBS 用户(如 root@pam
Password / API Token用户密码或 API Token
DatastorePBS 上的 datastore 名
Fingerprint自动获取(推荐点 Get Fingerprint
Content勾选 VZDump backup file

添加如下:

章节4、 在proxmox ve中,配置并执行指向proxmox backup server的备份动作

在数据中心 / 备份 / 添加

存储: 选择刚刚添加的pbs: backup

计划: 根据实际的时间密度进行备份,我这里一个月备份1次,就可以了

保留3个数据的副本,覆盖3个月,足够了

备份文件的名称,按照全量信息来,好一点

{{cluster}}, {{guestname}}, {{node}}, {{vmid}}

章节5、 验证备份可行

选择1台虚拟机,备份,立即备份, 手工单次执行1下备份动作。

如果单个运行没有什么问题,可以执行,现在运行 (数据中心/备份/现在运行)

命令方式执行:

vzdump --prune-backups 'keep-last=3' --mailnotification always --notes-template '{{cluster}}, {{guestname}}, {{node}}, {{vmid}}' --mode snapshot --all 1 --storage backup --node PVE03SSD

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

Gemini域名清单,规则清单

前缀、文档修改记录

20251209 初始化编辑此文章,完稿

章节1、需求描述

Gemini 是由 Google(谷歌)开发的最强大、最通用的人工智能模型系列及其对应的助手服务。

对IP一般没有什么特别要求,比较友好,需要增加如下的域名清单,走代理方向即可。

章节2、域名清单列表

Gemini规则清单如下:

DOMAIN,accounts.google.com,PROXY
DOMAIN,analytics.google.com,PROXY
DOMAIN,android.clients.google.com,PROXY
DOMAIN,drive-thirdparty.googleusercontent.com,PROXY
DOMAIN,fonts.gstatic.com,PROXY
DOMAIN,gemini.google.com,PROXY
DOMAIN,lh3.google.com,PROXY
DOMAIN,lh3.googleusercontent.com,PROXY
DOMAIN,mtalk.google.com,PROXY
DOMAIN,ogads-pa.clients6.google.com,PROXY
DOMAIN,play.google.com,PROXY
DOMAIN,push.clients6.google.com,PROXY
DOMAIN,signaler-pa.clients6.google.com,PROXY
DOMAIN,waa-pa.clients6.google.com,PROXY
DOMAIN,www.google-analytics.com,PROXY
DOMAIN,www.google.com,PROXY
DOMAIN,www.googletagmanager.com,PROXY
DOMAIN,www.gstatic.com,PROXY

DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-SUFFIX,google-analytics.com,PROXY
DOMAIN-SUFFIX,googletagmanager.com,PROXY
DOMAIN-SUFFIX,googleusercontent.com,PROXY
DOMAIN-SUFFIX,gstatic.com,PROXY

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

Debian/Ubuntu系统下,配置并使用SFTP,分用户分目录

前缀、文档修改记录

20251009 初始化编辑此文章,完稿

章节1、需求描述

Debian/Ubuntu的Linux系统内,SFTP权限分配问题,用户user1 可以访问 /data/user1 路径和 /data/share路径, 用户user2可以访问/data/user2和/data/share路径,这样,每个用户可以拥有自己独立的存储目录,也可以有共享的目录访问权限

章节2、环境描述

今日的测试环境 Debian 12的1台Linux服务器,作为文件服务器,/data目录有做完软RAID后的500GB空间,基本不怕丢失文件的哦。

典型的 SFTP 用户目录权限隔离 + 共享目录权限设计

user1 只能访问 /data/user1 和 /data/share
user2 只能访问 /data/user2 和 /data/share
两个用户互相不能访问对方的私有目录
/data/share 为公共共享目录(权限:可读写)
最安全和推荐的方法是使用 sshd_config 配置 SFTP Chroot Jail,然后利用 Bind Mount 来挂载共享目录。

用 Chroot 限制 SFTP 用户的根目录;
用组(group)控制共享目录访问;
调整目录权限(chmod / chown);
修改 SSH 配置来限定 SFTP 行为。

章节3、配置过程,独享目录+共享目录(可读写)

// 创建 Chroot 根目录,创建用户实际数据目录,设置 chroot 目录权限(必须由 root 拥有且不可写)

mkdir -p /sftp/user1
mkdir -p /sftp/user2

mkdir -p /data/user1
mkdir -p /data/user2
mkdir -p /data/share

chown root:root /sftp/user1 /sftp/user2
chmod 755 /sftp/user1 /sftp/user2

配置 sshd,实现 chroot jail,编辑 SSH 配置文件 /etc/ssh/sshd_config , 注释掉默认的 Subsystem 行,使该行语法失效。

# Subsystem sftp /usr/lib/openssh/sftp-server

移动到文件末尾,增加相关配置,增加sftp用户组sftp_users的配置,禁止登录系统,仅允许sftp

# 使用内部 sftp-server 实现 Chroot 功能
Subsystem sftp internal-sftp

# 为 SFTP 用户定义匹配组
Match Group sftp_users
    # 强制使用 internal-sftp
    ForceCommand internal-sftp
    # 禁止 TTY 和 X11 转发
    PermitTTY no
    X11Forwarding no
    # 设置 Chroot 根目录,%h 会被替换为用户的主目录
    ChrootDirectory %h
    # 允许用户的主目录内有读写权限
    AllowTcpForwarding no

注释:这里的 %h 是一个变量,它将使用 /etc/passwd 中定义的用户主目录(Home Directory)

继续配置,在系统里增加用户的组,创建不同用户并设置主目录和组

groupadd sftp_users

useradd -m -d /sftp/user1 -s /sbin/nologin -g sftp_users user1
passwd user1

useradd -m -d /sftp/user2 -s /sbin/nologin -g sftp_users user2
passwd user2

chown user1:sftp_users /data/user1
chown user2:sftp_users /data/user2
chmod 700 /data/user1
chmod 700 /data/user2

chown root:sftp_users /data/share
chmod 770 /data/share

注释:用户的 Home 目录必须设置为 Chroot Jail 的根目录

参数 -m: 创建用户主目录(即 /sftp/user1)

参数 -d /sftp/user1: 指定主目录为 Chroot 根目录

参数 -s /sbin/nologin: 禁止用户通过 SSH 登录 Shell,只能进行 SFTP

设置 Bind Mount 挂载点,在每个用户的 Chroot 根目录下创建挂载点(目标目录),将实际数据目录挂载到 Chroot 内部的入口

mkdir /sftp/user1/user1_files
mkdir /sftp/user1/share

mount --bind /data/user1 /sftp/user1/user1_files
mount --bind /data/share /sftp/user1/share

mkdir /sftp/user2/user2_files
mkdir /sftp/user2/share

mount --bind /data/user2 /sftp/user2/user2_files
mount --bind /data/share /sftp/user2/share

编辑 /etc/fstab 文件,使挂载在系统重启后仍然生效,编辑/etc/fstab 中添加以下四行

/data/user1      /sftp/user1/user1_files  none bind 0 0
/data/share      /sftp/user1/share        none bind 0 0

/data/user2      /sftp/user2/user2_files  none bind 0 0
/data/share      /sftp/user2/share        none bind 0 0

设置目录权限,需要确保用户对实际数据目录有正确的读写权限,设置用户私有目录的权限

chown user1:user1 /data/user1
chmod 700 /data/user1

chown user2:user2 /data/user2
chmod 700 /data/user2

设置共享目录的权限

groupadd sftp_users
usermod -aG sftp_users user1
usermod -aG sftp_users user2

# 设置 /data/share 目录
chown root:sftp_users /data/share
chmod 770 /data/share 

重启服务并测试

systemctl restart sshd

注释:用户登录后,其 SFTP 根目录就是 /sftp/userN,他们将只能看到 userN_filesshare 目录

章节4、配置过程,增加只读的共享目录

只读共享目录 /data/iso , 里面放的一些iso文件,这个一般用户,只读即可。

创建目录,并设置权限: 设置它为 root 拥有且不可写。

mkdir -p /data/iso

chown root:sftp_users /data/iso
chmod 750 /data/iso                  # 确保所有用户可读、可执行(进入目录)

在 Chroot 内部创建挂载点

mkdir /sftp/user1/iso_ro
mkdir /sftp/user2/iso_ro

执行只读 Bind Mount

systemctl daemon-reload
mount --bind /data/iso /sftp/user1/iso_ro -o ro
mount --bind /data/iso /sftp/user2/iso_ro -o ro

持久化 Bind Mount(系统重启后仍然生效),编辑 /etc/fstab 文件,添加以下两行

/data/iso      /sftp/user1/iso_ro       none bind,ro 0 0
/data/iso      /sftp/user2/iso_ro       none bind,ro 0 0

注释:bind,ro 确保了挂载的持久性和只读属性

总结:

私有目录 (/data/user1, /data/user2):通过 chown 和 chmod 700 实现独占读写。

共享目录 (/data/share):通过 sftp_share 组和 chmod 2770 实现组内读写。

只读目录 (/data/iso):通过 mount --bind -o ro 实现只读访问。

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

通过公网服务器映射家里的nextcloud的webdav

前缀、文档修改记录

20251006 初始化编辑此文章,完稿,暂未解决,求助
20251008 更新文档

章节1、需求描述

家中服务器

运行 Nextcloud (Docker),没有公网 IP,通过 frpc(TCP 模式) 将 80 端口映射到公网服务器

公网服务器

运行 frps,部署 nginx + HTTPS 证书,nginx 对外暴露的是 HTTPS,nginx 反代到 frp 转发来的 nextcloud HTTP

现象:

Web(浏览器)访问正常nextcloud。WebDAV 的 HTTPS 访问(例如通过 https://nas.mydomain.com/remote.php/dav/files/...)不通。

章节2、故障排查1 – Nginx反代的时候,少了对webdav的参数支持

WebDAV 不仅用 GET / POST,还会用 PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK,这些方法如果被 nginx 屏蔽或未转发,会直接导致 WebDAV 客户端报错(例如 Windows 或 macOS Finder 会直接显示“连接失败”)。

proxy_methods 指令,因为那是 第三方模块(ngx_http_proxy_methods_module) 的语法,不在标准版 nginx 中。

只要不写 proxy_methods 和 limit_except,nginx 默认会转发所有 HTTP 方法,包括 PROPFIND。

那我这个错误,应该不是这个因素导致的。

章节3、 故障排查2 – Nextcloud的配置文件

我配置文件的路径是,/data/config/config.php,确保反代后返回的链接是 HTTPS。

指定信任来源: trusted_proxies 参数是一个数组,用于明确列出 Nextcloud 应该信任的 反向代理服务器的 IP 地址 或 IP 地址段(CIDR 格式)。

正确配置 trusted_proxies 后,Nextcloud 才能从反向代理设置的特定 HTTP 头(默认为 X-Forwarded-For)中提取出真正的 客户端 IP 地址

  'trusted_proxies' => 
  array (
    0 => '192.168.1.10', // 你的反向代理服务器的 IPv4 地址
    1 => '2001:db8::1',  // IPv6 地址示例
    2 => '172.16.0.0/12',// IP 地址段 (CIDR) 示例,例如 Docker 网络的范围
  ),
  // ... 其他配置 ...

'overwriteprotocol' => 'https',
'overwrite.cli.url' => 'https://nas.mydomain.com',

在这个参数中,增加我服务器的域名,增加服务器的IP,重启一下docker/nextcloud实例。

章节4、故障排查3 – frp的TCP多路复用

启用 TCP 多路复用,应该在配置文件中,tcp_mux = true , 不过,我这里frp 0.65.0 版本

# tcp_mux = true  # 默认就是 true,可以不写

章节5、故障排查4 – nextcloud的应用密码

Nextcloud 的 WebDAV 默认不接受普通用户密码(如果开启了双重认证、OIDC、或 brute-force protection)。

在 Nextcloud 网页端:

点击右上角头像 → “安全”; 在“设备与会话”→“创建新应用密码”; 复制生成的密码

增加了,尝试,也没有用,应该也不是这个问题。

章节6、故障排查5 – nginx的配置

对于nginx,增加http2的配置,我这里版本是1.28.0,HTTP/2 是这样启用的

listen 443 ssl;
http2 on;

完全兼容 HTTP/1.1 回退,增加上来。尴尬,也没啥用。

章节7、故障排查6 – frp的参数

我这里配的frp,走的TCP,这个可能是不对的,frps和frpc之间的tcp通道是经过TLS加密的,这样的话,可能是存在TLS in TLS的情况。

如果是这样的情况,那就直接先docker重新拉一个纯HTTP方式的nextcloud容器看看,直接映射用ftp的TCP方式映射本地的http去公网试试。

用纯HTTP倒是没啥问题。

章节8、故障排查7 – 修改注册表

Windows 需要修改注册表才能支持非微软 WebDAV 服务器

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
“BasicAuthLevel”=dword:00000002

0 禁用基本认证

1 只允许 HTTPS 基本认证

2 允许 HTTP/HTTPS 基本认证(推荐至少为 1)
net stop WebClient
net start WebClient

章节9、故障排查8 – 配置架构变化

从原先的
家中服务器:运行 Nextcloud (Docker),没有公网 IP,通过 frpc(TCP 模式) 将 80 端口映射到公网服务器
公网服务器:运行 frps,部署 nginx + HTTPS 证书,nginx 对外暴露的是 HTTPS,nginx 反代到 frp 转发来的 nextcloud HTTP

调整为
家中服务器:运行 Nextcloud (Docker)/TCP/80,没有公网 IP,通过加载证书的Nginx反代本地80到本机的TCP/SSL/443,通过 frpc(TCP 模式) 将 443 端口映射到公网服务器
公网服务器:运行 frps,通过刚刚frpc上指定的TCP/SSL/公网端口访问

即相当与HTTPS 场景的直通配置(TLS passthrough),避免经过frp隧道的时候的TLS in TLS的问题,这个也是我一开始怀疑的点。

章节10、故障排查9 – 测试 WebDAV 端点(不带认证)

curl -i http://localhost/remote.php/dav/

表示 WebDAV 接口存在,只是需要登录。

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨