Giter Site home page Giter Site logo

mereithhh / vanblog Goto Github PK

View Code? Open in Web Editor NEW
2.7K 21.0 374.0 13.39 MB

一款简洁实用优雅的个人博客系统

Home Page: https://vanblog.mereith.com

License: GNU General Public License v3.0

JavaScript 21.37% TypeScript 60.58% Less 0.67% EJS 0.59% CSS 12.28% Dockerfile 0.68% Shell 3.83%
blog nextjs nodejs typescript

vanblog's Introduction

VanBlog是一款简洁、实用、优雅的个人博客系统,支持全自动按需申请HTTPS证书、黑暗模式、移动端自适应和评论功能。它内置了流量统计和图床,并集成了评论系统。此外,VanBlog还具有无限的可扩展性,提供完备的后台管理面板,支持黑暗模式、移动端、一键上传剪贴板图片到图床,并带有强大的编辑器。

项目主页: vanblog.mereith.com

Demo(后台账号密码均为 demo): blog-demo.mereith.com

预览图

前台-白色

特性

  • 快到极致的响应速度,Lighthouse 接近满分。
  • 独一份的按需全自动 HTTPS,甚至不用填域名。
  • 包括完整的前后台和服务端。
  • 前台和后台都为响应式设计,完美适配移动端和多尺寸设备。
  • 前台和后台都支持黑暗模式,并可自动切换。
  • 前台为静态网页(SSG),并支持秒级的增量渲染,每次改动无需重新构建全部页面。
  • SEO 和无障碍友好,支持自定义文章路径。
  • 静态网页,CDN 友好。
  • 版本号展示和更新提醒。
  • 基于 React,项目工程化,二次开发友好。
  • 内置强大的分析功能,可统计访客等数据。并配有精美看板。
  • 内嵌评论系统。
  • 强大的 Markdown 编辑器,支持图表和数学公式,一键插入 more 标记,一键剪切板及本地图片上传,支持自定义高亮块语法,支持 Emoji 表情选取。
  • TOC、草稿、代码复制、访客数、评论数、分类、标签、搜索、加密、友链、打赏、自定义导航栏。
  • 多个布局设置,可自定义页面细节。
  • 高度定制化,可添加自定义 CSS、HTML 和 JS 代码。
  • 支持自定义页面。
  • 可添加具有指定权限的协作者。
  • 内置图床,并支持各种 OSS 图床、github 图床(外部图床基于 picgo)等
  • 支持上传图片自动添加水印,无论何种图床
  • 支持上传图片自动压缩,无论何种图床
  • 极致轻量化,没有花里胡哨。页面秒切换、图片懒加载。
  • 脚本一键部署,多种部署方式,支持 ARM 平台。
  • 支持 GA、百度分析
  • 简单易用的后台,支持数据的导出与导入。
  • 支持 RSS 订阅
  • 完善的 API,完全利用本项目后台和服务端,自己写前端或适配其他页面生成器
  • 有较完善的日志记录,后台可直接查看登录日志和 Caddy 日志。

快速上手/部署教程

一键脚本部署

curl -L https://vanblog.mereith.com/vanblog.sh -o vanblog.sh && chmod +x vanblog.sh && ./vanblog.sh

将来如果需要再次运行脚本,可以运行:

./vanblog.sh

其他部署方式

具体请移步项目文档:快速上手

反代

请参考: 反代

常见问题

备份与迁移

作者 logo 无法加载

http error

docker 镜像拉取慢

如何外部访问数据库

如何回滚

如何升级

更新后后台报错||一直加载中

开启了 https 重定向后关不掉

更多常见问题

关于更新

此项目会持续更新的,如果没有恶性 bug(有的话看到了会紧急修复),一般每周发一次新版本。

如果遇到了问题,可以先更新试试看。

交流群

说明与文档

请移步项目主页: https://vanblog.mereith.com

CHANGELOG

CHANGELOG

开发指南

谁在使用

现在可能用的人有一些了吧 - -

如果您想把自己加进来,请提一个 issue,我会尽快添加的。

