字节笔记本

2026年3月22日

泡泡朋友圈 - Go 语言社交系统


slug: paopao-social-system topic: go-column

PaoPao 是一款清新文艺风格的微社区系统,采用类 Twitter 的设计理念,基于 Gin + Zinc + Vue + TypeScript 技术栈构建。项目提供完整的社交功能,包括动态发布、关注系统、消息通知、钱包功能等,支持多种数据库和对象存储方案,具备高度的可扩展性和灵活的功能配置能力。

项目简介

PaoPao 由开发者 ROC 主导开发,定位为"艺术化的类 Twitter 社区"。与主流的微博、Twitter 等大型社交平台不同,PaoPao 注重轻量化和文艺气息,追求简洁优雅的用户体验。项目支持明暗两种主题风格,界面设计清新舒适,适合作为小型社区、兴趣圈子或个人博客的社交平台。

PaoPao 的核心设计理念在于灵活性和可定制性。通过功能套件(Features Suite)机制,用户可以根据自己的需求选择开启或关闭不同的功能模块,从最简部署到完整功能配置都能轻松实现。项目在 GitHub 上获得了超过 3.7k 的 Star,社区活跃度较高,体现了开源社区对该项目的认可。

在数据库层面,PaoPao 提供了多个发行版本以满足不同场景需求:

  • paopao-ce:主发行版本,使用 GORM 作为 ORM 框架,适配 MySQL/PostgreSQL/SQLite3
  • paopao-ce-plus:使用 sqlx 框架,针对查询性能进行优化
  • paopao-ce-pro:使用 sqlc 自动生成 ORM 代码,专门针对特定数据库进行深度优化
  • paopao-ce-mini:最小可用版本,专注于个人部署的一键傻瓜式部署

核心特性

多种社交关系模式

PaoPao 内置了三种社交关系模式,可以根据社区定位灵活选择:

  • Followship(关注者模式):类似 Twitter 的关注机制,用户可以关注其他用户,查看关注者的动态
  • Friendship(好友模式):类似微信朋友圈的弱关系好友模式,好友之间可以互相查看动态
  • Lightship(开放模式):所有推文都公开可见,无需关注或好友关系(已弃用)

丰富的功能模块

PaoPao 提供了丰富的功能模块,涵盖社交平台的各个方面:

  • 动态发布:支持文字、图片等富媒体内容发布
  • 消息通知:实时通知用户的互动消息
  • 钱包功能:基于支付宝开放平台的钱包系统
  • 手机绑定:支持短信验证码进行手机号绑定
  • 用户注册控制:可配置是否允许新用户注册

灵活的功能套件机制

PaoPao 独创了功能套件(Features Suite)机制,将系统功能划分为多个可组合的功能集。用户可以通过命令行参数灵活控制启用哪些功能模块:

bash
# 默认使用 Default 功能套件
paopao serve

# 使用 Develop 功能集
paopao serve --no-default-features --features develop

# 额外开启短信功能
paopao serve --features sms

# 手动指定功能集
paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis

内置的功能套件包括:

  • Default:基础功能 + MySQL + 本地存储 + 文件日志
  • Develop:基础功能 + MySQL + 短信 + 阿里云OSS + OTLP 日志
  • Demo:基础功能 + MySQL + 短信 + MinIO + OTLP 日志
  • Slim:基础功能 + SQLite3 + 本地存储 + 文件日志

多种对象存储支持

系统支持多种主流对象存储服务,用户可以根据实际需求选择:

  • 阿里云 OSS(推荐):稳定可靠的云端对象存储
  • 腾讯云 COS:腾讯云对象存储服务
  • 华为云 OBS:华为云对象存储服务
  • MinIO:开源的自托管对象存储方案
  • AWS S3:兼容 S3 协议的对象存储服务
  • LocalOSS:本地文件系统存储(仅用于开发调试)

搜索引擎集成

PaoPao 支持多种搜索引擎方案:

  • Meilisearch(推荐):高性能、易用的全文搜索引擎
  • Bleve:纯 Go 实现的全文搜索引擎
  • Zinc:轻量级全文搜索引擎(已弃用)

明暗主题支持

系统内置明色和暗色两种主题风格,用户可以根据个人偏好或系统设置自动切换。界面设计清新文艺,视觉效果舒适。

技术栈

