[](https://github.com/rocboss/paopao-ce/actions/workflows/go.yml)
[](https://goreportcard.com/report/github.com/rocboss/paopao-ce)
[](https://github.com/rocboss/paopao-ce/network/members)
[](https://github.com/rocboss/paopao-ce/stargazers)
[](https://github.com/rocboss/paopao-ce/blob/main/LICENSE)
[](https://github.com/rocboss/paopao-ce/graphs/contributors)
[](https://sourcegraph.com/github.com/rocboss/paopao-ce)
---
## 项目简介
PaoPao 是一个完整的开源微社区系统,包含 Go 后端、Vue 3 Web 前端,以及可选的 Tauri 桌面端。项目通过模块化的特性开关体系,将存储、搜索、日志、可观测性与部署方式组合在一起,便于按需裁剪和扩展。
如果你希望快速搭建一个可运行的社区产品,或者基于成熟代码库继续定制开发,而不是从零开始,PaoPao 是一个很合适的起点。
## 为什么选择 PaoPao
- **全栈一体化**:后端、Web 前端、桌面端构建都在同一仓库中维护。
- **模块化运行能力**:通过 `Features` 套件启用不同能力组合,例如 `Default`、`Develop`、`Demo`、`Slim`。
- **基础设施灵活**:支持 MySQL、PostgreSQL、SQLite、Redis、Meilisearch 以及多种对象存储后端。
- **部署方式丰富**:可通过源码、Docker、Docker Compose 或 all-in-one 镜像运行。
- **适合自部署**:配置文件清晰,仓库内已提供部署与开发文档。
## 预览
### Web 端
[](https://paopao-demo.vercel.app)
[](https://paopao-demo.vercel.app)
### 桌面端

更多效果可前往 [PaoPao](https://paopao-demo.vercel.app/) 查看。
## 架构概览
| 层级 | 主要技术 |
| --- | --- |
| 后端 | Go、Gin、Cobra、GORM、Mir |
| Web 前端 | Vue 3、Vite、Naive UI |
| 桌面端 | Tauri |
| 搜索 | Meilisearch |
| 缓存 | Redis |
| 对象存储 | Local OSS、MinIO、AliOSS、COS、Huawei OBS、S3 兼容存储 |
| 可观测性 | OpenTelemetry、Sentry、Pyroscope、Pprof |
## 仓库结构
| 路径 | 说明 |
| --- | --- |
| `cmd/`、`internal/`、`pkg/` | 后端应用与共享包 |
| `web/` | Vue 3 Web 应用与 Tauri 桌面端前端 |
| `docs/` | 部署文档、OpenAPI 文档、设计提案等 |
| `scripts/` | SQL 初始化脚本与辅助资源 |
| `config.yaml.sample` | 完整的运行配置模板 |
## 快速开始
### 方案 A:使用 Docker Compose 快速体验
这是本地体验项目的最快方式。
```sh
git clone https://github.com/rocboss/paopao-ce.git
cd paopao-ce
docker compose up -d
```
启动后可访问:
- `http://localhost:8008` - PaoPao
- `http://localhost:7700` - Meilisearch
- `http://localhost:8001` - RedisInsight
### 方案 B:从源码开发
#### 环境要求
- Go `1.24+`
- Node.js `20.19+` 或 `22.12+`
- MySQL `5.7+`
- Redis
- Meilisearch
- 如果需要构建桌面端,还需要安装 Rust 与 Tauri 依赖
#### 后端
1. 将 `scripts/paopao-mysql.sql` 导入 MySQL。
2. 复制示例配置,并只调整与你环境相关的启动关键项。
3. 启动后端服务。
```sh
cp config.yaml.sample config.yaml
make run
```
如果需要构建发布二进制:
```sh
make build
```
如果希望由 Go 服务直接内嵌并提供 Web UI,请先构建前端资源,再使用 `embed` 标签启动:
```sh
make build-web
make run TAGS='embed'
```
#### Web 前端
```sh
cd web
cp .env .env.local
yarn
yarn dev
```
构建静态资源:
```sh
yarn build
```
#### 桌面端
```sh
cd web
yarn tauri build
```
更完整的安装步骤、Docker 构建方式、桌面端依赖与 migration 说明,请参考 [INSTALL_ZH.md](INSTALL_ZH.md)。
## 配置与 Feature 套件
`config.yaml.sample` 现在是一个**最小化 bootstrap 模板**。运行时,PaoPao 会先加载内置默认配置,再叠加 `./custom/config.yaml` 或 `./config.yaml`,并优先使用先找到的文件。
这意味着外部配置文件可以有意保持精简。当前建议是:
- **继续放在 YAML 中**:端口、Feature 组合、数据库、Redis、JWT,以及 `AdminSettings.EncryptionKey`
- **尽量改到管理后台**(`/#/admin/settings`):站点资料、应用行为阈值、全文索引、对象存储、短信/支付等已接入 registry 的配置
- **注意生效方式**:部分配置即时生效,部分会在后台中明确标记为“重启后生效”
`Features` 配置用于控制启用哪些能力组合:
```yaml
Features:
Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile"]
Develop: ["Base", "MySQL", "Option", "Sms", "AliOSS", "LoggerOtlp"]
Demo: ["Base", "MySQL", "Option", "Sms", "MinIO", "LoggerOtlp"]
Slim: ["Base", "Sqlite3", "LocalOSS", "LoggerFile"]
Base: ["Zinc", "Redis", "Alipay"]
Option: ["SimpleCacheIndex"]
Sms: "SmsJuhe"
```
常见用法示例:
```sh
# 使用默认套件
release/paopao serve
# 仅使用 develop 中声明的功能集
release/paopao serve --no-default-features --features develop
# 在默认套件基础上增加 sms
release/paopao serve --features sms
# 手动显式指定功能项
release/paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis
```
各功能项的当前实现状态可参考 [features-status.md](features-status.md)。
## 文档导航
- [INSTALL_ZH.md](INSTALL_ZH.md) - 中文安装、Docker 使用与桌面端构建说明
- [INSTALL.md](INSTALL.md) - English installation guide
- [docs/README_ZH.md](docs/README_ZH.md) - 中文文档总索引
- [docs/README.md](docs/README.md) - English documentation index
- [docs/deploy/](docs/deploy/) - 部署相关文档
- [docs/openapi/](docs/openapi/) - 导出的 API 文档资源
- [docs/proposal/](docs/proposal/) - 设计说明与功能提案
- [deployed-sites.md](deployed-sites.md) - 已知部署站点列表
- [ROADMAP.md](ROADMAP.md) - 路线图与规划说明
## 分支策略
项目采用分阶段分支模型:
| 分支 | 作用 |
| --- | --- |
| `main` | 稳定生产分支,主要接收缺陷修复 |
| `beta` | 公测分支 |
| `alpha` | 内测分支 |
| `dev` | 主要开发分支,适合新功能开发 |
| `feature/*` | 独立功能分支 |
| `r/*` | 面向不同发行形态的发布分支 |
如果你准备提交新功能,通常应优先向 **`dev`** 分支发起贡献。
## 参与贡献
欢迎提交 Pull Request。建议的贡献流程:
1. Fork 当前仓库。
2. 从 `dev` 分支拉出自己的功能分支。
3. 保持改动聚焦,并补充必要文档。
4. 提交 PR 时说明问题背景、实现方式与验证结果。
如果你已经部署了自己的实例,也欢迎将站点补充到 [deployed-sites.md](deployed-sites.md)。
[](https://star-history.com/#rocboss/paopao-ce&Date)
## License
项目基于 MIT License 发布,详见 [LICENSE](LICENSE)。
(回到顶部)