diff --git a/apps/paopao-ce/README.md b/apps/paopao-ce/README.md new file mode 100644 index 000000000..e7dd22441 --- /dev/null +++ b/apps/paopao-ce/README.md @@ -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://`。 + +## 参考资料 +- 项目仓库: +- 官方 compose: +- 安装文档: diff --git a/apps/paopao-ce/data.yml b/apps/paopao-ce/data.yml new file mode 100644 index 000000000..238c6dedb --- /dev/null +++ b/apps/paopao-ce/data.yml @@ -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 diff --git a/apps/paopao-ce/latest/.env.sample b/apps/paopao-ce/latest/.env.sample new file mode 100644 index 000000000..406489b01 --- /dev/null +++ b/apps/paopao-ce/latest/.env.sample @@ -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 diff --git a/apps/paopao-ce/latest/data.yml b/apps/paopao-ce/latest/data.yml new file mode 100644 index 000000000..d6a13068b --- /dev/null +++ b/apps/paopao-ce/latest/data.yml @@ -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 diff --git a/apps/paopao-ce/latest/data/.gitkeep b/apps/paopao-ce/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/paopao-ce/latest/data/paopao-mysql.sql b/apps/paopao-ce/latest/data/paopao-mysql.sql new file mode 100644 index 000000000..6866c9130 --- /dev/null +++ b/apps/paopao-ce/latest/data/paopao-mysql.sql @@ -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; diff --git a/apps/paopao-ce/latest/docker-compose.yml b/apps/paopao-ce/latest/docker-compose.yml new file mode 100644 index 000000000..d5c352080 --- /dev/null +++ b/apps/paopao-ce/latest/docker-compose.yml @@ -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 </dev/null"] + interval: 10s + timeout: 5s + retries: 30 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + paopao-ce-network: + driver: bridge diff --git a/apps/paopao-ce/latest/scripts/.gitkeep b/apps/paopao-ce/latest/scripts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/paopao-ce/latest/scripts/init.sh b/apps/paopao-ce/latest/scripts/init.sh new file mode 100755 index 000000000..09c0b9807 --- /dev/null +++ b/apps/paopao-ce/latest/scripts/init.sh @@ -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 diff --git a/apps/paopao-ce/latest/scripts/uninstall.sh b/apps/paopao-ce/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/paopao-ce/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/paopao-ce/latest/scripts/upgrade.sh b/apps/paopao-ce/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/paopao-ce/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/paopao-ce/logo.png b/apps/paopao-ce/logo.png new file mode 100644 index 000000000..7054b5bdc Binary files /dev/null and b/apps/paopao-ce/logo.png differ diff --git a/apps/paopao-ce/source-evidence.json b/apps/paopao-ce/source-evidence.json new file mode 100644 index 000000000..f48adcd88 --- /dev/null +++ b/apps/paopao-ce/source-evidence.json @@ -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." + ] +}