TODO

  • 精简前台 js 体积,优化性能
  • 精简打包体积
  • 集成 HTTPS 和自动证书申请续期
  • 后台增加登录日志
  • 内嵌评论系统
  • 支持 ARM64
  • 支持 mermaid 语法
  • 替换编辑器为 bytemd(掘金同款)(老的编辑器有些臃肿,复制偶尔会有格式会错乱的问题)
  • 导入 md 创建文章/草稿功能
  • 标签管理
  • 黑暗模式图标样式优化
  • 内嵌评论的邮件通知和 webhook
  • 自定义 css
  • 添加自定义 script 标签
  • 添加自定义 html 代码
  • 可添加具有自定义权限的协作者
  • 自定义页面
  • RSS 订阅
  • 自定义高亮块语法支持
  • Emoji 表情选择器
  • 自定义导航栏
  • 后端性能优化一期(减少不必要的查询, ISR 防抖等)
  • Token 管理
  • picgo 插件安装
  • 忘记密码
  • 分类加密
  • 自定义文字路径
  • 系统日志查看
  • 快捷分享按钮
  • 完善可自定义上传文件的自定义页面功能(现在的自定义页面有潜在的 css 污染问题)
  • 图片上传自动添加水印
  • 迁移到 pnpm,使用 workspace
  • 增加在特定事件后触发执行自定义代码或 webhook 的扩展能力
  • 上传图片自动压缩功能
  • 批量操作文章草稿
  • 插件系统
  • 自定义主题(前端渲染器)系统
  • 浏览器消息通知
  • 文章/草稿的历史版本管理
  • 精简配置项,尽可能移动到运行时配置
  • 增加 ORM 层,适配更多数据库
  • 增加一些 e2e 测试,集成到 CI
  • 国际化

问题反馈

请提 issue ,如无特殊情况会在一天内解决。

打赏

如果觉得项目不错的话可以打赏哦。您的支持就是我最大的动力!

打赏时您可以备注名称,我会将您添加至打赏列表中。

打赏-微信 打赏-支付宝

捐赠信息

PS:如果打赏时请备注捐赠者,如有遗漏请联系我添加(有时候消息多可能会漏掉,十分抱歉)

捐赠者 捐赠金额 捐赠日期
Sirit 6.66 元 2022-09-01
jingcheng 100 元 2022-09-06
mosuzi 100 元 2022-09-08
ym679 20 元 2022-09-08
wangcw 100 元 2022-09-13
ziva 8.80 元 2022-09-15
Velen 50 元 2022-09-18
pcz 50 元 2022-10-19

Star 趋势图

Star History Chart

LightHouse 截图

vanblog's People

Contributors

barmplus avatar cornworld avatar immengzi avatar mereithhh avatar mister-hope avatar zhangshichuan 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

vanblog's Issues

运行时间有问题

感谢大佬的付出,有一个小小的问题,我刚刚建站不到两个小时(可能也就一个小时),然而页面显示:本站居然运行了0天10小时30分54秒

1662085948890

[问题反馈]: toekn登录有效期过长

问题描述 | Describe the bug

我发现经历好几个天好几个版本迭代,后台登录总是不会过期,只要我一打开/admin/article地址,就能进入后台。
从安全上考虑,这是不被允许的,每个网站都会设置token有效期,甚至我在支付宝安全平台上登录,只要十几二十分钟(记不清反正很快)不操作,就会被系统踢出登录。

复现网址 | Website URL

No response

版本 | Version

0.37.1

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

小白提问

怎么用阿里云虚拟主机搭建van-blog?

[问题反馈]:

问题描述 | Describe the bug

问题主要出现在日志功能上,进入页面就会出现Failed to fetch错误提示,具体可看您的demo演示,感觉是yaml配置文件少了日志相关的配置信息
微信图片_20220915095432

复现网址 | Website URL

https://blog-demo.mereith.com/admin/site/log

版本 | Version

latest

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

[问题反馈]: 编辑文章无法放弃浏览器缓存

问题描述 | Describe the bug

我已经修改了文章,而我再次点击编辑文章时,会读取缓存文章。此时我已经不需要这个缓存的文章了。但是我无法放弃他。
缓存文章提示
如果这个缓存是保存在浏览器上。这个问题应该会在多端(或不同浏览器)编辑的情况下复现。
是否可以添加放弃机制,或者在恢复缓存后。主动点击返回按钮提示放弃缓存的文章呢?

复现网址 | Website URL

No response

版本 | Version

v0.36.0

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

文章创建时间、本文链接问题

1,旧博客文章迁移到 vanblog,不能自定义创建时间,时间线看上去一天就发布一大堆文章。应该提供自定义文章创建时间功能。

