feat: add PaoPao-ce app (#4360)

This commit is contained in:
okxlin
2026-06-28 15:05:02 +08:00
committed by GitHub
parent 976f09a470
commit 413b4cfa19
13 changed files with 989 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
# PaoPao-ce
## 产品介绍
PaoPao-ce 是一个基于 Go 和 Vue 的开源微社区平台,适合自托管社区、轻量社交和产品讨论场景。
## 主要功能
- 发布动态、评论和互动
- 内嵌 Web 前端
- 使用 MySQL、Redis Stack 和 Meilisearch 提供数据、缓存和搜索能力
- 支持本地附件存储
## 访问说明
安装后通过 `http://<服务器 IP>:18088` 访问,实际端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。
首次安装不会创建默认管理员账号,请打开页面后按界面流程注册首个账号,并及时在应用内完成站点设置。
## Introduction
PaoPao-ce is an open source micro-community platform built with Go and Vue for self-hosted communities, social timelines and product discussions.
## Features
- Posts, comments and social interactions
- Embedded web frontend
- MySQL, Redis Stack and Meilisearch for storage, cache and search
- Local attachment storage
## 部署说明
- 本应用使用官方多服务 Docker Compose 拓扑:PaoPao-ce Backend、MySQL、Redis Stack、Meilisearch。
- 后端镜像固定为 `bitbus/paopao-ce:v0.6.0-alpha.2`。Docker Hub 当前没有发布 `v0.6.0-alpha.3` 后端镜像,且官方 compose 默认的 `0.6-alpha` tag 不存在。
- 当前仅声明 amd64 架构,因为 `bitbus/paopao-ce` 已发布后端镜像为 amd64 单架构。
- 不使用 all-in-one 镜像;该镜像在测试中出现缺少 `groupmod``usermod``gosu` 且 HTTP 服务未正常启动的问题。
- `crossVersionUpdate` 已关闭,后续升级需要人工确认镜像 tag、数据库兼容性和真实升级测试。
## 端口
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| PANEL_APP_PORT_HTTP | Web 访问端口 | 18088 | 是 |
## 数据持久化
| 路径 | 说明 |
| --- | --- |
| APP_DATA_DIR/custom | PaoPao 配置、附件和日志 |
| APP_DATA_DIR/mysql | MySQL 数据 |
| APP_DATA_DIR/redis | Redis Stack 数据 |
| APP_DATA_DIR/meili | Meilisearch 数据 |
| APP_DATA_DIR/initdb | MySQL 首次初始化 SQL |
升级或迁移前,请先在 1Panel 中备份上述数据目录。
## 参数说明
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| PUBLIC_DOMAIN | 本地附件公开访问主机,通常为 `服务器 IP:端口` 或反代域名 | 127.0.0.1:18088 | 是 |
| MYSQL_PASSWORD | MySQL 数据库密码 | 随机生成 | 是 |
| JWT_SECRET | JWT 签名密钥 | 随机生成 | 是 |
| MEILI_MASTER_KEY | Meilisearch 主密钥 | 随机生成 | 是 |
## 使用说明
- 后端容器首次启动时只在 `APP_DATA_DIR/custom/config.yaml` 不存在时生成配置文件,不会覆盖用户后续修改。
- MySQL 初始化 SQL 会复制到 `APP_DATA_DIR/initdb/paopao.sql`,仅在 MySQL 数据目录首次初始化时执行。
- 仅暴露 PaoPao Web 端口;MySQL、Redis Stack 和 Meilisearch 不对外暴露。
- 如果通过反向代理或域名访问,请将 `PUBLIC_DOMAIN` 设置为最终访问主机,不要包含 `http://``https://`
## 参考资料
- 项目仓库: <https://github.com/rocboss/paopao-ce>
- 官方 compose: <https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml>
- 安装文档: <https://github.com/rocboss/paopao-ce/blob/main/INSTALL_ZH.md>
+29
View File
@@ -0,0 +1,29 @@
name: PaoPao-ce
tags:
- Website
title: 开源微社区平台
description: 开源微社区平台
additionalProperties:
key: paopao-ce
name: PaoPao-ce
tags:
- Website
shortDescZh: 开源微社区平台
shortDescEn: Open source micro-community platform
description:
en: A self-hosted micro-community platform built with Go and Vue, with embedded web UI, local storage and search support.
zh: 基于 Go 和 Vue 的自托管微社区平台,内置 Web 前端、本地存储和搜索能力。
zh-Hant: 基於 Go 和 Vue 的自託管微社群平台,內建 Web 前端、本地儲存和搜尋能力。
ja: Go と Vue で構築されたセルフホスト向けマイクロコミュニティ平台で、組み込み Web UI、ローカルストレージ、検索を備えています。
ko: Go와 Vue로 구축된 셀프 호스팅 마이크로 커뮤니티 플랫폼으로 내장 Web UI, 로컬 스토리지 및 검색을 제공합니다.
ru: Самостоятельно размещаемая микросоциальная платформа на Go и Vue со встроенным Web UI, локальным хранилищем и поиском.
ms: Platform mikro-komuniti hos sendiri berasaskan Go dan Vue dengan Web UI terbina, storan tempatan dan carian.
pt-br: Plataforma de microcomunidade auto-hospedada em Go e Vue, com Web UI embutida, armazenamento local e busca.
type: website
crossVersionUpdate: false
limit: 0
website: https://github.com/rocboss/paopao-ce
github: https://github.com/rocboss/paopao-ce
document: https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml
architectures:
- amd64
+8
View File
@@ -0,0 +1,8 @@
PANEL_APP_PORT_HTTP=18088
TZ=Asia/Shanghai
APP_DATA_DIR=./data
PUBLIC_DOMAIN=127.0.0.1:18088
MYSQL_PASSWORD=paopao_mysql_password
JWT_SECRET=paopao_jwt_secret
MEILI_MASTER_KEY=paopao_meili_master_key
CONTAINER_NAME=paopao-ce
+121
View File
@@ -0,0 +1,121 @@
additionalProperties:
formFields:
- default: 18088
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
zh: HTTP 端口
zh-Hant: HTTP 埠
ja: HTTP ポート
ko: HTTP 포트
ru: HTTP-порт
ms: Port HTTP
pt-br: Porta HTTP
required: true
rule: paramPort
type: number
- default: Asia/Shanghai
edit: true
envKey: TZ
labelEn: Timezone
labelZh: 时区
label:
en: Timezone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horario
required: true
type: text
- default: ./data
edit: true
envKey: APP_DATA_DIR
labelEn: Data Directory
labelZh: 数据目录
label:
en: Data Directory
zh: 数据目录
zh-Hant: 資料目錄
ja: データディレクトリ
ko: 데이터 디렉터리
ru: Каталог данных
ms: Direktori data
pt-br: Diretorio de dados
required: true
type: text
- default: 127.0.0.1:18088
edit: true
envKey: PUBLIC_DOMAIN
labelEn: Public Host
labelZh: 公开访问主机
label:
en: Public Host
zh: 公开访问主机
zh-Hant: 公開存取主機
ja: 公開アクセスホスト
ko: 공개 접속 호스트
ru: Публичный хост
ms: Hos awam
pt-br: Host publico
required: true
type: text
- default: paopao_mysql_password
edit: true
envKey: MYSQL_PASSWORD
labelEn: MySQL Password
labelZh: MySQL 密码
label:
en: MySQL Password
zh: MySQL 密码
zh-Hant: MySQL 密碼
ja: MySQL パスワード
ko: MySQL 비밀번호
ru: Пароль MySQL
ms: Kata laluan MySQL
pt-br: Senha do MySQL
random: true
required: true
rule: paramComplexity
type: password
- default: paopao_jwt_secret
edit: true
envKey: JWT_SECRET
labelEn: JWT Secret
labelZh: JWT 密钥
label:
en: JWT Secret
zh: JWT 密钥
zh-Hant: JWT 金鑰
ja: JWT シークレット
ko: JWT 비밀키
ru: Секрет JWT
ms: Rahsia JWT
pt-br: Segredo JWT
random: true
required: true
rule: paramComplexity
type: password
- default: paopao_meili_master_key
edit: true
envKey: MEILI_MASTER_KEY
labelEn: Meilisearch Master Key
labelZh: Meilisearch 主密钥
label:
en: Meilisearch Master Key
zh: Meilisearch 主密钥
zh-Hant: Meilisearch 主金鑰
ja: Meilisearch マスターキー
ko: Meilisearch 마스터 키
ru: Главный ключ Meilisearch
ms: Kunci induk Meilisearch
pt-br: Chave mestra do Meilisearch
random: true
required: true
rule: paramComplexity
type: password
View File
+516
View File
@@ -0,0 +1,516 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for p_attachment
-- ----------------------------
DROP TABLE IF EXISTS `p_attachment`;
CREATE TABLE `p_attachment` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL DEFAULT '0',
`file_size` BIGINT NOT NULL,
`img_width` BIGINT NOT NULL DEFAULT '0',
`img_height` BIGINT NOT NULL DEFAULT '0',
`type` tinyint NOT NULL DEFAULT '1' COMMENT '1图片,2视频,3其他附件',
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_attachment_user` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=100041 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='附件';
-- ----------------------------
-- Table structure for p_captcha
-- ----------------------------
DROP TABLE IF EXISTS `p_captcha`;
CREATE TABLE `p_captcha` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '验证码ID',
`phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
`captcha` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '验证码',
`use_times` int NOT NULL DEFAULT '0' COMMENT '使用次数',
`expired_on` BIGINT NOT NULL DEFAULT '0' COMMENT '过期时间',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_captcha_phone` (`phone`) USING BTREE,
KEY `idx_captcha_expired_on` (`expired_on`) USING BTREE,
KEY `idx_captcha_use_times` (`use_times`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1021 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='手机验证码';
-- ----------------------------
-- Table structure for p_comment
-- ----------------------------
DROP TABLE IF EXISTS `p_comment`;
CREATE TABLE `p_comment` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '评论ID',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP地址',
`ip_loc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP城市地址',
`is_essence` tinyint NOT NULL DEFAULT 0 COMMENT '是否精选',
`reply_count` int NOT NULL DEFAULT 0 COMMENT '回复数',
`thumbs_up_count` int NOT NULL DEFAULT 0 COMMENT '点赞数',
`thumbs_down_count` int NOT NULL DEFAULT 0 COMMENT '点踩数',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_comment_post_id` (`post_id`) USING BTREE,
KEY `idx_comment_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6001736 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论';
-- ----------------------------
-- Table structure for p_comment_content
-- ----------------------------
DROP TABLE IF EXISTS `p_comment_content`;
CREATE TABLE `p_comment_content` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '内容ID',
`comment_id` BIGINT NOT NULL DEFAULT '0' COMMENT '评论ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '内容',
`type` tinyint NOT NULL DEFAULT '2' COMMENT '类型,1标题,2文字段落,3图片地址,4视频地址,5语音地址,6链接地址',
`sort` BIGINT NOT NULL DEFAULT '100' COMMENT '排序,越小越靠前',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_comment_content_comment_id` (`comment_id`) USING BTREE,
KEY `idx_comment_content_user_id` (`user_id`) USING BTREE,
KEY `idx_comment_content_type` (`type`) USING BTREE,
KEY `idx_comment_content_sort` (`sort`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11001738 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论内容';
-- ----------------------------
-- Table structure for p_comment_reply
-- ----------------------------
DROP TABLE IF EXISTS `p_comment_reply`;
CREATE TABLE `p_comment_reply` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '回复ID',
`comment_id` BIGINT NOT NULL DEFAULT '0' COMMENT '评论ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`at_user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '@用户ID',
`content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '内容',
`ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP地址',
`ip_loc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP城市地址',
`thumbs_up_count` int NOT NULL DEFAULT '0' COMMENT '点赞数',
`thumbs_down_count` int NOT NULL DEFAULT '0' COMMENT '点踩数',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_comment_reply_comment_id` (`comment_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12000015 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论回复';
-- ----------------------------
-- Table structure for p_comment_metric
-- ----------------------------
DROP TABLE IF EXISTS `p_comment_metric`;
CREATE TABLE `p_comment_metric` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`comment_id` BIGINT NOT NULL,
`rank_score` BIGINT NOT NULL DEFAULT 0,
`incentive_score` int NOT NULL DEFAULT 0,
`decay_factor` int NOT NULL DEFAULT 0,
`motivation_factor` int NOT NULL DEFAULT 0,
`is_del` tinyint NOT NULL DEFAULT 0,
`created_on` BIGINT NOT NULL DEFAULT 0,
`modified_on` BIGINT NOT NULL DEFAULT 0,
`deleted_on` BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_comment_metric_comment_id_rank_score` (`comment_id`, `rank_score`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for p_tweet_comment_thumbs
-- ----------------------------
DROP TABLE IF EXISTS `p_tweet_comment_thumbs`;
CREATE TABLE `p_tweet_comment_thumbs` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'thumbs ID',
`user_id` BIGINT NOT NULL,
`tweet_id` BIGINT NOT NULL COMMENT '推文ID',
`comment_id` BIGINT NOT NULL COMMENT '评论ID',
`reply_id` BIGINT COMMENT '评论回复ID',
`comment_type` TINYINT NOT NULL DEFAULT '0' COMMENT '评论类型 0为推文评论、1为评论回复',
`is_thumbs_up` TINYINT NOT NULL DEFAULT '0' COMMENT '是否点赞',
`is_thumbs_down` TINYINT NOT NULL DEFAULT '0' COMMENT '是否点踩',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` TINYINT NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tweet_comment_thumbs_uid_tid` (`user_id`, `tweet_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='推文评论点赞';
-- ----------------------------
-- Table structure for p_message
-- ----------------------------
DROP TABLE IF EXISTS `p_message`;
CREATE TABLE `p_message` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息通知ID',
`sender_user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '发送方用户ID',
`receiver_user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '接收方用户ID',
`type` tinyint NOT NULL DEFAULT '1' COMMENT '通知类型,1动态,2评论,3回复,4私信,99系统通知',
`brief` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '摘要说明',
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '详细内容',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT '动态ID',
`comment_id` BIGINT NOT NULL DEFAULT '0' COMMENT '评论ID',
`reply_id` BIGINT NOT NULL DEFAULT '0' COMMENT '回复ID',
`is_read` tinyint NOT NULL DEFAULT '0' COMMENT '是否已读',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_message_receiver_user_id` (`receiver_user_id`) USING BTREE,
KEY `idx_message_is_read` (`is_read`) USING BTREE,
KEY `idx_message_type` (`type`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=16000033 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='消息通知';
-- ----------------------------
-- Table structure for p_post
-- ----------------------------
DROP TABLE IF EXISTS `p_post`;
CREATE TABLE `p_post` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主题ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`comment_count` BIGINT NOT NULL DEFAULT '0' COMMENT '评论数',
`collection_count` BIGINT NOT NULL DEFAULT '0' COMMENT '收藏数',
`upvote_count` BIGINT NOT NULL DEFAULT '0' COMMENT '点赞数',
`share_count` BIGINT NOT NULL DEFAULT '0' COMMENT '分享数',
`visibility` tinyint NOT NULL DEFAULT '0' COMMENT '可见性: 0私密 10充电可见 20订阅可见 30保留 40保留 50好友可见 60关注可见 70保留 80保留 90公开',
`is_top` tinyint NOT NULL DEFAULT '0' COMMENT '是否置顶',
`is_essence` tinyint NOT NULL DEFAULT '0' COMMENT '是否精华',
`is_lock` tinyint NOT NULL DEFAULT '0' COMMENT '是否锁定',
`latest_replied_on` BIGINT NOT NULL DEFAULT '0' COMMENT '最新回复时间',
`tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标签',
`attachment_price` BIGINT NOT NULL DEFAULT '0' COMMENT '附件价格(分)',
`ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP地址',
`ip_loc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'IP城市地址',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_post_user_id` (`user_id`) USING BTREE,
KEY `idx_post_visibility` (`visibility`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1080017989 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章';
-- ----------------------------
-- Table structure for p_post_metric
-- ----------------------------
DROP TABLE IF EXISTS `p_post_metric`;
CREATE TABLE `p_post_metric` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`post_id` BIGINT NOT NULL,
`rank_score` BIGINT NOT NULL DEFAULT 0,
`incentive_score` int NOT NULL DEFAULT 0,
`decay_factor` int NOT NULL DEFAULT 0,
`motivation_factor` int NOT NULL DEFAULT 0,
`is_del` tinyint NOT NULL DEFAULT 0, -- 是否删除, 0否, 1是
`created_on` BIGINT NOT NULL DEFAULT '0',
`modified_on` BIGINT NOT NULL DEFAULT '0',
`deleted_on` BIGINT NOT NULL DEFAULT '0',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_post_metric_post_id_rank_score` (`post_id`,`rank_score`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for p_post_attachment_bill
-- ----------------------------
DROP TABLE IF EXISTS `p_post_attachment_bill`;
CREATE TABLE `p_post_attachment_bill` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '购买记录ID',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`paid_amount` BIGINT NOT NULL DEFAULT '0' COMMENT '支付金额',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_post_attachment_bill_post_id` (`post_id`) USING BTREE,
KEY `idx_post_attachment_bill_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5000002 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章附件账单';
-- ----------------------------
-- Table structure for p_post_collection
-- ----------------------------
DROP TABLE IF EXISTS `p_post_collection`;
CREATE TABLE `p_post_collection` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_post_collection_post_id` (`post_id`) USING BTREE,
KEY `idx_post_collection_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6000012 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章收藏';
-- ----------------------------
-- Table structure for p_post_content
-- ----------------------------
DROP TABLE IF EXISTS `p_post_content`;
CREATE TABLE `p_post_content` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '内容ID',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '内容',
`type` tinyint NOT NULL DEFAULT '2' COMMENT '类型,1标题,2文字段落,3图片地址,4视频地址,5语音地址,6链接地址,7附件资源,8收费资源',
`sort` int NOT NULL DEFAULT '100' COMMENT '排序,越小越靠前',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_post_content_post_id` (`post_id`) USING BTREE,
KEY `idx_post_content_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=180022546 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章内容';
-- ----------------------------
-- Table structure for p_post_star
-- ----------------------------
DROP TABLE IF EXISTS `p_post_star`;
CREATE TABLE `p_post_star` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT 'POST ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_post_star_post_id` (`post_id`) USING BTREE,
KEY `idx_post_star_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6000028 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='冒泡/文章点赞';
-- ----------------------------
-- Table structure for p_tag
-- ----------------------------
DROP TABLE IF EXISTS `p_tag`;
CREATE TABLE `p_tag` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '标签ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '创建者ID',
`tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签名',
`quote_num` BIGINT NOT NULL DEFAULT '0' COMMENT '引用数',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_tag_tag` (`tag`) USING BTREE,
KEY `idx_tag_user_id` (`user_id`) USING BTREE,
KEY `idx_tag_quote_num` (`quote_num`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9000065 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签';
-- ----------------------------
-- Table structure for p_topic_user
-- ----------------------------
DROP TABLE IF EXISTS `p_topic_user`;
CREATE TABLE `p_topic_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`topic_id` BIGINT NOT NULL COMMENT '标签ID',
`user_id` BIGINT NOT NULL COMMENT '创建者ID',
`alias_name` VARCHAR ( 255 ) COMMENT '别名',
`remark` VARCHAR ( 512 ) COMMENT '备注',
`quote_num` BIGINT COMMENT '引用数',
`is_top` TINYINT NOT NULL DEFAULT '0' COMMENT '是否置顶 0 为未置顶、1 为已置顶',
`is_pin` TINYINT NOT NULL DEFAULT '0' COMMENT '是否钉住 0 为未钉住、1 为已钉住',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` TINYINT NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
`reserve_a` VARCHAR ( 255 ) COMMENT '保留字段a',
`reserve_b` VARCHAR ( 255 ) COMMENT '保留字段b',
PRIMARY KEY ( `id` ) USING BTREE,
UNIQUE KEY `idx_topic_user_uid_tid` ( `topic_id`, `user_id` ) USING BTREE,
KEY `idx_topic_user_uid_ispin` ( `user_id`, `is_pin`) USING BTREE
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户话题';
-- ----------------------------
-- Table structure for p_user
-- ----------------------------
DROP TABLE IF EXISTS `p_user`;
CREATE TABLE `p_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '昵称',
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
`phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'MD5密码',
`salt` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '盐值',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态,1正常,2停用',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户头像',
`balance` BIGINT NOT NULL COMMENT '用户余额(分)',
`is_admin` tinyint NOT NULL DEFAULT '0' COMMENT '是否管理员',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_user_username` (`username`) USING BTREE,
KEY `idx_user_phone` (`phone`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=100058 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户';
-- ----------------------------
-- Table structure for p_user_metric
-- ----------------------------
DROP TABLE IF EXISTS `p_user_metric`;
CREATE TABLE `p_user_metric` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`tweets_count` int NOT NULL DEFAULT 0,
`latest_trends_on` BIGINT NOT NULL DEFAULT 0 COMMENT '最新动态时间',
`is_del` tinyint NOT NULL DEFAULT 0,
`created_on` BIGINT NOT NULL DEFAULT 0,
`modified_on` BIGINT NOT NULL DEFAULT 0,
`deleted_on` BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_user_metric_user_id_tweets_count_trends` (`user_id`, `tweets_count`, `latest_trends_on`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for p_following
-- ----------------------------
DROP TABLE IF EXISTS `p_following`;
CREATE TABLE `p_following` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`follow_id` BIGINT NOT NULL,
`is_del` tinyint NOT NULL DEFAULT 0, -- 是否删除, 0否, 1是
`created_on` BIGINT NOT NULL DEFAULT '0',
`modified_on` BIGINT NOT NULL DEFAULT '0',
`deleted_on` BIGINT NOT NULL DEFAULT '0',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_following_user_follow` (`user_id`,`follow_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for p_contact
-- ----------------------------
DROP TABLE IF EXISTS `p_contact`;
CREATE TABLE `p_contact` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '联系人ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`friend_id` BIGINT NOT NULL COMMENT '好友ID',
`group_id` BIGINT NOT NULL DEFAULT '0' COMMENT '好友分组ID:默认为0无分组',
`remark` varchar(32) NOT NULL DEFAULT '' COMMENT '好友备注',
`status` tinyint NOT NULL DEFAULT '0' COMMENT '好友状态: 1请求好友, 2已好友, 3拒绝好友, 4已删好友',
`is_top` tinyint NOT NULL DEFAULT '0' COMMENT '是否置顶, 0否, 1是',
`is_black` tinyint NOT NULL DEFAULT '0' COMMENT '是否为黑名单, 0否, 1是',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除好友, 0否, 1是',
`notice_enable` tinyint NOT NULL DEFAULT '0' COMMENT '是否有消息提醒, 0否, 1是',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_contact_user_friend` (`user_id`,`friend_id`) USING BTREE,
KEY `idx_contact_user_friend_status` (`user_id`, `friend_id`, `status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='联系人';
-- ----------------------------
-- Table structure for p_contact_group
-- ----------------------------
DROP TABLE IF EXISTS `p_contact_group`;
CREATE TABLE `p_contact_group` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '联系人ID',
`user_id` int NOT NULL DEFAULT '0' COMMENT '用户id',
`name` varchar(32) NOT NULL DEFAULT '' COMMENT '分组名称',
`is_del` tinyint NOT NULL DEFAULT '1' COMMENT '是否删除, 0否, 1是',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='联系人分组';
-- ----------------------------
-- Table structure for p_wallet_recharge
-- ----------------------------
DROP TABLE IF EXISTS `p_wallet_recharge`;
CREATE TABLE `p_wallet_recharge` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '充值ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`amount` BIGINT NOT NULL DEFAULT '0' COMMENT '充值金额',
`trade_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '支付宝订单号',
`trade_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '交易状态',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_wallet_recharge_user_id` (`user_id`) USING BTREE,
KEY `idx_wallet_recharge_trade_no` (`trade_no`) USING BTREE,
KEY `idx_wallet_recharge_trade_status` (`trade_status`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10023 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='钱包流水';
-- ----------------------------
-- Table structure for p_wallet_statement
-- ----------------------------
DROP TABLE IF EXISTS `p_wallet_statement`;
CREATE TABLE `p_wallet_statement` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '账单ID',
`user_id` BIGINT NOT NULL DEFAULT '0' COMMENT '用户ID',
`change_amount` BIGINT NOT NULL DEFAULT '0' COMMENT '变动金额',
`balance_snapshot` BIGINT NOT NULL DEFAULT '0' COMMENT '资金快照',
`reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变动原因',
`post_id` BIGINT NOT NULL DEFAULT '0' COMMENT '关联动态',
`created_on` BIGINT NOT NULL DEFAULT '0' COMMENT '创建时间',
`modified_on` BIGINT NOT NULL DEFAULT '0' COMMENT '修改时间',
`deleted_on` BIGINT NOT NULL DEFAULT '0' COMMENT '删除时间',
`is_del` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_wallet_statement_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10010 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='钱包流水';
DROP VIEW IF EXISTS p_post_by_media;
CREATE VIEW p_post_by_media AS
SELECT post.*
FROM
( SELECT DISTINCT post_id FROM p_post_content WHERE ( TYPE = 3 OR TYPE = 4 OR TYPE = 7 OR TYPE = 8 ) AND is_del = 0 ) media
JOIN p_post post ON media.post_id = post.ID
WHERE
post.is_del = 0;
DROP VIEW IF EXISTS p_post_by_comment;
CREATE VIEW p_post_by_comment AS
SELECT P.*, C.user_id comment_user_id
FROM
(
SELECT
post_id,
user_id
FROM
p_comment
WHERE
is_del = 0 UNION
SELECT
post_id,
reply.user_id user_id
FROM
p_comment_reply reply
JOIN p_comment COMMENT ON reply.comment_id = COMMENT.ID
WHERE
reply.is_del = 0
AND COMMENT.is_del = 0
)
C JOIN p_post P ON C.post_id = P.ID
WHERE
P.is_del = 0;
DROP VIEW IF EXISTS p_user_relation;
CREATE VIEW p_user_relation AS
SELECT user_id, friend_id he_uid, 5 AS style
FROM p_contact WHERE status=2 AND is_del=0
UNION
SELECT user_id, follow_id he_uid, 10 AS style
FROM p_following WHERE is_del=0;
SET FOREIGN_KEY_CHECKS = 1;
+211
View File
@@ -0,0 +1,211 @@
services:
paopao-ce:
image: "bitbus/paopao-ce:v0.6.0-alpha.2"
container_name: ${CONTAINER_NAME}
restart: always
depends_on:
paopao-ce-db:
condition: service_healthy
paopao-ce-redis:
condition: service_healthy
paopao-ce-meili:
condition: service_healthy
networks:
- 1panel-network
- paopao-ce-network
ports:
- "${PANEL_APP_PORT_HTTP}:8008"
entrypoint:
- /bin/sh
- -c
command:
- |
set -e
yaml_quote() {
value="$$1"
printf '"'
printf '%s' "$$value" | sed 's/\\/\\\\/g; s/"/\\"/g'
printf '"'
}
mkdir -p /app/paopao-ce/custom/data/paopao-ce/oss /app/paopao-ce/custom/data/paopao-ce/logs
if [ ! -f /app/paopao-ce/custom/config.yaml ]; then
MYSQL_PASSWORD_FALLBACK="$${MYSQL_PASSWORD}"
if [ -z "$$MYSQL_PASSWORD_FALLBACK" ]; then
MYSQL_PASSWORD_FALLBACK="paopao"
fi
JWT_SECRET_FALLBACK="$${JWT_SECRET}"
if [ -z "$$JWT_SECRET_FALLBACK" ]; then
JWT_SECRET_FALLBACK="18a6413dc4fe394c66345ebe501b2f26"
fi
MEILI_MASTER_KEY_FALLBACK="$${MEILI_MASTER_KEY}"
if [ -z "$$MEILI_MASTER_KEY_FALLBACK" ]; then
MEILI_MASTER_KEY_FALLBACK="paopao-meilisearch"
fi
PUBLIC_DOMAIN_FALLBACK="$${PUBLIC_DOMAIN}"
if [ -z "$$PUBLIC_DOMAIN_FALLBACK" ]; then
PANEL_APP_PORT_HTTP_FALLBACK="$${PANEL_APP_PORT_HTTP}"
if [ -z "$$PANEL_APP_PORT_HTTP_FALLBACK" ]; then
PANEL_APP_PORT_HTTP_FALLBACK="8008"
fi
PUBLIC_DOMAIN_FALLBACK="127.0.0.1:$$PANEL_APP_PORT_HTTP_FALLBACK"
fi
MYSQL_PASSWORD_VALUE="$$(yaml_quote "$$MYSQL_PASSWORD_FALLBACK")"
JWT_SECRET_VALUE="$$(yaml_quote "$$JWT_SECRET_FALLBACK")"
MEILI_MASTER_KEY_VALUE="$$(yaml_quote "$$MEILI_MASTER_KEY_FALLBACK")"
PUBLIC_DOMAIN_VALUE="$$(yaml_quote "$$PUBLIC_DOMAIN_FALLBACK")"
cat > /app/paopao-ce/custom/config.yaml <<EOF
App:
RunMode: release
Features:
Default: ["Web", "Frontend:EmbedWeb", "Meili", "LocalOSS", "MySQL", "BigCacheIndex", "LoggerFile"]
WebServer:
RunMode: release
HttpIp: 0.0.0.0
HttpPort: 8008
ReadTimeout: 60
WriteTimeout: 60
Logger:
Level: info
LoggerFile:
SavePath: custom/data/paopao-ce/logs
FileName: app
FileExt: .log
Database:
LogLevel: error
TablePrefix: p_
MySQL:
Username: paopao
Password: $$MYSQL_PASSWORD_VALUE
Host: paopao-ce-db:3306
DBName: paopao
Charset: utf8mb4
ParseTime: true
MaxIdleConns: 10
MaxOpenConns: 30
Redis:
InitAddress:
- paopao-ce-redis:6379
Username:
Password:
SelectDB: 0
ConnWriteTimeout: 60
JWT:
Secret: $$JWT_SECRET_VALUE
Issuer: paopao-api
Expire: 86400
Meili:
Host: paopao-ce-meili:7700
Index: paopao-data
ApiKey: $$MEILI_MASTER_KEY_VALUE
Secure: false
LocalOSS:
SavePath: custom/data/paopao-ce/oss
Secure: false
Bucket: paopao
Domain: $$PUBLIC_DOMAIN_VALUE
WebProfile:
AllowUserRegister: true
AllowTweetAttachment: true
AllowTweetVideo: true
DefaultTweetMaxLength: 2000
DefaultTweetVisibility: public
EOF
fi
cp /app/paopao-ce/custom/config.yaml /app/paopao-ce/config.yaml
exec /app/paopao-ce/paopao serve
environment:
- TZ=${TZ}
- PANEL_APP_PORT_HTTP=${PANEL_APP_PORT_HTTP}
- PUBLIC_DOMAIN=${PUBLIC_DOMAIN}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
volumes:
- "${APP_DATA_DIR}/custom:/app/paopao-ce/custom"
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8008/"]
interval: 30s
timeout: 5s
start_period: 1m
retries: 10
labels:
createdBy: "Apps"
paopao-ce-db:
image: "mysql:8.0"
container_name: ${CONTAINER_NAME}-db
restart: always
networks:
- paopao-ce-network
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=paopao
- MYSQL_USER=paopao
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- "${APP_DATA_DIR}/initdb:/docker-entrypoint-initdb.d:ro"
- "${APP_DATA_DIR}/mysql:/var/lib/mysql"
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u paopao -p\"$${MYSQL_PASSWORD}\" --silent"]
interval: 10s
timeout: 5s
retries: 30
labels:
createdBy: "Apps"
paopao-ce-redis:
image: "redis/redis-stack:7.2.0-v6"
container_name: ${CONTAINER_NAME}-redis
restart: always
networks:
- paopao-ce-network
environment:
- REDISEARCH_ARGS=MAXSEARCHRESULTS 5
volumes:
- "${APP_DATA_DIR}/redis:/data"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 30
labels:
createdBy: "Apps"
paopao-ce-meili:
image: "getmeili/meilisearch:v1.7"
container_name: ${CONTAINER_NAME}-meili
restart: always
networks:
- paopao-ce-network
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
- MEILI_DB_PATH=/meili_data
volumes:
- "${APP_DATA_DIR}/meili:/meili_data"
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:7700/health >/dev/null"]
interval: 10s
timeout: 5s
retries: 30
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
paopao-ce-network:
driver: bridge
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
DATA_DIR="${APP_DATA_DIR:-./data}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SOURCE_SQL="${SCRIPT_DIR}/../data/paopao-mysql.sql"
mkdir -p \
"${DATA_DIR}/custom/data/paopao-ce/oss" \
"${DATA_DIR}/custom/data/paopao-ce/logs" \
"${DATA_DIR}/initdb" \
"${DATA_DIR}/meili" \
"${DATA_DIR}/mysql" \
"${DATA_DIR}/redis"
if [ ! -f "${DATA_DIR}/initdb/paopao.sql" ]; then
cp "${SOURCE_SQL}" "${DATA_DIR}/initdb/paopao.sql"
fi
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+15
View File
@@ -0,0 +1,15 @@
{
"repository": "https://github.com/rocboss/paopao-ce",
"dockerDocs": "https://github.com/rocboss/paopao-ce/blob/main/INSTALL_ZH.md",
"composeFile": "https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml",
"officialCompose": "https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/docker-compose.yaml",
"officialConfig": "https://github.com/rocboss/paopao-ce/blob/v0.6.0-alpha.2/internal/conf/config.yaml",
"officialInstallDocs": "https://github.com/rocboss/paopao-ce/blob/main/INSTALL_ZH.md",
"notes": [
"Issue request: https://github.com/okxlin/appstore/issues/2435",
"The all-in-one image was not used because runtime testing showed missing groupmod/usermod/gosu and no working HTTP service.",
"The app uses the official multi-service topology: MySQL, Redis Stack, Meilisearch and PaoPao backend with embedded web UI.",
"The backend image is pinned to bitbus/paopao-ce:v0.6.0-alpha.2 because Docker Hub does not publish a backend image for the newer v0.6.0-alpha.3 release and the official compose default tag 0.6-alpha is missing.",
"Only amd64 is declared because bitbus/paopao-ce tags are single-architecture amd64 images."
]
}