Git Product home page Git Product logo

eiblog's Introduction

EiBlog License Versuib

博客项目结构参考模版:https://github.com/deepzz0/appdemo

用过其它博客系统,不喜欢,不够轻,不够快!这是我开发的第二款博客系统,也实在不想再在这件事情上过多纠结了。EiBlog 是一个比较稳定的博客系统,现已迭代至 2.0 版本,稳定性和维护你是不用担心的。

但它有着部署简单(上线复杂!)的特点,不推荐没有计算机知识的朋友搭建,欢迎咨询。该博客的个中优点(简洁、轻快,安全),等你体验。

Docker镜像地址:

快速体验

二进制

1、下载压缩包,到 这里 下载 eiblog(非backup) 相应系统压缩包,然后解压缩。

2、启动服务:./backend

Docker

$ docker run --name eiblog \
    -p 9000:9000 \
    deepzz0/eiblog:latest

Compose

参考项目根目录下的 docker-compose.yml,修改相关配置:

$ docker compose up -d
或
$ docker-compose up -d

然后访问 localhost:9000 就可以了,后台地址 localhost:9000/admin/login,默认账户密码 deepzz/deepzz

默认情况下未开启博客搜索 elasticsearch,需要的话需要启动 es 服务并修改配置 app.yml

数据库支持

类型(driver) 地址(source)示例
mongodb mongodb://localhost:27017
mysql user:password@tcp(localhost:3306)/eiblog?charset=utf8mb4&parseTime=True&loc=Local
postgres host=localhost port=5432 user=user password=password dbname=eiblog sslmode=disable
sqlite /path/eiblog.db
sqlserver sqlserver://user:password@localhost:9930?database=eiblog
clickhouse tcp://localhost:9000?database=eiblog&username=user&password=password&read_timeout=10&write_timeout=20

功能特性

本着博客本质用来分享知识的特点,EiBlog 不会有较强的定制功能(包括主题,CDN支持等),仅保持常用简单页面与功能:

首页、专题、归档、友链、关于、搜索

功能说明:

  • 博客归档,利用时间线帮助我们将归纳博文,内容少于一年按月归档,大于则按年归档。
  • 博客专题,有时候博文是同一系列,专题能够帮助我们很好归纳博文,对阅读者是非常友好的。
  • 标签系统,每篇博文都可以打上不同标签,使得在归档和专题不满足的情况下自定义归档,这块辅助搜索简直完美。
  • 搜索系统,依托ElasticSearch实现的站内搜索,速度与效率并存,再加上google opensearch,搜索只流畅。
  • 管理后台,内嵌全功能 Typecho 后台系统,全功能 Markdown 编辑器让你感觉什么是简洁清爽。
  • 谷歌统计,由于google api的速度问题,从而实现了后端API异步统计,使得博客页面加载飞速。
  • Disqus评论,国内评论系统不友好,因此选择disqus,又由于众所周知原因国内不能用,实现另类disqus评论方式。
  • 多存储后端,支持mongodb、mysql、postgres、sqlite等存储后端。
  • 七牛CDN,支持在 Markdown 编辑器直接上传附件,让你只考虑编辑内容,解放**。
  • 自动备份,支持多存储后端的备份功能,备份数据保存到七牛CDN上。

当然,为了让整个系统加载速度更快,还做了更多优化措施:

  • 文章评论数量(不重要)通过后端跑定时任务获取,所以有时评论数量是不对的,这样减少了 API 调用。
  • 整站内容全部内存缓存,mardown 文档全部转换为 html 进行缓存,减少了转换过程。
  • .js.css 等静态文件浏览器本地存储,小图片 base64 内置到 css 中,二次访问不会产生网络带来的延迟,加速访问。通过版本控制更新。
  • 最佳实践 nginx 配置,可以查看 eiblog.conf,开启压缩缩小传输量,服务器传输证书链、开启 Session ResumptionSession TicketOCSP Stapling 等加速证书握手,再次提高速度。

博客页面

可以容易的看到 ssllabs 评分A+myssl 评分A+,堪称完美。这些安全的相关配置会在后面的部署过程中接触到。