如果实现这个功能,个人认为“年月日时”已经足够,分和秒没必要。

2,点击目录的二级标题,刷新页面,此时版权声明里“本文链接”会自动添加二级标题文字。是否应该保持为永久链接?

[问题反馈]: 草稿导入异常

问题描述 | Describe the bug

如图,我导入的草稿ID会有重复,之前有删除过重复的记录,现在导入ID一直都是4,删除会提示删除成功,但是数据不会有变动,也没有多删。
草稿导入

复现网址 | Website URL

No response

版本 | Version

v0.36.2

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

git clone出现可以clone,不能check

'packages/admin/src/components/ImportArticleModal /index.jsx',在该路径中由于/ImportArticleModal后有尾随空格,导致在clone代码的时候,提示可以clone,不能check,希望作者能完善一下使用体验,非常期待!

[问题反馈]: 页面前进后退行为异常

问题描述 | Describe the bug

异常1:后退会把锚点带到上一页。
异常2:前进/后退有时不生效,像动图中的,我按了前进按钮,URL此时已经是https://blog-demo.mereith.com/post/103#步骤,但是页面还是首页的内容。

动画

复现网址 | Website URL

https://blog-demo.mereith.com/

版本 | Version

v0.32.1

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

问题反馈与建议

1、因我想将这个博客作为我与小伙伴的知识库,所以希望可以多用户发表文章并区别文章是谁发表的。请问作者是否会考虑增加多用户的功能呢?
2、目前发现滚动到4~6级标题时,右侧目录所有的该级标题均会高亮显示。
image

部署问题

在按照文档部署之后,访问初始化页面(/admin/init),Chrome浏览器会一直加载,并且在控制台报错

环境:
CentOS7.6

image

代码块显示优化建议

从我测试的结果来看,代码块是全部显示的,无论代码有多少行。

如果代码块有很多行,这样显示会占据文章页面中大量的页面空间,引起不好的阅读体验。

建议代码块只显示前30行,超过30行的内容折叠,通过点击“显示全部”的按钮来显示。

[优化建议]: 代码块颜色能否调整一下?

功能概述 | Describe the feature

如图,我在后台Markdown编辑器显示的效果:
Markdown后台
前台效果:
Markdown前台

很明显后台看到的效果会舒服自然,而前台则是一屏幕白中突然黑一大块,显得很突兀。

评论区登录bug与优化体验

首先非常非常感谢作者开发的个人博客项目,真的解决了我几个月以来找一个好的自搭博客的刚需!通过初步体验目前有如下两个小问题:

  • 评论区点击登录会显示404报错,不登录的话评论就是匿名
  • 打开文档右侧向下滑块过小不易操作,右侧目录块滑块同样痛点

如上是我今天初步体验的感觉,如是我个人环境、操作等问题,请作者忽略

希望这个项目越来越牛逼,star数越来越多,真的非常非常使用易用美观!

[优化建议]: 建议将 Caddy 和 blog server 的逻辑拆开

功能概述 | Describe the feature

整个项目用 docker compose 启动毫无任何问题,但是出于以下几个因素,我想阐述一下,为什么我建议将 http 代理服务器和本身的业务逻辑拆分。

1. 不管是 nginx 还是 caddy 亦或者是 traefik,它们哥几个都职责单一。

vanBlog 是个博客,一个简洁的 cms 网站,放在它之前的这一层反向代理没有必要存在于业务逻辑代码内,nestjs 框架也没有推荐内置内嵌一个 http server 的组件在项目内。

3. 关于 https 证书,certbot 或者是 LetsEncrypt 本身就已经很好用了

Caddy 是一个不错的项目,它的自动化 https 证书的确很赞,在 docker compose 本地启动的时候,配置参数本身就不多的时候,Caddy 相关的配置就占用了一大半,对于很多新手启动整个项目的时候,还得去研究一下这个 caddy 到底要不要配置一下,有一丢丢强迫症的人,可能项目还没启动,就去搜索 caddy 相关的参数了,容易带跑偏。

3. 如果一定要内置 caddy,放在 docker compose 里面

我觉得应该是将它跟 mongo 一样,当作一个推荐的组件,使用 vanBlog 的人可以有选择的要或者不要。

优化建议

markdown 文件编辑,支持自动保存,防止编写内容丢失。

部署时报错

