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 初衷是搭建本機開發調試環境,如果需要產品部署供外網訪問,請自行調優配置參數或使用其他方式部署。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。