show-home show-home2 show-admin

更多文档

贡献成员

graphs/contributors

授权许可

本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 LICENSE 文件中。

eiblog's People

Contributors

deepzz0 avatar dependabot[bot] avatar razeencheng avatar vyloy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eiblog's Issues

最右边有点空旷

2018-03-26 5 23 05
mac 10.13.2 chrome 版本 65.0.3325.181(正式版本) (64 位)

2018-03-26 5 29 27

Firefox 59.0.1 (64 位)

开始重构eiblog,你有什么想法

没想到有这么多朋友喜欢 eiblog,但确实 eiblog 比较老了,代码也不符合规范,可定制化能力差等。

本次重构保持初心,不支持主题定制,还是博客简单的样子。具体重构计划如下:

  • 目录重构,目录结构 package 化
  • 分离存储层(插件化),支持多类型存储后端:文件型,关系型,非关系型等。
  • 依赖升级,包括ES搜索服务,依赖库版本升级
  • 开发语言规范化,采用符合 go-lint 代码规范重写
  • 优化前端,支持ServiceWorker等
  • 配置简化,只保留必要配置,其它配置打包进服务依赖(开源Dockerfile)
  • 文档更新,所有功能文档补齐,使用起来简单明了

本次重构由于工作原因完成时间会不稳定(大概会花1-2月完成),如果你有兴趣参与可以加入。

二进制运行方式有没有详细的介绍

不喜欢docker方式运行

  1. 二进制运行方式有没有详细的命令行参数介绍

  2. 直接运行 ./backend log显示 运行在9001 但配置文件写的是9000

  3. 如何 Running in "debug" mode. Switch to "release" mode in production. 如何运行在release 模式下?

  4. app.yml 配置文件具体每项有没有详细介绍 默认里面有很多key 难道都已经配置好了? 是官方已经注册好了 七牛 disqus 直接给我就能用了 不需要自己去注册账号?

  5. 运行后 根据官方nginx 配置 结果打开域名 显示404 直接通过IP:9001 访问也是404

undefined: Run

运行 go run main.go,出错 。
提示 main.go:14:2: undefined: Run。
但是运行 go build 又是正常编译可生成eiblog。

qiniu support muti region

Only support ZoneHuadong now.

xxx "handleAPIQiniuUpload.QiniuUpload: incorrect region, please use up-z2.qiniup.com"

we can make it configurable.

post article failed

"handleAPIPostCreate.AddArticle: multiple write errors: [{write errors: [{E11000 duplicate key error collection: eiblog.article index: slug_1 dup key: { : \"linux-crontab\" }}]}, {<nil>}]"

'go get' 错误

您好,我在尝试自己编译时,使用命令go get -u github.com/eiblog/eiblog之后,得到如下错误提示:

# github.com/eiblog/eiblog
go/src/github.com/eiblog/eiblog/db.go:73:25: cannot use index (type "github.com/eiblog/eiblog/vendor/gopkg.in/mgo.v2".Index) as type "gopkg.in/mgo.v2".Index in argument to c.EnsureIndex
go/src/github.com/eiblog/eiblog/db.go:85:25: cannot use index (type "github.com/eiblog/eiblog/vendor/gopkg.in/mgo.v2".Index) as type "gopkg.in/mgo.v2".Index in argument to c.EnsureIndex
go/src/github.com/eiblog/eiblog/db.go:95:25: cannot use index (type "github.com/eiblog/eiblog/vendor/gopkg.in/mgo.v2".Index) as type "gopkg.in/mgo.v2".Index in argument to c.EnsureIndex

经过测试,在 Ubuntu 16.04.3 LTS(go1.9.1 linux/amd64) 及 OS X 10.11.6(go1.9.2 darwin/amd64) 上均存在此问题。

在网络上没有搜索到相关内容,请问该如何解决,期待您的帮助,谢谢。

deploy error

2018/12/21 22:22:08.838152 [ERROR] mongo.go:29: no reachable servers
Func : github.com/eiblog/utils/mgo.init.0
File:/home/travis/gopath/pkg/mod/github.com/eiblog/[email protected]/mgo/mongo.go:29
Func :
File::0
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x790efc]