错误内容

/app/server/provider/meta/meta.provider.js:133
        return (await this.getAll()).siteInfo;
                                     ^

TypeError: Cannot read properties of null (reading 'siteInfo')
    at MetaProvider.getSiteInfo (/app/server/provider/meta/meta.provider.js:133:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async WalineProvider.init (/app/server/provider/waline/waline.provider.js:43:26)

[优化建议]: 文章历史版本

功能概述 | Describe the feature

不知大佬有没有计划开发文章历史版本的功能,如果有该计划,我期望它有以下功能/特性:

  • 该功能在管理后台实现
  • 支持历史版本的预览
  • 支持对比两个版本之间的差异
  • 支持回滚到历史版本
  • 修改文章时,支持给文章添加changelog

[问题反馈]: 后台修改密码

问题描述 | Describe the bug

应该是同 #44 一样的问题。
1、后台修改密码没有原始密码进行二次确认。
2、两个浏览器登录后台,一个浏览器修改密码后会被踢出登录,另一个还能正常刷新修改数据,甚至修改密码,导致之前修改的密码被覆盖。

复现网址 | Website URL

No response

版本 | Version

0.37.1

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

后台无法登录

更新了版本(v0.30.0)之后,后台无法正常登录,报错{"statusCode":500,"message":"Internal server error"}
后台报错截图

Docker容器的日志报错Cannot destructure property 'enableMaxLoginRetry' of '(intermediate value)' as it is null.
Docker容器报错

[问题反馈]: 重新配置博客后,还是显示之前的页面

问题描述 | Describe the bug

我之前测试的时候,随便写了一个测试文章,但是当我正式使用(重新配置后),无论怎么修改还是显示之前测试的页面,在后台也相应修改还是没有改变,我在重新配置前,已将caddy/data/log文件夹删除,增加文章也是只有一篇之前的测试文章,请问是否是没有删除缓存的问题,请问如何删除缓存?

复现网址 | Website URL

http://halflucky.cn

版本 | Version

最新版本

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

[问题反馈]: 协作者权限异常及文章作者问题

问题描述 | Describe the bug

1、协作者权限异常
协作者发布草稿权限异常,设置了草稿的所有权限,协作者依旧无法将草稿发布为文章。
2、协作者编写的文章,在文章页脚备注里,作者为网站作者,而不是编写作者。我想这个对于协作者来说是不公平的。

复现网址 | Website URL

No response

版本 | Version

v0.32.1

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

两点建议或者说是疑问

1.后续是否会出类似主题功能?不知道是否违背了VanBlog简洁的初衷,毕竟前端这个东西每个人的审美各有不同,还是希望自己来写。
2.是否能增加一个单页来放类似说说或者朋友圈这一类短语类?

[问题反馈]:

问题描述 | Describe the bug

node:internal/errors:484
ErrorCaptureStackTrace(err);
^

TypeError [ERR_INVALID_URL]: Invalid URL
at new NodeError (node:internal/errors:393:5)
at URL.onParseError (node:internal/url:564:9)
at new URL (node:internal/url:644:5)
at RssProvider.generateRssFeed (/app/server/provider/rss/rss.provider.js:58:25)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
input: 'huixinyixiao.work',
code: 'ERR_INVALID_URL'
}

复现网址 | Website URL

No response

版本 | Version

latest

部署方式? | How do you deploy vanblog?

Docker 部署(文档默认)

mongo用的是本地的还是公用的?

大佬你好,不懂mongo和docker的小白一个,使用docker糊里糊涂搭建好了,请问使用的mongo是我服务器本地的还是你提供的?如何连接MongoDB查看我部署的服务所存储的数据?

[优化建议]: 移动端点开菜单,双击菜单之外的区域时菜单会回弹

功能概述 | Describe the feature

复现步骤:

  1. 点开导航菜单
  2. 双击菜单外的空白区域

实际结果:
菜单缩回过程中又展开

预期结果:
菜单缩回不会展开

不知道是不是设计如此,由于测试过程中偶现左侧菜单意外弹出(或点击空白区域菜单关不掉),故提issue记录一下。

[优化建议]: 缩减镜像体积

功能概述 | Describe the feature

我感觉镜像体积有点大,通过使用dive工具对镜像各层进行分析,发现有些缓存应该是可以被清理的。

1662443077624

1662443077637

有几点优化的建议:

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.