From 3f641d5afd65842b0cafdfdf54f165e02bf7a6ed Mon Sep 17 00:00:00 2001 From: okxlin Date: Thu, 20 Jul 2023 23:50:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0van-nav=E5=88=B0?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/van-nav/1.8.7/.env.sample | 3 + apps/van-nav/1.8.7/data.yml | 18 +++ apps/van-nav/1.8.7/docker-compose.yml | 19 +++ apps/van-nav/README.md | 157 +++++++++++++++++++++++++ apps/van-nav/data.yml | 20 ++++ apps/van-nav/latest/.env.sample | 3 + apps/van-nav/latest/data.yml | 18 +++ apps/van-nav/latest/docker-compose.yml | 19 +++ apps/van-nav/logo.png | Bin 0 -> 26073 bytes 9 files changed, 257 insertions(+) create mode 100644 apps/van-nav/1.8.7/.env.sample create mode 100644 apps/van-nav/1.8.7/data.yml create mode 100644 apps/van-nav/1.8.7/docker-compose.yml create mode 100644 apps/van-nav/README.md create mode 100644 apps/van-nav/data.yml create mode 100644 apps/van-nav/latest/.env.sample create mode 100644 apps/van-nav/latest/data.yml create mode 100644 apps/van-nav/latest/docker-compose.yml create mode 100644 apps/van-nav/logo.png diff --git a/apps/van-nav/1.8.7/.env.sample b/apps/van-nav/1.8.7/.env.sample new file mode 100644 index 00000000..ded2ecf6 --- /dev/null +++ b/apps/van-nav/1.8.7/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="van-nav" +PANEL_APP_PORT_HTTP="40060" +DATA_PATH="./data" diff --git a/apps/van-nav/1.8.7/data.yml b/apps/van-nav/1.8.7/data.yml new file mode 100644 index 00000000..7057b3c6 --- /dev/null +++ b/apps/van-nav/1.8.7/data.yml @@ -0,0 +1,18 @@ +additionalProperties: + formFields: + - default: 40060 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + diff --git a/apps/van-nav/1.8.7/docker-compose.yml b/apps/van-nav/1.8.7/docker-compose.yml new file mode 100644 index 00000000..bcdc3ae2 --- /dev/null +++ b/apps/van-nav/1.8.7/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + van-nav: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:6412" + volumes: + - "${DATA_PATH}:/app/data" + image: mereith/van-nav:v1.8.7 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + diff --git a/apps/van-nav/README.md b/apps/van-nav/README.md new file mode 100644 index 00000000..4348dc3e --- /dev/null +++ b/apps/van-nav/README.md @@ -0,0 +1,157 @@ +# 使用说明 + +默认账号密码 +``` +username:admin +password:admin +``` + +# 原始相关 +# Van Nav + +一个轻量的导航站,现在有搜索引擎集成了,很适合作为主页使用。有配套的[浏览器插件](https://github.com/Mereithhh/van-nav-extension)和 API。 [在线体验](https://demo-tools.mereith.com) (账号密码均为: admin) + +
预览 PC
+
预览 PC
+
预览 PAD
+
预览 PAD
+
预览 phone
+
预览 phone
+
后台设置
+
交流群
+ +> qq 交流群: 873773083 + +## 快捷键 +其实这个导航站有很多小设计,合理使用可以提高使用效率: +- 只要在这个页面里,直接输入键盘任何按键,可以直接聚焦到搜索框开始输入。 +- 搜索完按回车会直接在新标签页打开第一个结果。 +- 搜索完按一下对应卡片右上角的数字按钮 + Ctrl(mac 也可以用 command 键) ,也会直接打开对应结果。 + +另外可以设置跳转方式哦。 + +## 安装方法 +### Docker + +``` +docker run -d --name tools --restart always -p 6412:6412 -v /path/to/your/data:/app/data mereith/van-nav:latest +``` + +打开浏览器 [http://localhost:6412](http://localhost:6412) 即可访问。 + +- 默认端口 6412 +- 默认账号密码 admin admin ,第一次运行后请进入后台修改 +- 数据库会自动创建在当前文件夹中: `nav.db` + + +### 可执行文件 + +下载 release 文件夹里面对应平台的二进制文件,直接运行即可。 + +打开浏览器 [http://localhost:6412](http://localhost:6412) 即可访问。 + +- 默认端口 6412 +- 默认账号密码 admin admin ,第一次运行后请进入后台修改 +- 数据库会自动创建在当前文件夹中: `nav.db` + +### nginx 反向代理 + +参考配置 + +> 其中 `` 和 `` 替换成你自己的。 + +``` +server { + listen 80; + server_name ; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + server_name ; + + ssl_certificate + ssl_certificate_key ; + ssl_verify_client off; + proxy_ssl_verify off; + location / { + proxy_pass http://127.0.0.1:6412; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_redirect off; + proxy_set_header Upgrade $http_upgrade; + } +} +``` + +### systemd 服务 +可以注册成系统服务,开机启动。 + +1. 复制二进制文件到 `/usr/local/bin` 目录下,并加上执行权限 + +2. 新建 `VanNav.serivce` 文件于 `/usr/lib/systemd/system` 目录下: +``` +[Unit] +Description=VanNav +Documentation=https://github.com/mereithhh/van-nav +After=network.target +Wants=network.target + +[Service] +WorkingDirectory=/usr/local/bin +ExecStart=/usr/local/bin/nav +Restart=on-abnormal +RestartSec=5s +KillMode=mixed + +StandardOutput=null +StandardError=syslog + +[Install] +WantedBy=multi-user.target +``` + +3. 执行: +``` +sudo systemctl daemon-reload && sudo systemctl enable --now VanNav.service +``` + +## 浏览器插件 +具体请看: [浏览器插件仓库](https://github.com/Mereithhh/van-nav-extension) + +具有一键增加工具,快速打开管理后台和主站等功能。具体自行探索哦。 +## API +本导航站支持 API,可以用自己的方法添加工具。 + +文档待完成... +## 状态 + +可以优化的点太多了,慢慢完善吧…… + +- [x] 多平台构建流水线 +- [x] 定制化 logo 和标题 +- [x] 导入导出功能 +- [x] 暗色主题切换 +- [x] 移动端优化 +- [x] 自动获取网站 logo +- [x] 拼音匹配的模糊搜索功能 +- [x] 按键直接搜索,搜索后回车直接打开第一项 +- [x] 图片存库,避免跨域和加载慢的问题 +- [x] gzip 全局压缩 +- [x] 中文 url 图片修复 +- [x] svg 图片修复 +- [x] 浏览器插件 +- [x] 自动获取网站题目和描述等信息 +- [x] 后台按钮可自定义隐藏 +- [x] github 按钮可隐藏 +- [x] 支持登录后才能查看的隐藏卡片 +- [x] 搜索引擎集成功能 +- [x] 增加一些搜索后快捷键直接打开卡片 +- [x] 支持自定义跳转方式 +- [x] 自动主题切换 +- [ ] 国际化 +- [x] 增加 ServiceWork ,离线可用,可安装 +- [ ] 网站状态检测 diff --git a/apps/van-nav/data.yml b/apps/van-nav/data.yml new file mode 100644 index 00000000..666a7898 --- /dev/null +++ b/apps/van-nav/data.yml @@ -0,0 +1,20 @@ +name: van-nav +tags: + - 建站 +title: 一个轻量导航站,汇总你的所有服务 +type: 建站 +description: 一个轻量导航站,汇总你的所有服务 +additionalProperties: + key: van-nav + name: van-nav + tags: + - WebSite + shortDescZh: 一个轻量导航站,汇总你的所有服务 + shortDescEn: A lightweight navigation station that aggregates all your services + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/Mereithhh/van-nav + github: https://github.com/Mereithhh/van-nav + document: https://github.com/Mereithhh/van-nav diff --git a/apps/van-nav/latest/.env.sample b/apps/van-nav/latest/.env.sample new file mode 100644 index 00000000..ded2ecf6 --- /dev/null +++ b/apps/van-nav/latest/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="van-nav" +PANEL_APP_PORT_HTTP="40060" +DATA_PATH="./data" diff --git a/apps/van-nav/latest/data.yml b/apps/van-nav/latest/data.yml new file mode 100644 index 00000000..7057b3c6 --- /dev/null +++ b/apps/van-nav/latest/data.yml @@ -0,0 +1,18 @@ +additionalProperties: + formFields: + - default: 40060 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + diff --git a/apps/van-nav/latest/docker-compose.yml b/apps/van-nav/latest/docker-compose.yml new file mode 100644 index 00000000..bb5163a8 --- /dev/null +++ b/apps/van-nav/latest/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + van-nav: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:6412" + volumes: + - "${DATA_PATH}:/app/data" + image: mereith/van-nav:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + diff --git a/apps/van-nav/logo.png b/apps/van-nav/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..023fe72df4c2c99878a8f9c803ecbe3f1e4204cf GIT binary patch literal 26073 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 literal 0 HcmV?d00001