goroutine 1 [running]:
gopkg.in/mgo%2ev2.(*Session).SetMode(0x0, 0x2, 0x1)
/home/travis/gopath/pkg/mod/gopkg.in/[email protected]/session.go:1681 +0x2c
github.com/eiblog/utils/mgo.init.0()
/home/travis/gopath/pkg/mod/github.com/eiblog/[email protected]/mgo/mongo.go:31 +0xa7

about页面不能评论

后台报错:{"code":2,"response":"Invalid argument, 'thread': Unable to find thread 'ident:post-about'"}
前端:Comments 获取数据失败,请稍后再试!
站点:https://jintaiyang123.org
还有就是编辑about页时参数错误:
image
这些该如何解决?

Eiblog 列表在此列出

如果你的博客使用eiblog搭建,可以在这里列出。你的博客将会出现在README中。

导出的RSS Feed没有发表时间(pubdate)字段。

<item>
<title>如何玩转智能家居 - 网络组网方案实施</title>
<link>https://deepzz.com/post/smart-home-networking-design.html</link>
<comments>https://deepzz.com/post/smart-home-networking-design.html#comments</comments>
<guid>https://deepzz.com/post/smart-home-networking-design.html</guid>
<description>
<![CDATA[ <blockquote> <p>接上篇:<a href="https://deepzz.com/post/home-networking.html" rel="nofollow">如何玩转智能家居 - 家庭组网方案选择</a>。</p> <p>当我们已经选择好家庭组网方案之后:AC(PoE)+AP。那么问题来了:实际该如何操作,如何布线,需要考虑什么?</p> <p>就我来说,可能考虑这些因素:</p> <ol> <li>弱电箱位置,要不要挪动,什么位置才是最佳</li> <li>强弱电的走向,如何才不会被影响</li> <li>我们的AC应该放在哪里,AC为什么需要POE</li> <li>我们的AP应该放在哪里,要放几个</li> <li>到底需不需要弄一个类似家庭机房的东西,放哪,有什么用</li> <li>网线怎么弄,什么地方要放几根,用什么类网线</li> <li>普通家庭上全无光纤有用吗</li> </ol> <!--more--> <h3 id="toc_0">确定需求</h3> <p>确定需求前,我们确定下当下的环境:</p> <ol> <li>电信宽带目前只能达到千兆</li> <li>大多数家庭以WiFi上网为主,台式机上网较少</li> <li>不考虑全屋光纤,目前成本较高(土豪请忽略),直接支持光纤设备极少,需要光电转换</li> <li>全屋必须网络全覆盖,必须实现网络无缝漫游</li> </ol> <p>以上,我们得出:全屋采用超六类网线即可满足未来需求,超六类网线可以达到万兆网络,往后看还是能够满足的。全屋主要是以WiFi为主,那么部署AP时,如果不需要网线则不牵网线,节省成本。</p> <p>我们还有有哪些需求需要解决呢,确定以下信息:</p> <ul> <li>是否需要IPTV:需要,至少客厅需要一台电视</li> <li>哪些设备需要网线:电视,台式电脑,Xbox,AP</li> <li>是否需要自由上网:需要,长期会查询外文资料</li> <li>是否使用NAS:需要,NAS可以帮助存储照片,视频,音乐等,能够称为智能家居的后端存储</li> <li>是否需要万兆网络:需要,内网一定要快,至少保证访问NAS的速度,剪辑视频需要</li> <li>是否需要内网穿透:需要,我需要在外控制家里设备</li> <li>预算有多少,4k+</li> </ul> <p>以上,我们得出:</p> <ol> <li>客厅至少需要三根网线:电视或电视盒子,Xbox游戏机,AP</li> <li>书房至少需要三根网线:台式电脑,NAS,AP</li> <li>每个卧室至少需要一根网线:AP或作备用</li> <li>需要一个万兆交换机,实现内网有线万兆</li> <li>软路由来一套,自由上网用</li> <li>向电信要IPv4或外网服务器来一套</li> </ol> <p>那么综合以上信息,我确定我是需要一个机柜的:将所有的网络硬件都放在一个位置,把NAS也放过去,最后将该机柜放到定制柜里完美隐藏。</p> <h3 id="toc_1">设计方案</h3> <p>接下来是设计布网方案,这需要实际根据户型图来操作。大家可以参考我的这张设计图: <img width="640" height="512" data-src="https://st.deepzz.com/blog/img/homenet-design.png" alt="homenet-design" /></p> <p>基本思路就是有一个总的网络机柜,网络从弱电箱出来直接到网络机柜,后续的网络全部走机柜出去。由于博主要实现内网穿透,故画了阿里云上去,如果你们不需要可不参考。</p> <p>以上图仅是设计参考用,实际在实施过程中有些许变化。然后就有了这张图: <img width="640" height="637" data-src="https://st.deepzz.com/blog/img/homenet-design-part2.png" alt="homenet-design-part2" /></p> <p>这张图AP酌情减少了一个,具体根据实际情况来定。</p> <p>当你确定好方案之后,一定要第一时间与电工师傅进行核对,确认方案的可行性。博主就是这样,想当然的将弱电箱挪到鞋柜处,所有网络设备都放到鞋柜,谁知强电与弱电在一个垂直面上,不行。所以改到了餐柜处,当时也是打得我措手不及,方案是调整了又调整。</p> <h3 id="toc_2">选定设备</h3> <p>基于以上种种结论,可以开始选择设备了。</p> <h4 id="toc_3">机柜</h4> <p>首先,选机柜。tb上的机柜也有现成的,而且非常结实,有兴趣的朋友可以看这里: <img width="640" height="640" data-src="https://st.deepzz.com/blog/img/open-trial-cabinet.jpg" alt="open-trial-cabinet" /></p> <p><a href="https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-22421369317.13.b5cf88ddhZtbie&amp;id=618005043093" rel="nofollow">简易开放式机柜</a></p> <p>但是,自购机柜的话需要考虑机柜放置位置。比如放鞋柜,那么尺寸一定要合适。还有就是机柜出最好叫木工师傅帮助打一个散热孔。</p> <p>现成的对于我来说不够折腾,本着极客的原则,博主开始学习网友的购买零件自己组装机柜。具体可参考这里: <img width="450" height="800" data-src="https://st.deepzz.com/blog/img/cabinet-list.png" alt="cabinet-list" /></p> <p><img width="640" height="853" data-src="https://st.deepzz.com/blog/img/lizhu-jijia01.jpeg" alt="lizhu-jijia" /></p> <p><img width="640" height="480" data-src="https://st.deepzz.com/blog/img/lizhu-jijia02.jpg" alt="lizhu-jijia" /> 从知乎上看到第一眼就爱上这个配置,和我的计划也非常符合。于是我也采购了一套,不过散热还是比较贵的。等房子装修好了晒图。</p> <h4 id="toc_4">选AC+AP</h4> <p>由于是面板AP,选择面就比较少了。最开始相中了华为的H6,过这玩意是贴上去的,不够美观。于是叫朋友推荐了一套TP-Link的套装,省事也省心。</p> <p><a href="https://u.jd.com/WCoPYH9" rel="nofollow">TP-LINK TL-R497GPE-AC PoE ACTP</a><br /> <a href="https://item.m.jd.com/product/100017194221.html" rel="nofollow">TP-LINK TL-XAP3002GI-PoE</a></p> <p>这两款设备,我是在某鱼上购买的全新,应该不会翻车,有需求的朋友可以去某鱼上搜索下。</p> <p>这款AC是集PoE交换机一体的:</p> <ul> <li>9个千兆网口,1WAN+8LAN</li> <li>内置无线控制器,可统一管理TP-LINK AP产品</li> <li>所有LAN口支持标准PoE供电,整机输出功率高达120W</li> <li>IPSec/PPTP/L2TP VPN,远程通信更安全</li> <li>接入认证(Web认证、短信认证、PPPoE服务器)</li> <li>上网行为管理(移动APP管控/桌面应用管控/网站过滤/网页安全)</li> </ul> <p>这款AP是支持Wi-Fi6:</p> <ul> <li>新一代Wi-Fi 6 (802.11ax)技术</li> <li>11AX 2.4G/5G 双频并发,无线速率高达2976Mbps</li> <li>国标86壳体,外观优雅,出墙厚度仅9.4mm</li> <li>802.3af/at标准PoE网线供电,无需外接电源</li> <li>支持TP-LINK易展功能,简单按下按键,即可供TP-LINK易展设备无线接入</li> <li>频谱导航,引导双频用户优先连接5GHz频段,使2.4GHz 和5GHz 两个频段负载均衡,保障网络性能</li> <li>FIT模式支持自动射频调优</li> <li>FIT模式支持智能漫游</li> <li>支持弱信号设备剔除、禁止弱信号设备接入功能</li> <li>胖瘦一体,可以根据不同应用环境选择不同模式</li> <li>支持TP-LINK 商用网络云平台集中管理</li> <li>支持TP-LINK 商云APP远程查看/管理</li> <li>整机尺寸(mm):88*86*45.4,出墙厚度9.4mm</li> </ul> <p>看中这款AP的原因也是它的出墙厚度仅9.4mm,与普通插座面板差不多的高度。实现了完美的隐藏。</p> <h3 id="toc_5">参考</h3> <p><a href="https://www.zhihu.com/question/26596786/answer/279309998" rel="nofollow">https://www.zhihu.com/question/26596786/answer/279309998</a></p> <p>本文链接:<a href="https://deepzz.com/post/smart-home-networking-design.html">https://deepzz.com/post/smart-home-networking-design.html</a>,<a href="https://deepzz.com/post/smart-home-networking-design.html#comments">参与评论 »</a></p> ]]>
</description>
</item>

缺少 pubdate 字段。

docker部署的eiblog真是有毒

左边背景问题。明明七牛的图片改了,可还是显示之前的图片,把七牛的存储空间删了,把docker环境删除,再配置一边,还是一样。希望能直接在后台admin设置。

归档页面日期显示 BUG

使用的版本是: v1.4.1_linux_amd64

例如一篇2017年12月25日发表的文章,会被归档为2017年25月 orz...

如下链接中的图所示
![img] (https://i.loli.net/2018/01/24/5a68a40eddd6f.png)

v1.3.4_linux_amd64 版本中并没有出现这个 BUG。

此外有一点建议: 能否提供像 ququ 博客那样,每篇文章都提供 Markdown 链接并能访问 Markdown 版本呢?我觉得这是一个很好的功能。

P.S. 很喜欢你的博客系统 :)

自定义账号密码后登录失败

[root@hikari home]# [GIN] 2018/04/03 - 02:16:43 | 302 | 508.9µs | 218.0.205.208 | POST /admin/login
[GIN] 2018/04/03 - 02:16:43 | 302 | 41.565µs | 218.0.205.208 | GET /admin/profile
[GIN] 2018/04/03 - 02:16:44 | 200 | 45.763µs | 218.0.205.208 | GET /admin/login
从日志来看/admin/profile这边做了一个302重定向。我删掉了mongodb的数据库重试多次也是一样

请问自行编译的正确方法

我想尝试自行编译二进制文件,第一次接触 Golang ,不清楚该如何编译二进制文件。

在安装了官方的 Go 1.9.4/1.10 二进制发行版本后,我尝试使用 go get -u github.com/eiblog/eiblog 命令进行编译 eiblog ,没有任何提示,也确实在 bin 目录生成了名为 eiblog 的文件,但大小大约是 13Mb ,比 releases 下的文件少了 5Mb 左右。

系统是 Ubuntu 16.04 x86_64 和 Debian 8 x86_64 。

我是在 Docker 上运行博客的,eiblog 容器的系统是 Alpine Linux 3.6 。
在使用 docker run -it 命令运行容器时提示 /bin/sh: /eiblog/eiblog Not Found ,但容器里面确实有该文件。

请指教!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.