From 5c8d81dd6c67ac67c9dfb99406fc3efeab646159 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Thu, 17 Oct 2024 12:58:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=20Traccar=20=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- .github/README.md | 3 +- README.md | 3 +- apps/traccar/6.5/conf/traccar.xml | 12 +++ apps/traccar/6.5/data.yml | 17 ++++ apps/traccar/6.5/docker-compose.yml | 24 +++++ apps/traccar/6.5/scripts/init.sh | 15 +++ apps/traccar/6.5/scripts/uninstall.sh | 10 ++ apps/traccar/6.5/scripts/upgrade.sh | 15 +++ apps/traccar/README.md | 128 ++++++++++++++++++++++++++ apps/traccar/data.yml | 15 +++ apps/traccar/logo.png | Bin 0 -> 22009 bytes 11 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 apps/traccar/6.5/conf/traccar.xml create mode 100644 apps/traccar/6.5/data.yml create mode 100644 apps/traccar/6.5/docker-compose.yml create mode 100644 apps/traccar/6.5/scripts/init.sh create mode 100644 apps/traccar/6.5/scripts/uninstall.sh create mode 100644 apps/traccar/6.5/scripts/upgrade.sh create mode 100644 apps/traccar/README.md create mode 100644 apps/traccar/data.yml create mode 100644 apps/traccar/logo.png diff --git a/.github/README.md b/.github/README.md index 46a2807c3..2281fd1ab 100644 --- a/.github/README.md +++ b/.github/README.md @@ -129,7 +129,7 @@ | 🟢 | | PostgreSQL | https://www.postgresql.org/ | 世界上最先进的开源关系数据库 | | | 🟢 | | Prowlarr | https://prowlarr.com/ | 终极索引器管理器 | | | 🟢 | | qBittorrent | https://www.qbittorrent.org/ | qBittorrent 比特流客户端 | | -| 🟢 | | 青龙 | https://github.com/whyour/qinglong/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | | +| 🟢 | | 青龙 | https://qinglong.online/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | | | 🟢 | | radarr | https://radarr.video/ | 电影组织者/管理员,适用于 Usenet 和 torrent 用户 | | | 🟢 | | 阅读3 | https://github.com/hectorqin/reader/ | 【阅读3】阅读3服务器版,不需要手机 | | | 🟢 | | Redis | https://redis.io/ | 从世界上最快的内存数据库创建者那里获取该数据库 | | @@ -142,6 +142,7 @@ | 🟢 | | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | | 🟢 | | 唐僧叨叨 | https://tsdaodao.com/ | 让企业轻松拥有自己的即时通讯 | | | 🟢 | | Telegram Bot Api | https://telegram.org/ | 自建 Telegram Bot API 服务器 | | +| 🟢 | | Traccar 轨迹 | https://www.traccar.org/ | 现代 GPS 追踪系统 | | | 🟢 | | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | | | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | diff --git a/README.md b/README.md index 9315bc530..d0a3258d6 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ | 🟢 | | PostgreSQL | https://www.postgresql.org/ | 世界上最先进的开源关系数据库 | | | 🟢 | | Prowlarr | https://prowlarr.com/ | 终极索引器管理器 | | | 🟢 | | qBittorrent | https://www.qbittorrent.org/ | qBittorrent 比特流客户端 | | -| 🟢 | | 青龙 | https://github.com/whyour/qinglong/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | | +| 🟢 | | 青龙 | https://qinglong.online/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | | | 🟢 | | radarr | https://radarr.video/ | 电影组织者/管理员,适用于 Usenet 和 torrent 用户 | | | 🟢 | | 阅读3 | https://github.com/hectorqin/reader/ | 【阅读3】阅读3服务器版,不需要手机 | | | 🟢 | | Redis | https://redis.io/ | 从世界上最快的内存数据库创建者那里获取该数据库 | | @@ -125,6 +125,7 @@ | 🟢 | | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | | 🟢 | | 唐僧叨叨 | https://tsdaodao.com/ | 让企业轻松拥有自己的即时通讯 | | | 🟢 | | Telegram Bot Api | https://telegram.org/ | 自建 Telegram Bot API 服务器 | | +| 🟢 | | Traccar 轨迹 | https://www.traccar.org/ | 现代 GPS 追踪系统 | | | 🟢 | | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | | | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | diff --git a/apps/traccar/6.5/conf/traccar.xml b/apps/traccar/6.5/conf/traccar.xml new file mode 100644 index 000000000..2b4518307 --- /dev/null +++ b/apps/traccar/6.5/conf/traccar.xml @@ -0,0 +1,12 @@ + + + + + + + org.h2.Driver + jdbc:h2:./data/database + sa + + + diff --git a/apps/traccar/6.5/data.yml b/apps/traccar/6.5/data.yml new file mode 100644 index 000000000..593618f34 --- /dev/null +++ b/apps/traccar/6.5/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "/home/traccar" + edit: true + envKey: TRACCAR_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8082 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number diff --git a/apps/traccar/6.5/docker-compose.yml b/apps/traccar/6.5/docker-compose.yml new file mode 100644 index 000000000..cb70b14a4 --- /dev/null +++ b/apps/traccar/6.5/docker-compose.yml @@ -0,0 +1,24 @@ +networks: + 1panel-network: + external: true + +services: + traccar: + image: traccar/traccar:6.5 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + hostname: traccar + ports: + - ${PANEL_APP_PORT_HTTP}:8082 + - 5000-5150:5000-5150 + - 5000-5150:5000-5150/udp + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${TRACCAR_ROOT_PATH}/logs:/opt/traccar/logs:rw + - ${TRACCAR_ROOT_PATH}/traccar.xml:/opt/traccar/conf/traccar.xml:ro diff --git a/apps/traccar/6.5/scripts/init.sh b/apps/traccar/6.5/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/traccar/6.5/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/traccar/6.5/scripts/uninstall.sh b/apps/traccar/6.5/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/traccar/6.5/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/traccar/6.5/scripts/upgrade.sh b/apps/traccar/6.5/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/traccar/6.5/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/traccar/README.md b/apps/traccar/README.md new file mode 100644 index 000000000..b6ea7e50d --- /dev/null +++ b/apps/traccar/README.md @@ -0,0 +1,128 @@ +# Traccar 轨迹 + +Traccar GPS 追踪系统 + +![Traccar 轨迹](https://file.lifebus.top/imgs/traccar_cover.png) + +Traccar 是一个开源的 GPS 跟踪系统。此仓库包含基于 Java 的后端服务。它支持超过 200 种 GPS 协议和超过 2000 种 GPS +跟踪设备型号。Traccar 可以与任何主要的 SQL 数据库系统一起使用。它还提供易于使用的 REST API。 + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 特性 + +🚀 服务器 + +Traccar 软件在 Windows、Linux 或其他任何平台上都提供了卓越的性能和稳定性。服务器可以部署在本地或云端,我们提供各种托管选项,并提供专业支持。 + +🚀 设备 + +Traccar 在市场上众多的 GPS 跟踪系统中脱颖而出,因为它支持广泛的各种协议和设备型号。无论您更喜欢低成本、无名的 GPS +跟踪器,还是高品质、有质量保证的品牌,Traccar 都能让您从众多供应商中进行选择。 + +🚀 界面 + +Traccar 提供了一个现代且全面的网络界面,适用于桌面和移动设备。 +此外,我们还提供针对 Android 和 iOS 平台的本地移动应用程序。此外,我们还提供一系列应用程序,可以将移动设备转变为 GPS 追踪器。 + +🚀 实时跟踪 + +Traccar 允许您实时查看 GPS 设备的位置,没有任何延迟。 +多种地图选项可供选择,包括道路地图和卫星图像,您可以选择最符合您需求的一个。此外,Traccar 可以高效管理由 GPS 单元提供的大量传感器和数据。 + +🚀 警报 + +Traccar 软件提供即时通知,包括推送通知、电子邮件和其他方法的支持。 +这些功能使软件能够提醒用户恶劣驾驶行为、燃油下降、维护事件、地理围栏违规以及多种其他类型的警报。 + +🚀 报告 + +Traccar 提供多种报告,包括位置历史、行程、图表和总结报告。这些报告可以直接通过网络或移动应用访问,也可以导出为 Excel 文件。 +此外,Traccar 允许用户在地图上可视化位置历史,以便更直观地理解他们的数据。 + +## 功能 + ++ 实时 GPS 追踪 ++ 驾驶员行为监控 ++ 详细报告和摘要报告 ++ 地理围栏功能 ++ 警报和通知 ++ 账户和设备管理 ++ 电子邮件和短信支持 + +## 平台 + +### 管理平台 + +[![Download on the App Store](http://www.tananaev.com/badges/app-store.svg)](https://itunes.apple.com/app/traccar-manager/id1113966562) [![Get it on Google Play](http://www.tananaev.com/badges/google-play.svg)](https://play.google.com/store/apps/details?id=org.traccar.manager) + +### 服务平台 + +[![Download on the App Store](http://www.tananaev.com/badges/app-store.svg)](https://itunes.apple.com/app/traccar-client/id843156974) [![Get it on Google Play](http://www.tananaev.com/badges/google-play.svg)](https://play.google.com/store/apps/details?id=org.traccar.client) [![Get it on F-Droid](http://www.tananaev.com/badges/f-droid.svg)](https://f-droid.org/repository/browse/?fdid=org.traccar.client) + +## 安装说明 + +> ### 账户说明 +> +> 在较旧版本的 Traccar 中,系统会自动创建默认管理员账户,登录名和密码均为 admin +> +> 在较新版本中,没有默认用户,因此需要进行注册。第一个注册的用户会自动成为管理员。 + +> ### 设备注册 +> +> 您需要填写名称和标识符字段。名称可以是任何内容。标识符必须与您的设备向服务器报告的唯一 ID 相匹配。对于大多数设备,您应该使用 +> IMEI 或序列号作为唯一标识符。 + +### 数据库选择 + +Traccar 支持以下数据库: + ++ MySQL ++ PostgreSQL ++ H2 + +其中,H2 为默认数据库,但不建议在生产环境中使用。因此,我们建议使用 MySQL 或 PostgreSQL。 + +请在持久化目录中,查看配置文件:`traccar.xml` + +#### H2 数据库配置 + +我们不建议您修改 H2 数据库配置。如果您执意要修改,请确保您知道自己在做什么。 +您可以在安装目录 `conf/traccar.xml` 中找到默认的 H2 数据库配置。 + +```xml +org.h2.Driver +jdbc:h2:./data/database +sa + +``` + +#### MySQL 数据库配置 + +修改持久化目录中的 `traccar.xml` 文件,配置 MySQL 数据库。 + +```xml +com.mysql.cj.jdbc.Driver +jdbc:mysql://[HOST]/[DATABASE]?zeroDateTimeBehavior=round&serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode='' +[USER] +[PASSWORD] +``` + +请将 `[]` 替换为您的实际配置。 + +#### PostgreSQL 数据库配置 + +修改持久化目录中的 `traccar.xml` 文件,配置 PostgreSQL 数据库。 + +```xml +org.postgresql.Driver +jdbc:postgresql://[HOST]/[DATABASE] +[USER] +[PASSWORD] +``` + +请将 `[]` 替换为您的实际配置。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/traccar/data.yml b/apps/traccar/data.yml new file mode 100644 index 000000000..054ebcebb --- /dev/null +++ b/apps/traccar/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: traccar + name: Traccar 轨迹 + tags: + - WebSite + - Middleware + - Local + shortDescZh: 现代 GPS 追踪系统 + shortDescEn: Modern GPS tracking system + type: website + crossVersionUpdate: true + limit: 0 + website: https://www.traccar.org/ + github: https://github.com/traccar/traccar/ + document: https://www.traccar.org/documentation/ diff --git a/apps/traccar/logo.png b/apps/traccar/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c747aea05407bc78019b28dbb5cec82ac73f872c GIT binary patch literal 22009 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