From 5239f70db4bfd79b2592d3f4dd0c48d1b5825432 Mon Sep 17 00:00:00 2001 From: Yu Fang Date: Tue, 29 Apr 2025 21:00:45 +0800 Subject: [PATCH] Add gateway-go --- apps/gateway-go/0.3.20/.env.sample | 3 +++ apps/gateway-go/0.3.20/data.yml | 17 +++++++++++++++++ apps/gateway-go/0.3.20/docker-compose.yml | 10 ++++++++++ apps/gateway-go/README.md | 8 ++++++++ apps/gateway-go/data.yml | 19 +++++++++++++++++++ apps/gateway-go/latest/.env.sample | 3 +++ apps/gateway-go/latest/data.yml | 17 +++++++++++++++++ apps/gateway-go/latest/docker-compose.yml | 10 ++++++++++ apps/gateway-go/logo.png | Bin 0 -> 18329 bytes 9 files changed, 87 insertions(+) create mode 100644 apps/gateway-go/0.3.20/.env.sample create mode 100644 apps/gateway-go/0.3.20/data.yml create mode 100644 apps/gateway-go/0.3.20/docker-compose.yml create mode 100644 apps/gateway-go/README.md create mode 100644 apps/gateway-go/data.yml create mode 100644 apps/gateway-go/latest/.env.sample create mode 100644 apps/gateway-go/latest/data.yml create mode 100644 apps/gateway-go/latest/docker-compose.yml create mode 100644 apps/gateway-go/logo.png diff --git a/apps/gateway-go/0.3.20/.env.sample b/apps/gateway-go/0.3.20/.env.sample new file mode 100644 index 000000000000..bb0a907dbf7b --- /dev/null +++ b/apps/gateway-go/0.3.20/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="gateway-go" +PANEL_APP_PORT_HTTP="34323" +DATA_PATH="./data" \ No newline at end of file diff --git a/apps/gateway-go/0.3.20/data.yml b/apps/gateway-go/0.3.20/data.yml new file mode 100644 index 000000000000..7073efefe61f --- /dev/null +++ b/apps/gateway-go/0.3.20/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "34323" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "./data" + disabled: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text diff --git a/apps/gateway-go/0.3.20/docker-compose.yml b/apps/gateway-go/0.3.20/docker-compose.yml new file mode 100644 index 000000000000..3fad4e5299f9 --- /dev/null +++ b/apps/gateway-go/0.3.20/docker-compose.yml @@ -0,0 +1,10 @@ +services: + ddns-go: + container_name: ${CONTAINER_NAME} + restart: always + network_mode: "host" + volumes: + - "${DATA_PATH}:/root" + image: openiothub/gateway-go:v0.3.20 + labels: + createdBy: "Apps" diff --git a/apps/gateway-go/README.md b/apps/gateway-go/README.md new file mode 100644 index 000000000000..1e2ffc28e36a --- /dev/null +++ b/apps/gateway-go/README.md @@ -0,0 +1,8 @@ +# gateway-go + +云亿连的内网端,好用的内网穿透工具,支持p2p,访问端App配置需要访问的内网端口,支持APP网页访问安装的应用 + +## 主要功能: + +- 支持Android、iOS、Mac、Windows、Linux系统客户端,支持ARM、x86架构镜像 +- 支持内网穿透访问管理页面和安装的应用 diff --git a/apps/gateway-go/data.yml b/apps/gateway-go/data.yml new file mode 100644 index 000000000000..ddf32e1e3bee --- /dev/null +++ b/apps/gateway-go/data.yml @@ -0,0 +1,19 @@ +name: gateway-go +tags: + - 实用工具 +title: 简单易用的 内网穿透工具 +description: 简单易用的 内网穿透工具 +additionalProperties: + key: gateway-go + name: gateway-go + tags: + - Tool + shortDescZh: 简单易用的 内网穿透工具,支持全平台APP访问,支持p2p,未来也将支持所有docker应用的远程访问 + shortDescEn: Help you expose a local server behind a NAT or firewall to the internet. + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/OpenIoTHub/gateway-go + github: https://github.com/OpenIoTHub/gateway-go + document: https://docs.iothub.cloud diff --git a/apps/gateway-go/latest/.env.sample b/apps/gateway-go/latest/.env.sample new file mode 100644 index 000000000000..bb0a907dbf7b --- /dev/null +++ b/apps/gateway-go/latest/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="gateway-go" +PANEL_APP_PORT_HTTP="34323" +DATA_PATH="./data" \ No newline at end of file diff --git a/apps/gateway-go/latest/data.yml b/apps/gateway-go/latest/data.yml new file mode 100644 index 000000000000..7073efefe61f --- /dev/null +++ b/apps/gateway-go/latest/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "34323" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "./data" + disabled: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text diff --git a/apps/gateway-go/latest/docker-compose.yml b/apps/gateway-go/latest/docker-compose.yml new file mode 100644 index 000000000000..08b49796e23a --- /dev/null +++ b/apps/gateway-go/latest/docker-compose.yml @@ -0,0 +1,10 @@ +services: + ddns-go: + container_name: ${CONTAINER_NAME} + restart: always + network_mode: "host" + volumes: + - "${DATA_PATH}:/root" + image: openiothub/gateway-go:latest + labels: + createdBy: "Apps" diff --git a/apps/gateway-go/logo.png b/apps/gateway-go/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd0b713e4bf1ac36635ed49ef22863fcb62c2f0 GIT binary patch literal 18329 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 literal 0 HcmV?d00001