目 录CONTENT

文章目录

【工具】编译tr3000 homeproxy工具

EulerBlind
2025-09-29 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

概述

HomeProxy是一个基于sing-box的现代代理平台,专为OpenWrt/ImmortalWrt设计,提供Web界面管理。本文将详细介绍如何为MT7981BA(aarch64架构)编译HomeProxy。

背景

sing-box版本更新的,发布的HomeProxy版本未及时更新,导致报错,所以干脆自己用最新代码编译一个新的。

目标平台信息

  • 设备: MT7981BA路由器(TR3000)
  • 架构: ARMv8 Processor rev 4 (v8l) x 2
  • 系统: ImmortalWrt 6.6.68

编译环境准备

1. 安装构建依赖

sudo apt update
sudo apt install -y build-essential flex bison g++ gawk gcc-multilib g++-multilib \
    gettext git libfuse-dev libncurses5-dev libssl-dev python3 python3-pip \
    python3-ply python3-pyelftools rsync unzip zlib1g-dev file wget subversion \
    patch upx-ucl autoconf automake curl asciidoc binutils bzip2 lib32gcc-s1 \
    libc6-dev-i386 uglifyjs msmtp texinfo libreadline-dev libglib2.0-dev \
    xmlto libelf-dev libtool autopoint antlr3 gperf ccache swig coreutils \
    haveged scons libpython3-dev jq

2. 获取ImmortalWrt源码

cd /home/euler/projects
git clone https://github.com/immortalwrt/immortalwrt.git
cd immortalwrt
git pull

3. 更新feeds

./scripts/feeds update -a
./scripts/feeds install -a

HomeProxy源码准备

1. 获取HomeProxy源码

cd /home/euler/projects
git clone https://github.com/VIKINGYFY/HomeProxy.git homeproxy

2. 复制到feeds目录

cd /home/euler/projects/immortalwrt
cp -r /home/euler/projects/homeproxy feeds/luci/applications/

编译配置

1. 生成默认配置

make defconfig

2. 编辑配置文件

由于无法使用交互式make menuconfig,直接编辑.config文件:

# 启用sing-box
sed -i 's/# CONFIG_PACKAGE_sing-box is not set/CONFIG_PACKAGE_sing-box=y/' .config

# 启用kmod-nft-tproxy
sed -i 's/# CONFIG_PACKAGE_kmod-nft-tproxy is not set/CONFIG_PACKAGE_kmod-nft-tproxy=y/' .config

# 启用luci-app-homeproxy
sed -i 's/# CONFIG_PACKAGE_luci-app-homeproxy is not set/CONFIG_PACKAGE_luci-app-homeproxy=y/' .config

3. 验证配置

grep -E "(luci-app-homeproxy|sing-box|kmod-nft-tproxy)" .config

编译过程

1. 清理环境

make clean
rm -rf staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl

2. 构建工具链

# 安装工具
make tools/install -j$(nproc)

# 安装工具链
make toolchain/install -j$(nproc)

3. 编译内核

make target/linux/compile -j$(nproc)

4. 编译HomeProxy

make package/luci-app-homeproxy/compile -j$(nproc) V=s

编译结果

编译成功后,在以下目录找到生成的包:

# 查看编译结果
find bin/ -name "*homeproxy*" -o -name "*sing-box*"

# 输出示例:
# bin/packages/aarch64_cortex-a53/packages/sing-box-1.12.8-r1.apk
# bin/packages/aarch64_cortex-a53/luci/luci-app-homeproxy-25.270.37846~91e480e.apk

包信息

  • sing-box-1.12.8-r1.apk: 14.9MB,sing-box内核
  • luci-app-homeproxy-25.270.37846~91e480e.apk: 599KB,LuCI Web界面

安装方法

1. 上传到路由器

scp sing-box-1.12.8-r1.apk root@路由器IP:/tmp/
scp luci-app-homeproxy-25.270.37846~91e480e.apk root@路由器IP:/tmp/

2. 在路由器上安装

# 先安装sing-box依赖
apk add --allow-untrusted /tmp/sing-box-1.12.8-r1.apk

# 再安装HomeProxy
apk add --allow-untrusted /tmp/luci-app-homeproxy-25.270.37846~91e480e.apk

3. 验证安装

# 检查服务状态
/etc/init.d/sing-box status

# 检查LuCI界面
# 访问 http://路由器IP/cgi-bin/luci
# 在"服务"菜单找到"HomeProxy"

常见问题解决

1. 签名验证失败

问题: ERROR: package.apk: UNTRUSTED signature

解决: 使用--allow-untrusted参数

apk add --allow-untrusted /tmp/package.apk

2. 依赖缺失

问题: 编译时缺少依赖

解决: 确保所有依赖包已启用

# 检查依赖
grep -E "(firewall4|kmod-nft-tproxy|ucode-mod-digest)" .config

3. 工具链问题

问题: 工具链编译失败

解决: 重新构建工具链

make clean
make tools/install -j$(nproc)
make toolchain/install -j$(nproc)

使用说明

1. Web界面访问

  • 访问路由器IP: http://192.168.1.1/cgi-bin/luci
  • 登录后进入"服务" → "HomeProxy"

2. 基本配置

  1. 节点配置: 添加代理服务器信息
  2. 规则配置: 设置分流规则
  3. DNS配置: 配置DNS服务器
  4. 启动服务: 启用HomeProxy服务

3. 高级功能

  • 透明代理: 支持透明代理模式
  • 规则分流: 支持基于域名/IP的分流
  • 多协议支持: 支持VMess、VLESS、Trojan等协议
  • 日志查看: 实时查看连接日志

总结

通过本文的步骤,成功为MT7981BA编译了HomeProxy代理工具。编译过程包括:

  1. 环境准备: 安装构建依赖和获取源码
  2. 配置编译: 启用相关包和依赖
  3. 执行编译: 构建工具链和编译包
  4. 安装使用: 在目标设备上安装和配置

HomeProxy提供了现代化的Web界面,使得代理配置更加直观和便捷,特别适合在OpenWrt/ImmortalWrt路由器上使用。

相关资源


本文基于实际编译经验整理,适用于MT7981BA平台的ImmortalWrt系统。

0
博主关闭了所有页面的评论