Solo
🎸 B3log 分布式社区的 Java 博客端节点系统,欢迎加入下一代社区网络。B3log distributed community blog-end node based on Java, welcome to join the next generation community network.
Install / Use
/learn @88250/SoloREADME
💡 简介
Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
欢迎到 Solo 官方讨论区了解更多。同时也欢迎关注 B3log 开源社区微信公众号 B3log开源:

🗃 案例
https://ld246.com/top/solo
✨ 功能
- Markdown 编辑器支持三种编辑模式:所见即所得 / 即时渲染 / 分屏预览
- 标签聚合分类
- 自定义导航链接
- 随机文章 / 相关文章 / 置顶 / 更新提醒
- 自定义文章永久链接 / 签名档
- 配置站点 SEO 参数 / 公告 / 页脚
- 代码高亮 / 数学公式 / 流程图 / 五线谱
- 多皮肤,多端适配
- 多语言 / 国际化
- 友情链接管理
- 多用户写作,团队博客
- Hexo / Jekyll / Markdown 导入
- SQL / JSON / Markdown 导出
- Atom / RSS / Sitemap
- CDN 静态资源分离,可配置 jsDelivr CDN 分发
- 拉取 GitHub 仓库和自动备份
- 内置 HTTPS+CDN 文件存储
- 支持生成导出静态站点,用于发布 GitHub Pages
🎨 界面
开始使用

后台首页

编辑文章

选择皮肤

前台界面






🍱 皮肤
目前内置的皮肤如下,可点击进行预览:
- Bubble
- Casper
- Pinghsu
- Jane
- nijigen
- Medium
- 9IPHP
- Andrea
- Bruce
- Community
- favourite
- Finding
- i-nove
- metro-hot
- NeoEase
- next
- owmx-3.0
- timeline
- tree-house
- yilia
欢迎在这里推荐好看的皮肤,我们会尽量进行制作。
🛠️ 安装
Solo 支持“动静两用”:
- 动态博客:在服务器上搭建,进程常驻内存运行,在线使用
- 静态博客:在本地电脑运行,写作完成后生成导出静态站点
视频教程
更多视频教程陆续制作中,欢迎到 B 站关注我:报废程序员D。
本地运行
本地运行主要用于试用或者生成静态站点,生成静态站点的用法请参考这里。
(视频演示教程请看这里)
下载最新的 Solo 包解压,进入解压目录执行:
- Windows:
java -cp "lib/*;." org.b3log.solo.Server - Unix-like:
java -cp "lib/*:." org.b3log.solo.Server
如果你有 Java 开发环境,可参考这里通过源码构建运行(视频演示教程请看这里)。
Docker 部署
Docker 方式部署是动态博客用法,主要用于在服务器上部署动态博客。
(视频演示教程请看这里)
获取最新镜像
docker pull b3log/solo
启动容器
注意:对于如下命令,如果你不确定如何使用 \ 来进行换行,就不要换行了,一行内写完整条命令。
-
使用 MySQL
手动建库(库名
solo,字符集使用utf8mb4,排序规则utf8mb4_general_ci):create database solo default character set utf8mb4 collate utf8mb4_general_ci; create user 'root'@'127.0.0.1' identified by '123456'; grant all privileges on *.* to 'root'@'127.0.0.1'; flush privileges;启动容器:
docker run --detach --name solo --network=host \ --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://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \ b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=为了简单,使用了主机网络模式来连接主机上的 MySQL。
-
使用 H2 Database
docker run --detach --name solo --volume ~/solo_h2/:/opt/solo/h2/ --publish 8080:8080 \ --env RUNTIME_DB="H2" \ --env JDBC_USERNAME="root" \ --env JDBC_PASSWORD="123456" \ --env JDBC_DRIVER="org.h2.Driver" \ --env JDBC_URL="jdbc:h2:/opt/solo/h2/db;MODE=MYSQL" \ b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
启动参数说明:
--listen_port:进程监听端口--server_scheme:最终访问协议,如果反代服务启用了 HTTPS 这里也需要改为https--server_host:最终访问域名或公网 IP,不要带端口--server_port:最终访问端口,使用浏览器默认的 80 或者 443 的话值留空即可
完整启动参数的说明可以使用 -h 来查看。
日志配置
默认通过 log4j2 将日志打印到标准输出流,可以通过 docker logs solo 进行查看。如果需要覆盖 log4j 配置,可通过挂载文件实现:
--volume ~/log4j2.xml:/opt/solo/log4j2.xml
挂载第三方皮肤
如果需要使用第三方皮肤,可以挂载目录 skins,目录结构请参考原版 skins:
--volume ~/skins/:/opt/solo/skins/
版本升级
- 拉取最新镜像
- 重启容器
可参考这里编写一个重启脚本,并通过 crontab 每日凌晨运行来实现自动更新。
Docker Compose
NGINX 反代
upstream backend {
server localhost:8080; # Solo 监听端口
}
server {
listen 80;
server_name 88250.b3log.org; # 博客域名
access_log off;
location / {
proxy_pass http://backend$request_uri;
proxy_set_header Host $http_host;
