PaoPao は、微博や Twitter に似た清新で文芸的なマイクロコミュニティですが、アートやクリエイティブな表現により重点を置いています。Go、Gin、Zinc、Vue、TypeScript などの技術を基に構築されており、優れたパフォーマンスと拡張性を持っています。本記事では、PaoPao の機能、技術スタック、クイックスタートガイド、デプロイ方法について紹介し、あなたが自分のマイクロコミュニティを迅速に構築できるようにサポートします。
核心機能#
- 動的な投稿:ユーザーはテキスト、画像、動画などの形式で動的な投稿を行い、自分の考えやアイデアを共有できます。
- コメントインタラクション:ユーザーは他のユーザーの動的な投稿にコメントをし、インタラクションを行うことができます。
- 検索機能:ユーザーはキーワードを使って関連する動的な投稿やユーザーを検索できます。
- 個人ホームページ:ユーザーはプロフィール、アバター、背景などを設定し、自分の個性を表現できます。
- テーマ切り替え:ユーザーは明るい、暗いなどの異なるテーマスタイルを選択できます。
- デスクトップアプリケーション: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
バックエンド#
-
プロジェクトのルートディレクトリにある
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タグを追加してmigrate機能をサポートする実行可能ファイルをコンパイルします make build TAGS='migration' release/paopao # または、migrationタグを付けて直接実行します make run TAGS='migration'
注意:デフォルトでコンパイルされた実行可能ファイルには migrate 機能が内蔵されていません。migrate 機能を内蔵するには、コンパイル時に migration タグを付ける必要があります。
フロントエンド#
-
フロントエンドディレクトリ
web
に移動し、.env
を.env.local
にコピーし、.env.local
ファイル内のバックエンドサービスアドレスやその他の設定項目を編集し、依存パッケージをダウンロードします。cd ./web && cp .env .env.local vim .env.local yarn
-
フロントエンドをコンパイルします。
yarn 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を参照してください。
方法二. Docker を使用して構築、実行#
- バックエンド:
# デフォルトパラメータで構築し、デフォルトでWeb UIを埋め込みAPIホストを空に設定
docker build -t your/paopao-ce:tag .
# Web UIを埋め込み、APIホストパラメータをカスタマイズ
docker build -t your/paopao-ce:tag --build-arg API_HOST=http://api.paopao.info .
# Web UIを埋め込み、ローカルのweb/.envからAPIホストを使用
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サーバーのみをコンパイル
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イメージを直接実行
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ホストパラメータで構築
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
- オールインワン:
# イメージを構築
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
# または、公式イメージを使用して実行
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
# または、公式イメージを使用して実行 + カスタマイズされた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>
でこの値を設定できます。
方法三. 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
# 以下を変更してカスタム設定を反映させます
volumes:
- ./config.yaml:/app/paopao-ce/config.yaml
ports:
- 8008:8008
networks:
- paopao-network
....
注意:デフォルトで提供される docker-compose.yaml は、ローカルの開発デバッグ環境を構築することを目的としています。製品デプロイを外部からアクセス可能にする必要がある場合は、設定パラメータを調整するか、他の方法でデプロイしてください。