From 161845104f2d4863af538aed8cf5df991f28edfc Mon Sep 17 00:00:00 2001 From: ms Date: Sat, 24 Aug 2024 14:48:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=A6=BB=20Umami?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/renovate.json | 8 - .../2.12.1 => umami-mysql/2.13.0}/data.yml | 20 +-- apps/umami-mysql/2.13.0/docker-compose.yml | 25 +++ .../2.13.0}/scripts/init.sh | 0 .../2.13.0}/scripts/uninstall.sh | 0 .../2.13.0}/scripts/upgrade.sh | 0 apps/umami-mysql/README.md | 142 ++++++++++++++++++ apps/umami-mysql/data.yml | 20 +++ apps/umami-mysql/logo.png | Bin 0 -> 9458 bytes apps/umami/2.13.0/data.yml | 104 +++++++++++++ .../{2.12.1 => 2.13.0}/docker-compose.yml | 5 +- apps/umami/2.13.0/scripts/init.sh | 15 ++ apps/umami/2.13.0/scripts/uninstall.sh | 10 ++ apps/umami/2.13.0/scripts/upgrade.sh | 15 ++ apps/umami/README.md | 6 + apps/umami/data.yml | 2 +- 16 files changed, 344 insertions(+), 28 deletions(-) rename apps/{umami/2.12.1 => umami-mysql/2.13.0}/data.yml (84%) create mode 100644 apps/umami-mysql/2.13.0/docker-compose.yml rename apps/{umami/2.12.1 => umami-mysql/2.13.0}/scripts/init.sh (100%) rename apps/{umami/2.12.1 => umami-mysql/2.13.0}/scripts/uninstall.sh (100%) rename apps/{umami/2.12.1 => umami-mysql/2.13.0}/scripts/upgrade.sh (100%) create mode 100644 apps/umami-mysql/README.md create mode 100644 apps/umami-mysql/data.yml create mode 100644 apps/umami-mysql/logo.png create mode 100644 apps/umami/2.13.0/data.yml rename apps/umami/{2.12.1 => 2.13.0}/docker-compose.yml (67%) create mode 100644 apps/umami/2.13.0/scripts/init.sh create mode 100644 apps/umami/2.13.0/scripts/uninstall.sh create mode 100644 apps/umami/2.13.0/scripts/upgrade.sh diff --git a/.github/renovate.json b/.github/renovate.json index f3ebe3d79..7c4068d6d 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -82,14 +82,6 @@ { "matchPackageNames": ["photoprism/photoprism"], "versioning": "regex:^(?\\d{2})(?\\d{2})(?\\d{2})$" - }, - { - "fileMatch": ["^docker-compose.yml$"], - "matchStrings": [ - "image:\\s?ghcr\\.io/umami-software/umami:[^\\s]+" - ], - "datasourceTemplate": "docker", - "versioningTemplate": "docker" } ], "prCreation": "immediate" diff --git a/apps/umami/2.12.1/data.yml b/apps/umami-mysql/2.13.0/data.yml similarity index 84% rename from apps/umami/2.12.1/data.yml rename to apps/umami-mysql/2.13.0/data.yml index 7f3339e67..ec593ab70 100644 --- a/apps/umami/2.12.1/data.yml +++ b/apps/umami-mysql/2.13.0/data.yml @@ -5,16 +5,14 @@ additionalProperties: envKey: PANEL_DB_HOST required: true type: service - default: postgresql + default: mysql edit: true envKey: PANEL_DB_TYPE - labelZh: 数据库 服务 (前置检查) + labelZh: MySQL 服务 (前置检查) labelEn: Database Service (Pre-check) required: true type: apps values: - - label: PostgreSQL - value: postgresql - label: MySQL value: mysql - label: MariaDB @@ -71,18 +69,6 @@ additionalProperties: value: "1" - label: 关闭 value: "0" - - default: postgresql - edit: true - envKey: DATABASE_TYPE - labelZh: 数据库 类型 - labelEn: Database Type - required: true - type: select - values: - - label: PostgreSQL - value: postgresql - - label: MySQL (MariaDB, Percona) - value: mysql - default: "127.0.0.1" edit: true envKey: DB_HOSTNAME @@ -90,7 +76,7 @@ additionalProperties: labelEn: Database Host required: true type: text - - default: 5432 + - default: 3306 edit: true envKey: DB_PORT labelZh: 数据库 端口 diff --git a/apps/umami-mysql/2.13.0/docker-compose.yml b/apps/umami-mysql/2.13.0/docker-compose.yml new file mode 100644 index 000000000..4f8ef7b09 --- /dev/null +++ b/apps/umami-mysql/2.13.0/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.8" + +networks: + 1panel-network: + external: true + +services: + umami-mysql: + image: ghcr.io/umami-software/umami:mysql-v2.13.0 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + environment: + - DISABLE_TELEMETRY = 1 + - REMOVE_TRAILING_SLASH = 1 + - DATABASE_TYPE=mysql + - DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME} diff --git a/apps/umami/2.12.1/scripts/init.sh b/apps/umami-mysql/2.13.0/scripts/init.sh similarity index 100% rename from apps/umami/2.12.1/scripts/init.sh rename to apps/umami-mysql/2.13.0/scripts/init.sh diff --git a/apps/umami/2.12.1/scripts/uninstall.sh b/apps/umami-mysql/2.13.0/scripts/uninstall.sh similarity index 100% rename from apps/umami/2.12.1/scripts/uninstall.sh rename to apps/umami-mysql/2.13.0/scripts/uninstall.sh diff --git a/apps/umami/2.12.1/scripts/upgrade.sh b/apps/umami-mysql/2.13.0/scripts/upgrade.sh similarity index 100% rename from apps/umami/2.12.1/scripts/upgrade.sh rename to apps/umami-mysql/2.13.0/scripts/upgrade.sh diff --git a/apps/umami-mysql/README.md b/apps/umami-mysql/README.md new file mode 100644 index 000000000..75708657c --- /dev/null +++ b/apps/umami-mysql/README.md @@ -0,0 +1,142 @@ +# Umami MySQL版本 + +为速度和效率而构建的网站分析 + +Umami 网站分析提供您实时做出决策所需的数据。 + +![Umami](https://file.lifebus.top/imgs/umami_cover.jpg) + +![](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) + +## 简介 + +Umami 让您轻松分析数据 + ++ 便于使用 + +Umami 功能强大而简单,易于使用和理解,不需要复杂的设置或标签配置。 + ++ UTM 和自定义事件 + +Umami 会自动理解带有 UTM 参数的链接,并让您根据 UTM 查看和过滤您的网站数据。此外,您还可以跟踪网站上的任何事件,例如按钮点击、表单提交、购买、新闻通讯注册等。 + ++ 没有 Cookie 横幅 + +所有数据均经过 Umami 匿名处理,并且不会收集您网站用户的任何个人信息。您无需选择加入 Cookie +横幅即可跟踪网站的性能,从而为您的用户提供更好、更值得信赖的体验。 +默认情况下,Umami 符合 GDPRP 和 CCPA。 + +## 环境准备 + ++ 数据库支持 + + `MySQL` 版本:`5.7+` + + `PostgreSQL` 版本:`12.14+` + +## 安装说明 + +> 默认管理员帐户 +> +> 用户名: admin +> +> 密码: umami + +## 反向代理 + +> Nginx + +如果您的请求头中存在自定义字段,请修改: + +```text +add_header Access-Control-Allow-Headers '*' +``` + +以下配置修复 ipv6 地址无法收集的问题: + +```nginx +server { + ... + + add_header Content-Security-Policy 'frame-ancestors *'; + add_header Access-Control-Allow-Origin '*'; + add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; + add_header Access-Control-Allow-Headers 'x-umami-cache,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; + if ($request_method = 'OPTIONS') { + return 204; + } + + location /api/send { + content_by_lua_block { + local cjson = require "cjson" + + local function is_ipv6_address(hostname) + local match = hostname:match("^[%x:]+$") + return match ~= nil + end + + ngx.req.read_body() + local data = ngx.req.get_body_data() + + if data then + local decoded_data = cjson.decode(data) + local hostname = decoded_data.payload.hostname + + if is_ipv6_address(hostname) then + local new_hostname = "127.0.0.1" + decoded_data.payload.hostname = new_hostname + + local modified_data = cjson.encode(decoded_data) + ngx.req.set_body_data(modified_data) + end + end + + ngx.exec("@proxy") + } + } + + location / { + proxy_hide_header 'Access-Control-Allow-Origin'; + proxy_hide_header 'Content-Security-Policy'; + proxy_set_header Host $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_pass http://127.0.0.1:3000; + } + + location @proxy { + proxy_hide_header 'Access-Control-Allow-Origin'; + proxy_hide_header 'Content-Security-Policy'; + proxy_set_header Host $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_pass http://127.0.0.1:3000; + } +} +``` + +极简配置: + +```nginx +add_header Content-Security-Policy 'frame-ancestors *'; +add_header Access-Control-Allow-Origin '*'; +add_header Access-Control-Allow-Methods '*'; +add_header Access-Control-Allow-Headers '*'; +if ($request_method = 'OPTIONS') { + return 204; +} + +location / { + proxy_hide_header 'Access-Control-Allow-Origin'; + proxy_hide_header 'Content-Security-Policy'; + proxy_set_header Host $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_pass http://127.0.0.1:3000; +} +``` + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/umami-mysql/data.yml b/apps/umami-mysql/data.yml new file mode 100644 index 000000000..2bd8494b5 --- /dev/null +++ b/apps/umami-mysql/data.yml @@ -0,0 +1,20 @@ +name: Umami MySQL版 +title: Umami MySQL版 +description: 为速度和效率而构建的网站分析 +additionalProperties: + key: umami-mysql + name: Umami MySQL版 + tags: + - WebSite + - Database + - Middleware + - Runtime + - Local + shortDescZh: 为速度和效率而构建的网站分析 + shortDescEn: A website analytics tool that is built for speed and efficiency + type: website + crossVersionUpdate: true + limit: 0 + website: https://umami.is/ + github: https://github.com/umami-software/umami/ + document: https://umami.is/docs/ diff --git a/apps/umami-mysql/logo.png b/apps/umami-mysql/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ede937a0a16fab795ef4eef0c5656e4563d78e5 GIT binary patch literal 9458 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 .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/umami/2.13.0/scripts/uninstall.sh b/apps/umami/2.13.0/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/umami/2.13.0/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/umami/2.13.0/scripts/upgrade.sh b/apps/umami/2.13.0/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/umami/2.13.0/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/umami/README.md b/apps/umami/README.md index 56b5f00f0..41302725a 100644 --- a/apps/umami/README.md +++ b/apps/umami/README.md @@ -8,6 +8,12 @@ Umami 网站分析提供您实时做出决策所需的数据。 ![](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) +## 声明 + +> 该应用默认使用 `PostgreSQL` 作为基础数据库,原使用 `MySQL` 数据库的用户需要进行卸载重新安装 `MySQL` 版本。 +> +> 卸载重装请注意参数保持一致,持久化目录也必须保持一致。 + ## 简介 Umami 让您轻松分析数据 diff --git a/apps/umami/data.yml b/apps/umami/data.yml index b94e9cca2..190e8d30f 100644 --- a/apps/umami/data.yml +++ b/apps/umami/data.yml @@ -1,5 +1,5 @@ name: Umami -title: 为速度和效率而构建的网站分析 +title: Umami - 网站分析 description: 为速度和效率而构建的网站分析 additionalProperties: key: umami