{"id":13592422,"url":"https://github.com/88250/pipe","last_synced_at":"2025-04-05T01:08:27.064Z","repository":{"id":37692917,"uuid":"225150544","full_name":"88250/pipe","owner":"88250","description":"🎷 B3log 分布式社区的 Go 博客端节点系统，欢迎加入下一代社区网络。B3log distributed community blog-end node based on Go, welcome to join the next generation community network. ","archived":false,"fork":false,"pushed_at":"2023-05-26T00:27:18.000Z","size":33385,"stargazers_count":433,"open_issues_count":4,"forks_count":97,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-29T00:11:14.651Z","etag":null,"topics":["b3log","blog","markdown","pipe","vditor"],"latest_commit_sha":null,"homepage":"https://ld246.com/tag/pipe","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/88250.png","metadata":{"files":{"readme":"README.md","changelog":"changelogs.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-01T11:31:42.000Z","updated_at":"2025-03-25T06:23:13.000Z","dependencies_parsed_at":"2024-06-18T20:23:28.429Z","dependency_job_id":null,"html_url":"https://github.com/88250/pipe","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/88250%2Fpipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/88250%2Fpipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/88250%2Fpipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/88250%2Fpipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/88250","download_url":"https://codeload.github.com/88250/pipe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271531,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["b3log","blog","markdown","pipe","vditor"],"created_at":"2024-08-01T16:01:09.060Z","updated_at":"2025-04-05T01:08:27.045Z","avatar_url":"https://github.com/88250.png","language":"Go","readme":"\u003cp align = \"center\"\u003e\n\u003cimg alt=\"Pipe\" src=\"https://b3log.org/images/brand/pipe-128.png\"\u003e\n\u003cbr\u003e\u003cbr\u003e\n小而美的博客平台，为未来而构建\n\u003cbr\u003e\u003cbr\u003e\n\u003ca title=\"Build Status\" target=\"_blank\" href=\"https://github.com/88250/pipe/actions/workflows/gotest.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/88250/pipe/gotest.yml?style=flat-square\"\u003e\u003c/a\u003e\n\u003ca title=\"Docker Image CI\" target=\"_blank\" href=\"https://github.com/88250/pipe/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/88250/pipe/dockerimage.yml?label=Actions\u0026logo=github\u0026style=flat-square\"\u003e\u003c/a\u003e\n\u003ca title=\"Go Report Card\" target=\"_blank\" href=\"https://goreportcard.com/report/github.com/88250/pipe\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/88250/pipe?style=flat-square\"\u003e\u003c/a\u003e\n\u003ca title=\"Coverage Status\" target=\"_blank\" href=\"https://coveralls.io/github/88250/pipe\"\u003e\u003cimg src=\"https://img.shields.io/coveralls/github/88250/pipe.svg?style=flat-square\u0026color=CC9933\"\u003e\u003c/a\u003e\n\u003ca title=\"Code Size\" target=\"_blank\" href=\"https://github.com/88250/pipe\"\u003e\u003cimg src=\"https://img.shields.io/github/languages/code-size/88250/pipe.svg?style=flat-square\"\u003e\u003c/a\u003e\n\u003ca title=\"GPLv3\" target=\"_blank\" href=\"https://github.com/88250/pipe/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-GPLv3-orange.svg?style=flat-square\"\u003e\u003c/a\u003e\n\u003cbr\u003e\n\u003ca title=\"Releases\" target=\"_blank\" href=\"https://github.com/88250/pipe/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/88250/pipe.svg?style=flat-square\"\u003e\u003c/a\u003e\n\u003ca title=\"Release Date\" target=\"_blank\" href=\"https://github.com/88250/pipe/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release-date/88250/pipe.svg?style=flat-square\u0026color=99CCFF\"\u003e\u003c/a\u003e\n\u003ca title=\"Docker Pulls\" target=\"_blank\" href=\"https://hub.docker.com/r/b3log/pipe\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/b3log/pipe.svg?style=flat-square\u0026color=blueviolet\"\u003e\u003c/a\u003e\n\u003ca title=\"Docker Image Size\" target=\"_blank\" href=\"https://hub.docker.com/r/b3log/pipe\"\u003e\u003cimg src=\"https://img.shields.io/docker/image-size/b3log/pipe.svg?style=flat-square\u0026color=ff96b4\"\u003e\u003c/a\u003e\n\u003cbr\u003e\n\u003ca title=\"GitHub Commits\" target=\"_blank\" href=\"https://github.com/88250/pipe/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/commit-activity/m/88250/pipe.svg?style=flat-square\"\u003e\u003c/a\u003e\n\u003ca title=\"Last Commit\" target=\"_blank\" href=\"https://github.com/88250/pipe/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/88250/pipe.svg?style=flat-square\u0026color=FF9900\"\u003e\u003c/a\u003e\n\u003ca title=\"GitHub Pull Requests\" target=\"_blank\" href=\"https://github.com/88250/pipe/pulls\"\u003e\u003cimg src=\"https://img.shields.io/github/issues-pr-closed/88250/pipe.svg?style=flat-square\u0026color=FF9966\"\u003e\u003c/a\u003e\n\u003ca title=\"Hits\" target=\"_blank\" href=\"https://github.com/88250/hits\"\u003e\u003cimg src=\"https://hits.b3log.org/88250/pipe.svg\"\u003e\u003c/a\u003e\n\u003cbr\u003e\u003cbr\u003e\n\u003ca title=\"GitHub Watchers\" target=\"_blank\" href=\"https://github.com/88250/pipe/watchers\"\u003e\u003cimg src=\"https://img.shields.io/github/watchers/88250/pipe.svg?label=Watchers\u0026style=social\"\u003e\u003c/a\u003e  \n\u003ca title=\"GitHub Stars\" target=\"_blank\" href=\"https://github.com/88250/pipe/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/88250/pipe.svg?label=Stars\u0026style=social\"\u003e\u003c/a\u003e  \n\u003ca title=\"GitHub Forks\" target=\"_blank\" href=\"https://github.com/88250/pipe/network/members\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/88250/pipe.svg?label=Forks\u0026style=social\"\u003e\u003c/a\u003e  \n\u003ca title=\"Author GitHub Followers\" target=\"_blank\" href=\"https://github.com/88250\"\u003e\u003cimg src=\"https://img.shields.io/github/followers/88250.svg?label=Followers\u0026style=social\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/88250/pipe/blob/master/README_en_US.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n## 💡 简介\n\n[Pipe](https://github.com/88250/pipe) 是一款小而美的开源博客平台，专为程序员设计。Pipe 有着非常活跃的[社区](https://ld246.com)，可将文章作为帖子推送到社区，来自社区的回帖将作为博客评论进行联动（具体细节请浏览 [B3log 构思 - 分布式社区网络](https://ld246.com/article/1546941897596)）。\n\n\u003e 这是一种全新的网络社区体验，让热爱记录和分享的你不再感到孤单！\n\n欢迎到 [Pipe 官方讨论区](https://ld246.com/tag/pipe)了解更多。同时也欢迎关注 B3log 开源社区微信公众号 `B3log开源`：\n\n![b3logos.jpg](https://b3logfile.com/file/2020/08/b3logos-032af045.jpg)\n\n## 🗃 案例\n\n* [Vanessa](https://vanessa.b3log.org)\n\n## ✨ 功能\n\n* 多用户博客平台\n* [Markdown 编辑器](https://github.com/Vanessa219/vditor)支持三种编辑模式：所见即所得 / 即时渲染 / 分屏预览\n* 聚合分类 / 标签\n* 自定义导航\n* 多主题 / 多语言\n* Atom / RSS / Sitemap\n* 文章搜索\n* Hexo/Jekyll 导入 / 导出\n* 可配置动静分离\n* 支持 SQLite / MySQL / PostgreSQL\n\n## 🎨 界面\n\n### 开始使用\n\n![start.png](https://b3logfile.com/file/2020/04/start-7fb7b415.png)\n\n### 管理后台\n\n![console.png](https://b3logfile.com/file/2020/04/console-047922de.png)\n\n### 编辑文章\n\n![post.png](https://b3logfile.com/file/2020/04/post-f52cbd5c.png)\n\n### 主题选择\n\n![theme.png](https://b3logfile.com/file/2020/04/theme-d2799005.png)\n\n### 主题 Gina\n\n![gina.png](https://b3logfile.com/file/2020/04/gina-d7fe2313.png)\n\n## 🛠️ 安装\n\nPipe 仅支持通过 Docker 进行部署，如果你需要从源码构建可参考[这里](https://ld246.com/article/1533965022328)。\n\n### Docker 部署\n\n获取最新镜像：\n\n```shell\ndocker pull b3log/pipe\n```\n\n* 使用 MySQL\n  先手动建库（库名 `pipe` ，字符集使用 `utf8mb4` ，排序规则 `utf8mb4_general_ci` ），然后启动容器：\n\n  ```shell\n  docker run --detach --name pipe --network=host \\\n      b3log/pipe --mysql=\"root:123456@(127.0.0.1:3306)/pipe?charset=utf8mb4\u0026parseTime=True\u0026loc=Local\u0026timeout=1s\" --runtime_mode=prod --port=5897 --server=http://localhost:5897\n  ```\n\n\n  为了简单，使用了主机网络模式来连接主机上的 MySQL。\n* 使用 SQLite\n\n  ```shell\n  docker run --detach --name pipe --volume ~/pipe.db:/opt/pipe/pipe.db --publish 5897:5897 \\\n      b3log/pipe --sqlite=\"/opt/pipe/pipe.db\" --runtime_mode=prod --port=5897 --server=http://localhost:5897\n  ```\n  \n  注意：需先确保 SQLite 数据库文件已存在。如果数据库文件不存在时，docker run --volume 参数默认将宿主路径识别为目录，并自动创建这个目录，这可能导致 pipe 创建 sqlite 数据库文件失败。新建数据库文件可以简单用 touch 命令，如：\n  \n* ```shell\n  $ touch ~/pipe.db\n  ```\n\n启动参数说明：\n\n* `--port`：进程监听端口\n* `--server`：访问时的链接\n\n完整启动参数的说明可以使用 `-h` 来查看。\n\n### Docker 升级\n\n1. 拉取最新镜像\n2. 重启容器\n\n可参考[这里](https://github.com/88250/pipe/blob/master/docker-restart.sh)编写一个重启脚本，并通过 crontab 每日凌晨运行来实现自动更新。\n\n### NGINX 反代\n\n```nginx\nupstream pipe {\n    server localhost:5897;\n}\n\nserver {\n    listen 80;\n    server_name pipe.b3log.org; # 配置为你自己的域名\n\n    location / {\n        proxy_pass http://pipe$request_uri;\n        proxy_set_header  Host $host:$server_port;\n        proxy_set_header  X-Real-IP  $remote_addr;\n        client_max_body_size  10m;\n    }\n}\n```\n\n另外，可以参考 https://ld246.com/article/1517474627971 进行配置。\n\n## 📜 文档\n\n* [《提问的智慧》精读注解版](https://ld246.com/article/1536377163156)\n* [Pipe 用户指南](https://ld246.com/article/1513761942333)\n* [Pipe 开发指南](https://ld246.com/article/1533965022328)\n* [Pipe 主题开发指南](https://ld246.com/article/1512550354920)\n* [Pipe Postman 测试集](https://www.getpostman.com/collections/900ddef64ad0e60479a6)\n\n## 🏘️ 社区\n\n* [讨论区](https://ld246.com/tag/pipe)\n* [报告问题](https://github.com/88250/pipe/issues/new/choose)\n\n## 📄 授权\n\nPipe 使用 [木兰宽松许可证, 第2版](http://license.coscl.org.cn/MulanPSL2) 开源协议。\n\n## 🙏 鸣谢\n\n* [jQuery](https://github.com/jquery/jquery)：JavaScript 工具库，用于主题页面\n* [Vue.js](https://github.com/vuejs/vue)：渐进式 JavaScript 框架\n* [Nuxt.js](https://github.com/nuxt/nuxt.js)：Vue.js 框架\n* [Vuetify](https://github.com/vanessa219/vuetify)：Vue.js 的 Material 组件框架\n* [Vditor](https://github.com/Vanessa219/vditor)： 浏览器端的 Markdown 编辑器\n* [Gin](https://github.com/gin-gonic/gin)：又快又好用的 golang HTTP Web 框架\n* [GORM](https://github.com/jinzhu/gorm)：极好的 golang ORM 库\n* [SQLite](https://www.sqlite.org)：使用广泛的嵌入式 SQL 引擎\n* [GCache](https://github.com/bluele/gcache)：golang 缓存库\n* [Gulu](https://github.com/88250/gulu)：Go 语言常用工具库，这个轱辘还算圆\n* [Lute](https://github.com/88250/lute)：一款结构化的 Markdown 引擎，支持 Go 和 JavaScript\n\n---\n\n## 特性说明\n\n### 发布文章\n\nPipe 的文章编辑器支持 Markdown，并支持复制/粘贴图片、粘贴 HTML 自动转换 Markdown、流程图、数学公式等。\n\n另外，可以为文章启用自动配图，会自动在文章最前面插入所选择的配图。\n\n### 聚合分类\n\nPipe 使用“自底向上”的分类方式：\n\n1. 定义分类，并配置该分类包含的标签\n2. 查询某个分类文章列表时通过分类-\u003e 标签集-\u003e 标签关联的文章进行聚合\n\n也就是说一篇文章在编辑时只需要打标签，访问分类时会根据该分类包含的标签将文章关联出来。这是一个自底向上的信息架构，在使用时更灵活一些，可以随时调整分类而不必重新更新文章。\n\n### 域名绑定\n\n在 Pipe 平台上的每个博客都可以配置域名，需要博主和服务器运维者分别操作：\n\n1. 博主在设置 -\u003e 基础配置 -\u003e 博客地址一栏填写域名\n2. 运维者通过配置 NGINX 实现域名到 /blogs/{username} 的反向代理\n\n```\nserver {\n    listen 80;\n    server_name vanessa.b3log.org;\n\n    location / {\n        proxy_pass http://pipe/blogs/Vanessa/;\n    }\n}\n```\n\n### 导入 / 导出\n\nPipe 支持导入 Hexo/Jekyll 的 Markdown 文件，将需要导入的 Markdown 文件使用 zip 压缩上传即可。导入时会按标题去重，并自动按原文章的创建时间生成存档。\n\n同样地，Pipe 也支持 Markdown 导出，格式为 Hexo。\n\n### 链滴\n\n在 Pipe 上发布文章时可选择是否自动推送到链滴上，这样能让更多人看到你创作的内容，更容易引起大家的关注和互动。\n\n## 运维\n\n### 数据库\n\nPipe 使用 SQLite3 数据库引擎，数据文件默认情况下存放在 ~/pipe.db，可以通过修改 pipe.json 的 `DataFilePath` 指定新的存放路径。\n\n建议定期备份数据文件，避免意外情况导致数据丢失。\n\n### 版本升级\n\n在管理后台的关于中可以检查版本更新，如果提示有更新请尽快升级，一般来说升级只需要下载新的发布包然后部署重启，实际升级方式以每次版本发布公告为准。\n\n## FAQ\n\n### 如何做友链页面？\n\nPipe 没有单独的友链管理功能。可以通过发一篇文章，然后在导航管理中新建一个友链导航跳转过去。\n\n## 结语\n\n* 如果你在使用 Pipe 的过程中碰到问题或者有需求要提，欢迎跟帖，我们会在第一时间回复 😄\n* 如果你想自己开发 Pipe，请参考 https://ld246.com/article/1533965022328\n* 如果你想自己开发 Pipe 主题，请参考 https://ld246.com/article/1512550354920\n","funding_links":[],"categories":["成品项目","Finished Items","Gin project in real world","Go"],"sub_categories":["组织","To Organize"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F88250%2Fpipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F88250%2Fpipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F88250%2Fpipe/lists"}