Solo 是一款小而美的开源博客系统,专为程序员设计。
Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
具体细节请浏览 B3log 构思
- D 的个人博客
 - Jiahao.Zhang's Blog
 - 子兮子兮
 - 铅笔的个人博客
 - 洗澡狂魔的技术阵地
 - liumapp 的个人博客
 - 水星的随笔
 - 1992 社区
 - DevHyxo
 - EchoCow
 - 贼拉正经的技术博客
 - 记录改变生活
 - 程序员小吴
 - 潘少的 BLOG
 - ZEEKLING
 
- Markdown / Emoji
 - 标签聚合分类
 - 自定义导航链接
 - 随机文章 / 相关文章 / 置顶 / 更新提醒
 - 自定义文章永久链接 / 签名档
 - 配置站点 SEO 参数 / 公告 / 页脚
 - 代码高亮 / 数学公式 / 流程图 / 五线谱
 - 多皮肤,多端适配 / 社区皮肤
 - 多语言 / 国际化
 - 友情链接管理
 - 多用户写作,团队博客
 - Hexo / Jekyll / Markdown 导入
 - SQL / JSON / Markdown 导出
 - Atom / RSS / Sitemap
 - CDN 静态资源分离
 - 自动同步 GitHub 仓库
 - 内置 HTTPS+CDN 文件存储
 
目前内置的皮肤如下,可点击进行预览:
- 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
 
欢迎在该 issue 下推荐好看的皮肤,我们会尽量进行制作。
下载最新的 Solo 包解压,进入解压目录执行:
- 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 
如果你有 Java 开发环境,可参考这里通过源码构建运行。
请注意:我们不建议通过 war 发布包或者源码构建部署,因为这样的部署方式在将来有新版本发布时升级会比较麻烦。 这两种方式请仅用于本地试用,线上生产环境建议通过 Docker 部署。
docker pull b3log/solo- 
使用 MySQL
先手动建库(库名
solo,字符集使用utf8mb4,排序规则utf8mb4_general_ci),然后启动容器: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" \ 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 来查看。
默认通过 log4j 将日志打印到标准输出流,可以通过 docker logs solo 进行查看。如果需要覆盖 log4j 配置,可通过挂载文件实现:
--volume ~/log4j.properties:/opt/solo/WEB-INF/classes/log4j.properties如果要使用其他皮肤,可以挂载目录 skins(里面需要包含所需使用的所有皮肤,官方所有皮肤可从这里下载):
--volume ~/skins/:/opt/solo/skins/- 拉取最新镜像
 - 重启容器
 
可参考这里编写一个重启脚本,并通过 crontab 每日凌晨运行来实现自动更新。
docker pull clinan/solo感谢 @Clinan 提供。
- 《提问的智慧》精读注解版
 - 从零开始安装 Solo 博客(感谢 @JInjianh 分享)
 - 用户指南
 - Solo 从设计到实现
 - 皮肤开发指南
 - 插件开发
 
Solo 使用 GNU Affero General Public License, Version 3 开源协议。
- jQuery:前端 JavaScript 工具库
 - Vditor: 浏览器端的 Markdown 编辑器
 - Highlight.js:前端代码高亮库
 - pjax:pushState + ajax = pjax
 - jsoup:Java HTML 解析器
 - flexmark:Java Markdown 处理库
 - Apache Commons:Java 工具库集
 - Latke:以 JSON 为主的 Java Web 框架
 










