mirror of
https://github.com/QYG2297248353/appstore-1panel.git
synced 2026-06-16 01:02:14 +08:00
Processed apps directory via GitHub Actions
This commit is contained in:
@@ -0,0 +1,15 @@
|
|||||||
|
# 网络模式 [必填]
|
||||||
|
NETWORK_MODE=1panel-network
|
||||||
|
|
||||||
|
# WebUI 端口 [必填]
|
||||||
|
PANEL_APP_PORT_HTTP=8080
|
||||||
|
|
||||||
|
# 访问令牌 [必填]
|
||||||
|
TOKEN=
|
||||||
|
|
||||||
|
# 请求超时时间 [必填]
|
||||||
|
REQUEST_TIMEOUT=1m
|
||||||
|
|
||||||
|
# 网络代理 (HTTP/Socket5)
|
||||||
|
HTTP_PROXY=
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
additionalProperties:
|
||||||
|
formFields:
|
||||||
|
- default: "1panel-network"
|
||||||
|
edit: true
|
||||||
|
envKey: NETWORK_MODE
|
||||||
|
labelZh: 网络模式
|
||||||
|
labelEn: Network mode
|
||||||
|
required: true
|
||||||
|
type: select
|
||||||
|
values:
|
||||||
|
- label: 主机网络模式
|
||||||
|
value: "host"
|
||||||
|
- label: 桥接网络模式
|
||||||
|
value: "bridge"
|
||||||
|
- label: 无网络模式
|
||||||
|
value: "none"
|
||||||
|
- label: 1panel-network
|
||||||
|
value: "1panel-network"
|
||||||
|
- default: 8080
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_APP_PORT_HTTP
|
||||||
|
labelZh: WebUI 端口
|
||||||
|
labelEn: WebUI port
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: TOKEN
|
||||||
|
labelZh: 访问令牌
|
||||||
|
labelEn: Access Token
|
||||||
|
required: true
|
||||||
|
type: password
|
||||||
|
- default: "1m"
|
||||||
|
edit: true
|
||||||
|
envKey: REQUEST_TIMEOUT
|
||||||
|
labelZh: 请求超时时间
|
||||||
|
labelEn: Request Timeout
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: HTTP_PROXY
|
||||||
|
labelZh: 网络代理 (HTTP/Socket5)
|
||||||
|
labelEn: Network Proxy (HTTP/Socket5)
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
services:
|
||||||
|
metatube-server:
|
||||||
|
container_name: metatube-server-memory
|
||||||
|
env_file:
|
||||||
|
- ./envs/global.env
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
- HTTPS_PROXY=${HTTP_PROXY}
|
||||||
|
- DB_AUTO_MIGRATE=true
|
||||||
|
- PORT=${PANEL_APP_PORT_HTTP}
|
||||||
|
image: ghcr.io/metatube-community/metatube-server:1.3.1
|
||||||
|
labels:
|
||||||
|
createdBy: Apps
|
||||||
|
network_mode: ${NETWORK_MODE}
|
||||||
|
ports:
|
||||||
|
- ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
|
||||||
|
restart: always
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
# MetaTube 服务端
|
||||||
|
|
||||||
|
为 Jellyfin/Emby/Plex 开发的超级好用的元数据插件
|
||||||
|
|
||||||
|

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

