You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
alimy 4aaa732387
add BigCacheIndex for cache index posts
2 years ago
.github add a simple desktop frontend implement base rust+tauri 2 years ago
configs change project structure 2 years ago
docs optimize #88 add title 2 years ago
internal add BigCacheIndex for cache index posts 2 years ago
pkg Merge pull request #97 from rocboss/feature/post-visibility 2 years ago
scripts adjust mysql/sqlite3 initial scripts 2 years ago
web merge from main 2 years ago
.gitattributes change project structure 2 years ago
.gitignore add docker-commpose support 2 years ago
Dockerfile fix: embed captcha font file 2 years ago
LICENSE Initial commit 2 years ago
Makefile optimize version info out logic 2 years ago
README.md add BigCacheIndex for cache index posts 2 years ago
config.yaml.sample add BigCacheIndex for cache index posts 2 years ago
docker-compose.yaml update docker-compose.yaml localoss instead minio as object storage and add phpmysqladmin as db manager 2 years ago
go.mod add BigCacheIndex for cache index posts 2 years ago
go.sum add BigCacheIndex for cache index posts 2 years ago
main.go optimize version info out logic 2 years ago

README.md

Go Report Card Forks Stargazers MIT License Contributors Issues

Logo

PaoPao

🔥一个清新文艺的微社区
View Demo · Report Bug · Features


预览

Web端
明色主题

暗色主题

更多演示请前往官网体验(谢绝灌水)

桌面端:

(back to top)

🛠 技术栈

PaoPao主要由以下优秀的开源项目/工具构建

🏗 快速开始

环境要求

  • Go (1.17+)
  • Node.js (14+)
  • MySQL (5.7+)
  • Redis
  • Zinc

* Zinc是一款轻量级全文搜索引擎可以查阅 https://zincsearch.com/ 安装

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

安装说明

宝塔安装

我们为宝塔用户提供了超详细安装教程 点此查看

普通安装

克隆代码库

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 TAGS='embed'
    

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

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

    make run
    

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

    make run TAGS='embed'
    

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

前端

  1. 进入前端目录 web,编辑 .env 文件中后端服务地址,下载依赖包

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

    yarn build
    

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

桌面端

  1. 进入前端目录 web,编辑 .env 文件中后端服务地址,下载依赖包

    cd ./web
    vim .env
    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://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 .

# 运行
%> docker run -p 8008:8008 -v ${PWD}/config.yaml.sample:/app/paopao-ce/config.yaml your/paopao-ce:tag
  • 前端:
%> cd web

# 默认参数构建
%> docker build -t your/paopao-ce:web .

# 自定义API host 参数构建
%> docker build -t your/paopao-ce:web --build-arg API_HOST=http://paopao.info .

# 使用本地编译的dist构建
%> docker build -t your/paopao-ce:web --build-arg USE_DIST=yes .

使用 docker-compose 运行

%> git clone https://github.com/rocboss/paopao-ce.git
%> docker compose up --build
# visit paopao-ce(http://127.0.0.1:8008) and phpMysqlAdmin(http://127.0.0.1:8080)

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

# file: docker-compose.yaml
...
  backend:
    build:
      context: .
    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 仅仅用于搭建本机开发调试环境paopao-ce/phpMysqlAdmin 默认只能本机访问,如果需要产品部署供外网访问,请自行修改配置参数或使用其他方式部署。

API 文档

构建时将 docs 添加到TAGS中:

%> make run TAGS='docs'
# visit http://127.0.0.1:8008/docs

关于config.yaml

config.yaml.sample 是一份完整的配置文件模版paopao-ce启动时会读取configs/config.yaml、./config.yaml任意一份配置文件优先读取最先找到的文件

%> cp config.yaml.sample config.yaml
%> vi config.yaml # 修改参数
%> paopao-ce

配置文件中的 Features 小节是声明paopao-ce运行时开启哪些功能项:

...

Features:
  Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile"]
  Develop: ["Base", "MySQL", "Option", "Sms", "AliOSS", "LoggerZinc"]
  Demo: ["Base", "MySQL", "Option", "Sms", "MinIO", "LoggerZinc"]
  Slim: ["Base", "Sqlite3", "LocalOSS", "LoggerFile"]
  Base: ["Zinc", "Redis", "Alipay",]
  Option: ["SimpleCacheIndex"]
  Sms: "SmsJuhe"

...

如上: Default/Develop/Demo/Slim 是不同 功能集套件(Features Suite) Base/Option 是子功能套件, Sms是关于短信验证码功能的参数选项。 这里 Default套件 代表的意思是: 使用Base/Option 中的功能 外加 MySQL/LocalOSS/LoggerFile功能,也就是说开启了Zinc/Redis/Alipay/SimpleCacheIndex/MySQL/LocalOSS/LoggerFile 7项功能 Develop套件依例类推。 使用Feautures:

%> release/paopao-ce --help
Usage of release/paopao-ce:
  -features value
        use special features
  -no-default-features
        whether use default features

%> release/paopao-ce # 默认使用 Default 功能套件

%> release/paopao-ce --no-default-features --features develop # 不包含 default 中的功能集,仅仅使用 develop 中声明的功能集

%> release/paopao-ce --features sms  # 使用 default 中的功能集,外加 sms 功能

%> release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,redis # 手动指定需要开启的功能集

目前支持的功能集合:

  • 数据库: MySQL/Sqlite3/PostgreSQL
  • 对象存储: AliOSS/MinIO/LocalOSS
    LocalOSS 提供使用本地目录文件作为对象存储的功能,仅用于开发调试环境;
  • 缓存: Redis/SimpleCacheIndex/BigCacheIndex
    SimpleCacheIndex提供简单的 广场推文列表 的缓存功能;
    BigCacheIndex 使用BigCache缓存 广场推文列表,缓存每个用户每一页,简单做到千人千面;
  • 搜索: Zinc
  • 日志: LoggerFile/LoggerZinc
    LoggerFile 使用文件写日志;
    LoggerZinc 使用Zinc写日志;
  • 支付: Alipay
  • 短信验证码: SmsJuhe(需要开启sms)
    Sms功能如果没有开启,任意短信验证码都可以绑定手机;

其他说明

建议后端服务使用 supervisor 守护进程,并通过 nginx 反向代理后提供API给前端服务调用。

短信通道使用的聚合数据,如果申请不下来,可以考虑替换其他服务商。

代码结构比较简单,很方便扩展

👯‍♀️ 贡献

喜欢的朋友欢迎给个Star、贡献PR。

License

Distributed under the MIT License. See LICENSE for more information.