后端技术

  • Go:项目核心语言,版本要求 1.22+
  • Gin:高性能 HTTP Web 框架,提供路由和中间件
  • Mir:API 定义和文档生成工具
  • Meilisearch:全文搜索引擎,提供推文搜索功能
  • OpenTelemetry:可观测性框架,用于分布式追踪和日志收集
  • OpenObserve:日志聚合和分析工具

前端技术

  • Vue.js:渐进式 JavaScript 框架,构建用户界面
  • Naive UI:Vue 3 组件库,提供现代化的 UI 组件
  • Vite.js:下一代前端构建工具,提供快速的开发体验
  • TypeScript:类型安全的 JavaScript 超集
  • Tauri:桌面应用框架,用于构建桌面客户端

数据库支持

  • MySQL(>= 5.7):主流关系型数据库
  • PostgreSQL:功能强大的开源关系型数据库
  • SQLite3:轻量级嵌入式数据库,适合小型部署
  • Redis:缓存和会话存储

ORM 框架选择

  • GORM(默认):Go 生态最流行的 ORM 框架
  • sqlx:更接近原生 SQL 的数据库操作库
  • sqlc:基于 SQL 自动生成类型安全代码的工具

安装指南

环境要求

  • Go 1.22+
  • Node.js 14+
  • MySQL 5.7+(或 PostgreSQL / SQLite3)
  • Redis
  • Meilisearch

获取源码

bash
git clone https://github.com/rocboss/paopao-ce.git
cd paopao-ce

配置文件

项目提供了完整的配置文件模板:

bash
cp config.yaml.sample config.yaml
vim config.yaml  # 修改数据库连接、Redis、Meilisearch 等参数

PaoPao 启动时会按顺序读取 ./custom/config.yaml./config.yaml,优先使用最先找到的配置文件。

编译运行

bash
# 编译
go build -o paopao

# 运行(默认使用 Default 功能套件)
./paopao serve

# 使用 Slim 模式运行(仅 SQLite3 + 本地存储)
./paopao serve --no-default-features --features slim

配置说明

配置文件中 Features 小节是声明 PaoPao 运行时开启的功能项。以下是一个典型配置示例:

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"

其中 Default 套件表示使用 BaseOption 中的功能,外加 MySQLLocalOSSLoggerFile 功能,即同时开启 ZincRedisAlipaySimpleCacheIndexMySQLLocalOSSLoggerFile 共 7 项功能。

快速开始

最简部署(Slim 模式)

如果只是想快速体验 PaoPao,可以使用 Slim 模式,仅依赖 SQLite3 数据库,无需额外的中间件:

bash
./paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis

注意:即使 Slim 模式下 Base 套件中包含了 Redis,如需完全去除 Redis 依赖,可以手动指定不包含 Redis 的功能集。

完整功能部署

完整功能部署需要先准备好 MySQL、Redis 和 Meilisearch 服务,然后使用 Default 或 Develop 功能套件启动:

bash
./paopao serve --no-default-features --features develop

前端开发

前端代码位于项目的 web 目录下,使用 Vue.js + Vite.js 构建:

bash
cd web
npm install
npm run dev

使用示例

Docker 部署

项目支持 Docker 容器化部署,可以配合 Docker Compose 一键启动所有依赖服务:

bash
# 参考 docs/deploy 目录下的部署文档
# 通常包含 paopao 服务、MySQL、Redis、Meilisearch 等容器
docker-compose up -d

API 文档访问

开启 Docs:OpenAPI 功能后,可以通过浏览器访问 OpenAPI 文档:

http://127.0.0.1:8008/docs/openapi

桌面端使用

PaoPao 基于 Tauri 框架提供桌面客户端,支持 Windows、macOS 和 Linux 平台。桌面端拥有与 Web 端一致的功能和体验。

项目链接

  • GitHub 仓库https://github.com/rocboss/paopao-ce
  • 官方站点:paopao.info
  • 开源协议:MIT License
  • Star 数:3.7k+
  • 主要分支:main(稳定版)、beta(公测版)、dev(开发版)

PaoPao 是一款设计精美、功能完善的微社区系统,其灵活的功能套件机制和多种发行版本选择使其能够适应从个人博客到中型社区的各种部署场景。项目代码质量较高,分支管理规范,社区活跃度良好。对于希望搭建私有化社交平台的开发者而言,PaoPao 提供了一个优秀的开源参考实现。项目的核心设计理念——"Just for fun, just do it"——也体现了开源社区的热情与活力。

分享: