分享一个在老毛子固件 Pandava 守护进程运行 frpc 的脚本 / 斐讯 K2P 路由器 作者: Shine 时间: 2025-10-17 分类: Linux 评论 分享一个在老毛子固件 Pandava 守护进程运行 frpc 的脚本,比如我的斐讯 K2P 路由器,是没有富裕的闪存空间存放二进制文件,所以必须在路由器启动的时候放置在内存缓存空间中 ## 使用方法 1. 放置脚本,你可以放置在 `/etc/storage/frpc.sh` 这里 2. 修改脚本内容 3. 完善脚本里的环境变量 * `FRPC_URL` - frpc 的下载链接,我是建议你把这个文件放到你自己的服务器(或对象存储)上。 * `FRPC_CONFIG` - frpc 的配置文件路径,配置文件必须放在 `/etc/storage` 目录下 4. 基于执行权限 `chmod +x /etc/storage/frpc/sh` 5. 非常重要的一个步骤,必须执行 `/sbin/mtd_storage.sh save` 保存命令,否则重启后文件就会消失 🫠 6. 配置 `crontab`,可以设置如定时 5 分钟运行一次这个脚本(实现守护进程) 1. 执行 `crontab -e` 编辑计划任务 2. 按下 `i` 键进入编辑模式 3. 粘贴这个内容 `*/5 * * * * /etc/storage/frpc.sh` 4. 按下 `ESC` 键,然后输入 `:wq` 保存文件并退出 7. 配置自定义启动脚本,进入路由器管理后台 `高级设置 -> 自定义设置 -> 脚本 -> 在路由器启动后执行` 1. 在最后一行写入命令 `/etc/storage/frpc.sh > /dev/null 2>&1` 2. 然后保存即可 脚本内容如下: ```shell #!/bin/sh # 文件名:/etc/storage/frpc.sh # 功能: # 1. 检查 frpc 是否已运行,若已运行则退出 # 2. 若不存在 frpc 文件则下载 # 3. 使用 nohup 后台运行,不输出日志 APP_DIR="/opt/app" FRPC_FILE="$APP_DIR/frpc" FRPC_URL="https://example.com/请换成/真是的/下载地址链接/v0.65.0-frpc_linux_mipsle" FRPC_CONFIG="/etc/storage/frpc.toml" # 检查是否已经运行 if ps | grep -v grep | grep -q "$FRPC_FILE"; then echo "frpc already running." exit 0 fi # 创建目录 [ ! -d "$APP_DIR" ] && mkdir -p "$APP_DIR" # 检查文件是否存在,否则下载 if [ ! -f "$FRPC_FILE" ]; then echo "Downloading frpc..." wget -O "$FRPC_FILE" "$FRPC_URL" chmod +x "$FRPC_FILE" fi # 检查文件是否可执行 if [ ! -x "$FRPC_FILE" ]; then echo "frpc file is not executable. Exit." exit 1 fi # 测试是否能运行(防止架构不匹配) "$FRPC_FILE" --version >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "frpc cannot run properly (maybe wrong architecture). Exit." exit 1 fi # 启动 frpc(后台运行,不输出日志) echo "Starting frpc..." nohup "$FRPC_FILE" -c "$FRPC_CONFIG" >/dev/null 2>&1 & ``` 该脚本的主要作用如下: 1. 使用 `ps` 命令检查是否有 frpc 进程运行,如果有则退出; 2. 判断是否存在程序运行目录,如果没有则创建; 3. 判断是否存在 `frpc` 文件,如果没有则下载(注意,建议将这个文件保存到你的服务器、对象存储上); 1. 然后赋予可执行权限 4. 检查下载的 `frpc` 文件是否可以运行,不可运行则退出; 5. 测试 `frpc` 是否真的能运行,不可运行则退出 6. 使用 `nohup` 后台运行 `frpc` 命令
Tailscale 子网路由轻松上手:打造无缝网络连接 作者: Shine 时间: 2025-07-28 分类: Linux 评论 今天我们来聊聊如何使用 Tailscale 的 `--advertise-routes=192.168.15.0/24,192.168.40.0/24` 参数来配置子网路由,以及客户端该如何使用它。 ## 什么是 Tailscale 和子网路由? Tailscale 是一个基于 WireGuard 的 VPN 工具,它能让你轻松构建一个安全的私有网络(Tailnet),让不同地点的设备像在同一个局域网里一样互相访问。而子网路由(Subnet Router)是 Tailscale 的一个强大功能,允许你将本地网络的子网(如家里的局域网)“分享”给 Tailnet 里的其他设备,即使这些设备不在同一个物理网络中。 通过设置 `--advertise-routes=192.168.15.0/24,192.168.40.0/24`,你可以让 Tailscale 把这两个子网的流量路由到你的 Tailnet,远程设备就能访问这些子网里的资源,比如 NAS、打印机或者其他服务。听起来是不是很酷?让我们一起来配置吧! ## 前提准备 在开始之前,确保你已经: 1. **注册了 Tailscale 账户**:访问 [Tailscale 官网](https://tailscale.com/) 注册并登录。 2. **安装了 Tailscale 客户端**:在需要配置子网路由的设备(如你的家用服务器或路由器)以及其他客户端设备(如手机、笔记本电脑)上安装 Tailscale。 3. **有管理权限**:确保你有权限在 Tailscale 管理控制台(Admin Console)中操作。 4. **了解你的网络**:确认你要分享的子网地址,比如这里我们用的是 `192.168.15.0/24` 和 `192.168.40.0/24`。 准备好了吗?让我们开始动手! ## 配置子网路由 假设你有一台 Linux 服务器(也可以是 Windows 或 macOS,但我们以 Linux 为例),它连接着你家里的局域网,里面有设备运行在 `192.168.15.0/24` 和 `192.168.40.0/24` 两个子网上。我们要把这台服务器设置为子网路由器,让 Tailnet 里的其他设备可以访问这些子网。 ### 步骤 1:启用 IP 转发 Tailscale 的子网路由需要设备支持 IP 转发。Linux 系统上,我们需要做一些简单的配置: ```bash # 启用 IPv4 转发 echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf # 如果需要支持 IPv6(本例中我们只用 IPv4,可以跳过) echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf # 应用配置 sudo sysctl -p /etc/sysctl.d/99-tailscale.conf ``` 这些命令确保你的服务器可以转发网络流量。如果你的系统没有 `/etc/sysctl.d` 目录,可以直接写入 `/etc/sysctl.conf`。 ### 步骤 2:设置子网路由 接下来,我们在这台服务器上运行 Tailscale 的命令,告诉它要分享哪些子网: ```bash sudo tailscale up --advertise-routes=192.168.15.0/24,192.168.40.0/24 ``` 这条命令做了什么? - `--advertise-routes` 参数告诉 Tailscale 这台设备要“广播”两个子网:`192.168.15.0/24` 和 `192.168.40.0/24`。 - 如果你的设备已经通过 `tailscale up` 登录过,可以用 `tailscale set` 更新路由: ```bash sudo tailscale set --advertise-routes=192.168.15.0/24,192.168.40.0/24 ``` ### 步骤 3:批准子网路由 设置好路由后,你需要到 Tailscale 的管理控制台([login.tailscale.com](https://login.tailscale.com))批准这些路由: 1. 登录 Tailscale 管理控制台,进入 **Machines** 页面。 2. 找到刚刚配置的服务器(会有一个 “Subnets” 标签)。 3. 点击右侧的菜单(三个点),选择 **Edit route settings**。 4. 勾选 `192.168.15.0/24` 和 `192.168.40.0/24`,然后点击 **Save**。 如果你的 Tailnet 配置了 `autoApprovers`,这一步可以自动完成,无需手动批准。想了解更多,可以参考 [Tailscale 文档](https://tailscale.com/kb/1019/subnets/)。[](https://tailscale.com/kb/1019/subnets) ### 步骤 4:验证子网路由 配置完成后,验证一下路由是否生效: 1. 在服务器上运行: ```bash tailscale status ``` 确认设备在线,并且可以看到 Tailscale 的 IP 地址(通常是 `100.x.x.x` 格式)。 2. 从另一台 Tailnet 设备(比如你的笔记本电脑)尝试 ping 子网内的设备: ```bash ping 192.168.15.1 ``` 如果能收到回复,说明子网路由已经工作啦! ## 客户端如何使用 现在,你的子网路由已经配置好,Tailnet 里的其他设备该怎么访问这些子网呢?很简单! ### 客户端配置 1. **确保客户端已连接 Tailnet**: 在你的手机、笔记本电脑或其他设备上,运行 Tailscale 客户端并登录。可以用以下命令检查: ```bash tailscale status ``` 2. **启用子网路由**: - 在 **Linux** 上,默认不自动接受子网路由,需要运行: ```bash tailscale up --accept-routes ``` - 在 **Windows** 和 **macOS** 上,子网路由默认启用,无需额外配置。 - 在 **Android** 或 **iOS** 上,打开 Tailscale 应用,进入设置,启用 “Use Tailscale subnets” 选项。[](https://superuser.com/questions/1889154/why-am-i-unable-to-use-local-ip-with-tailscale-subnet-router) 3. **访问子网资源**: 现在,你可以直接用 IP 地址访问子网内的设备,比如: - 访问 `192.168.15.10` 上的 Web 服务:打开浏览器,输入 `http://192.168.15.10`。 - SSH 到 `192.168.40.5`:运行 `ssh user@192.168.40.5`。 ### 小贴士 - **DNS 配置**:如果你的子网设备使用的是本地 DNS(比如 Pi-hole),你可能需要在 Tailscale 管理控制台的 **DNS** 页面添加本地 DNS 服务器的 Tailscale IP,并启用 “Override local DNS” 选项,确保 DNS 查询走 Tailnet。[](https://fullmetalbrackets.com/blog/comprehensive-guide-tailscale-securely-access-home-network/) - **性能注意事项**:Windows 的子网路由性能可能不如 Linux,因为它使用的是用户空间网络栈。如果需要高性能,推荐用 Linux 设备作为子网路由器。[](https://www.reddit.com/r/Tailscale/comments/vqdgfy/here_is_the_howtoconfigure_tailscale_subnet/) - **防火墙**:确保子网路由器的防火墙允许转发流量。如果使用 `firewalld`,可以运行: ```bash sudo firewall-cmd --add-masquerade --permanent sudo firewall-cmd --reload ``` ## 遇到问题怎么办? 配置过程中可能会遇到一些小问题,别慌!这里是几个常见问题和解决办法: - **无法 ping 子网设备**:检查子网路由器是否在线,路由是否在管理控制台被批准,还要确认目标设备的防火墙没有阻止 Tailscale 的流量。 - **DNS 解析失败**:确保 Tailscale 的 DNS 设置正确,或者尝试直接用 IP 地址访问。 - **路由冲突**:如果你的本地网络和 Tailnet 有重叠的 IP 范围,可以调整 `--advertise-routes` 为更具体的子网(如从 `/24` 改为 `/25`)来避免冲突。[](https://tailscale.com/kb/1023/troubleshooting) 如果还有其他问题,可以去 [Tailscale 社区](https://tailscale.com/contact/support) 或 Reddit 的 r/Tailscale 寻求帮助,那里有很多热心的用户和专家。[](https://www.reddit.com/r/Tailscale/comments/vqdgfy/here_is_the_howtoconfigure_tailscale_subnet/) ## 总结 通过 Tailscale 的 `--advertise-routes=192.168.15.0/24,192.168.40.0/24` 参数,你可以轻松把家里的子网分享到 Tailnet,让远程设备无缝访问本地资源。整个过程就像搭积木一样:启用 IP 转发、设置路由、批准路由、客户端启用子网访问,简单几步就搞定! 希望这篇教程能帮到你!如果你有任何问题,或者想分享你的 Tailscale 使用心得,欢迎在评论区告诉我。让我们一起探索 Tailscale 的更多可能性,打造一个超级便捷的私有网络吧!🚀
使用 Caddy 搭建 WebDAV 服务端 作者: Shine 时间: 2024-12-24 分类: Linux 评论 ## 安装 安装有 2 种方法,一种是自定义构建,另外一种是从 Caddy Download 页面下载。 本文采用第二种方法从 Caddy Download 页面下载。 1. 访问 https://caddyserver.com/download 2. 搜索 `webdav` 并点击选中 3. 选择对应的平台架构 4. 点击 **Download** 按钮下载  ## Caddyfile 配置 ### 生成 hash 密码 > 生成后待会用的上 * 使用 `caddy hash-password` 交互生成密码 hash * 直接使用 `caddy hash-password -p 12345678` 来生成密码 *12345678* 的 hash(注意 *12345678* 可以替换为你要生成的密码) ### 示例配置 **Caddyfile** ```Caddyfile { order webdav before file_server } :80 { # 仅处理 /webdav/ 开头的 URI handle /webdav/* { # 配置账号认证,防止被公共可获取 basicauth { # 语法:{用户名} {通过 caddy hash-password 生成} # 密码是 12345678 root $2a$14$LAqkx1nX98xpH7qwCPjDqub2vPIwZ5aT9ntVuf1QJnygKDWeD09Nu } # 启用 webdav 服务 webdav { # 定义根目录地址 root C:\Users\Shine\Downloads\ # 定义 Request URI 的前缀,与 `handle /webdav/*` 相对应,不然没办法正常处理 prefix /webdav } } redir /webdav /webdav/ } ``` ## 运行 直接使用 `caddy run` 即可启动, 或者使用 `-c` 参数指定 Caddyfile 具体文件地址 `caddy run -c c:\xx\xxx\xxx\Caddyfile`
brew 安装任意版本 PHP(7.3、7.4、8.0、8.1、8.2、8.3) 作者: Shine 时间: 2023-09-19 分类: Linux 评论 ## 依赖 * [brew](https://brew.sh/ "brew") ## 安装 首先添加 `shivammathur/php` 仓库源: ```shell brew tap shivammathur/php ``` 搜索可安装的 PHP 版本 `brew search shivammathur/php` ```shell shine@shine:~/work/xxxxx-web$ brew search shivammathur/php ==> Formulae shivammathur/php/php shivammathur/php/php@7.0-debug shivammathur/php/php@7.3 shivammathur/php/php@8.0-debug shivammathur/php/php@8.4 shivammathur/php/php-debug shivammathur/php/php@7.1 shivammathur/php/php@7.3-debug shivammathur/php/php@8.1 shivammathur/php/php@8.4-debug shivammathur/php/php@5.6 shivammathur/php/php@7.1-debug shivammathur/php/php@7.4 shivammathur/php/php@8.1-debug shivammathur/php/php@5.6-debug shivammathur/php/php@7.2 shivammathur/php/php@7.4-debug shivammathur/php/php@8.3 shivammathur/php/php@7.0 shivammathur/php/php@7.2-debug shivammathur/php/php@8.0 shivammathur/php/php@8.3-debug ``` 比如你要这些 PHP 版本就这样操作: * PHP 8.1:`brew install shivammathur/php/php@8.1` * PHP 8.2:`brew install shivammathur/php/php@8.2` * PHP 8.3:`brew install shivammathur/php/php@8.3`
批量修改 git commit 的作者和邮箱信息 作者: Shine 时间: 2023-03-31 分类: Linux 评论 ## 脚本 通过此脚本即可实现一键修改 ```shell #!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="填写原来的邮箱" CORRECT_NAME="填写现在的名称" CORRECT_EMAIL="填写现在的邮箱" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags ``` 运行后,然后执行 `git push -f` 即可