From 96b05c552d273e5fe56a937847b4b66dd78cf8af Mon Sep 17 00:00:00 2001 From: arch3rPro <30855883+arch3rPro@users.noreply.github.com> Date: Wed, 2 Jul 2025 22:37:14 +0800 Subject: [PATCH] Add App verysync --- apps/verysync/README.md | 70 +++++++++++++++++++++ apps/verysync/README_en.md | 79 ++++++++++++++++++++++++ apps/verysync/data.yml | 45 ++++++++++++++ apps/verysync/latest/data.yml | 25 ++++++++ apps/verysync/latest/docker-compose.yml | 13 ++++ apps/verysync/logo.png | Bin 0 -> 12746 bytes 6 files changed, 232 insertions(+) create mode 100644 apps/verysync/README.md create mode 100644 apps/verysync/README_en.md create mode 100644 apps/verysync/data.yml create mode 100644 apps/verysync/latest/data.yml create mode 100644 apps/verysync/latest/docker-compose.yml create mode 100644 apps/verysync/logo.png diff --git a/apps/verysync/README.md b/apps/verysync/README.md new file mode 100644 index 0000000..bd167df --- /dev/null +++ b/apps/verysync/README.md @@ -0,0 +1,70 @@ +# Verysync 微力同步 + +Verysync(微力同步)是一款基于智能P2P技术的极速文件同步工具,支持多平台部署,适合家庭、企业、开发者等多场景使用。 + +## 主要功能 + +- **极速P2P同步**:智能P2P加速,文件分块同步,传输速度快。 +- **多平台支持**:兼容 Windows、Linux、macOS、NAS、Docker 等主流平台。 +- **数据加密**:全程 AES 加密,保障数据安全。 +- **Web 管理界面**:直观易用的 Web UI,支持多用户管理。 +- **灵活同步策略**:支持单向/双向同步、定时同步等多种策略。 +- **多架构镜像**:支持 amd64、arm64、armv7 等主流架构。 + +## 端口说明 + +- **8886**:Web 管理端口(主端口,需自定义变量) +- **22330**:数据传输端口(需自定义变量) +- **3000**:公共中继端口(可选,默认不映射) +- **22027/22037**:内网 UDP 发现端口(可选,默认不映射) + +## 快速部署(Docker 示例) + +```yaml +services: + verysync: + image: jonnyan404/verysync:v2.20.1 + container_name: verysync + ports: + - "${PANEL_APP_PORT_HTTP}:8886" # Web管理端口 + - "${VERYSYNC_TRANSFER_PORT}:22330" # 数据传输端口 + # - "3000:3000" # 公共中继端口(可选) + # - "22027:22027/udp" # 内网UDP发现端口(可选) + # - "22037:22037/udp" # 内网UDP发现端口(可选) + volumes: + - "${VERYSYNC_DATA_PATH}:/data" + restart: unless-stopped +``` + +> 配置与数据目录(容器内):`/data`,建议挂载主机目录持久化保存。 + +## 典型使用场景 + +- 家庭/企业多设备文件同步与备份 +- NAS/服务器与多终端数据同步 +- 跨平台文件高速传输与共享 +- 私有云数据同步与安全备份 + +## 平台与架构支持 + +- Windows、Linux、macOS、NAS、Docker +- 支持 amd64、arm64、armv7 等主流架构 + +## 常见问题 FAQ + +- **Q: 默认管理端口和账号密码?** + A: 默认端口 8886,首次无密码,建议登录后设置。 +- **Q: 如何持久化配置和数据?** + A: 挂载主机目录到 `/data`,如 `VERYSYNC_DATA_PATH:/data`。 +- **Q: 支持哪些平台和架构?** + A: Windows、Linux、macOS、NAS、Docker,支持 amd64、arm64、armv7。 +- **Q: 如何自定义端口?** + A: 通过 compose 变量自定义 8886/22330 端口,其他端口可按需映射。 +- **Q: 镜像版本如何选择?** + A: 推荐使用 [Docker Hub](https://hub.docker.com/r/jonnyan404/verysync/tags) 查看最新版本。 + +## 官方文档与支持 + +- 官网:[https://www.verysync.com/](https://www.verysync.com/) +- 安装文档:[https://www.verysync.com/manual/install/docker.html](https://www.verysync.com/manual/install/docker.html) +- GitHub:[https://github.com/Jonnyan404/verysync](https://github.com/Jonnyan404/verysync) \ No newline at end of file diff --git a/apps/verysync/README_en.md b/apps/verysync/README_en.md new file mode 100644 index 0000000..5c0b31a --- /dev/null +++ b/apps/verysync/README_en.md @@ -0,0 +1,79 @@ +# Verysync + +Verysync is a fast file synchronization tool based on intelligent P2P technology. It supports multi-platform deployment and is suitable for home, enterprise, and developer scenarios. + +## Port Description + +- **8886**: Web management port (main port, set by variable) +- **22330**: Data transfer port (set by variable) +- **3000**: Public relay port (optional, not mapped by default) +- **22027/22037**: LAN UDP discovery ports (optional, not mapped by default) + +## Quick Deployment (Docker Example) + +```yaml +services: + verysync: + image: jonnyan404/verysync:v2.20.1 + container_name: verysync + ports: + - "${PANEL_APP_PORT_HTTP}:8886" # Web management port + - "${VERYSYNC_TRANSFER_PORT}:22330" # Data transfer port + # - "3000:3000" # Public relay port (optional) + # - "22027:22027/udp" # LAN UDP discovery port (optional) + # - "22037:22037/udp" # LAN UDP discovery port (optional) + volumes: + - "${VERYSYNC_DATA_PATH}:/data" + restart: unless-stopped +``` + +> Config & data directory (in container): `/data`. It is recommended to mount a host directory for persistence. + +## Main Features + +- **Fast P2P Sync**: Intelligent P2P acceleration, file chunking, high-speed transfer. +- **Multi-Platform Support**: Compatible with Windows, Linux, macOS, NAS, Docker, etc. +- **Data Encryption**: Full AES encryption for data security. +- **Web UI**: Intuitive web management, multi-user support. +- **Flexible Sync Strategies**: Supports one-way/two-way sync, scheduled sync, and more. +- **Multi-Architecture Images**: Supports amd64, arm64, armv7, etc. + +## Deployment Modes + +Verysync provides two Docker deployment modes: + +- **Host network mode (recommended)**: + - Uses host network, fixed port 8886, suitable for scenarios requiring full network capability. +- **Bridge network mode**: + - Supports custom port mapping, suitable for port isolation and unified management. + +## Typical Use Cases + +- Multi-device file sync and backup for home/enterprise +- Data sync between NAS/servers and multiple clients +- High-speed cross-platform file transfer and sharing +- Private cloud data sync and secure backup + +## Platform & Architecture Support + +- Windows, Linux, macOS, NAS, Docker +- Supports amd64, arm64, armv7, etc. + +## FAQ + +- **Q: Default admin port and credentials?** + A: Default port 8886, no password on first login, please set one after login. +- **Q: How to persist config and data?** + A: Mount a host directory to `/data`, e.g. `VERYSYNC_DATA_PATH:/data`. +- **Q: Which platforms and architectures are supported?** + A: Windows, Linux, macOS, NAS, Docker; supports amd64, arm64, armv7. +- **Q: How to customize ports?** + A: Use compose variables to set 8886/22330, other ports can be mapped as needed. +- **Q: How to choose the image version?** + A: Check the latest version on [Docker Hub](https://hub.docker.com/r/jonnyan404/verysync/tags). + +## Official Docs & Support + +- Website: [https://www.verysync.com/](https://www.verysync.com/) +- Install Guide: [https://www.verysync.com/manual/install/docker.html](https://www.verysync.com/manual/install/docker.html) +- GitHub: [https://github.com/Jonnyan404/verysync](https://github.com/Jonnyan404/verysync) \ No newline at end of file diff --git a/apps/verysync/data.yml b/apps/verysync/data.yml new file mode 100644 index 0000000..7d0b24f --- /dev/null +++ b/apps/verysync/data.yml @@ -0,0 +1,45 @@ +name: Verysync + +tags: + - 文件同步 + - NAS + - 备份 + - 多平台 + - Docker + - 私有云 + - 传输 + - 跨平台 +title: 智能P2P极速文件同步工具 +description: 微力同步(Verysync)是一款基于P2P技术的极速文件同步工具,支持多平台部署,适合家庭、企业、开发者等多场景使用。 +additionalProperties: + key: verysync + name: Verysync + tags: + - Sync + - NAS + - Backup + - PrivateCloud + - Docker + - CrossPlatform + shortDescZh: 极速P2P文件同步,支持多平台和多架构。 + shortDescEn: Fast P2P file sync, cross-platform and multi-architecture supported. + description: + en: Fast P2P file synchronization tool based on intelligent technology. Supports multi-platform deployment, suitable for home, enterprise, and developer scenarios. + ja: 高速P2Pファイル同期ツール。多プラットフォーム対応。 + ms: Alat penyegerakan fail P2P pantas, menyokong pelbagai platform. + pt-br: Ferramenta de sincronização de arquivos P2P rápida, com suporte multiplataforma. + ru: Быстрый инструмент P2P-синхронизации файлов, поддержка различных платформ. + ko: 빠른 P2P 파일 동기화 도구, 다양한 플랫폼 지원. + zh-hant: 極速P2P檔案同步工具,支援多平台。 + zh: 微力同步是一款基于P2P技术的极速文件同步工具,支持多平台部署,适合家庭、企业、开发者等多场景使用。 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.verysync.com/ + github: https://github.com/Jonnyan404/verysync + document: https://www.verysync.com/manual/install/docker.html + architectures: + - amd64 + - arm64 + - arm/v7 \ No newline at end of file diff --git a/apps/verysync/latest/data.yml b/apps/verysync/latest/data.yml new file mode 100644 index 0000000..b1827b3 --- /dev/null +++ b/apps/verysync/latest/data.yml @@ -0,0 +1,25 @@ +additionalProperties: + formFields: + - default: 8886 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port + labelZh: Web管理端口 + required: true + rule: paramPort + type: number + - default: 22330 + edit: true + envKey: VERYSYNC_TRANSFER_PORT + labelEn: Transfer Port + labelZh: 数据传输端口 + required: true + rule: paramPort + type: number + - default: /data + edit: true + envKey: VERYSYNC_DATA_PATH + labelEn: Data Path + labelZh: 数据目录 + required: true + type: text \ No newline at end of file diff --git a/apps/verysync/latest/docker-compose.yml b/apps/verysync/latest/docker-compose.yml new file mode 100644 index 0000000..944baca --- /dev/null +++ b/apps/verysync/latest/docker-compose.yml @@ -0,0 +1,13 @@ +services: + verysync: + image: jonnyan404/verysync:v2.20.1 + container_name: verysync + ports: + - "${PANEL_APP_PORT_HTTP}:8886" # Web管理端口 + - "${VERYSYNC_TRANSFER_PORT}:22330" # 数据传输端口 + # - "3000:3000" # 公共中继端口(可选) + # - "22027:22027/udp" # 内网UDP发现端口(可选) + # - "22037:22037/udp" # 内网UDP发现端口(可选) + volumes: + - "${VERYSYNC_DATA_PATH}:/data" + restart: unless-stopped \ No newline at end of file diff --git a/apps/verysync/logo.png b/apps/verysync/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..45289fe28eda7ea854dfb8b8ed9656afa45c701f GIT binary patch literal 12746 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