From 21fb3ec162ef78bc3a9f67f1d1916e937cc15531 Mon Sep 17 00:00:00 2001 From: okxlin Date: Wed, 1 Nov 2023 00:35:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0twonav=E5=88=B0=E5=88=97?= =?UTF-8?q?=E8=A1=A8=20#282?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/twonav/README.md | 64 ++++++++++++++++++++++++++ apps/twonav/data.yml | 20 ++++++++ apps/twonav/latest/.env.sample | 2 + apps/twonav/latest/data.yml | 10 ++++ apps/twonav/latest/docker-compose.yml | 19 ++++++++ apps/twonav/latest/scripts/init.sh | 20 ++++++++ apps/twonav/logo.png | Bin 0 -> 7045 bytes 7 files changed, 135 insertions(+) create mode 100644 apps/twonav/README.md create mode 100644 apps/twonav/data.yml create mode 100644 apps/twonav/latest/.env.sample create mode 100644 apps/twonav/latest/data.yml create mode 100644 apps/twonav/latest/docker-compose.yml create mode 100644 apps/twonav/latest/scripts/init.sh create mode 100644 apps/twonav/logo.png diff --git a/apps/twonav/README.md b/apps/twonav/README.md new file mode 100644 index 00000000..a5db406c --- /dev/null +++ b/apps/twonav/README.md @@ -0,0 +1,64 @@ +# 使用说明 + +- 此程序需要外挂源码,原生`docker-compose`运行的话,需要事先在应用数据目录下创建`data`文件夹,然后下载并解压源码到的`data`文件夹里。 + +- 默认`v1.7+`版本的`1Panel`部署时会自动调用脚本进行本应用源码下载,假如存在问题则可以手动下载源码或者修改目录下的`init.sh`脚本里的相关下载链接。 + +*** +# 原始相关 + +TwoNav 是一款开源的书签(导航)管理程序,界面简洁,安装简单,使用方便,基础功能免费。TwoNav可帮助你将浏览器书签集中式管理,解决跨设备、跨平台、跨浏览器之间同步和访问困难问题,做到一处部署,随处访问。 + +- **演示站**: [http://two.lm21.top](http://two.lm21.top) +- **仅供体验,定期清理数据** 账号密码`admin` + +### 相关文档 +* [安装教程](https://gitee.com/tznb/TwoNav/wikis/pages?sort_id=7968668&doc_id=3767990) | [使用说明](https://gitee.com/tznb/TwoNav/wikis) | [下载TwoNav](https://gitee.com/tznb/TwoNav/releases) +* [OneNav Extend 升级到 TwoNav](https://gitee.com/tznb/OneNav/wikis/pages?sort_id=7955135&doc_id=2439895) + +### 作者声明 +* 本程序没有二开版、除了下面的项目地址均为盗版。 +* 使用盗版软件存在法律风险且没有任何保障。 +* 未经许可禁止用于商业用途、转载请保留作品出处。 + +### 项目由来 +``` +起初只是搭建一个自己的书签站、网上找了一圈看中了小z的OneNav。 +因功能无法满足我,开始基于ONeNav各种魔改、然后就有了OneNav Extend、这个名字还是小z给取的。 +后来和小z都开始收费后、由于用户容易搞混等各种原因、于是我重写代码并改名为TwoNav。 +其中一些OneNav的特色依旧是保留下来、并兼容OneNav的一些插件。 +``` + +### 项目地址 +- [https://gitee.com/tznb/TwoNav](https://gitee.com/tznb/TwoNav) +- [https://github.com/tznb1/TwoNav](https://github.com/tznb1/TwoNav) + +### 技术支持 +- QQ: 271152681 +- QQ群: 695720839 + +### 运行环境 +* PHP: 7.3 - 8.2 +* 数据库: SQLite3 或 MySQL > 5.6.0 + +### 功能特色 +* 支持后台管理 +* 支持私有链接 +* 支持加密链接 +* 支持分享链接 +* 支持二级分类 +* 支持用户分组/权限管理 +* 支持Chrome/Firefox/Edge书签批量导入 +* 支持批量更新链接图标/标题/描述等信息 +* 支持链接信息自动识别 +* 支持API +* 支持Docker部署 +* 支持uTools插件 +* 支持Chromium内核的[浏览器扩展] +* 支持简易文章管理 +* 支持更换各种模板/支持混搭,20+个主题模板 +* 安全性支持:更换登录入口/二级密码/OTP双重验证 + + +![](https://foruda.gitee.com/images/1680680754989095293/fcc56e76_10359480.jpeg "主页预览") +![](https://foruda.gitee.com/images/1680680836189756220/8c227c34_10359480.jpeg "主题模板") \ No newline at end of file diff --git a/apps/twonav/data.yml b/apps/twonav/data.yml new file mode 100644 index 00000000..889234ac --- /dev/null +++ b/apps/twonav/data.yml @@ -0,0 +1,20 @@ +name: TwoNav +tags: + - 建站 +title: 一款开源免费的书签(导航)管理程序 +type: 建站 +description: 一款开源免费的书签(导航)管理程序 +additionalProperties: + key: twonav + name: TwoNav + tags: + - WebSite + shortDescZh: 一款开源免费的书签(导航)管理程序 + shortDescEn: An open source free bookmark (navigation) management program + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://hub.docker.com/r/tznb/twonav + github: https://github.com/tznb1/TwoNav + document: https://gitee.com/tznb/TwoNav/wikis diff --git a/apps/twonav/latest/.env.sample b/apps/twonav/latest/.env.sample new file mode 100644 index 00000000..e0421807 --- /dev/null +++ b/apps/twonav/latest/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="twonav" +PANEL_APP_PORT_HTTP="40169" diff --git a/apps/twonav/latest/data.yml b/apps/twonav/latest/data.yml new file mode 100644 index 00000000..899f658c --- /dev/null +++ b/apps/twonav/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40169 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/twonav/latest/docker-compose.yml b/apps/twonav/latest/docker-compose.yml new file mode 100644 index 00000000..dcdb7895 --- /dev/null +++ b/apps/twonav/latest/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + twonav: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:80" + volumes: + - "./data:/www" + tty: true + image: tznb/twonav:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/twonav/latest/scripts/init.sh b/apps/twonav/latest/scripts/init.sh new file mode 100644 index 00000000..087c4555 --- /dev/null +++ b/apps/twonav/latest/scripts/init.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# 设置下载目录 +download_dir="./data" + +# 下载文件 +wget -P "$download_dir" "https://ghproxy.com/https://github.com/tznb1/TwoNav/archive/refs/heads/master.zip" + +# 解压文件 +unzip -o -d "$download_dir" "$download_dir/master.zip" + +# 复制文件 +cp -rf "$download_dir/TwoNav-master/"* "$download_dir/" + +# 删除不需要的文件和目录 +rm -rf "$download_dir/TwoNav-master" +rm -rf "$download_dir/master.zip" + +# 更改文件所有者 +chown -R www-data "$download_dir" diff --git a/apps/twonav/logo.png b/apps/twonav/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1313c0a1730bc3a3a60879da88ea085ea9d65d GIT binary patch literal 7045 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 literal 0 HcmV?d00001