# bolo-solo
**Repository Path**: cxxowl/bolo-solo
## Basic Information
- **Project Name**: bolo-solo
- **Description**: 专为程序员设计的菠萝博客系统 | 基于Solo | 动态邮件提醒 | 自定义图床 | 离线博客 | 本地登录 | 免登录评论 | :package: WAR包、Tomcat、Docker部署支持 | :email: 通知邮件提醒 | :white_check_mark: 同步原版更新 | :bookmark: 分类功能独立,解除与标签功能关联 | :wrench: 独立权限控制,支持单独设置编辑器图床、文章评论同步到社区,不影响离线功能 | :truck: 轻松迁移 至Bolo / 迁回Solo | :construction_worker: 当前版本:Bolo v1.5 稳定版
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 2
- **Created**: 2020-04-10
- **Last Updated**: 2023-06-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
菠萝博客,使用 Java 编写,专为程序员设计
****
* [供测试菠萝博客Demo](#供测试菠萝博客Demo)
* [Bolo 的功能亮点](#Bolo-的功能亮点)
* [人工帮助](#人工帮助)
* [Bolo 多种安装方法](#Bolo-多种安装方法)
* [轻松更新 Bolo](#tomcat-%E8%BD%BB%E6%9D%BE%E6%9B%B4%E6%96%B0-Bolo)
* [视频教程](#视频教程)
* [其它帮助信息](#其它帮助信息)
* [轻松迁移:迁移至 Bolo / 迁回至 Solo](#轻松迁移迁移至-bolo--迁回至-solo)
* [皮肤](#皮肤)
# 公告
### :tada: 菠萝版本信息
菠萝当前版本:v1.5 稳定版
对应 Solo 原版版本号:v4.0.0
### 当前版本更新日志
* v1.5 稳定版发布啦!Bolo 稳定版支持 Docker、Tomcat 部署,多种部署方法请看下方的《Bolo 多种安装方法》指引 👇
* 重写登录和搜索界面、登录界面动态背景每日刷新,天天好心情(全部背景图皆无版权,放心使用)
* 更新插件:看板娘+,支持自动更新资源包(无需升级 Bolo),新增且持续更新很多萌妹,总有一个你喜欢的~(感谢 [@csfwff](https://github.com/csfwff) 提供插件更新)
* 自定义图床不需要先设置 B3log Key 就可以使用了
* 若干 BUG 修复、若干细节修缮、若干皮肤更新
自 v1.3 版本开始,Bolo 支持 **自定义图床** 功能,支持以下存储服务图床:
1. 七牛云
2. 阿里云
3. 又拍云
4. 基于 [Picuang](https://github.com/AdlerED/Picuang) 的自搭建图床
5. 黑客派公共图床(默认)
### 使用 Bolo 驱动的博客
如果你也使用 Bolo 驱动你的博客,欢迎向本 README 提出 Pull Request ~
* [✨贼拉正经的技术博客](https://www.stackoverflow.wiki/blog)
* [🐭鼠鼠在碎觉](https://sszsj.top/)
* [☁刘欣的代码笔记](https://www.liuxincode.cn/)
* [:smile_cat:GeekTom | Blog](https://blog.zhqy.xyz)
* [:tropical_fish:糖醋鱼的小破站](https://expoli.tech/)
# 特别鸣谢
|:construction_worker:|:construction_worker:|:construction_worker:|
|:-------------------:|:-------------------:|:-------------------:|
|
|
|
|
|[@88250](https://github.com/88250)|[@csfwff](https://github.com/csfwff)|[@InkDP](https://github.com/InkDP)|
|[Solo 原作者](https://hacpai.com)|[Bolo 测试、Logo 绘制、前端技术支持](https://sszsj.top)|[默认皮肤 bolo-nexmoe 原作者](https://inkdp.cn)|
# 人工帮助
如果你在安装、使用的过程中出现任何问题,欢迎微信扫描咨询:

# 供测试菠萝博客Demo
拿不准主意?我们提供了一个测试站点,你可以以管理员的方式访问测试站点!
博客地址:[http://demo.stackoverflow.wiki](http://demo.stackoverflow.wiki)
管理员用户名:`bolo`
管理员密码:`hooyah`
菠萝博客是一个开源项目,我们不收取任何费用,也不会投放任何广告,更没有各种统计。
**请尽量不要修改关键数据玩坏 Demo 网站**!搭建 Demo 需要维护费用,请尽量和谐体验各项功能。
如果发现 Demo 网站不正常或不小心玩坏,请微信扫描 [人工帮助](#人工帮助) 中的二维码告知我们,感激不尽!
# Bolo 多种安装方法
### 使用 Tomcat 安装 Bolo
#### Tomcat 全新安装
1. 下载最新的 zip 文件,[从这里下载!只需要下载 zip 文件即可](https://github.com/AdlerED/bolo-solo/releases)
2. 解压至 Tomcat 的 webapps/ROOT 文件夹中(先清空ROOT文件夹~)
3. 安装MySQL,新建 `solo` 数据库
4. 配置 `WEB-INF/classes/local.properties` 修改数据库地址、用户名、密码、库名
5. 如果你的 Tomcat 使用 **HTTPS** 连接,将 `WEB-INF/classes/latke.properties` 中的 `HTTP` 修改为 `HTTPS` 即可
6. 启动 Tomcat,Hello world!
#### Tomcat 轻松**更新** Bolo
1. 进入 Bolo 所在目录,备份 `WEB-INF/classes/local.properties` 和 `WEB-INF/classes/latke.properties`
2. 清空目录
3. 从上方安装地址下载最新版 Bolo
4. 解压至目录
5. 将备份的两个文件替换回去
6. 完成!
### 使用 Docker 安装 Bolo
#### 方法1:使用 docker-compose 一键启动 Bolo 博客(推荐)
**特别鸣谢** [@糖醋鱼](https://github.com/expoli) 提供的 Bolo docker-compose 源及教程文档!
* 如何通过 docker-compose 部署请看:[安装教程文档](https://expoli.tech/articles/2020/03/22/1584849176609.html)
* 附:[docker-compose 源](https://github.com/expoli/start-bolo-with-docker-compose)
#### 方法2:通过 bolo-docker 使用 Docker 光速安装 Bolo(推荐)
我们对 Bolo 的 Docker 部署逻辑进行了全新设计,现在 Bolo 可以更灵活地在 Docker 中进行运行、修改、调试了!
* 我们放弃了使用 Maven 在线部署,它通常需要 20 分钟才可以搞定;新版 Bolo Docker 可以在 15 秒内解决问题。
* 新的 Bolo Docker 将 Bolo 整合到 Tomcat 当中,且支持 Tomcat APR 模式,运行在 Tomcat 最高效的模式中。
* 通过一个带有**中文注释**的配置文件,修改你的数据库、HTTP 连接方式,简单易用。
* 在配置文件中一键连接你的 [lute-http](https://github.com/88250/lute-http) Markdown 渲染服务。
* 更新仅需替换 Bolo 源码!
* 旧版 Docker 安装方式会被保留。
[点击这里,使用新版 Bolo Docker 部署你的菠萝博客!](https://github.com/AdlerED/bolo-docker)
#### 方法3:原始方法 从 Docker 使用 Bolo
先克隆 Bolo 的源代码:
```shell script
git clone https://github.com/AdlerED/bolo-solo
```
再进入到 Bolo 项目的根目录,构建 Docker 镜像:
```shell script
docker build -t "bolo" .
```
最后,每次输入下面的命令启动 Bolo:
```shell script
docker run -it -d -p8080:8080 --env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://192.168.2.253:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
--rm \
bolo --listen_port=8080 --server_scheme=http --server_host=192.168.2.253
```
将 `JDBC_USERNAME` 修改为你的 MySQL数据库用户名
`JDBC_PASSWORD` 修改为数据库密码
修改 `JDBC_URL` 下的 `192.168.2.253` 为你服务器的域名(如没有域名,填写IP地址)
`server_host` 也需要改为你的域名(或IP地址)
`-p8080:8080` 和 `--listen_port=8080`为端口参数,把三个8080改为你想设置的端口即可。
记得要先在 MySQL 数据库中创建空的 `solo` 数据库哦~
如果启动后无法访问,可以去掉命令中的 `-d` 参数,使 Bolo 在前台运行,这样你就可以看到日志了!
### 使用 Java 命令运行(不推荐)
下载最新的 [Bolo](https://github.com/AdlerED/bolo-solo/releases) 压缩包解压,进入解压目录执行:
Windows: `java -cp "WEB-INF/lib/*;WEB-INF/classes" org.b3log.solo.Starter`
Unix-like: `java -cp "WEB-INF/lib/*:WEB-INF/classes" org.b3log.solo.Starter`
# Bolo 的功能亮点
- [x] 本地登录,匿名评论
- [x] 提供持续的 WAR 包支持,支持 Tomcat 部署,支持 JAR 方式运行,支持 Docker 光速部署
- [x] 与黑客派社区同步文章、评论、个人联系方式、使用社区图床(可选)
- [x] 通过黑客派备份博客中的全部文章
- [x] 用户的评论,如果有人回复会通过用户设定的邮箱地址回复(管理员需在后台设置发信邮箱)
- [x] 博客动态邮件提醒博主(管理员需在后台设置发信、博主邮箱)
- [x] 视频教程,小白轻松部署
- [x] 自定义图床
- [x] 看板娘+,自动更新的海量资源看板娘
### 为什么选择 Bolo
* 核:基于强大的 [Solo](https://github.com/88250/solo) 进行修改,解析快、占用资源少
* 根:本地化环境,数据存储于本地服务器。使用本地账号登录 / 评论
* 稳:更适合求稳、专心写文的博主:如非必要,不必升级 Bolo
* 易:轻松在 Solo / Bolo 之间切换
* 能:强化分类功能,每个文章只拥有一个分类,分类功能独立
* 跨:支持 Tomcat / Jetty / Docker 部署 Bolo(原版Solo v3.6.7 及以上已更新至 Latke 框架,不再支持 Tomcat / Jetty)
* 选:Bolo 支持 B3log 体系,可选支持 [黑客派](https://hacpai.com) 的 B3log Key 实现图床及社区文章评论、联系方式同步功能
* 随:跟随 [原版 Solo](https://github.com/88250/solo) 同步更新版本号及功能,同步支持最新版本 Solo / Bolo 之间切换
* 安:完全去除对 GitHub 的支持, Bolo 是完全独立的博客,B3log Key 也仅是调用 API:除你自己,没人能操作你的博客,确保数据的安全
* 兼:版本更新不会去掉已有大功能(例如:本地H2数据库、Servlet框架等),保证对旧版本用户的友好,确保旧版本用户可流畅更新至最新版本
* 听:与官方保持更新的同时,更新人性化、简洁、实用的小功能,感谢你提出各种BUG、建议、意见
* 教:Bolo 将全面更新 Bolo 迁移、新建、管理的教学视频(对小白十分友好)及文档,解决你遇到的绝大部分问题
# 视频教程
视频教程公开在`云存储`中,请[点击这里](https://ftp.stackoverflow.wiki)在线观看。
# 轻松迁移:迁移至 Bolo / 迁回至 Solo
### 从 Solo 迁移至 Bolo
为防出现意外,请先**备份**原来的数据库
1. 修改 Bolo 的数据库配置文件 `local.properties`,使 Bolo 连接至数据库;
2. **清空(只清空数据,不删除表本身)** `b3_solo_user` 、 `b3_solo_category` 和 `b3_solo_category_tag` 表;
3. 执行SQL语句,在用户表中新建一个管理员用户:
```sql
INSERT INTO `b3_solo_user` (
`oId`,
`userName`,
`userURL`,
`userRole`,
`userAvatar`,
`userB3Key`,
`userGitHubId`
)
VALUES
(
'default',
'{管理员用户名}',
'{管理员的个人主页网址}',
'adminRole',
'{管理员的头像网址}',
'{管理员密码}',
'none'
);
```
如果你修改了`b3_solo_user`的表名,请记得在 SQL 语句中也加以修改(第一行)。
将 SQL 语句中的`{管理员用户名}`、`{管理员的个人主页网址}`、`{管理员的头像网址}`、`{管理员密码}`修改。
**启动 Bolo ,迁移完成~**
### 从 Bolo 迁回至 Solo
1. **清空(只清空数据,不删除表本身)** `b3_solo_category` 和 `b3_solo_category_tag` 表;
2. 确定 `b3_solo_user` 表中的 `userName` 列用户名,和你的 GitHub 账户用户名相同,如果不同,请直接修改;
3. 启动 Solo;
4. 登录,在`管理后台 - 工具 - 用户管理`中,更新管理员账号的B3log Key为黑客派中的B3log Key。
5. 大功告成~
# 其它帮助信息
* [如何添加社交按钮的内容?](https://hacpai.com/article/1574741650421/comment/1574746366256)
# 皮肤
由于特性原因,Bolo **不支持原版皮肤**。但我们会在官方皮肤的基础上修改皮肤,并**附带到** Bolo 当中。
预计很快就能移植绝大部分皮肤。
* Bolo 使用 [solo-nexmoe](https://github.com/Programming-With-Love/solo-nexmoe) 作为默认皮肤。
* Bolo 皮肤已自带,不需要额外下载。
当前支持且已移植并预置的皮肤:
1. `V1.0` 及以上版本:solo-nexmoe → bolo-nexmoe
2. `V1.1` 及以上版本:emiya -> bolo-emiya
3. `V1.1` 及以上版本:bubble -> bolo-bubble
4. `V1.1` 及以上版本:casper -> bolo-casper
5. `V1.1` 及以上版本:pinghsu -> bolo-pinghsu
6. `V1.4` 及以上版本:9IPHP -> bolo-9IPHP
7. `V1.4` 及以上版本:Jane -> bolo-Jane
8. `V1.4` 及以上版本:NeoEase -> bolo-NeoEase
9. `V1.4` 及以上版本:next -> bolo-next
10. `V1.4` 及以上版本:nijigen -> bolo-nijigen
11. `V1.4` 及以上版本:yilia -> bolo-yilia
## 针对 Solo 博客的改进和优化
#### [如果你还没有用过 Bolo 基于的原版 Solo 博客,点我进入 Solo 博客项目主页!](https://github.com/88250/Solo)
- [x] 轻松迁移
- [x] 本地评论功能(无需登录)
- [x] 分类功能优化(解除分类与标签的关联,超级好用)
- [x] 评论频率限制(60秒/2次)
- [x] 自定义主页存档显示数量
- [x] 本地化JS,防止CDN造成的加载失败
- [x] 自定义主页显示存档数量
- [x] 免登录评论
- [x] 自定义图床
# 声明
`Bolo` 是 `Solo` 的修改版,我们始终支持 B3log 生态,支持与黑客派同步文章、评论、联系方式,支持社区图床。