diff --git a/README.md b/README.md index 6781f78..569a0a2 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ **English** | [Русский](README.ru.md) | [简体中文](README.zh-CN.md) [![Build](https://github.com/OpenIPC/vtesse/actions/workflows/build.yml/badge.svg)](https://github.com/OpenIPC/vtesse/actions/workflows/build.yml) -[![Release](https://img.shields.io/badge/download-latest-blue)](https://github.com/OpenIPC/vtesse/releases/tag/latest) +[![Release](https://img.shields.io/badge/download-latest-blue)](https://github.com/OpenIPC/vtesse/releases/latest) [![License](https://img.shields.io/badge/license-Prosperity%203.0-blue)](LICENSE.md) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Android-brightgreen)](docs/architecture.md) [![Status](https://img.shields.io/badge/status-prototype-orange)](docs/security.md) @@ -27,7 +27,7 @@ A resource access microsystem: a client for existing **VTun** servers (`vtund -s ## Download -Static binaries (no dependencies) are on the [releases page](https://github.com/OpenIPC/vtesse/releases): [`latest`](https://github.com/OpenIPC/vtesse/releases/tag/latest) is rebuilt from every push to `main` (stable file names, used below). The release title shows the VTesse version; the change history is in [CHANGELOG.md](CHANGELOG.md). +Static binaries (no dependencies) are on the [releases page](https://github.com/OpenIPC/vtesse/releases): [`latest`](https://github.com/OpenIPC/vtesse/releases/latest) is rebuilt from every push to `main` (stable file names, used below). The release title shows the VTesse version; the change history is in [CHANGELOG.md](CHANGELOG.md). | Platform | `ARCH` | |-------------------------------------------------------------------------------------------------|----------| @@ -41,6 +41,31 @@ One binary per platform, `vtesse-ARCH`, with both backends: lwIP (SOCKS5 / port The releases also carry the VTun server for PCs and servers, `vtund-3.0.2-x86_64`: the original VTun 3.0.2 with our patches (a refused login is logged with the device ID and the reason), see [server/README.md](server/README.md). For cameras and routers vtund is built in the OpenIPC environment when needed. +### Permanent links + +There is one release, [`latest`](https://github.com/OpenIPC/vtesse/releases/latest), titled `VTesse `; every push to `main` rebuilds it, and no versioned releases are kept. File names carry no version (only the VTun server's follows the VTun version), so these links never change: + +| File | What it is | Permanent link | +|------------------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------| +| `vtesse-arm32` | client, 32-bit ARM | | +| `vtesse-mipsel` | client, MIPS little-endian | | +| `vtesse-mips` | client, MIPS big-endian | | +| `vtesse-arm64` | client, 64-bit ARM | | +| `vtesse-x86_64` | client, PCs and servers | | +| `vtesse-android.apk` | Android app | | +| `vtund-3.0.2-x86_64` | VTun server with our patches, PCs (follows the VTun version) | | +| `vtesse-hook.sh` | TAP hook script | | +| `vtesse-udhcpc.script` | udhcpc script for the TAP interface | | +| `S99vtesse` | init script, OpenIPC (BusyBox) | | +| `vtesse.init` | init script, OpenWrt (procd) | | +| `SHA256SUMS` | checksums of all files | | + +```sh +curl -fsSLO https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-arm32 +curl -fsSLO https://github.com/OpenIPC/vtesse/releases/latest/download/SHA256SUMS +grep ' vtesse-arm32$' SHA256SUMS | sha256sum -c - && chmod 755 vtesse-arm32 +``` + ### Configuration All installations below read `/etc/vtesse.conf` (the session name is the device ID: 12 characters `0-9A-F`, also used as the MAC): @@ -62,7 +87,7 @@ On a camera or router the ID can come from the device's own MAC instead: replace ```sh # as root; ARCH = arm32 or mipsel, see the table ARCH=arm32 -URL=https://github.com/OpenIPC/vtesse/releases/download/latest +URL=https://github.com/OpenIPC/vtesse/releases/latest/download # directories, then each file straight to its place, executable on success mkdir -p /usr/bin /usr/share/vtesse /etc/init.d curl -fsSL -o /usr/bin/vtesse $URL/vtesse-$ARCH && chmod 755 /usr/bin/vtesse @@ -87,7 +112,7 @@ Start at boot (`S99vtesse` is already installed; settings can be overridden in ` opkg update && opkg install curl kmod-tun # kmod-tun is needed for --tap only; apk add curl kmod-tun on OpenWrt 25+ # ARCH = mipsel (MT7621, MT7628), mips (ath79), arm64 or arm32, see the table ARCH=mipsel -URL=https://github.com/OpenIPC/vtesse/releases/download/latest +URL=https://github.com/OpenIPC/vtesse/releases/latest/download mkdir -p /usr/bin /usr/share/vtesse /etc/init.d curl -fsSL -o /usr/bin/vtesse $URL/vtesse-$ARCH && chmod 755 /usr/bin/vtesse curl -fsSL -o /usr/share/vtesse/vtesse-hook.sh $URL/vtesse-hook.sh && chmod 755 /usr/share/vtesse/vtesse-hook.sh @@ -107,14 +132,14 @@ Tried on a Netcraze Explorer NC-1621 (Keenetic rebrand, NDMS 5.2 beta, MIPS, 128 ```sh ARCH=x86_64 # x86_64; arm64 / arm32 on a Raspberry Pi with a 64-bit / 32-bit OS mkdir -p ~/.local/bin -curl -fsSL -o ~/.local/bin/vtesse https://github.com/OpenIPC/vtesse/releases/download/latest/vtesse-$ARCH && chmod 755 ~/.local/bin/vtesse +curl -fsSL -o ~/.local/bin/vtesse https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-$ARCH && chmod 755 ~/.local/bin/vtesse # no root needed: SOCKS5 on 127.0.0.1:1080 and a forward to a camera's RTSP ~/.local/bin/vtesse --config /etc/vtesse.conf --socks 1080 --forward 8554:10.78.0.10:554 ``` ### Android -Android 5.0 and later, including Android TV boxes: [`vtesse-android.apk`](https://github.com/OpenIPC/vtesse/releases/download/latest/vtesse-android.apk). No VPN permission and no VPN icon — a service with a regular notification runs the tunnel and offers SOCKS5 and port forwards on `127.0.0.1`; a player such as OpenIPC Decoder or VLC opens e.g. `rtsp://127.0.0.1:1551/...` (camera 1 of server 1). Up to three servers with up to 8 cameras each on fixed ports. The device ID is generated on first start (long press copies it) and must be added as a session on the server. Up to three server profiles, switched with one press. See [android/README.md](android/README.md). +Android 5.0 and later, including Android TV boxes: [`vtesse-android.apk`](https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-android.apk). No VPN permission and no VPN icon — a service with a regular notification runs the tunnel and offers SOCKS5 and port forwards on `127.0.0.1`; a player such as OpenIPC Decoder or VLC opens e.g. `rtsp://127.0.0.1:1551/...` (camera 1 of server 1). Up to three servers with up to 8 cameras each on fixed ports. The device ID is generated on first start (long press copies it) and must be added as a session on the server. Up to three server profiles, switched with one press. See [android/README.md](android/README.md). ![VTesse for Android: server profiles and cameras (example data)](docs/img/android-settings.png) diff --git a/README.ru.md b/README.ru.md index cff94bb..7cc2cfb 100644 --- a/README.ru.md +++ b/README.ru.md @@ -5,7 +5,7 @@ [English](README.md) | **Русский** | [简体中文](README.zh-CN.md) [![Build](https://github.com/OpenIPC/vtesse/actions/workflows/build.yml/badge.svg)](https://github.com/OpenIPC/vtesse/actions/workflows/build.yml) -[![Release](https://img.shields.io/badge/download-latest-blue)](https://github.com/OpenIPC/vtesse/releases/tag/latest) +[![Release](https://img.shields.io/badge/download-latest-blue)](https://github.com/OpenIPC/vtesse/releases/latest) [![License](https://img.shields.io/badge/license-Prosperity%203.0-blue)](LICENSE.md) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Android-brightgreen)](docs/architecture.md) [![Status](https://img.shields.io/badge/status-prototype-orange)](docs/security.md) @@ -27,7 +27,7 @@ ## Скачивание -Статические бинарники (без зависимостей) — на [странице релизов](https://github.com/OpenIPC/vtesse/releases): [`latest`](https://github.com/OpenIPC/vtesse/releases/tag/latest) пересобирается при каждом push в `main` (постоянные имена файлов, используются ниже). Версия VTesse указана в заголовке релиза; история изменений — в [CHANGELOG.md](CHANGELOG.md). +Статические бинарники (без зависимостей) — на [странице релизов](https://github.com/OpenIPC/vtesse/releases): [`latest`](https://github.com/OpenIPC/vtesse/releases/latest) пересобирается при каждом push в `main` (постоянные имена файлов, используются ниже). Версия VTesse указана в заголовке релиза; история изменений — в [CHANGELOG.md](CHANGELOG.md). | Платформа | `ARCH` | |-----------------------------------------------------------------------------------------------|----------| @@ -41,6 +41,31 @@ В релизах также есть сервер VTun для ПК и серверов, `vtund-3.0.2-x86_64`: оригинальный VTun 3.0.2 с нашими патчами (отказ во входе пишется в лог с ID устройства и причиной), см. [server/README.md](server/README.md). Для камер и роутеров vtund при необходимости собирается в среде OpenIPC. +### Постоянные ссылки + +Релиз один — [`latest`](https://github.com/OpenIPC/vtesse/releases/latest), с заголовком `VTesse <версия>`; он пересобирается при каждом push в `main`, релизы по версиям не хранятся. В именах файлов нет версии (только у сервера VTun — версия VTun), поэтому эти ссылки не меняются: + +| Файл | Что это | Постоянная ссылка | +|------------------------|----------------------------------------------------------------|-----------------------------------------------------------------------------------| +| `vtesse-arm32` | клиент, 32-битный ARM | | +| `vtesse-mipsel` | клиент, MIPS little-endian | | +| `vtesse-mips` | клиент, MIPS big-endian | | +| `vtesse-arm64` | клиент, 64-битный ARM | | +| `vtesse-x86_64` | клиент, ПК и серверы | | +| `vtesse-android.apk` | приложение для Android | | +| `vtund-3.0.2-x86_64` | сервер VTun с нашими патчами, ПК (имя меняется с версией VTun) | | +| `vtesse-hook.sh` | хук-скрипт режима TAP | | +| `vtesse-udhcpc.script` | скрипт udhcpc для интерфейса TAP | | +| `S99vtesse` | init-скрипт, OpenIPC (BusyBox) | | +| `vtesse.init` | init-скрипт, OpenWrt (procd) | | +| `SHA256SUMS` | контрольные суммы всех файлов | | + +```sh +curl -fsSLO https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-arm32 +curl -fsSLO https://github.com/OpenIPC/vtesse/releases/latest/download/SHA256SUMS +grep ' vtesse-arm32$' SHA256SUMS | sha256sum -c - && chmod 755 vtesse-arm32 +``` + ### Конфигурация Все варианты установки ниже читают `/etc/vtesse.conf` (имя сессии — ID устройства: 12 символов `0-9A-F`, он же MAC-адрес): @@ -62,7 +87,7 @@ chmod 600 /etc/vtesse.conf ```sh # от root; ARCH = arm32 или mipsel, см. таблицу ARCH=arm32 -URL=https://github.com/OpenIPC/vtesse/releases/download/latest +URL=https://github.com/OpenIPC/vtesse/releases/latest/download # каталоги, затем каждый файл сразу на своё место, права — после успешной загрузки mkdir -p /usr/bin /usr/share/vtesse /etc/init.d curl -fsSL -o /usr/bin/vtesse $URL/vtesse-$ARCH && chmod 755 /usr/bin/vtesse @@ -87,7 +112,7 @@ vtesse --config /etc/vtesse.conf --tap --ifname vtesse0 --hook /usr/share/vtesse opkg update && opkg install curl kmod-tun # kmod-tun нужен только для --tap; на OpenWrt 25+: apk add curl kmod-tun # ARCH = mipsel (MT7621, MT7628), mips (ath79), arm64 или arm32, см. таблицу ARCH=mipsel -URL=https://github.com/OpenIPC/vtesse/releases/download/latest +URL=https://github.com/OpenIPC/vtesse/releases/latest/download mkdir -p /usr/bin /usr/share/vtesse /etc/init.d curl -fsSL -o /usr/bin/vtesse $URL/vtesse-$ARCH && chmod 755 /usr/bin/vtesse curl -fsSL -o /usr/share/vtesse/vtesse-hook.sh $URL/vtesse-hook.sh && chmod 755 /usr/share/vtesse/vtesse-hook.sh @@ -107,14 +132,14 @@ curl -fsSL -o /etc/init.d/vtesse $URL/vtesse.init && chmod 755 /etc/init.d/vtess ```sh ARCH=x86_64 # x86_64; arm64 / arm32 на Raspberry Pi с 64- / 32-битной ОС mkdir -p ~/.local/bin -curl -fsSL -o ~/.local/bin/vtesse https://github.com/OpenIPC/vtesse/releases/download/latest/vtesse-$ARCH && chmod 755 ~/.local/bin/vtesse +curl -fsSL -o ~/.local/bin/vtesse https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-$ARCH && chmod 755 ~/.local/bin/vtesse # root не нужен: SOCKS5 на 127.0.0.1:1080 и проброс на RTSP камеры ~/.local/bin/vtesse --config /etc/vtesse.conf --socks 1080 --forward 8554:10.78.0.10:554 ``` ### Android -Android 5.0 и новее, включая ТВ-приставки: [`vtesse-android.apk`](https://github.com/OpenIPC/vtesse/releases/download/latest/vtesse-android.apk). Без разрешения VPN и без значка VPN — сервис с обычным уведомлением держит туннель и даёт SOCKS5 и проброс портов на `127.0.0.1`; плеер, например OpenIPC Decoder или VLC, открывает `rtsp://127.0.0.1:1551/...` (камера 1 сервера 1). До трёх серверов и до 8 камер на каждом, на фиксированных портах. ID устройства генерируется при первом запуске (долгое нажатие копирует его), его нужно добавить как сессию на сервере. До трёх профилей серверов, переключение одним нажатием. Подробнее — [android/README.md](android/README.md). +Android 5.0 и новее, включая ТВ-приставки: [`vtesse-android.apk`](https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-android.apk). Без разрешения VPN и без значка VPN — сервис с обычным уведомлением держит туннель и даёт SOCKS5 и проброс портов на `127.0.0.1`; плеер, например OpenIPC Decoder или VLC, открывает `rtsp://127.0.0.1:1551/...` (камера 1 сервера 1). До трёх серверов и до 8 камер на каждом, на фиксированных портах. ID устройства генерируется при первом запуске (долгое нажатие копирует его), его нужно добавить как сессию на сервере. До трёх профилей серверов, переключение одним нажатием. Подробнее — [android/README.md](android/README.md). ![VTesse для Android: профили серверов и камеры (пример данных)](docs/img/android-settings.png) diff --git a/README.zh-CN.md b/README.zh-CN.md index 564eb74..c1e6a2e 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -5,7 +5,7 @@ [English](README.md) | [Русский](README.ru.md) | **简体中文** [![Build](https://github.com/OpenIPC/vtesse/actions/workflows/build.yml/badge.svg)](https://github.com/OpenIPC/vtesse/actions/workflows/build.yml) -[![Release](https://img.shields.io/badge/download-latest-blue)](https://github.com/OpenIPC/vtesse/releases/tag/latest) +[![Release](https://img.shields.io/badge/download-latest-blue)](https://github.com/OpenIPC/vtesse/releases/latest) [![License](https://img.shields.io/badge/license-Prosperity%203.0-blue)](LICENSE.md) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Android-brightgreen)](docs/architecture.md) [![Status](https://img.shields.io/badge/status-prototype-orange)](docs/security.md) @@ -27,7 +27,7 @@ ## 下载 -静态二进制文件(无依赖)发布在 [Releases 页面](https://github.com/OpenIPC/vtesse/releases):[`latest`](https://github.com/OpenIPC/vtesse/releases/tag/latest) 随 `main` 的每次推送重新构建(文件名固定,下文使用)。发布标题中注明 VTesse 版本;变更记录见 [CHANGELOG.md](CHANGELOG.md)。 +静态二进制文件(无依赖)发布在 [Releases 页面](https://github.com/OpenIPC/vtesse/releases):[`latest`](https://github.com/OpenIPC/vtesse/releases/latest) 随 `main` 的每次推送重新构建(文件名固定,下文使用)。发布标题中注明 VTesse 版本;变更记录见 [CHANGELOG.md](CHANGELOG.md)。 | 平台 | `ARCH` | |--------------------------------------------------------------------------------|----------| @@ -41,6 +41,31 @@ 发布页还提供面向 PC 和服务器的 VTun 服务器 `vtund-3.0.2-x86_64`:原版 VTun 3.0.2 加上我们的补丁(登录被拒时日志会记录设备 ID 和原因),详见 [server/README.md](server/README.md)。摄像头和路由器如需 vtund,请在 OpenIPC 环境中构建。 +### 永久链接 + +只有一个发布:[`latest`](https://github.com/OpenIPC/vtesse/releases/latest),标题为 `VTesse <版本>`;每次推送到 `main` 都会重新构建它,不保留按版本的发布。文件名不含版本号(只有 VTun 服务器的文件名带 VTun 版本),因此以下链接始终不变: + +| 文件 | 说明 | 永久链接 | +|------------------------|--------------------------------------------------------|-----------------------------------------------------------------------------------| +| `vtesse-arm32` | 客户端,32 位 ARM | | +| `vtesse-mipsel` | 客户端,MIPS 小端 | | +| `vtesse-mips` | 客户端,MIPS 大端 | | +| `vtesse-arm64` | 客户端,64 位 ARM | | +| `vtesse-x86_64` | 客户端,PC 和服务器 | | +| `vtesse-android.apk` | Android 应用 | | +| `vtund-3.0.2-x86_64` | 带我们补丁的 VTun 服务器,PC(文件名随 VTun 版本变化) | | +| `vtesse-hook.sh` | TAP 钩子脚本 | | +| `vtesse-udhcpc.script` | TAP 接口的 udhcpc 脚本 | | +| `S99vtesse` | 启动脚本,OpenIPC(BusyBox) | | +| `vtesse.init` | 启动脚本,OpenWrt(procd) | | +| `SHA256SUMS` | 所有文件的校验和 | | + +```sh +curl -fsSLO https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-arm32 +curl -fsSLO https://github.com/OpenIPC/vtesse/releases/latest/download/SHA256SUMS +grep ' vtesse-arm32$' SHA256SUMS | sha256sum -c - && chmod 755 vtesse-arm32 +``` + ### 配置 下面所有安装方式都读取 `/etc/vtesse.conf`(会话名即设备 ID:12 个 `0-9A-F` 字符,同时用作 MAC 地址): @@ -62,7 +87,7 @@ chmod 600 /etc/vtesse.conf ```sh # 以 root 运行;ARCH = arm32 或 mipsel,见上表 ARCH=arm32 -URL=https://github.com/OpenIPC/vtesse/releases/download/latest +URL=https://github.com/OpenIPC/vtesse/releases/latest/download # 先建目录,再把每个文件直接下载到目标位置,下载成功后设置权限 mkdir -p /usr/bin /usr/share/vtesse /etc/init.d curl -fsSL -o /usr/bin/vtesse $URL/vtesse-$ARCH && chmod 755 /usr/bin/vtesse @@ -87,7 +112,7 @@ vtesse --config /etc/vtesse.conf --tap --ifname vtesse0 --hook /usr/share/vtesse opkg update && opkg install curl kmod-tun # kmod-tun 仅在使用 --tap 时需要;OpenWrt 25+ 使用:apk add curl kmod-tun # ARCH = mipsel(MT7621、MT7628)、mips(ath79)、arm64 或 arm32,见上表 ARCH=mipsel -URL=https://github.com/OpenIPC/vtesse/releases/download/latest +URL=https://github.com/OpenIPC/vtesse/releases/latest/download mkdir -p /usr/bin /usr/share/vtesse /etc/init.d curl -fsSL -o /usr/bin/vtesse $URL/vtesse-$ARCH && chmod 755 /usr/bin/vtesse curl -fsSL -o /usr/share/vtesse/vtesse-hook.sh $URL/vtesse-hook.sh && chmod 755 /usr/share/vtesse/vtesse-hook.sh @@ -107,14 +132,14 @@ curl -fsSL -o /etc/init.d/vtesse $URL/vtesse.init && chmod 755 /etc/init.d/vtess ```sh ARCH=x86_64 # x86_64;64 位 / 32 位系统的树莓派用 arm64 / arm32 mkdir -p ~/.local/bin -curl -fsSL -o ~/.local/bin/vtesse https://github.com/OpenIPC/vtesse/releases/download/latest/vtesse-$ARCH && chmod 755 ~/.local/bin/vtesse +curl -fsSL -o ~/.local/bin/vtesse https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-$ARCH && chmod 755 ~/.local/bin/vtesse # 无需 root:127.0.0.1:1080 上的 SOCKS5,以及到摄像机 RTSP 的转发 ~/.local/bin/vtesse --config /etc/vtesse.conf --socks 1080 --forward 8554:10.78.0.10:554 ``` ### Android -Android 5.0 及以上(包括电视盒子):[`vtesse-android.apk`](https://github.com/OpenIPC/vtesse/releases/download/latest/vtesse-android.apk)。无需 VPN 权限、没有 VPN 图标——带普通通知的服务维持隧道,并在 `127.0.0.1` 上提供 SOCKS5 和端口转发;播放器(如 OpenIPC Decoder 或 VLC)即可打开 `rtsp://127.0.0.1:1551/...`(服务器 1 的摄像机 1)。最多三台服务器,每台最多 8 台摄像机,端口固定。设备 ID 在首次启动时生成(长按可复制),需要在服务器上添加为会话。最多三个服务器配置,一键切换。详见 [android/README.md](android/README.md)。 +Android 5.0 及以上(包括电视盒子):[`vtesse-android.apk`](https://github.com/OpenIPC/vtesse/releases/latest/download/vtesse-android.apk)。无需 VPN 权限、没有 VPN 图标——带普通通知的服务维持隧道,并在 `127.0.0.1` 上提供 SOCKS5 和端口转发;播放器(如 OpenIPC Decoder 或 VLC)即可打开 `rtsp://127.0.0.1:1551/...`(服务器 1 的摄像机 1)。最多三台服务器,每台最多 8 台摄像机,端口固定。设备 ID 在首次启动时生成(长按可复制),需要在服务器上添加为会话。最多三个服务器配置,一键切换。详见 [android/README.md](android/README.md)。 ![VTesse Android 版:服务器配置与摄像头(示例数据)](docs/img/android-settings.png)