mirror of
https://github.com/QYG2297248353/appstore-1panel.git
synced 2025-03-22 16:21:15 +08:00
Merge remote-tracking branch 'origin/custom' into custom
This commit is contained in:
commit
6f2784b8d7
19
.github/renovate.json
vendored
19
.github/renovate.json
vendored
@ -79,14 +79,29 @@
|
|||||||
],
|
],
|
||||||
"allowedVersions": "/^4\\.8\\.\\d+\\.\\d+$/"
|
"allowedVersions": "/^4\\.8\\.\\d+\\.\\d+$/"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"matchPackageNames": [
|
||||||
|
"photoprism/photoprism"
|
||||||
|
],
|
||||||
|
"versioning": "regex:^(?<major>\\d{2})(?<minor>\\d{2})(?<patch>\\d{2})$"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"matchDatasources": [
|
"matchDatasources": [
|
||||||
"docker"
|
"docker"
|
||||||
],
|
],
|
||||||
"matchPackageNames": [
|
"matchPackageNames": [
|
||||||
"photoprism/photoprism"
|
"ghcr.io/umami-software/umami"
|
||||||
],
|
],
|
||||||
"versioning": "loose"
|
"versioning": "docker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matchDatasources": [
|
||||||
|
"docker"
|
||||||
|
],
|
||||||
|
"matchPackageNames": [
|
||||||
|
"ghcr.io/umami-software/*"
|
||||||
|
],
|
||||||
|
"versioning": "docker"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"prCreation": "immediate"
|
"prCreation": "immediate"
|
||||||
|
@ -4,7 +4,7 @@ networks:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
casdoor:
|
casdoor:
|
||||||
image: casbin/casdoor:v1.674.0
|
image: casbin/casdoor:v1.675.0
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME}
|
||||||
labels:
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
@ -4,7 +4,7 @@ networks:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ghost:
|
ghost:
|
||||||
image: ghost:5.89.6
|
image: ghost:5.90.0
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME}
|
||||||
labels:
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
@ -4,7 +4,7 @@ networks:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
jellyfin:
|
jellyfin:
|
||||||
image: jellyfin/jellyfin:10.9.9
|
image: jellyfin/jellyfin:10.9.10
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME}
|
||||||
labels:
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
@ -4,7 +4,7 @@ networks:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
nezha-dashboard:
|
nezha-dashboard:
|
||||||
image: ghcr.io/naiba/nezha-dashboard:v0.19.1
|
image: ghcr.io/naiba/nezha-dashboard:v0.19.3
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME}
|
||||||
labels:
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
@ -4,7 +4,7 @@ networks:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
onedev:
|
onedev:
|
||||||
image: 1dev/server:11.0.6
|
image: 1dev/server:11.0.7
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME}
|
||||||
labels:
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
@ -5,16 +5,14 @@ additionalProperties:
|
|||||||
envKey: PANEL_DB_HOST
|
envKey: PANEL_DB_HOST
|
||||||
required: true
|
required: true
|
||||||
type: service
|
type: service
|
||||||
default: postgresql
|
default: mysql
|
||||||
edit: true
|
edit: true
|
||||||
envKey: PANEL_DB_TYPE
|
envKey: PANEL_DB_TYPE
|
||||||
labelZh: 数据库 服务 (前置检查)
|
labelZh: MySQL 服务 (前置检查)
|
||||||
labelEn: Database Service (Pre-check)
|
labelEn: Database Service (Pre-check)
|
||||||
required: true
|
required: true
|
||||||
type: apps
|
type: apps
|
||||||
values:
|
values:
|
||||||
- label: PostgreSQL
|
|
||||||
value: postgresql
|
|
||||||
- label: MySQL
|
- label: MySQL
|
||||||
value: mysql
|
value: mysql
|
||||||
- label: MariaDB
|
- label: MariaDB
|
||||||
@ -71,18 +69,6 @@ additionalProperties:
|
|||||||
value: "1"
|
value: "1"
|
||||||
- label: 关闭
|
- label: 关闭
|
||||||
value: "0"
|
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"
|
- default: "127.0.0.1"
|
||||||
edit: true
|
edit: true
|
||||||
envKey: DB_HOSTNAME
|
envKey: DB_HOSTNAME
|
||||||
@ -90,7 +76,7 @@ additionalProperties:
|
|||||||
labelEn: Database Host
|
labelEn: Database Host
|
||||||
required: true
|
required: true
|
||||||
type: text
|
type: text
|
||||||
- default: 5432
|
- default: 3306
|
||||||
edit: true
|
edit: true
|
||||||
envKey: DB_PORT
|
envKey: DB_PORT
|
||||||
labelZh: 数据库 端口
|
labelZh: 数据库 端口
|
25
apps/umami-mysql/2.13.1/docker-compose.yml
Normal file
25
apps/umami-mysql/2.13.1/docker-compose.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
umami-mysql:
|
||||||
|
image: ghcr.io/umami-software/umami:mysql-v2.13.1
|
||||||
|
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}
|
142
apps/umami-mysql/README.md
Normal file
142
apps/umami-mysql/README.md
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
# Umami MySQL版本
|
||||||
|
|
||||||
|
为速度和效率而构建的网站分析
|
||||||
|
|
||||||
|
Umami 网站分析提供您实时做出决策所需的数据。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 简介
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
20
apps/umami-mysql/data.yml
Normal file
20
apps/umami-mysql/data.yml
Normal file
@ -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/
|
BIN
apps/umami-mysql/logo.png
Normal file
BIN
apps/umami-mysql/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
104
apps/umami/2.13.1/data.yml
Normal file
104
apps/umami/2.13.1/data.yml
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
additionalProperties:
|
||||||
|
formFields:
|
||||||
|
- child:
|
||||||
|
default: ""
|
||||||
|
envKey: PANEL_POSTGRES_SERVICE
|
||||||
|
required: true
|
||||||
|
type: service
|
||||||
|
default: postgresql
|
||||||
|
envKey: PANEL_POSTGRES_TYPE
|
||||||
|
labelZh: Postgres 服务 (前置检查)
|
||||||
|
labelEn: Postgres Service (Pre-check)
|
||||||
|
required: true
|
||||||
|
type: apps
|
||||||
|
values:
|
||||||
|
- label: PostgreSQL
|
||||||
|
value: postgresql
|
||||||
|
- default: "/home/umami"
|
||||||
|
edit: true
|
||||||
|
envKey: UMAMI_ROOT_PATH
|
||||||
|
labelZh: 数据持久化路径
|
||||||
|
labelEn: Data persistence path
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: 3000
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_APP_PORT_HTTP
|
||||||
|
labelZh: 连接端口
|
||||||
|
labelEn: Connection Port
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: APP_SECRET
|
||||||
|
labelZh: 应用密钥
|
||||||
|
labelEn: Application Secret
|
||||||
|
random: true
|
||||||
|
required: false
|
||||||
|
rule: paramComplexity
|
||||||
|
type: password
|
||||||
|
- default: "/"
|
||||||
|
edit: true
|
||||||
|
envKey: BASE_PATH
|
||||||
|
labelZh: 基础路径
|
||||||
|
labelEn: Base Path
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: ALLOWED_FRAME_URLS
|
||||||
|
labelZh: 允许的 frame 地址
|
||||||
|
labelEn: Allowed frame urls
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: "0"
|
||||||
|
edit: true
|
||||||
|
envKey: DISABLE_BOT_CHECK
|
||||||
|
labelZh: 禁用机器人检测
|
||||||
|
labelEn: Disable bot detection
|
||||||
|
required: true
|
||||||
|
type: select
|
||||||
|
values:
|
||||||
|
- label: 开启
|
||||||
|
value: "1"
|
||||||
|
- label: 关闭
|
||||||
|
value: "0"
|
||||||
|
- default: "127.0.0.1"
|
||||||
|
edit: true
|
||||||
|
envKey: DB_HOSTNAME
|
||||||
|
labelZh: 数据库 主机地址
|
||||||
|
labelEn: Database Host
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: 5432
|
||||||
|
edit: true
|
||||||
|
envKey: DB_PORT
|
||||||
|
labelZh: 数据库 端口
|
||||||
|
labelEn: Database Port
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: "umami"
|
||||||
|
edit: true
|
||||||
|
envKey: DB_USERNAME
|
||||||
|
labelZh: 数据库 用户名
|
||||||
|
labelEn: Database User
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: DB_PASSWORD
|
||||||
|
labelEn: Database Password
|
||||||
|
labelZh: 数据库 密码
|
||||||
|
random: true
|
||||||
|
required: true
|
||||||
|
rule: paramComplexity
|
||||||
|
type: password
|
||||||
|
- default: "umami"
|
||||||
|
edit: true
|
||||||
|
envKey: DB_DATABASE_NAME
|
||||||
|
labelZh: 数据库 名称
|
||||||
|
labelEn: Database Name
|
||||||
|
required: true
|
||||||
|
type: text
|
@ -4,7 +4,7 @@ networks:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
umami:
|
umami:
|
||||||
image: ghcr.io/umami-software/umami:${DATABASE_TYPE}-v2.12.1
|
image: ghcr.io/umami-software/umami:postgresql-v2.13.1
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME}
|
||||||
labels:
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
||||||
@ -19,4 +19,5 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- DISABLE_TELEMETRY = 1
|
- DISABLE_TELEMETRY = 1
|
||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_URL=${DATABASE_TYPE}://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_TYPE=postgresql
|
||||||
|
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
15
apps/umami/2.13.1/scripts/init.sh
Normal file
15
apps/umami/2.13.1/scripts/init.sh
Normal file
@ -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
|
10
apps/umami/2.13.1/scripts/uninstall.sh
Normal file
10
apps/umami/2.13.1/scripts/uninstall.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
15
apps/umami/2.13.1/scripts/upgrade.sh
Normal file
15
apps/umami/2.13.1/scripts/upgrade.sh
Normal file
@ -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
|
@ -8,6 +8,12 @@ Umami 网站分析提供您实时做出决策所需的数据。
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## 声明
|
||||||
|
|
||||||
|
> 该应用默认使用 `PostgreSQL` 作为基础数据库,原使用 `MySQL` 数据库的用户需要进行卸载重新安装 `MySQL` 版本。
|
||||||
|
>
|
||||||
|
> 卸载重装请注意参数保持一致,持久化目录也必须保持一致。
|
||||||
|
|
||||||
## 简介
|
## 简介
|
||||||
|
|
||||||
Umami 让您轻松分析数据
|
Umami 让您轻松分析数据
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name: Umami
|
name: Umami
|
||||||
title: 为速度和效率而构建的网站分析
|
title: Umami - 网站分析
|
||||||
description: 为速度和效率而构建的网站分析
|
description: 为速度和效率而构建的网站分析
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
key: umami
|
key: umami
|
||||||
|
Loading…
x
Reference in New Issue
Block a user