From 3c707e166bc063d5035f675d64f056c52588ee4e Mon Sep 17 00:00:00 2001 From: pooneyy <85266337+pooneyy@users.noreply.github.com> Date: Sun, 9 Nov 2025 23:47:10 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(v2raya):=20enhance=20configura?= =?UTF-8?q?tion=20and=20update=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add multiple proxy port configurations (socks5, http, http with shunt rule) - update docker-compose to use environment variables for proxy ports - improve volume configuration with timezone and kernel modules - clean up readme by removing build status badges and usage sections - update logo image 📝 docs(v2raya): simplify readme content - remove docker build status badges and travis-ci build status - remove language selection links and usage instructions - remove screenshots, notices, acknowledgments and license sections - keep only essential project description and repository link --- apps/v2raya/2.2.7.4/data.yml | 51 +++++++++++++++++++------ apps/v2raya/2.2.7.4/docker-compose.yml | 8 +++- apps/v2raya/README.md | 43 +-------------------- apps/v2raya/logo.png | Bin 4768 -> 11444 bytes 4 files changed, 47 insertions(+), 55 deletions(-) diff --git a/apps/v2raya/2.2.7.4/data.yml b/apps/v2raya/2.2.7.4/data.yml index 903bf2d2e..bc40677e3 100644 --- a/apps/v2raya/2.2.7.4/data.yml +++ b/apps/v2raya/2.2.7.4/data.yml @@ -1,23 +1,52 @@ additionalProperties: formFields: - - default: "./data" - edit: true - envKey: V2RAYA_ROOT_PATH - labelZh: 数据持久化路径 - labelEn: Data persistence path - label: - en: Data persistence path - zh: 数据持久化路径 - required: true - type: text - default: 2017 edit: true envKey: PANEL_APP_PORT_HTTP labelZh: WebUI 端口 - labelEn: WebUI port + labelEn: WebUI Port label: en: WebUI port zh: WebUI 端口 required: true rule: paramPort type: number + + - default: 20170 + edit: true + envKey: SOCKS5_PROXY_PORT + labelZh: Socks5 代理端口 + labelEn: Socks5 Proxy Port + label: + en: Socks5 Proxy Port + zh: Socks5 代理端口 + required: true + rule: paramPort + type: number + + - default: 20171 + edit: true + envKey: HTTP_PROXY_PORT + labelZh: WebUI 端口 + labelEn: WebUI port + label: + en: HTTP Proxy Port + zh: HTTP 代理端口 + required: true + rule: paramPort + type: number + + - default: 20172 + edit: true + envKey: HTTP_SHUNT_PROXY_PORT + labelZh: HTTP 代理端口(带分流规则) + labelEn: HTTP Port(Usage Shunt Rule) + label: + en: HTTP Port + zh: HTTP 代理端口 + description: + en: Usage Shunt Rule + zh: 带分流规则 + required: true + rule: paramPort + type: number diff --git a/apps/v2raya/2.2.7.4/docker-compose.yml b/apps/v2raya/2.2.7.4/docker-compose.yml index dff7c2559..3c3f6f1d4 100644 --- a/apps/v2raya/2.2.7.4/docker-compose.yml +++ b/apps/v2raya/2.2.7.4/docker-compose.yml @@ -14,9 +14,13 @@ services: privileged: true ports: - ${PANEL_APP_PORT_HTTP}:2017 - - 20170-20172:20170-20172 + - ${SOCKS5_PROXY_PORT}:20170 + - ${HTTP_PROXY_PORT}:20171 + - ${HTTP_SHUNT_PROXY_PORT}:20172 volumes: - - ${V2RAYA_ROOT_PATH}/v2raya:/etc/v2raya + - ./v2raya:/etc/v2raya + - /etc/localtime:/etc/localtime:ro + - /lib/modules:/lib/modules:ro environment: - V2RAYA_ADDRESS=0.0.0.0:2017 - V2RAYA_PLUGINLISTENPORT=32346 diff --git a/apps/v2raya/README.md b/apps/v2raya/README.md index b1dd61eea..1a35f469e 100644 --- a/apps/v2raya/README.md +++ b/apps/v2raya/README.md @@ -1,6 +1,4 @@ -# v2rayA [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/v2rayA/v2raya)](https://hub.docker.com/r/mzz2017/v2raya) [![Travis (.org)](https://img.shields.io/travis/v2rayA/v2rayA?label=travis-ci%20build)](https://travis-ci.org/v2rayA/v2rayA) - -[**English**](https://github.com/v2rayA/v2rayA/blob/feat_v5/README.md)   [**简体中文**](https://github.com/v2rayA/v2rayA/blob/feat_v5/README_zh.md) +# v2rayA v2rayA 是一个支持全局透明代理的 V2Ray Linux 客户端,同时兼容SS、SSR、Trojan(trojan-go)、[PingTunnel](https://github.com/esrrhs/pingtunnel)协议。 [[SSR支持清单]](https://github.com/v2rayA/dist/shadowsocksR/blob/master/README.md#ss-encrypting-algorithm) @@ -9,42 +7,3 @@ v2rayA 致力于提供最简单的操作,满足绝大部分需求。 得益于Web客户端的优势,你不仅可以将其用于本地计算机,还可以轻松地将它部署在路由器或NAS上。 项目地址:https://github.com/v2rayA/v2rayA - - -## 使用方法 - -v2rayA主要提供了下述使用方法: - -1. 软件源安装 -2. docker -3. 二进制文件、安装包 - -详见 [**v2rayA - Docs**](https://v2raya.org/docs/prologue/introduction/) - - -## 界面截图 - - - - -## 注意 - -1. 程序不会将任何用户数据保存在云端,所有用户数据存放在用户本地配置文件中。 - -2. **不要将本项目用于不合法用途。** - -## 感谢 - -[hq450/fancyss](https://github.com/hq450/fancyss) - -[ToutyRater/v2ray-guide](https://github.com/ToutyRater/v2ray-guide/blob/master/routing/sitedata.md) - -[nadoo/glider](https://github.com/nadoo/glider) - -[Loyalsoldier/v2ray-rules-dat](https://github.com/Loyalsoldier/v2ray-rules-dat) - -[zfl9/ss-tproxy](https://github.com/zfl9/ss-tproxy/blob/master/ss-tproxy) - -## 协议 - -[![License: AGPL v3-only](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) diff --git a/apps/v2raya/logo.png b/apps/v2raya/logo.png index 9cec3e62d1817bf3fe702d0d21ccdd15beb049a2..211d56214ebb595aa1a43c626a1e6ef515930507 100644 GIT binary patch literal 11444 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 O0000jbaz0;>2SrtTwn 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

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6