|
||||||
|
|
||||||
|
## 应用特性
|
||||||
|
|
||||||
|
+ 完整数据:包括标题、简介、演员、标签、评分等内容。
|
||||||
|
+ 完整搜索:支持通过众多的刮削源搜索影片和演员信息。
|
||||||
|
+ 预告功能:无需下载完整预告视频即可在线观看预告片。
|
||||||
|
+ 计划任务:自动整理影片标签以及在后台自动更新插件。
|
||||||
|
+ 人脸识别:内置的人脸识别以人脸为中心裁剪海报图像。
|
||||||
|
+ 自动翻译:支持将特定的元数据内容翻译成需要的语言。
|
||||||
|
|
||||||
|
## 应用说明
|
||||||
|
|
||||||
|
该应用为 MetaTube 服务端,用于为 Jellyfin/Emby/Plex 提供元数据插件。
|
||||||
|
|
||||||
|
优先推荐部署在: 云服务器(美国/日本)
|
||||||
|
|
||||||
|
如果您的网络环境不适合部署服务端,可以尝试配置网络代理。仅支持 HTTP 代理 / Socks5 代理。
|
||||||
|
|
||||||
|
## 插件安装
|
||||||
|
|
||||||
|
### Jellyfin
|
||||||
|
|
||||||
|
1. 进入 Jellyfin 控制台 > 插件目录/存储库 > 设置,点击添加
|
||||||
|
2. 输入存储库名称:MetaTube
|
||||||
|
3. 输入存储库
|
||||||
|
|
||||||
|
```url
|
||||||
|
# URL for GitHub
|
||||||
|
https://raw.githubusercontent.com/metatube-community/jellyfin-plugin-metatube/dist/manifest.json
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 在插件目录下找到 MetaTube,点击安装
|
||||||
|
5. 重启 Jellyfin
|
||||||
|
|
||||||
|
> 适用于中国大陆的存储库
|
||||||
|
>
|
||||||
|
> ```url
|
||||||
|
> # URL for jsDelivr
|
||||||
|
> https://cdn.jsdelivr.net/gh/metatube-community/jellyfin-plugin-metatube@dist/manifest.json
|
||||||
|
> ```
|
||||||
|
|
||||||
|
### Emby
|
||||||
|
|
||||||
|
1. 从 Releases 下载 MetaTube 最新插件
|
||||||
|
2. 解压出 MetaTube.dll 文件
|
||||||
|
3. 将 dll 文件复制到 Emby 插件目录
|
||||||
|
4. 重启 Emby 服务
|
||||||
|
|
||||||
|
> PS:Emby 后续插件更新由计划任务在后台自动完成。
|
||||||
|
|
||||||
|
### Plex
|
||||||
|
|
||||||
|
1. 从 [GitHub](https://github.com/metatube-community/metatube-plex-plugins/archive/refs/heads/main.zip)
|
||||||
|
或 [Releases](https://github.com/metatube-community/metatube-plex-plugins/releases) 下载最新的插件
|
||||||
|
zip 文件
|
||||||
|
2. 将解压后的 MetaTube.bundle 文件夹移入 Plex 插件目录的根目录
|
||||||
|
3. 其中文件夹 MetaTubeHelper.bundle 为辅助插件,可选择性安装
|
||||||
|
4. 重启 Plex 服务
|
||||||
|
|
||||||
|
### 常见 Emby 插件应用目录
|
||||||
|
|
||||||
|
#### 群晖
|
||||||
|
|
||||||
|
`/volume1/Emby/plugins`
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
|
||||||
|
`emby\programdata\plugins`
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
`<配置文件夹>/plugins`
|
||||||
|
|
||||||
|
#### Linux(供参考)
|
||||||
|
|
||||||
|
`/var/lib/emby-server/plugins/`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
additionalProperties:
|
||||||
|
key: metatube-server-memory
|
||||||
|
name: MetaTube (内存模式)
|
||||||
|
tags:
|
||||||
|
- WebSite
|
||||||
|
- Tool
|
||||||
|
- Local
|
||||||
|
shortDescZh: 为 Jellyfin/Emby/Plex 开发的超级好用的成人元数据刮削插件
|
||||||
|
shortDescEn: A super easy-to-use adult metadata scraping plugin developed for Jellyfin/Emby/Plex
|
||||||
|
type: website
|
||||||
|
crossVersionUpdate: true
|
||||||
|
limit: 0
|
||||||
|
website: https://github.com/metatube-community/
|
||||||
|
github: https://github.com/metatube-community/
|
||||||
|
document: https://metatube-community.github.io/
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
@@ -0,0 +1,51 @@
|
|||||||
|
# Postgres 服务 (前置检查)
|
||||||
|
PANEL_POSTGRES_TYPE=postgresql
|
||||||
|
|
||||||
|
# Redis 服务 (前置检查) [必填]
|
||||||
|
PANEL_REDIS_TYPE=redis
|
||||||
|
|
||||||
|
# 数据持久化路径 [必填]
|
||||||
|
CLICKHOUSE_SERVER_ROOT_PATH=/home/clickhouse-server
|
||||||
|
|
||||||
|
# WebUI 端口 [必填]
|
||||||
|
PANEL_APP_PORT_HTTP=8123
|
||||||
|
|
||||||
|
# Native/TCP 通讯端口 [必填]
|
||||||
|
PANEL_APP_PORT_NATIVE_TCP=9000
|
||||||
|
|
||||||
|
# 服务器通信端口 [必填]
|
||||||
|
PANEL_APP_PORT_INTER_SERVER=9009
|
||||||
|
|
||||||
|
# ClickHouse 访问地址 [必填]
|
||||||
|
CLICKHOUSE_URL=http://127.0.0.1:8123/openpanel
|
||||||
|
|
||||||
|
# Redis 地址 [必填]
|
||||||
|
REDIS_URL=redis://127.0.0.1:6379
|
||||||
|
|
||||||
|
# Redis 地址 [必填]
|
||||||
|
DATABASE_URL=postgresql://postgres_user:postgres_pass@127.0.0.1:5432/postgres_db_name?schema=public
|
||||||
|
|
||||||
|
# 开放注册 [必填]
|
||||||
|
ALLOW_REGISTRATION=false
|
||||||
|
|
||||||
|
# 开放邀请 [必填]
|
||||||
|
ALLOW_INVITATION=false
|
||||||
|
|
||||||
|
# 邮件发送 (Resend) API KEY
|
||||||
|
RESEND_API_KEY=
|
||||||
|
|
||||||
|
# 邮件发送者地址
|
||||||
|
EMAIL_SENDER=
|
||||||
|
|
||||||
|
# Github 客户端 ID (OAuth2)
|
||||||
|
GITHUB_CLIENT_ID=
|
||||||
|
|
||||||
|
# Github 客户端密钥 (OAuth2)
|
||||||
|
GITHUB_CLIENT_SECRET=
|
||||||
|
|
||||||
|
# Google 客户端 ID (OAuth2)
|
||||||
|
GOOGLE_CLIENT_ID=
|
||||||
|
|
||||||
|
# Google 客户端密钥 (OAuth2)
|
||||||
|
GOOGLE_CLIENT_SECRET=
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<logger>
|
||||||
|
<level>warning</level>
|
||||||
|
<console>true</console>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<keep_alive_timeout>10</keep_alive_timeout>
|
||||||
|
|
||||||
|
<!-- Stop all the unnecessary logging -->
|
||||||
|
<query_thread_log remove="remove"/>
|
||||||
|
<query_log remove="remove"/>
|
||||||
|
<text_log remove="remove"/>
|
||||||
|
<trace_log remove="remove"/>
|
||||||
|
<metric_log remove="remove"/>
|
||||||
|
<asynchronous_metric_log remove="remove"/>
|
||||||
|
<session_log remove="remove"/>
|
||||||
|
<part_log remove="remove"/>
|
||||||
|
|
||||||
|
<listen_host>0.0.0.0</listen_host>
|
||||||
|
<interserver_listen_host>0.0.0.0</interserver_listen_host>
|
||||||
|
<interserver_http_host>op-ch</interserver_http_host>
|
||||||
|
|
||||||
|
<!-- Not used anymore, but kept for backwards compatibility -->
|
||||||
|
<macros>
|
||||||
|
<shard>1</shard>
|
||||||
|
<replica>replica1</replica>
|
||||||
|
<cluster>openpanel_cluster</cluster>
|
||||||
|
</macros>
|
||||||
|
</clickhouse>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<profiles>
|
||||||
|
<default>
|
||||||
|
<log_queries>0</log_queries>
|
||||||
|
<log_query_threads>0</log_query_threads>
|
||||||
|
</default>
|
||||||
|
</profiles>
|
||||||
|
</clickhouse>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
clickhouse client -n <<-EOSQL
|
||||||
|
CREATE DATABASE IF NOT EXISTS openpanel;
|
||||||
|
EOSQL
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
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: false
|
||||||
|
type: apps
|
||||||
|
values:
|
||||||
|
- label: PostgreSQL
|
||||||
|
value: postgresql
|
||||||
|
- child:
|
||||||
|
default: ""
|
||||||
|
envKey: PANEL_REDIS_SERVICE
|
||||||
|
required: true
|
||||||
|
type: service
|
||||||
|
default: redis
|
||||||
|
envKey: PANEL_REDIS_TYPE
|
||||||
|
labelZh: Redis 服务 (前置检查)
|
||||||
|
labelEn: Redis Service (Pre-check)
|
||||||
|
required: true
|
||||||
|
type: apps
|
||||||
|
values:
|
||||||
|
- label: Redis
|
||||||
|
value: redis
|
||||||
|
- default: "/home/clickhouse-server"
|
||||||
|
edit: true
|
||||||
|
envKey: CLICKHOUSE_SERVER_ROOT_PATH
|
||||||
|
labelZh: 数据持久化路径
|
||||||
|
labelEn: Data persistence path
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: 8123
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_APP_PORT_HTTP
|
||||||
|
labelZh: WebUI 端口
|
||||||
|
labelEn: WebUI port
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: 9000
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_APP_PORT_NATIVE_TCP
|
||||||
|
labelZh: Native/TCP 通讯端口
|
||||||
|
labelEn: Native/TCP interface
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: 9009
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_APP_PORT_INTER_SERVER
|
||||||
|
labelZh: 服务器通信端口
|
||||||
|
labelEn: Inter-server communication
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: "http://127.0.0.1:8123/openpanel"
|
||||||
|
edit: true
|
||||||
|
envKey: CLICKHOUSE_URL
|
||||||
|
labelZh: ClickHouse 访问地址
|
||||||
|
labelEn: ClickHouse URL
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: "redis://127.0.0.1:6379"
|
||||||
|
edit: true
|
||||||
|
envKey: REDIS_URL
|
||||||
|
labelZh: Redis 地址
|
||||||
|
labelEn: Redis Url
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: "postgresql://postgres_user:postgres_pass@127.0.0.1:5432/postgres_db_name?schema=public"
|
||||||
|
edit: true
|
||||||
|
envKey: DATABASE_URL
|
||||||
|
labelZh: Redis 地址
|
||||||
|
labelEn: Redis Url
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: "false"
|
||||||
|
edit: true
|
||||||
|
envKey: ALLOW_REGISTRATION
|
||||||
|
labelZh: 开放注册
|
||||||
|
labelEn: Open Registration
|
||||||
|
required: true
|
||||||
|
type: select
|
||||||
|
values:
|
||||||
|
- label: 允许注册
|
||||||
|
value: "true"
|
||||||
|
- label: 禁止注册
|
||||||
|
value: "false"
|
||||||
|
- default: "false"
|
||||||
|
edit: true
|
||||||
|
envKey: ALLOW_INVITATION
|
||||||
|
labelZh: 开放邀请
|
||||||
|
labelEn: Open Invitation
|
||||||
|
required: true
|
||||||
|
type: select
|
||||||
|
values:
|
||||||
|
- label: 允许邀请
|
||||||
|
value: "true"
|
||||||
|
- label: 禁止邀请
|
||||||
|
value: "false"
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: RESEND_API_KEY
|
||||||
|
labelZh: 邮件发送 (Resend) API KEY
|
||||||
|
labelEn: Email (Resend) Send API KEY
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: EMAIL_SENDER
|
||||||
|
labelZh: 邮件发送者地址
|
||||||
|
labelEn: Email Sender Address
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: GITHUB_CLIENT_ID
|
||||||
|
labelZh: Github 客户端 ID (OAuth2)
|
||||||
|
labelEn: Github Client ID (OAuth2)
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: GITHUB_CLIENT_SECRET
|
||||||
|
labelZh: Github 客户端密钥 (OAuth2)
|
||||||
|
labelEn: Github Client Secret (OAuth2)
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: GOOGLE_CLIENT_ID
|
||||||
|
labelZh: Google 客户端 ID (OAuth2)
|
||||||
|
labelEn: Google Client ID (OAuth2)
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: GOOGLE_CLIENT_SECRET
|
||||||
|
labelZh: Google 客户端密钥 (OAuth2)
|
||||||
|
labelEn: Google Client Secret (OAuth2)
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
services:
|
||||||
|
clickhouse-server:
|
||||||
|
container_name: openpanel
|
||||||
|
env_file:
|
||||||
|
- ./envs/global.env
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
- TZ=Asia/Shanghai
|
||||||
|
- DATABASE_URL_DIRECT=${DATABASE_URL}
|
||||||
|
- BATCH_SIZE=5000
|
||||||
|
- BATCH_INTERVAL=10000
|
||||||
|
- CONCURRENCY=10
|
||||||
|
- WORKER_PORT=9999
|
||||||
|
- API_PORT=3333
|
||||||
|
- NEXT_PUBLIC_API_URL="http://localhost:3333"
|
||||||
|
- NEXT_PUBLIC_DASHBOARD_URL="http://localhost:3000"
|
||||||
|
- GITHUB_REDIRECT_URI=https://openpanel.domain.com/api/oauth/github/callback
|
||||||
|
- GOOGLE_REDIRECT_URI=https://openpanel.domain.com/api/oauth/google/callback
|
||||||
|
image: clickhouse/clickhouse-server:25.6.5.41-alpine
|
||||||
|
labels:
|
||||||
|
createdBy: Apps
|
||||||
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
ports:
|
||||||
|
- ${PANEL_APP_PORT_HTTP}:8123
|
||||||
|
- ${PANEL_APP_PORT_NATIVE_TCP}:9000
|
||||||
|
- ${PANEL_APP_PORT_INTER_SERVER}:9009
|
||||||
|
restart: always
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
hard: 262144
|
||||||
|
soft: 262144
|
||||||
|
volumes:
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/data:/var/lib/clickhouse
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/logs:/var/log/clickhouse-server
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/config/op-config.xml:/etc/clickhouse-server/config.d/op-config.xml
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/config/op-user-config.xml:/etc/clickhouse-server/users.d/op-user-config.xml
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/config/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# setup-1 add default values
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
sed -i '/^ENV_FILE=/d' .env
|
||||||
|
sed -i '/^GLOBAL_ENV_FILE=/d' .env
|
||||||
|
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||||
|
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
|
||||||
|
|
||||||
|
if [ ! -d $CLICKHOUSE_SERVER_ROOT_PATH/config ]; then
|
||||||
|
mkdir -p $CLICKHOUSE_SERVER_ROOT_PATH/config
|
||||||
|
fi
|
||||||
|
cp -rn ./config/* $CLICKHOUSE_SERVER_ROOT_PATH/config/
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# Openpanel
|
||||||
|
|
||||||
|
Openpanel 是一个开源网络和产品分析平台,它结合了 Mixpanel 的强大功能和 Plausible 的易用性,是最好的 Google Analytics
|
||||||
|
替代品之一。
|
||||||
|
|
||||||
|

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

|
||||||
|
|
||||||
|
## 特性
|
||||||
|
|
||||||
|
### 网络分析
|
||||||
|
|
||||||
|
+ 实时数据 :实时查看访客活动
|
||||||
|
+ 流量来源 :了解访客来自哪里
|
||||||
|
+ 地理洞察 :追踪访客位置和趋势
|
||||||
|
+ 设备分析 :监控不同设备的使用情况
|
||||||
|
+ 页面性能 :分析访问量最大的页面
|
||||||
|
|
||||||
|
### 产品分析
|
||||||
|
|
||||||
|
+ 事件跟踪 :监控用户操作和交互
|
||||||
|
+ 用户资料 :建立详细的用户旅程洞察
|
||||||
|
+ 漏斗 :分析转化路径
|
||||||
|
+ 留存率 :跟踪用户参与度
|
||||||
|
+ 自定义属性 :为事件添加上下文
|
||||||
|
|
||||||
|
## 快速开始 SDK
|
||||||
|
|
||||||
|
### 脚本标签
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.op = window.op || function (...args) {
|
||||||
|
(window.op.q = window.op.q || []).push(args);
|
||||||
|
};
|
||||||
|
window.op('init', {
|
||||||
|
clientId: 'YOUR_CLIENT_ID',
|
||||||
|
trackScreenViews: true,
|
||||||
|
trackOutgoingLinks: true,
|
||||||
|
trackAttributes: true,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script src="https://<Domain>/op1.js" defer async></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
additionalProperties:
|
||||||
|
key: openpanel
|
||||||
|
name: Openpanel
|
||||||
|
tags:
|
||||||
|
- WebSite
|
||||||
|
- Local
|
||||||
|
shortDescZh: 开源网络和产品分析平台
|
||||||
|
shortDescEn: An open source network and product analysis platform
|
||||||
|
type: website
|
||||||
|
crossVersionUpdate: true
|
||||||
|
limit: 0
|
||||||
|
website: https://openpanel.dev/
|
||||||
|
github: https://github.com/Openpanel-dev/openpanel/
|
||||||
|
document: https://openpanel.dev/
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
+1
-1
@@ -12,7 +12,7 @@ services:
|
|||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_TYPE=mysql
|
- DATABASE_TYPE=mysql
|
||||||
- DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
||||||
image: umamisoftware/umami:mysql-v2.18.1
|
image: umamisoftware/umami:mysql-v2.19.0
|
||||||
labels:
|
labels:
|
||||||
createdBy: Apps
|
createdBy: Apps
|
||||||
networks:
|
networks:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# setup-1 add default values
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
sed -i '/^ENV_FILE=/d' .env
|
||||||
|
sed -i '/^GLOBAL_ENV_FILE=/d' .env
|
||||||
|
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||||
|
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_TYPE=postgresql
|
- DATABASE_TYPE=postgresql
|
||||||
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
||||||
image: umamisoftware/umami:postgresql-v2.18.1
|
image: umamisoftware/umami:postgresql-v2.19.0
|
||||||
labels:
|
labels:
|
||||||
createdBy: Apps
|
createdBy: Apps
|
||||||
networks:
|
networks:
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# setup-1 add default values
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
sed -i '/^ENV_FILE=/d' .env
|
||||||
|
sed -i '/^GLOBAL_ENV_FILE=/d' .env
|
||||||
|
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||||
|
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# setup-1 add default values
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
sed -i '/^ENV_FILE=/d' .env
|
||||||
|
sed -i '/^GLOBAL_ENV_FILE=/d' .env
|
||||||
|
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||||
|
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# 网络模式 [必填]
|
||||||
|
NETWORK_MODE=1panel-network
|
||||||
|
|
||||||
|
# WebUI 端口 [必填]
|
||||||
|
PANEL_APP_PORT_HTTP=8080
|
||||||
|
|
||||||
|
# 访问令牌 [必填]
|
||||||
|
TOKEN=
|
||||||
|
|
||||||
|
# 请求超时时间 [必填]
|
||||||
|
REQUEST_TIMEOUT=1m
|
||||||
|
|
||||||
|
# 网络代理 (HTTP/Socket5)
|
||||||
|
HTTP_PROXY=
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
services:
|
||||||
|
metatube-server:
|
||||||
|
container_name: metatube-server-memory
|
||||||
|
env_file:
|
||||||
|
- ./envs/global.env
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
- HTTPS_PROXY=${HTTP_PROXY}
|
||||||
|
- DB_AUTO_MIGRATE=true
|
||||||
|
- PORT=${PANEL_APP_PORT_HTTP}
|
||||||
|
image: ghcr.io/metatube-community/metatube-server:1.3.1
|
||||||
|
labels:
|
||||||
|
createdBy: Apps
|
||||||
|
network_mode: ${NETWORK_MODE}
|
||||||
|
ports:
|
||||||
|
- ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
|
||||||
|
restart: always
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
ENV_FILE=.env
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
TZ=Asia/Shanghai
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# Postgres 服务 (前置检查)
|
||||||
|
PANEL_POSTGRES_TYPE=postgresql
|
||||||
|
|
||||||
|
# Redis 服务 (前置检查) [必填]
|
||||||
|
PANEL_REDIS_TYPE=redis
|
||||||
|
|
||||||
|
# 数据持久化路径 [必填]
|
||||||
|
CLICKHOUSE_SERVER_ROOT_PATH=/home/clickhouse-server
|
||||||
|
|
||||||
|
# WebUI 端口 [必填]
|
||||||
|
PANEL_APP_PORT_HTTP=8123
|
||||||
|
|
||||||
|
# Native/TCP 通讯端口 [必填]
|
||||||
|
PANEL_APP_PORT_NATIVE_TCP=9000
|
||||||
|
|
||||||
|
# 服务器通信端口 [必填]
|
||||||
|
PANEL_APP_PORT_INTER_SERVER=9009
|
||||||
|
|
||||||
|
# ClickHouse 访问地址 [必填]
|
||||||
|
CLICKHOUSE_URL=http://127.0.0.1:8123/openpanel
|
||||||
|
|
||||||
|
# Redis 地址 [必填]
|
||||||
|
REDIS_URL=redis://127.0.0.1:6379
|
||||||
|
|
||||||
|
# Redis 地址 [必填]
|
||||||
|
DATABASE_URL=postgresql://postgres_user:postgres_pass@127.0.0.1:5432/postgres_db_name?schema=public
|
||||||
|
|
||||||
|
# 开放注册 [必填]
|
||||||
|
ALLOW_REGISTRATION=false
|
||||||
|
|
||||||
|
# 开放邀请 [必填]
|
||||||
|
ALLOW_INVITATION=false
|
||||||
|
|
||||||
|
# 邮件发送 (Resend) API KEY
|
||||||
|
RESEND_API_KEY=
|
||||||
|
|
||||||
|
# 邮件发送者地址
|
||||||
|
EMAIL_SENDER=
|
||||||
|
|
||||||
|
# Github 客户端 ID (OAuth2)
|
||||||
|
GITHUB_CLIENT_ID=
|
||||||
|
|
||||||
|
# Github 客户端密钥 (OAuth2)
|
||||||
|
GITHUB_CLIENT_SECRET=
|
||||||
|
|
||||||
|
# Google 客户端 ID (OAuth2)
|
||||||
|
GOOGLE_CLIENT_ID=
|
||||||
|
|
||||||
|
# Google 客户端密钥 (OAuth2)
|
||||||
|
GOOGLE_CLIENT_SECRET=
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<logger>
|
||||||
|
<level>warning</level>
|
||||||
|
<console>true</console>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<keep_alive_timeout>10</keep_alive_timeout>
|
||||||
|
|
||||||
|
<!-- Stop all the unnecessary logging -->
|
||||||
|
<query_thread_log remove="remove"/>
|
||||||
|
<query_log remove="remove"/>
|
||||||
|
<text_log remove="remove"/>
|
||||||
|
<trace_log remove="remove"/>
|
||||||
|
<metric_log remove="remove"/>
|
||||||
|
<asynchronous_metric_log remove="remove"/>
|
||||||
|
<session_log remove="remove"/>
|
||||||
|
<part_log remove="remove"/>
|
||||||
|
|
||||||
|
<listen_host>0.0.0.0</listen_host>
|
||||||
|
<interserver_listen_host>0.0.0.0</interserver_listen_host>
|
||||||
|
<interserver_http_host>op-ch</interserver_http_host>
|
||||||
|
|
||||||
|
<!-- Not used anymore, but kept for backwards compatibility -->
|
||||||
|
<macros>
|
||||||
|
<shard>1</shard>
|
||||||
|
<replica>replica1</replica>
|
||||||
|
<cluster>openpanel_cluster</cluster>
|
||||||
|
</macros>
|
||||||
|
</clickhouse>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<clickhouse>
|
||||||
|
<profiles>
|
||||||
|
<default>
|
||||||
|
<log_queries>0</log_queries>
|
||||||
|
<log_query_threads>0</log_query_threads>
|
||||||
|
</default>
|
||||||
|
</profiles>
|
||||||
|
</clickhouse>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
clickhouse client -n <<-EOSQL
|
||||||
|
CREATE DATABASE IF NOT EXISTS openpanel;
|
||||||
|
EOSQL
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
services:
|
||||||
|
clickhouse-server:
|
||||||
|
container_name: openpanel
|
||||||
|
env_file:
|
||||||
|
- ./envs/global.env
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
- TZ=Asia/Shanghai
|
||||||
|
- DATABASE_URL_DIRECT=${DATABASE_URL}
|
||||||
|
- BATCH_SIZE=5000
|
||||||
|
- BATCH_INTERVAL=10000
|
||||||
|
- CONCURRENCY=10
|
||||||
|
- WORKER_PORT=9999
|
||||||
|
- API_PORT=3333
|
||||||
|
- NEXT_PUBLIC_API_URL="http://localhost:3333"
|
||||||
|
- NEXT_PUBLIC_DASHBOARD_URL="http://localhost:3000"
|
||||||
|
- GITHUB_REDIRECT_URI=https://openpanel.domain.com/api/oauth/github/callback
|
||||||
|
- GOOGLE_REDIRECT_URI=https://openpanel.domain.com/api/oauth/google/callback
|
||||||
|
image: clickhouse/clickhouse-server:25.6.5.41-alpine
|
||||||
|
labels:
|
||||||
|
createdBy: Apps
|
||||||
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
ports:
|
||||||
|
- ${PANEL_APP_PORT_HTTP}:8123
|
||||||
|
- ${PANEL_APP_PORT_NATIVE_TCP}:9000
|
||||||
|
- ${PANEL_APP_PORT_INTER_SERVER}:9009
|
||||||
|
restart: always
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
hard: 262144
|
||||||
|
soft: 262144
|
||||||
|
volumes:
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/data:/var/lib/clickhouse
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/logs:/var/log/clickhouse-server
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/config/op-config.xml:/etc/clickhouse-server/config.d/op-config.xml
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/config/op-user-config.xml:/etc/clickhouse-server/users.d/op-user-config.xml
|
||||||
|
- ${CLICKHOUSE_SERVER_ROOT_PATH}/config/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
ENV_FILE=.env
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
TZ=Asia/Shanghai
|
||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_TYPE=mysql
|
- DATABASE_TYPE=mysql
|
||||||
- DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
||||||
image: umamisoftware/umami:mysql-v2.16.0
|
image: umamisoftware/umami:mysql-v2.19.0
|
||||||
labels:
|
labels:
|
||||||
createdBy: Apps
|
createdBy: Apps
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ services:
|
|||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_TYPE=mysql
|
- DATABASE_TYPE=mysql
|
||||||
- DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_URL=mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
||||||
image: umamisoftware/umami:mysql-v2.18.1
|
image: umamisoftware/umami:mysql-v2.16.0
|
||||||
labels:
|
labels:
|
||||||
createdBy: Apps
|
createdBy: Apps
|
||||||
networks:
|
networks:
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
ENV_FILE=.env
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
TZ=Asia/Shanghai
|
||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_TYPE=postgresql
|
- DATABASE_TYPE=postgresql
|
||||||
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
||||||
image: umamisoftware/umami:postgresql-v2.16.0
|
image: umamisoftware/umami:postgresql-v2.19.0
|
||||||
labels:
|
labels:
|
||||||
createdBy: Apps
|
createdBy: Apps
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
- REMOVE_TRAILING_SLASH = 1
|
- REMOVE_TRAILING_SLASH = 1
|
||||||
- DATABASE_TYPE=postgresql
|
- DATABASE_TYPE=postgresql
|
||||||
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}/${DB_DATABASE_NAME}
|
||||||
image: umamisoftware/umami:postgresql-v2.18.1
|
image: umamisoftware/umami:postgresql-v2.16.0
|
||||||
labels:
|
labels:
|
||||||
createdBy: Apps
|
createdBy: Apps
|
||||||
networks:
|
networks:
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
ENV_FILE=.env
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
TZ=Asia/Shanghai
|
||||||
Reference in New Issue
Block a user