DOGAI

DOGAI

分享高质量GitHub开源项目,低价高质量服务器请看:https://www.vps567.com 香港CN2服务器 高防美国和大陆服务器 还有全球CDN加速。

PaoPao-CE:高仿微博,GitHub上很炸裂的开源社区系统

PaoPao 是一个清新文艺的微社区,类似于 微博、Twitter,但更注重艺术和创意的表达。它基于 Go、Gin、Zinc、Vue 和 TypeScript 等技术构建,具有良好的性能和可扩展性。本文将介绍 PaoPao 的功能、技术栈、快速开始指南和部署方式,帮助您快速搭建自己的微社区。

68747470733a2f2f63646e2e726f63732e6d652f7374617469632f70616f70616f2d6c696768742e6a706567

核心功能#

  • 发布动态:用户可以发布文字、图片、视频等形式的动态,分享自己的想法和创意。
  • 评论互动:用户可以对其他用户的动态进行评论,进行互动交流。
  • 搜索功能:用户可以通过关键词搜索相关的动态和用户。
  • 个人主页:用户可以设置个人资料、头像、背景等,展示自己的个性。
  • 主题切换:用户可以选择不同的主题风格,例如明亮、暗黑等。
  • 桌面端应用:PaoPao 还提供了桌面端应用,方便用户在电脑上使用。

技术亮点#

PaoPao-CE 的技术栈展现了其现代化和高性能的特点。以下是构建这个项目的主要技术和工具:

后端技术#

  • Go:一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
  • Gin:一个用 Go 语言编写的 Web 框架,以高性能著称。
  • Zinc:一个基于 Elasticsearch 的开源搜索引擎,为 PaoPao-CE 提供搜索能力。
  • Buf:用于管理 Protocol Buffers 文件的工具。
  • gRPC:一种高性能、开源和通用的 RPC 框架。
  • Meilisearch:一个快速、易于使用的开源搜索引擎。

前端技术#

  • Naive UI:一个 Vue 3 的组件库,提供了一系列美观的组件。
  • Vue.js:一个渐进式 JavaScript 框架,用于构建用户界面。
  • Vite.js:一个现代化的前端构建工具。
  • Tauri:一个框架,用于构建轻量级、安全的跨平台桌面应用程序。

安装教程#

环境要求#

  • Go (1.20+)
  • Node.js (14+)
  • MySQL (5.7+)
  • Redis
  • Meilisearch

以上环境版本为 PaoPao 官方的开发版本,仅供参考,其他版本的环境未进行充分测试

安装说明#

在开始安装之前我们需要一台服务器,服务器这里我推荐伍六七云https://www.vps567.com 香港 2H2G5M 服务器 20 / 月,还有高防 CDN 加速只需 18 / 月起。

方式一。手动安装(推荐)#

克隆代码库

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

后端#

  1. 导入项目根目录下的 scripts/paopao.sql 文件至 MySQL 数据库

  2. 拷贝项目根目录下 config.yaml.sample 文件至 config.yaml,按照注释完成配置编辑

  3. 编译后端
    编译 api 服务:

    make build
    

    编译 api 服务、内嵌 web 前端 ui:

    make build
    

    也可以使用精简模式编译,不内嵌 web 前端 ui:

    make build TAGS='slim embed'
    

    编译后在release目录可以找到对应可执行文件。

    release/paopao
    
  4. 直接运行后端
    运行 api 服务:

    make run
    

    运行 api 服务、web 前端 ui 服务:

    make run TAGS='embed'
    

    提示:如果需要内嵌 web 前端 ui,请先构建 web 前端 (建议设置 web/.env 为 VITE_HOST="")。

  5. 使用内置的 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 功能。

前端#

  1. 进入前端目录 web,拷贝.env.env.local,编辑 .env.local 文件中后端服务地址及其他配置项,下载依赖包

    cd ./web && cp .env .env.local
    vim .env.local
    yarn
    
  2. 编译前端

    yarn build
    

    build 完成后,可以在 dist 目录获取编译产出,配置 nginx 指向至该目录即可

桌面端#

  1. 进入前端目录 web,拷贝.env.env.local,编辑 .env.local 文件中后端服务地址及其他配置项,下载依赖包

    cd ./web && cp .env .env.local
    vim .env.local
    yarn
    
  2. 编译前端

    yarn build
    
  3. 构建桌面端

    yarn tauri build
    

    桌面端是使用Rust + tauri编写
    的,需要安装 tauri 的依赖,具体参考https://tauri.studio/v1/guides/getting-started/prerequisites.

方式二。使用 Docker 构建、运行#

  • 后端:
# 默认参数构建, 默认内嵌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.yamlMeili.ApiKey的值必须与容器中 meili 启动时设定的MEILI_MASTER_KEY环境变量值相同,默认为paopao-meilisearch. 可以在 docker 启动容器时通过-e MEILI_MASTER_KEY=<custom-key>设置该值。

方式三。使用 docker-compose 运行#

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

默认是使用 config.yaml.sample 的配置,如果需要自定义配置,请拷贝默认配置文件 (比如 config.yaml),修改后再同步配置到 docker-compose.yaml 如下:

# 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 初衷是搭建本机开发调试环境,如果需要产品部署供外网访问,请自行调优配置参数或使用其他方式部署。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。