个人wiki文档docsify部署+搭配移动端tts朗读文档部署过程分享

背景

本人java程序员一枚,最近在背面试题,之前有收藏佬友分享的java面试资料,我导入到obsidian里面,媳妇儿说有点看不进去,想要可以像听小说一样(之前有部署reader3,平时摸鱼媳妇有用来听小说),平时摸鱼的时候可以听,于是昨天下午搞了一下,分享一下部署过程,有同样需求的佬可以参考.

服务选择

wiki服务-docsify

按照需求,网上搜索发现docsify看起来还不错,符合我的审美(官网:https://docsify.js.org/),可以docker部署

docsify生成目录工具

导入文档后,发现docsify无法自动生成文档的目录,网上找到了生成目录的工具,gihub地址:GitHub - xxxxue/Docsify-Build-Sidebar: Docsify 侧边栏 : 【自动生成 Docsify 的 Sidebar 与 子目录 Sidebar】

移动端tts朗读-Audify(ios)

之前部署reader3由于ios没有app,自部署的web端不支持后台朗读,网上找到了Audify完美满足我的需求,可以后台朗读web上的内容,调用ios本地的tts接口

内外网穿透工具

因为之前一直使用frp,网上教程很多,本次不写过程了,将wiki服务穿透映射到我的域名

文档资源

本来想贴一下我用的资源了,我没加网盘标签,就不分享了,佬友可以论坛内搜索就好了,论坛内资源很多

部署过程

docsify初始化

  1. 环境准备:
    需要node环境,官网Node.js — 在任何地方运行 JavaScript 下载安装最新的npm,然后按照docsify官网的步骤(建议此处科学上网,速度会快很多):
	npm i docsify-cli -g
	
	docsify init ./docs

  1. 导入md文件,到docs文件夹下,然后按照官方文档,写一下index,提供一下我的index:
	<!-- index.html -->  
  
<!DOCTYPE html>  
<html>  
<head>  
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />  
  <meta name="viewport" content="width=device-width,initial-scale=1" />  
  <meta charset="UTF-8" />  
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/themes/vue.css" />  
  
  <!-- 文件夹样式 -->  
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar-folder.min.css" />  
  <!-- 箭头样式 -->  
  <!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar.min.css" /> --></head>  
<body>  
<div id="app"></div>  
<script>  
  window.$docsify = {  
    name: "JavaDoc",  
    // 侧边栏文档目录  
    loadSidebar: true,  
    el: '#app',  
    subMaxLevel: 2,  
    alias: {  
      "/.*/_sidebar.md": "/_sidebar.md",  
    },  
    // 跳转后自动到顶部  
    auto2top: true,  
  
    coverpage: true,  
    // PLUGINS  
    // ----------------------------------------------------------------    // 页面右侧toc  
    toc: {  
      tocMaxLevel: 2,  
      target: "h2, h3, h4, h5, h6",  
    },  
  
    // 全文搜索  
    search: {  
      depth: 6,  
      noData: "没有搜到!",  
      placeholder: "搜索...",  
      // 避免搜索索引冲突,同一域下的多个网站之间  
      namespace: "website-1",  
    },  
    // 底部导航  
    pagination: {  
      previousText: "上一页",  
      nextText: "下一页",  
      crossChapter: true,  
      crossChapterText: true,  
    },  
    // 字数统计  
    count: {  
      countable: true,  
      position: "top",  
      margin: "10px",  
      float: "right",  
      fontsize: "0.9em",  
      color: "red",  
      language: "chinese",  
      localization: {  
        words: "",  
        minute: "",  
      },  
      isExpected: true,  
    },  
  };  
</script>  
<!-- docsify -->  
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/docsify.min.js"></script>  
  
<!-- 代码高亮  https://cdn.jsdelivr.net/npm/prismjs@1/components/ -->  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-python.min.js"></script>  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-cmake.min.js"></script>  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-java.min.js"></script>  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-csharp.min.js"></script>  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-docker.min.js"></script>  
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-powershell.min.js"></script>  
  
  
<!-- 多tab支持 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>  
  
<!-- 代码复制 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>  
  
<!-- 底部 上一页下一页 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify-pagination@2/dist/docsify-pagination.min.js"></script>  
  
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/external-script.min.js"></script>  
  
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/ga.min.js"></script>  
  
<!-- 全文搜索 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.js"></script>  
  
<!-- 图片放大缩小 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/zoom-image.min.js"></script>  
  
<!-- 字数统计 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify-count@latest/dist/countable.min.js"></script>  
  
<!-- 侧边栏目录折叠 -->  
<script src="https://cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/docsify-sidebar-collapse.min.js"></script>  
  
<!-- 页面右侧 TOC --><script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/docsify-plugin-toc.min.js"></script>  
  
<!-- emoji -->  
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>  
</body>  
</html>
封面页面:
<!-- _coverpage.md -->  
  
# JavaDoc <small>1.0</small>  
  
> 专为开发者打造的面试核心指南  
  
- 覆盖 Java 核心知识点  
- 高频考点 + 代码示例  
- 典型问题深度解析  
  
[GitHub](#JavaDoc)  
[开始阅读](#JavaDoc)
  1. 根据导入的md文件,生成目录,利用工具:github地址:GitHub - xxxxue/Docsify-Build-Sidebar: Docsify 侧边栏 : 【自动生成 Docsify 的 Sidebar 与 子目录 Sidebar】, 写一下配置文件,把md文件路径填入 config.json:
	{  
  "HomePath": "I:\\workspace\\docsify\\docsify\\docs",  
  "DisableGenerateReadmeFile": false,  
  "IgnoreFile": [  
  
  ],  
  "IgnoreDir": [  
    ".git",  
    "img"  
  ],  
  "IgnoreDirNameContain": [  
    ".assets",  
    ".png",  
    ".jpep",  
    ".docx",  
    ".DS_Store"  
  ]  
}

本地启动:

docsify serve docs

docify部署

新建dockerFile,注意3000端口不要换,如果系统已经占用,则启动容器的时候映射其他的

FROM node:latest  
LABEL description="A demo Dockerfile for build Docsify."  
WORKDIR /docs  
RUN npm install -g docsify-cli@latest  
EXPOSE 3000/tcp  
ENTRYPOINT docsify serve .

打包镜像:

 docker build -f Dockerfile -t javadoc .   

启动容器:

docker run -itp 3001:3000 --name=javadoc -v /Users/hehear/workspace/docsify/docs:/docs javadoc:latest

frpc配置

[[proxies]]
name = "docsify"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3001
remotePort = 7005

Audify

appStore下载Audify,然后在网页栏输入你的服务地址,在设置中选择tts音色就可以朗读文档了

后记

部署过程不是很难,简单的记录一下部署过程,媳妇今天可以愉快的摸鱼了

9 个赞

感谢分享!

感谢大佬分享。

感谢大佬教程!

这玩意是和微信阅读一样的东西吗?

就是个壳,调用本机的tts读web的文字

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。