{"id":15029421,"url":"https://github.com/truthhun/bookstack","last_synced_at":"2025-05-14T18:00:36.475Z","repository":{"id":37664860,"uuid":"122812881","full_name":"TruthHun/BookStack","owner":"TruthHun","description":"BookStack，基于MinDoc，使用Beego开发的在线文档管理系统，功能类似Gitbook和看云。","archived":false,"fork":false,"pushed_at":"2024-05-10T00:48:39.000Z","size":30416,"stargazers_count":3467,"open_issues_count":115,"forks_count":809,"subscribers_count":121,"default_branch":"master","last_synced_at":"2025-04-13T04:01:42.692Z","etag":null,"topics":["beego","bookstack","gitbook","golang","markdown","mindoc"],"latest_commit_sha":null,"homepage":"http://www.bookstack.cn","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TruthHun.png","metadata":{"files":{"readme":"README.md","changelog":"change.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":"2018-02-25T06:55:55.000Z","updated_at":"2025-04-08T05:37:25.000Z","dependencies_parsed_at":"2024-06-18T15:29:15.805Z","dependency_job_id":"bfeac8e9-1d08-40d6-a243-c3269128e7e7","html_url":"https://github.com/TruthHun/BookStack","commit_stats":{"total_commits":780,"total_committers":8,"mean_commits":97.5,"dds":0.3910256410256411,"last_synced_commit":"cb57ce8e2e819f5a621abad5bc68dce6702c66c7"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FBookStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FBookStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FBookStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FBookStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TruthHun","download_url":"https://codeload.github.com/TruthHun/BookStack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198452,"owners_count":22030964,"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":["beego","bookstack","gitbook","golang","markdown","mindoc"],"created_at":"2024-09-24T20:10:37.530Z","updated_at":"2025-05-14T18:00:32.666Z","avatar_url":"https://github.com/TruthHun.png","language":"Go","readme":"\n目录：\n- [BookStack 简介](#bookstack-简介)\n  - [开源](#开源)\n  - [QQ交流群](#qq交流群)\n  - [站点](#站点)\n    - [演示站点](#演示站点)\n    - [正式站点](#正式站点)\n  - [更新、维护和升级](#更新维护和升级)\n  - [功能与亮点](#功能与亮点)\n    - [书籍分类(V1.2 +)](#书籍分类v12-)\n    - [用户主页(V1.2 +)](#用户主页v12-)\n    - [一键导入markdown书籍](#一键导入markdown书籍)\n    - [一键拉取markdown书籍](#一键拉取markdown书籍)\n    - [生成和导出PDF、epub、mobi等离线文档](#生成和导出pdfepubmobi等离线文档)\n    - [文档排序和批量创建文档](#文档排序和批量创建文档)\n    - [文档间的跳转](#文档间的跳转)\n    - [采集功能](#采集功能)\n    - [SEO](#seo)\n    - [版本控制](#版本控制)\n    - [更美观、简洁的页面布局和更为完善的移动端兼容](#更美观简洁的页面布局和更为完善的移动端兼容)\n  - [TODO](#todo)\n  - [安装与使用](#安装与使用)\n  - [关于本人](#关于本人)\n  - [赞助我](#赞助我)\n    - [支付宝打赏赞助](#支付宝打赏赞助)\n    - [微信打赏赞助](#微信打赏赞助)\n\n    \n\u003ca name=\"intro\"\u003e\u003c/a\u003e\n# BookStack 简介\n\nBookStack，分享知识，共享智慧！知识，因分享，传承久远！\n\nBookStack是基于[Mindoc](https://github.com/lifei6671/mindoc)开发的，为运营而生。\n\n在开发的过程中，增加和移除了一些东西，目前已经不兼容MinDoc了（毕竟数据表结构、字段、索引都有了一些不同），同时只支持markdown编辑器。\n\n**BookStack 配套手机APP `BookChatApp` 开源地址**\n\n- Gitee: https://gitee.com/truthhun/BookChatApp\n- GitHub: https://github.com/TruthHun/BookChatApp\n\n**BookChatApp下载体验地址**\n\n- https://www.bookstack.cn/app\n\n\u003ca name=\"open\"\u003e\u003c/a\u003e\n## 开源\n两年前还在做PHP开发的时候，无意间遇到了Gitbook，以及看云，还有readthedoc。\n\n当时想着自己也开发一套，但是后来没时间，当时也没那个技术积累。\n\n后来学了Go语言，又在无意间遇到了[Mindoc](https://github.com/lifei6671/mindoc)，然后我们公司([掘金量化](https://www.myquant.cn) )也恰巧让我开发公司官网和文档系统，然后我就对[Mindoc](https://github.com/lifei6671/mindoc)做了二次开发。\n\n本来是不想开源的，因为自己写代码的时候，写着写着，代码改来改去，然后代码就乱七八糟了，怕开源出来丢人现眼。但是踏入IT行业三年多时间以来，自身也受益于各种开源书籍和开源组件，所以最终还是决定将BookStack开源出来。\n\n其中肯定还是有不足的地方，大家在使用的过程中，遇到问题，欢迎反馈。\n\n源码托管：\n- Github: https://github.com/TruthHun/BookStack\n- Gitee: https://gitee.com/truthhun/BookStack\n\n\u003ca name=\"qqgroup\"\u003e\u003c/a\u003e\n## QQ交流群\n为方便相互学习和交流，建了个QQ群，加群请备注`来自BookStack`\n\n\u003e QQ交流群：457803862(猿军团)\n\n同时要说明的是，该群是一个学习交流群，如果是程序相关问题，请直接提交issues，不接受邮件求助、微信求助和QQ私信求助\n\nBookStack 安装使用手册：[https://www.bookstack.cn/books/help](https://www.bookstack.cn/books/help)\n\n\n\u003ca name=\"site\"\u003e\u003c/a\u003e\n## 站点\n\n\u003ca name=\"demo\"\u003e\u003c/a\u003e\n### 演示站点\n\n\u003e 服务器资源有限，不再提供演示站点\n\n\u003ca name=\"normal\"\u003e\u003c/a\u003e\n### 正式站点\n\n**书栈网**：[https://www.bookstack.cn](https://www.bookstack.cn)\n\n\n\n\u003ca name=\"upgrade\"\u003e\u003c/a\u003e\n## 更新、维护和升级\n\n- 程序下载与升级日志，看这里--\u003e [Release](/truthhun/BookStack/releases)\n\n\u003ca name=\"func\"\u003e\u003c/a\u003e\n## 功能与亮点\n\n\u003ca name=\"cate\"\u003e\u003c/a\u003e\n### 书籍分类(V1.2 +)\n用户就像你的老板，他不知道自己需要什么，但是他知道自己不需要什么...\n\n\u003ca name=\"homepage\"\u003e\u003c/a\u003e\n### 用户主页(V1.2 +)\n在用户主页，展示用户分享的书籍、粉丝、关注和手册，增加用户间的互动\n\n\u003ca name=\"import\"\u003e\u003c/a\u003e\n### 一键导入markdown书籍\n这个功能，相信是很多人的最爱了。目前这个功能仅对管理员开放。\n\u003e 经实测，目前已完美支持各种姿势写作的markdown书籍的文档导入，能很好地处理文档间的链接以及文档中的图片链接\n\n![一键导入书籍](static/openstatic/import.png)\n\n\u003ca name=\"pull\"\u003e\u003c/a\u003e\n### 一键拉取markdown书籍\n看到GitHub、Gitee等有很多开源文档的书籍，但是一个一个去拷贝粘贴里面的markdown内容不现实。于是，做了这个一键拉取的功能。\n目前只有管理员才有权限拉取，并没有对普通用户开放。要体验这个功能，请用管理员账号登录演示站点体验。\n用法很简单，比如我们拉取beego的书籍，在创建书籍后，直接点击\"拉取书籍\"，粘贴如\" https://github.com/beego/beedoc/archive/master.zip \"，然后就会自动帮你拉取上面的所有markdown文档并录入数据库，同时图片也会自动帮你更新到OSS。\n![拉取书籍](static/openstatic/pull.png)\n\u003e 经实测，目前已完美支持各种姿势写作的markdown书籍的拉取，能很好地处理文档间的链接以及文档中的图片链接\n\n\u003e 目前已支持Git Clone导入书籍\n\n\u003ca name=\"generate\"\u003e\u003c/a\u003e\n### 生成和导出PDF、epub、mobi等离线文档\n这个需要安装和配置calibre。\n我将calibre的使用专门封装成了一个工具，并编译成了二进制，源码、程序和使用说地址：[https://github.com/TruthHun/converter](https://github.com/TruthHun/converter)\n在BookStack中，已经引入这个包了。使用的时候，点击\"生成下载文档\"即可\n\n\u003ca name=\"sort\"\u003e\u003c/a\u003e\n### 文档排序和批量创建文档\n很多时候，我们在写作书籍的时候，会习惯地先把书籍的章节目录结构创建出来，然后再慢慢写内容。\n但是，书籍中的文档少的时候，一个个去创建倒没什么，但是文档数量多了之后，简直就是虐待自己，排序的时候还要一个一个去拖拽进行排序，很麻烦。现在，这个问题已经解决了。如下：\n- 在书籍中，创建一个文档标识为`summary.md`的文档(大小写不敏感)\n- 在文档中，填充无序列表的markdown内容，如：\n\n```markdown\n\u003cbookstack-summary\u003e\u003c/bookstack-summary\u003e\n* [第0章. 前言]($ch0.md)\n* [第1章. 修订记录]($ch1.md)\n* [第2章. 如何贡献]($ch2.md)\n* [第3章. Docker 简介]($ch3.md)\n    * [什么是 Docker]($ch3.1.md)\n    * [为什么要用 Docker]($ch3.2.md)\n* [第4章. 基本概念]($ch4.md)\n    * [镜像]($ch4.1.md)\n    * [容器]($ch4.2.md)\n    * [仓库]($ch4.3.md)\n```\n- 然后保存。保存成功之后，程序会帮你创建如\"第0章. 前言\"，并把文档标识设置为\"ch0.md\"，同时目录结构还按照你的这个来调整和排序。\n\n注意：\n\u003e 必须要有`\u003cbookstack-summary\u003e\u003c/bookstack-summary\u003e`，这样是为了告诉程序，我这个`summary.md`的文档，是用来创建文档和对文档进行排序的。当然，排序完成之后，当前页面会刷新一遍，并且把`\u003cbookstack-summary\u003e\u003c/bookstack-summary\u003e`移除了。有时候，第一次排序并没有排序成功，再添加一次这个标签，程序会自动帮你再排序一次。\n\u003e 我自己也常用这种方式批量创建文档以及批量修改文档的标题\n\n\n\u003ca name=\"redirect\"\u003e\u003c/a\u003e\n### 文档间的跳转\n你在一个书籍中会有很多文档，其中一个文档的文档标识叫`readme.md`,另外一个文档的文档标识叫`quickstart.md`，两个文档间如何跳转呢？\n如果你知道站点的路由规则，倒是可以轻松链过去，但是，每次都要这样写，真的很麻烦。自己也经常写文档，简直受够了，然后想到了一个办法。如下：\n我从`readme.md`跳转到`quickstart.md`，在`readme.md`中的内容这样写:\n``` \n[快速开始]($quickstart.md)\n```\n如果跳转到`quickstart.md`的某个锚点呢？那就像下面这样写：\n``` \n[快速开始-步骤三]($quickstart.md#step3)\n```\n好了，在发布文档的时候，文档就会根据路由规则以及你的文档标识去生成链接了(由于是后端去处理，所以在编辑文档的时候，前端展示的预览内容，暂时是无法跳转的)。\n那么，问题就来了，我书籍里面的文档越来越多，我怎么知道我要链接的那个文档的文档标识呢？不用担心，在markdown编辑器的左侧，括号里面的红色文字显示的就是你的文档标识。\n\n![文档标识](static/openstatic/identify.png)\n\n\u003ca name=\"crawl\"\u003e\u003c/a\u003e\n### 采集功能\n看到一篇很好的文章，但是文章里面有代码段、有图片，手工复制过来，格式全乱了，所以，相信采集功能，会是你需要的。采集功能，在markdown编辑器的功能栏上面，对，就是那个瓢虫图标，就是那个Bug，因为我找不到蜘蛛的图标...\n\n功能见下图，具体体验，请到演示站点体验。\n\n![采集](static/openstatic/crawl.png)\n\n\n\u003ca name=\"seo\"\u003e\u003c/a\u003e\n### SEO\n后台管理，个性化定制你的SEO关键字；并且在SEO管理这里，可以更新站点sitemap（暂时没做程序定时自动更新sitemap）\n\n\n\u003ca name=\"version-control\"\u003e\u003c/a\u003e\n### 版本控制\n`MinDoc`之前本身就有版本控制的，但是版本控制的文档内容全都存在数据库中，如果修改频繁而导致修改历史过多的话，数据库可能会被撑爆。当时没有好的解决办法，所以将该功能移除了。\n\n目前加上该功能，是因为这个功能呼声很高，所以加回来了。但是版本控制的内容不再存储到数据库中，而是以文件的形式存储到本地或者是云存储上。\n\n功能在`管理后台`-\u003e`配置管理`中进行开启\n\n\u003ca name=\"beauty\"\u003e\u003c/a\u003e\n### 更美观、简洁的页面布局和更为完善的移动端兼容\n这是个看脸的时代...\n\n\u003e 首页\n\n![首页](static/openstatic/page-index.png)\n\n\u003e 介绍页\n\n![介绍页](static/openstatic/page-intro.png)\n\n\u003e 内容阅读页\n\n![内容阅读页](static/openstatic/page-read.png)\n\n\u003e 个人书籍页\n\n![个人书籍页](static/openstatic/page-project.png)\n\n\u003e 手机端首页\n\n![个人书籍页](static/openstatic/page-mobile.png)\n\n\n\u003ca name=\"todo\"\u003e\u003c/a\u003e\n## TODO\n- 文档阅读书签\n- 微信第三方登录\n- 微博第三方登录\n- 收费下载和收费阅读(放在最后开发)\n- 签到功能\n- 增加广告位和广告管理\n- 积分功能\n- 除了数据库配置项外，其余配置项尽可能在管理后台可配置\n- 增强搜索功能，上elasticsearch\n- 简化程序部署，上docker\n- 微信小程序(放到2.x版本开发)\n- 版本管理 ？(待找到更优解决方案了再实现)\n- 使用weex开发手机端APP ? (vue.js熟练了再抽时间实现)\n- 使用electron开发桌面端，实现类似网易`有道云笔记`的功能 ? (vue.js熟练了再抽时间实现)\n\n\u003ca name=\"install\"\u003e\u003c/a\u003e\n## 安装与使用\n\n\n为了方便，安装和使用教程，请移步到这里：http://www.bookstack.cn/read/help/Ubuntu.md\n\n\u003e 目前只写了Ubuntu下的安装教程，Windows下的安装和使用教程，暂时没时间\n\n有两个模板文件，需要手动修改下：\n`/views/widgets/pdf_footer.html` 导出PDF文档时，pdf的footer显示内容\n`/views/document/tpl_statement.html` 修改成你想要的文案内容或者删除该文件。如果保留该文件，必须要有`h1`标签，因为程序要提取你的`h1`标签用于导出文档的目录生成\n\n默认的管理员账号密码均是`admin`\n\n\u003e `v1.0`升级到`v1.1`,直接下载对应系统的发行版本，然后根据配置文件的配置提示修改配置文件，然后覆盖升级即可。本次升级，没有改动数据库。\n\n关于二次开发，请看这个issue [README.md中能否添源码编译说明](https://github.com/TruthHun/BookStack/issues/3)\n\n\n\u003ca name=\"aboutme\"\u003e\u003c/a\u003e\n## 关于本人\n2014年7月本科\"毕业\"踏入IT行业；Web全栈工程师；什么都懂一点，什么都不精通。\n\n\n\u003ca name=\"support\"\u003e\u003c/a\u003e\n## 赞助我\n如果我的努力值得你的肯定，请赞助我，让我在开源的路上，做更好，走更远。\n赞助我的方式包括：`支付宝打赏`、`微信打赏`、`给BookStack一个star`、`向我反馈意见和建议`\n\n\n\u003ca name=\"alipay\"\u003e\u003c/a\u003e\n### 支付宝打赏赞助\n![支付宝打赏赞助](static/openstatic/alipay.jpg)\n\n\u003ca name=\"wxpay\"\u003e\u003c/a\u003e\n### 微信打赏赞助\n![微信打赏赞助](static/openstatic/wxpay.jpg)\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftruthhun%2Fbookstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftruthhun%2Fbookstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftruthhun%2Fbookstack/lists"}