{"id":13466372,"url":"https://github.com/TruthHun/DocHub","last_synced_at":"2025-03-25T21:32:14.927Z","repository":{"id":37276119,"uuid":"132346890","full_name":"TruthHun/DocHub","owner":"TruthHun","description":"参考百度文库，使用Beego（Golang）开发的开源文库系统","archived":false,"fork":false,"pushed_at":"2023-02-14T07:21:28.000Z","size":12378,"stargazers_count":2955,"open_issues_count":60,"forks_count":743,"subscribers_count":244,"default_branch":"master","last_synced_at":"2025-03-23T20:37:23.583Z","etag":null,"topics":["beego","dochub","golang","office"],"latest_commit_sha":null,"homepage":"https://www.wenkuzhijia.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":null,"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}},"created_at":"2018-05-06T14:36:09.000Z","updated_at":"2025-03-23T14:09:09.000Z","dependencies_parsed_at":"2024-01-13T18:00:08.652Z","dependency_job_id":"f368eda6-a076-4e43-a73b-6de0eac6be94","html_url":"https://github.com/TruthHun/DocHub","commit_stats":{"total_commits":274,"total_committers":5,"mean_commits":54.8,"dds":"0.029197080291970767","last_synced_commit":"01033d1926ec3d007ea2ad424d814afca3b3aafa"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FDocHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FDocHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FDocHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TruthHun%2FDocHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TruthHun","download_url":"https://codeload.github.com/TruthHun/DocHub/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245548326,"owners_count":20633558,"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","dochub","golang","office"],"created_at":"2024-07-31T15:00:43.143Z","updated_at":"2025-03-25T21:32:14.886Z","avatar_url":"https://github.com/TruthHun.png","language":"Go","readme":"**DocHub文库重构版本来了！！！新文库系统叫`moredoc`，即`魔豆文库`**\n\n![](static/Home/default/img/moredoc.png)\n\n**开源地址**\n\n-   Github - [https://github.com/mnt-ltd/moredoc](https://github.com/mnt-ltd/moredoc)\n-   Gitee - [https://gitee.com/mnt-ltd/moredoc](https://gitee.com/mnt-ltd/moredoc)\n-   MNT.Ltd - [https://git.mnt.ltd/mnt-ltd/moredoc](https://git.mnt.ltd/mnt-ltd/moredoc)\n\n\n-------------------------\n\n![LOGO](static/Home/default/img/logo.png)\n\n------\n\n目录：\n- [文库简介](#intro)\n    - [程序命名](#name)\n- [源码地址](#source)\n- [QQ交流群](#qqgroup)\n- [主要技术栈](#stack)\n    - [后端](#be)\n    - [前端](#fe)\n    - [数据库](#db)\n    - [依赖环境](#env)\n        - [Libreoffice(或Openoffice)](#office)\n        - [pdf2svg](#pdf2svg)\n        - [calibre](#calibre)\n        - [阿里云OSS](#oss)\n- [功能特点](#feature)\n    - [文档在线阅读](#read-svg)\n    - [office文档在线阅读](#read-office)\n    - [PDF文档在线阅读](#read-pdf)\n    - [mobi、epub、chm文档在线阅读](#read-other)\n    - [全文搜索](#es)\n    - [文档采集功能【TODO】](#crawl)\n    - [积分功能](#score)\n    - [阅读文档水印功能](#watermark)\n- [页面一览](#page)\n- [使用教程](#tutorial)\n- [演示站点](#demo)\n- [文库模板](#tpl)\n    - [PC端模板](#tpl-pc)\n    - [移动端模板](#tpl-mobile)\n- [关于本人](#aboutus)\n- [赞助我](#support)\n    - [支付宝打赏赞助](#alipay)\n    - [微信打赏赞助](#wxpay)\n\n\n\u003e 重要：所有`fork`了`DocHub`项目的朋友，麻烦同时点一下`watch`，以便关注项目更新动态和跟进一些重要的Bug的修复。\n\n\u003e 提示：DocHub移动端模板已经放出来，[链接地址](#tpl-mobile)\n\n\u003e 说明(于2018-06-08)：`DocHub`项目是我学完Go语言之后的第二个独立开发的Go语言项目，项目是在2016年12月份开始开发的。当时对Go语言和Beego框架都还不怎么熟。`DocHub`项目开源出来之后，看到`star`飙升的有点快(相对个人之前的开源项目)，非常感谢大家的认可和厚爱，然后自己诚惶诚恐地认真review了一遍代码...\n路由在模板页面写死了...\n数据表一些数据字段也出现了冗余...\n有些函数和方法封装，难以使用的一塌糊涂...\n请大家给我点时间，我会把整套程序都优化好，当然，现在的版本是可用的，以后的升级版本也会是兼容升级。\n\n\u003e __说明(2018-06-12)__：\n\u003e DocHub演示站点：http://dochub.bookstack.cn\n\u003e 后台地址是：http://dochub.bookstack.cn/admin ；管理员账号密码均是`admin`；`您心目中的验证码`是`芝麻开门`。\n\u003e 安装和部署教程以及Docker镜像，稍后跟上。\n\n\n\u003ca name=\"intro\"\u003e\u003c/a\u003e\n## 文库简介\n\n还在读大学的时候，当时就想着要搭建一个类似百度文库的文库站点，实现文档在线浏览。\n\n然而，时间一晃，好几年过去了，自己终于亲自动手开发实现了一套开源文库程序。\n\n尽管离百度文库还有着巨大的差距，尽管可(一)能(定)会存在Bug，但是，整套程序从前端到后端到数据库再到丑陋的LOGO设计，都是自己独立完成的，满满的成就感...\n\n\u003ca name=\"name\"\u003e\u003c/a\u003e\n### 程序命名\n起初开发这套程序，是想自己做一个IT行业的文库站点，也就是现在的[IT文库(http://wenku.it)](http://wenku.it)，当初给文库起名就叫`IT文库`，但是决定开源出来之后，觉得这样不妥，于是起了个叫`DocHub`的名字。\n\n毕竟，有个Git仓库管理的站点叫`GitHub`，那文档(Doc)仓库也就是文库，我干嘛不叫`DocHub`呢？\n\n`DocHub`的中文名叫`多哈`，程序猿，写代码就要开心，开心就要`哈哈哈哈哈哈哈哈`，多`哈`...(好幼稚)\n\n\u003ca name=\"source\"\u003e\u003c/a\u003e\n## 源码地址\n程序源码，托管在`GitHub`和`Gitee`\n\n- GitHub: https://github.com/truthhun/DocHub\n- Gitee: https://gitee.com/truthhun/DocHub\n\n\u003ca name=\"qqgroup\"\u003e\u003c/a\u003e\n## QQ交流群\n为方便相互学习和交流，建了个QQ群，加群请备注`来自DocHub`\n\n\u003e QQ交流群：457803862(猿军团)\n\n同时要说明的是，这个是学习交流群，如果是程序相关问题，请提交issue，再把issue链接发群里。\n\n\n\u003ca name=\"stack\"\u003e\u003c/a\u003e\n## 主要技术栈\n\n\u003ca name=\"be\"\u003e\u003c/a\u003e\n### 后端\n\nGo语言框架[Beego](https://beego.me)\n\n\u003ca name=\"fe\"\u003e\u003c/a\u003e\n### 前端\n\n基于Bootstrap的前端框架[Flat-UI](https://github.com/designmodo/Flat-UI)\n\n\u003ca name=\"db\"\u003e\u003c/a\u003e\n### 数据库\n\nMySQL，数据存储\n\n\u003ca name=\"env\"\u003e\u003c/a\u003e\n### 依赖环境\n\n\u003ca name=\"office\"\u003e\u003c/a\u003e\n#### Libreoffice(或Openoffice)\n\n用于将office文档转PDF\n\n使用命令:\n```\nsoffice --headless --invisible --convert-to pdf path/to/officefile --outdir path/to/outdir\n```\n\n\u003ca name=\"pdf2svg\"\u003e\u003c/a\u003e\n#### pdf2svg\n\n\u003e 注意，这个要用最新版的`pdf2svg`\n\npdf2svg，用于将PDF转成svg矢量图片，以供阅读。\n\n使用命令：\n```\npdf2svg \u003cin file.pdf\u003e \u003cout file.svg\u003e [\u003cpage no\u003e]\n```\n\n\u003ca name=\"calibre\"\u003e\u003c/a\u003e\n#### calibre\n\n用于将`mobi`、`chm`、`epub`等文档转成PDF，然后再将`pdf`转成`svg`\n\n\u003e 注意：目前`mobi`、`epub`等文档的在线阅读功能还没有实现\n\n\u003ca name=\"oss\"\u003e\u003c/a\u003e\n#### 阿里云OSS\n存储office文档、PDF文档以及svg等文件\n\n\u003e 注意：目前只支持阿里云的OSS云存储，暂时不支持其他云存储(后期我再抽时间开发和扩展其他云存储)，不支持本地化存储(现在云存储和CDN价钱比以前便宜多了)\n\n\u003ca name=\"feature\"\u003e\u003c/a\u003e\n## 功能特点\n\n\u003ca name=\"read-svg\"\u003e\u003c/a\u003e\n### 文档在线阅读\n`DocHub`文库通过`svg`矢量图来实现文档阅读体验的，我知道的文库站点中，[新浪爱问](http://ishare.iask.sina.com.cn/)是通过`png`等图片提供文档阅读体验的。\n\n`SVG`相比`png`、`jpeg`等图片格式有很大的优势，至少放大不会失真，而且与JPEG 和 GIF 图像比起来，svg尺寸更小，可压缩性更强，`DocHub`通过gzip，将svg文件压缩，一般情况下，能减少70%的文件大小，比如200kb的svg，gzip压缩后，只有60kb左右的大小。\n\n使用svg，大大提升了加载速度，优化了内容的阅读体验。\n\n\u003ca name=\"read-office\"\u003e\u003c/a\u003e\n#### office文档在线阅读\n\n这个需要经过两层转化:\n```\noffice --\u003e pdf --\u003e svg\n```\n![office文档在线阅读](static/tutorial/preview.png)\n\n\u003e 之前有考虑过office文档不经过转化，然后直接在线浏览的，但是方案比较复杂，部署不容易，至少我没部署成功过...\n\n\u003ca name=\"read-pdf\"\u003e\u003c/a\u003e\n#### PDF文档在线阅读\n\n将PDF文档通过`pdf2svg`转化，提供在线阅读\n\n\u003e 没有使用mozila的`pdf.js`作为PDF文档阅读的实现方案，主要是我没有解决`pdf.js`分片分页加载的问题，每次都需要将整个PDF文档下载下来才能提供阅读。如果文档大的话，用户需要等待好长时间，而且也比较耗费服务器带宽资源。\n\n\u003ca name=\"read-other\"\u003e\u003c/a\u003e\n#### mobi、epub、chm文档在线阅读\n使用`calibre`将文档转成PDF，然后pdf再转svg。\n\n\u003e 目前该功能还没实现，epub、mobi等文档，现在还是暂时不能在线阅读\n\n\u003ca name=\"es\"\u003e\u003c/a\u003e\n### 全文搜索\n全文搜索功能，之前是使用`coreseek`开发实现了这个功能的，但是现在`coreseek`的官网都已经挂了...打算用`elasticsearch`重新实现这个功能。\n\n\u003ca name=\"crawl\"\u003e\u003c/a\u003e\n### 文档采集功能【TODO】\n建站初期，站点内容的填充，是一个大难点。\n\n然而，`GitBook`、`ReadTheDoc`等站点上，就有一大堆的开源技术文档，提供`mobi`、`pdf`、`epub`离线文档下载。\n\n初略统计了一下，`GitBook`有10多万文档，按可用文档为5万估算，每份文档，提供3种格式的下载，光从gitbook采集文档，做成文库，就有15万多的文档了。\n\n然后，你再借助下搜索引擎，搜索`filetype:文档格式 + 搜索关键字`，如`filetype:pdf 入门教程`，你就会发现惊喜！不信，你试着赋值下面两个链接地址在浏览器打开：\n\n\n```\nhttps://cn.bing.com/search?q=filetype%3apdf+%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B\u0026first=11\n```\n\n```\nhttps://www.sogou.com/web?query=filetype%3Apdf+%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B\n```\n\n如果再爬其他文档，一年之内，单枪匹马搞个上百万文档的文库站点，应该不是个事儿。\n\n不过，现在综合类的文库站点，如百度文库等已经做起来了，如果你打算做综合类的文库站点，还是不现实，因为空间太小了.\n\n但是，你可以做专注于某一个方向的文库站点，比如课后习题答案文库站点、IT行业文库站点、教育类文库站点等，专注于一个行业领域方向，还是有很大成长空间的。就好比图片站点，现在很多搜索引擎都能搜索图片，但是`Pinterest`、`花瓣网`等还不是做起来了吗？\n\n\u003e 给你提供了程序，还给你提供了思路，给个`star`鼓励一下？\n\n\u003ca name=\"score\"\u003e\u003c/a\u003e\n### 积分功能\n用户签到、上传分享文档，获得积分奖励；用户下载文档，需要消耗积分\n\n\u003ca name=\"watermark\"\u003e\u003c/a\u003e\n### 阅读文档水印功能\n在提供阅读的svg文件上添加水印\n\n\u003ca name=\"page\"\u003e\u003c/a\u003e\n### 页面一览\n\n没有哪一个时代不是看脸的...\n\n- 首页\n\n\u003e ![首页](static/tutorial/index.png)\n\n- 文档阅读页\n\n\u003e![文档阅读页](static/tutorial/preview.png)\n\n- 用户中心\n\n\u003e ![用户中心](static/tutorial/ucenter.png)\n\n\n- 管理后台\n\n\u003e ![管理后台](static/tutorial/admin.png)\n\n\n- 搜索结果\n\n\u003e ![搜索结果](static/tutorial/search.png)\n\n\u003e ![搜索结果](static/tutorial/search1.png)\n\n\n\u003ca name=\"tutorial\"\u003e\u003c/a\u003e\n## 使用教程\n\n当运行程序的时候，程序会自动初始化数据，默认的初始管理员账号密码均是`admin`\n\n但是由于环境依赖安装问题，所以有必要整理一个使用教程处理，使用教程放在[书栈网(BookStack)](https://www.bookstack.cn)上，教程地址：[https://www.bookstack.cn/books/dochub](https://www.bookstack.cn/books/dochub)\n\n\u003ca name=\"demo\"\u003e\u003c/a\u003e\n## 演示站点\n\n目前还没有搭建演示站点，争取在这周内搭建出来。\n\n不过，在这之前，你可以访问[IT文库(http://wenku.it)](http://wenku.it)看网站效果，但是由于这个站点，在进行迁移的时候，部分依赖没配置好，所以上传的office、PDF等文档，暂时不支持预览，搜索功能也用不了。\n\n所以，请耐心等待，届时搭建好了演示站点，会把演示站点的管理员账号密码放出来，以便体验使用。\n\n\u003ca name=\"tpl\"\u003e\u003c/a\u003e\n## 文库模板\n\n`DocHub`文库的前端模板，包括PC模板和移动端模板，也会放出来。但是，模板可能跟套在程序上的有差距，毕竟在开发的时候有对页面做了一些调整。\n\n\u003ca name=\"tpl-pc\"\u003e\u003c/a\u003e\n### PC端模板\n- GitHub: https://github.com/truthhun/DocHubTemplate4PC\n- Gitee: https://gitee.com/truthhun/DocHubTemplate4PC\n\n\u003ca name=\"tpl-mobile\"\u003e\u003c/a\u003e\n### 移动端模板\n- GitHub: https://github.com/truthhun/DocHubTemplate4Mobile\n- Gitee: https://gitee.com/truthhun/DocHubTemplate4Mobile\n\n\u003ca name=\"aboutus\"\u003e\u003c/a\u003e\n## 关于本人\n\n2014年7月本科\"毕业\"踏入IT行业；Web全栈工程师；什么都懂一点，什么都不精通。\n\n\u003ca name=\"support\"\u003e\u003c/a\u003e\n## 赞助我\n\n由于整套程序都是独立一个人开发完成，限于个人经验、知识面和技术栈体系的限制，现在的程序不会是完美的，但至少，我在努力，我会争取把开源文库程序做好，缩短与成熟文库系统的差距。\n\n所以，给出你的意见和建议，给出你的打赏与鼓励，让我知道，我不是一个人在孤独地战斗。\n\n\u003e 赞助的时候，麻烦备注一下你的称呼，以便公开并表示感谢\n\n\u003ca name=\"alipay\"\u003e\u003c/a\u003e\n### 支付宝打赏赞助\n![支付宝打赏](static/tutorial/alipay.jpg)\n\n\n\u003ca name=\"wxpay\"\u003e\u003c/a\u003e\n### 微信打赏赞助\n![微信打赏](static/tutorial/wxpay.jpg)\n","funding_links":[],"categories":["Go","Misc","Go (531)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTruthHun%2FDocHub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTruthHun%2FDocHub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTruthHun%2FDocHub/lists"}