PaoPao
- Go (1.20+)
- Node.js (14+)
- MySQL (5.7+)
- Redis
- Meilisearch
git clone https://github.com/rocboss/paopao-ce.git
-
导入项目
根 目 录下的 scripts/paopao.sql
文 件 至 MySQL数 据 库 -
拷贝项目
根 目 录下config.yaml.sample
文 件 至 config.yaml
,按照注 释完成 配置 编辑 -
编译
后 端
编译api服 务:make build
编译api
服 务、内 嵌 web前 端 ui:make build
也可以
使用 精 简模式 编译,不 内 嵌 web前 端 ui:make build TAGS='slim embed'
编译
后 在 release
目 录可以找到对应可 执行文 件 。release/paopao
-
直接 运行后 端
运行api服 务:make run
运行api
服 务、web前 端 ui服 务:make run TAGS='embed'
提示 : 如果需要 内 嵌 web前 端 ui,请先构建web前 端 (建 议设置 web/.env为VITE_HOST="")。 -
使用 内 置 的 Migrate机 制 自 动升级维护SQL DDL:#
添加 Migration功 能 到 Features中 开启migrate功 能 vim config.yaml # file: config.yaml # Features: # Default: ["Base", "MySQL", "Zinc", "MinIO", "LoggerZinc", "Migration"] # 编译时加入 migration tag编译出 支持 migrate功 能 的 可 执行文 件 make build TAGS='migration' release/paopao #或 者 带上migration tag直接 运行 make run TAGS='migration'注意 :默 认编译出来 的 可 执行文 件 是 不 内 置 migrate功 能 ,需要 编译时带上 migration tag才能 内 置 支持 migrage功 能 。
-
进入
前 端 目 录web
,拷贝.env
到 .env.local
,编辑.env.local
文 件 中 后 端 服 务地址 及其他 配置 项,下 载依赖包cd ./web && cp .env .env.local vim .env.local yarn
-
编译
前 端 yarn build
build
完成 后 ,可 以在dist目 录获取编译产出,配置 nginx指向 至 该目录即可
-
进入
前 端 目 录web
,拷贝.env
到 .env.local
,编辑.env.local
文 件 中 后 端 服 务地址 及其他 配置 项,下 载依赖包cd ./web && cp .env .env.local vim .env.local yarn
-
编译
前 端 yarn build
-
构建桌面
端 yarn tauri build
桌面
端 是 使用 Rust + tauri编写的 ,需要 安 装 tauri的 依 赖,具体 参考 https://tauri.studio/v1/guides/getting-started/prerequisites.
后 端 :
# 默 认参数 构建, 默 认内嵌 web ui并设置 api host为空
docker build -t your/paopao-ce:tag .
# 内 嵌 web ui并且自 定 义API host参 数
docker build -t your/paopao-ce:tag --build-arg API_HOST=http://api.paopao.info .
# 内 嵌 web ui并且使用 本地 web/.env中 的 API host
docker build -t your/paopao-ce:tag --build-arg USE_API_HOST=no .
# 内 嵌 web ui并且使用 本地 编译的 web/dist构建
docker build -t your/paopao-ce:tag --build-arg USE_DIST=yes .
# 只 编译api server
docker build -t your/paopao-ce:tag --build-arg EMBED_UI=no .
# 运行
mkdir custom && docker run -d -p 8008:8008 -v ${PWD}/custom:/app/paopao-ce/custom -v ${PWD}/config.yaml.sample:/app/paopao-ce/config.yaml your/paopao-ce:tag
# 或 者 直接 运行构建好 的 docker image
mkdir custom && docker run -d -p 8008:8008 -v ${PWD}/custom:/app/paopao-ce/custom -v ${PWD}/config.yaml.sample:/app/paopao-ce/config.yaml bitbus/paopao-ce:latest
前 端 :
cd web
# 默 认参数 构建
docker build -t your/paopao-ce:web .
# 自 定 义API host 参 数 构建
docker build -t your/paopao-ce:web --build-arg API_HOST=http://api.paopao.info .
# 使用 本地 编译的 dist构建
docker build -t your/paopao-ce:web --build-arg USE_DIST=yes .
# 运行
docker run -d -p 8010:80 your/paopao-ce:web
- All-In-One:
# 构建Image
docker buildx build --build-arg USE_DIST="yes" -t your/paopao-ce:all-in-one-latest -f Dockerfile.allinone .
# 运行
docker run --name paopao-ce-allinone -d -p 8000:8008 -p 7700:7700 -v ./data/custom:/app/custom -v ./data/meili_data:/app/meili_data your/paopao-ce:all-in-one-latest
# 或 者 使用 官 方 Image运行
docker run --name paopao-ce-allinone -d -p 8000:8008 -p 7700:7700 -v ./data/custom:/app/custom -v ./data/meili_data:/app/meili_data bitbus/paopao-ce:all-in-one-latest
# 或 者 使用 官 方 Image运行 + 自 定 义config.yaml
docker run --name paopao-ce-allinone -d -p 8000:8008 -p 7700:7700 -v ./config.yaml:/app/config.yaml -v ./data/custom:/app/custom -v ./data/meili_data:/app/meili_data bitbus/paopao-ce:all-in-one-latest
注意 在 config.yaml
中 Meili.ApiKey
的 值必须与容器 中 meili启动时设定 的 MEILI_MASTER_KEY
环境变量值相同 ,默 认为paopao-meilisearch
.可 以在docker启动容器 时通过-e MEILI_MASTER_KEY=<custom-key>
设置该值。
git clone https://github.com/rocboss/paopao-ce.git
cd paopao-ce && docker compose up -d
# visit http://localhost:8008 👀 paopao-ce
# visit http://localhost:8001 👀 RedisInsight
# visit http://localhost:8080 👀 phpMyAdmin
# file: docker-compose.yaml
...
backend:
image: bitbus/paopao-ce:latest
restart: always
depends_on:
- db
- redis
- zinc
# modify below to reflect your custom configure
volumes:
- ./config.yaml:/app/paopao-ce/config.yaml
ports:
- 8008:8008
networks:
- paopao-network
....
注意 :默 认提供 的 docker-compose.yaml初 衷是搭建本 机 开发调试环境,如果需要 产品部署 供 外 网访问,请自行 调优配置 参 数 或 使用 其他方式 部署 。
docs
- deploy - paopao-ce
部署 文 档 - discuss - 开发
相 关的问题交流 论述文 档 - openapi - paopao-ce
后 端 导出API文 档 - proposal - paopao-ce
功 能 特性 提 按文档
比 如,关于paopao-ce的 设计定位 ,可 以参考 docs/proposal/001-关于paopao-ce的 设计定位 ,简要阐述了 paopao-ce是 如何 定位 自身 的 。
开发Docs
config.yaml
添加 Docs
功 能 项:
...
Features:
Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile", "Docs"]
Docs: ["Docs:OpenAPI"]
...
- 构建时将
docs
添加 到 TAGS中 :
make run TAGS='docs'
# visit http://127.0.0.1:8011/docs/openapi
config.yaml.sample
./custom/config.yaml
、./config.yaml
cp config.yaml.sample config.yaml
vim config.yaml # 修 改 参 数
paopao serve
Features
...
Features:
Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile"]
Develop: ["Base", "MySQL", "Option", "Sms", "AliOSS", "LoggerZinc"]
Demo: ["Base", "MySQL", "Option", "Sms", "MinIO", "LoggerZinc"]
Slim: ["Base", "Sqlite3", "LocalOSS", "LoggerFile"]
Base: ["Zinc", "Redis", "Alipay",]
Option: ["SimpleCacheIndex"]
Sms: "SmsJuhe"
...
这里 Default
套件 Base/Option
MySQL/LocalOSS/LoggerFile
Zinc/Redis/Alipay/SimpleCacheIndex/MySQL/LocalOSS/LoggerFile
7项功Develop
套件
release/paopao serve --help
Usage of release/paopao:
-features value
use special features
-no-default-features
whether use default features
# 默 认使用 Default 功 能 套件
release/paopao serve
# 不 包含 default 中 的 功 能 集 ,仅仅使用 develop 中 声明 的 功 能 集
release/paopao serve --no-default-features --features develop
# 使用 default 中 的 功 能 集 ,外 加 sms 功 能
release/paopao serve --features sms
# 手 动指定 需要 开启的 功 能 集
release/paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis
类别 | 备注 | ||
---|---|---|---|
Web |
开启Web |
||
Admin |
WIP | 开启Admin |
|
SpaceX |
WIP | 开启SpaceX |
|
Bot |
WIP | 开启Bot |
|
NativeOBS |
WIP | 开启NativeOBS |
|
Docs |
WIP | 开启开发 |
|
Frontend:Web |
稳定 | 开启 |
|
Frontend:EmbedWeb |
稳定 | 开启 |
|
Gorm |
稳定( |
Gorm + MySQL 组合 |
|
Sqlx |
WIP | ||
Sqlc |
WIP | ||
MySQL |
稳定( |
||
Postgres |
稳定 | ||
Sqlite3 |
稳定 | ||
AliOSS |
对象 |
稳定(推荐) | |
COS |
对象 |
腾讯 |
|
HuaweiOBS |
对象 |
华为 |
|
MinIO |
对象 |
稳定 | MinIO对象 |
S3 |
对象 |
AWS S3 |
|
LocalOSS |
对象 |
||
OSS:Retention |
对象 |
||
OSS:TempDir |
对象 |
||
Redis |
缓存 | 稳定 | Redis缓存 |
SimpleCacheIndex |
缓存 | Deprecated | |
BigCacheIndex |
缓存 | Deprecated | |
RedisCacheIndex |
缓存 | Deprecated | |
Zinc |
稳定(推荐) | ||
Meili |
稳定(推荐) | ||
Bleve |
WIP | ||
Sentry |
监控 | ||
LoggerFile |
稳定 | ||
LoggerZinc |
稳定(推荐) | ||
LoggerMeili |
|||
LoggerOpenObserve |
|||
Friendship |
关系 |
||
Followship |
关系 |
关注 |
|
Lightship |
关系 |
弃用 Deprecated | 开放 |
Alipay |
稳定 | 开启 |
|
Sms |
稳定 | 开启 |
|
Docs:OpenAPI |
开发 |
稳定 | 开启openapi |
Pyroscope |
开启Pyroscope |
||
Pprof |
开启Pprof |
||
PhoneBind |
其他 | 稳定 | |
UseAuditHook |
其他 | ||
DisableJobManager |
其他 | ||
Web:DisallowUserRegister |
稳定 |
功 能 项状态详情 参考 features-status.
Zinc 搜索 引擎:
- Zinc运行
# 创建用 于存放 zinc数 据 的 目 录
mkdir -p data/zinc/data
# 使用 Docker运行zinc
docker run -d --name zinc --user root -v ${PWD}/data/zinc/data:/data -p 4080:4080 -e ZINC_FIRST_ADMIN_USER=admin -e ZINC_FIRST_ADMIN_PASSWORD=admin -e DATA_PATH=/data public.ecr.aws/zinclabs/zinc:latest
# 查看zinc运行状 态
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41465feea2ff getmeili/meilisearch:v0.27.0 "tini -- /bin/sh -c …" 20 hours ago Up 20 hours 0.0.0.0:7700->7700/tcp paopao-ce-meili-1
7daf982ca062 public.ecr.aws/prabhat/zinc:latest "/go/bin/zinc" 3 weeks ago Up 6 days 0.0.0.0:4080->4080/tcp zinc
# 使用 docker compose运行
docker compose up -d zinc
# visit http://localhost:4080 打 开自带的ui管理 界面
修 改 Zinc配置
# features中 加 上 Zinc 和 LoggerZinc
Features:
Default: ["Zinc", "LoggerZinc", "Base", "Sqlite3", "BigCacheIndex","MinIO"]
...
LoggerZinc: # 使用 Zinc写 日 志
Host: 127.0.0.1:4080 # 这里的 host就是paopao-ce能 访问到的 zinc主 机
Index: paopao-log
User: admin
Password: admin
Secure: False # 如果使用 https访问zinc就设置 为True
...
Zinc: # Zinc搜索 配置
Host: 127.0.0.1:4080
Index: paopao-data
User: admin
Password: admin
Secure: False
Meilisearch 搜索 引擎:
- Meili运行
mkdir -p data/meili/data
# 使用 Docker运行
docker run -d --name meili -v ${PWD}/data/meili/data:/meili_data -p 7700:7700 -e MEILI_MASTER_KEY=paopao-meilisearch getmeili/meilisearch:v0.29.0
# visit http://localhost:7700 打 开自带的搜索 前 端 ui
# 使用 docker compose运行,需要 删除docker-compose.yaml中 关于meili的 注 释
docker compose up -d meili
# 查看meili运行状 态
docker compose ps
NAME COMMAND SERVICE STATUS PORTS
paopao-ce-meili-1 "tini -- /bin/sh -c …" meili running 0.0.0.0:7700->7700/tcp
修 改 Meili配置
# features中 加 上 Meili 和 LoggerMeili
Features:
Default: ["Meili", "LoggerMeili", "Base", "Sqlite3", "BigCacheIndex","MinIO"]
...
LoggerMeili: # 使用 Meili写 日 志
Host: 127.0.0.1:7700
Index: paopao-log
ApiKey: paopao-meilisearch
Secure: False
MinWorker: 5 # 最小 后 台 工作 者 , 设置范围[5, 100], 默 认5
MaxLogBuffer: 100 # 最大 log缓存条 数 , 设置范围[10, 10000], 默 认100
...
Meili: # Meili搜索 配置
Host: 127.0.0.1:7700 # 这里的 host就是paopao-ce能 访问到的 meili主 机
Index: paopao-data
ApiKey: paopao-meilisearch
Secure: False # 如果使用 https访问meili就设置 为True
MinIO 对象存 储服务
- MinIO运行
mkdir -p data/minio/data
# 使用 Docker运行
docker run -d --name minio -v ${PWD}/data/minio/data:/data -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=minio-root-user -e MINIO_ROOT_PASSWORD=minio-root-password -e MINIO_DEFAULT_BUCKETS=paopao:public bitnami/minio:latest
# 使用 docker compose运行, 需要 删除docker-compose.yaml中 关于minio的 注 释
docker compose up -d minio
修 改 Minio配置
# features中 加 上 MinIO
Features:
Default: ["MinIO", "Meili", "LoggerMeili", "Base", "Sqlite3", "BigCacheIndex"]
...
MinIO: # MinIO 存 储配置
AccessKey: Q3AM3UQ867SPQQA43P2F # AccessKey/SecretKey 需要 登 入 minio管理 界面 手 动创建 ,管理 界面 地 址 : http://127.0.0.1:9001
SecretKey: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
Secure: False
Endpoint: 127.0.0.1:9000 # 根 据 部署 的 minio主 机 修 改 对应地 址
Bucket: paopao # 如上 ,需要 在 管理 界面 创建bucket并赋予 外部 可 读写权限
Domain: 127.0.0.1:9000 # minio外 网访问的地 址 (如果想 让外网访问,这里需要 设置为外网可访问到的 minio主 机 地 址 )
...
OpenObserve 日 志 收集 、指 标度量 、轨迹跟踪
- OpenObserve运行
# 使用 Docker运行
mkdir data && docker run -v $PWD/data:/data -e ZO_DATA_DIR="/data" -p 5080:5080 \
-e ZO_ROOT_USER_EMAIL="root@paopao.info" -e ZO_ROOT_USER_PASSWORD="paopao-ce" \
public.ecr.aws/zinclabs/openobserve:latest
# 使用 docker compose运行, 需要 删除docker-compose.yaml中 关于openobserve的 注 释
docker compose up -d openobserve
# visit http://loclahost:5080
修 改 LoggerOpenObserve配置
# features中 加 上 LoggerOpenObserve
Features:
Default: ["Meili", "LoggerOpenObserve", "Base", "Sqlite3", "BigCacheIndex"]
...
LoggerOpenObserve: # 使用 OpenObserve写 日 志
Host: 127.0.0.1:5080
Organization: paopao-ce
Stream: default
User: root@paopao.info
Password: tiFEI8UeJWuYA7kN
Secure: False
...
Pyroscope 性能 剖析
- Pyroscope运行
mkdir -p data/minio/data
# 使用 Docker运行
docker run -it -p 4040:4040 pyroscope/pyroscope:latest server
# 使用 docker compose运行, 需要 删除docker-compose.yaml中 关于pyroscope的 注 释
docker compose up -d pyroscope
# visit http://loclahost:4040
修 改 Pyroscope配置
# features中 加 上 Pyroscope
Features:
Default: ["Meili", "LoggerMeili", "Base", "Sqlite3", "BigCacheIndex", "Pyroscope"]
...
Pyroscope: # Pyroscope配置
AppName: "paopao-ce"
Endpoint: "http://localhost:4040" # Pyroscope server address
AuthToken: # Pyroscope authentication token
Logger: none # Pyroscope logger (standard | logrus | none)
...
github.com/rocboss/paopao-ce
git branch
main
beta
dev
feature/bleve
feature/followship
feature/mir
feature/localoss
jc/alimy
r/paopao-plus
r/paopao-pro
x/sqlc
x/sqlx
说明 | 备注 | |
---|---|---|
main |
main beta rc 发布main |
|
beta |
beta main alpha beta 发布beta |
|
alpha |
alpha beta dev beta alpha 发布alpha |
|
dev |
开发 |
dev dev alpha |
feature/* |
feature/* dev 开发dev beta |
|
jc/* |
维护 |
jc/* dev/beta main |
x/* |
实验 |
x/* feature/* dev x/* |
t/* |
临时 |
t/* beta t/* main main main |
r/* |
发行 |
r/* |
发行
说明 | 维护 |
备注 | |
---|---|---|---|
paopao-ce |
paopao-ce |
ROC | 该分 |
r/paopao-ce |
paopao-ce |
ROC |
该分main |
r/paopao-ce-plus |
paopao-ce-plus 发行 |
该分 |
|
r/paopao-ce-pro |
paopao-ce-pro 发行 |
该分 |
|
r/paopao-ce-xtra |
paopao-ce-xtra 发行 |
该分 |
|
r/paopao-ce-mini |
paopao-ce-mini 发行 |
该分 |
具体 部署 站点信 息 请查阅 deployed-sites. 欢迎站长将 已 部署 PaoPao实例的 站点信 息 添加 到 deployed-sites列 表 中 。
昵称 | @GitHub | @PaoPao |
---|---|---|
ROC | ROC | ROC |
Michael Li | alimy | |
orzi! | orzi! |
supervisor
nginx
paopao-ce
Distributed under the MIT License. See LICENSE
for more information.