跳到主要内容

博客

代码人生:编织技术与生活的博客之旅

实战:完美解决md图床问题-nginx图床-2024.8.4(测试成功)

image-20240416055013558

目录

[toc]

版权声明

本文为One原创文章,转载无需和我联系,但请注明文章来源 https://onedayxyy.cn/

前提条件

  • 已经提前购买好云服务器;

  • 域名已完成备案(域名备案也是很方便的哈);

  • 域名已配置https证书;

  • 需要给次域名配置cdn;(未配置cdn时,如果md里图片偏多后,打开一个md后图片加载会出现延迟……)

说明:

最好建议通过域名来访问自己的图床服务,因为公网ip后续可能会更改,但域名是不会变的,因此后续迁移图床数据是非常方便的;

域名备案流程也不复杂,把该填的内容都填了,等待审批通过就好;

域名配置https泛域名证书也很方便;(见手把手文档:《实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)》)

1、部署nginx服务

  • 云服务器上部署nginx服务

参考文章:

《实战:yum方式部署nginx-2024.4.16(测试成功)》https://wiki.onedayxyy.cn/docs/ngnix-install-yum

image-20240416063333164

  • 给自己网站配置https泛域名证书

参考如下链接:

《实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)》:https://wiki.onedayxyy.cn/docs/docs/Certbot-install

image-20240804170957387

  • 自己本次nginx配置如下:

2024年8月4日

nginx.conf配置文件:

cat /etc/nginx/nginx.conf

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
gzip on; # 启用 gzip 压缩
gzip_vary on; # 根据请求中的 `Accept-Encoding` 响应头决定是否启用 gzip
gzip_proxied any; # 在所有代理请求中启用压缩
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 指定哪些类型的响应需要压缩
gzip_comp_level 5; # 压缩等级(范围是 1-9,高级别意味着更好的压缩但会消耗更多 CPU 资源)
gzip_min_length 256; # 只对超过给定长度的响应启用压缩
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
charset utf-8;

# Settings for a TLS enabled server.

}

ssl证书位置:

[root@docusaurus-wiki cert]#pwd
/etc/nginx/cert
[root@docusaurus-wiki cert]#ll
total 8
-rw-rw-rw- 1 root root 2855 Aug 3 10:00 fullchain1.pem
-rw-rw-rw- 1 root root 241 Aug 3 10:00 privkey1.pem
[root@docusaurus-wiki cert]#

conf.d目录下:

[root@docusaurus-wiki conf.d]#pwd
/etc/nginx/conf.d
[root@docusaurus-wiki conf.d]#ll
total 28
-rw-r--r-- 1 root root 5252 Aug 3 14:57 blog.conf
-rw-r--r-- 1 root root 2498 Aug 3 14:15 home.conf
-rw-r--r-- 1 root root 1749 Aug 3 10:27 moments.conf
-rw-r--r-- 1 root root 1370 Aug 3 10:26 music.conf
-rw-r--r-- 1 root root 1745 Aug 3 10:23 photo.conf
-rw-r--r-- 1 root root 1404 Aug 3 09:11 wiki.conf
[root@docusaurus-wiki conf.d]#

主域名配置文件:

[root@docusaurus-wiki conf.d]#cat home.conf 
server {
listen 80;
server_name onedayxyy.cn www.onedayxyy.cn;

#配置https重定向
return 301 https://$host$request_uri;
}


server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name onedayxyy.cn www.onedayxyy.cn;

root /root/home3.0;

location / {
index index.html index.htm;
}

##图床数据
location /images {
alias /images;
index index.html;
}
# ……删除部分敏感信息
ssl_certificate "cert/fullchain1.pem";
ssl_certificate_key "cert/privkey1.pem";

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

ssl_prefer_server_ciphers on;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

2、配置picgo

==方法:配置picgo上传图片到云服务器-2023.12.4(测试成功)==

  • 环境
picgo v2.3.1
typora v1.7.6
win10
  • 提出问题(肯定是可以的)

picgo软件是否可以支持上传图片到自己的云服务器呢?

  • 寻找官网插件

https://github.com/PicGo/Awesome-PicGo

文档地址

https://github.com/imba97/picgo-plugin-sftp-uploader

  • 自己本次配置

D:/docusaurus/resource/shell/sftpUploader.json

{
"sftpUploader": {
"url": "https://onedayxyy.cn",
"path": "/images/{fullName}",
"uploadPath": "/images/{fullName}",
"host": "ecsip",
"port": 22,
"username": "root",
"password": "123456"
}
}

image-20240404075625491

自己云服务器ecs地址:

自己域名:onedayxyy.cn
nginx图床配置路径:/images
图片url地址:https://onedayxyy.cn/images/image-20231123144421591.png
  • 测试:(符合预期)

image-20231204145705306

  • 自己typora配置

image-20240804171453905

测试结束。😘

注意:经测试,这里的网站标识 要填内容一定得是 json文件里的 "xx"名称才行的,不然就会报如下错误。🤣

3、配置rsync服务(可选)(推荐配置)

  • 配置rsync服务,主要是可以配置winodws定期拉取图床数据,方便后期如果更换云服务器,可以更快速迁移数据,也是为了备份数据。(建议配置)
  • 配置rsync服务,很简单的,可按如下文档配置。
  • 参考文档

《实战:从linux同步数据到winodws(增量定时同步)-2023.11.30(测试成功)》(本次用到的) https://wiki.onedayxyy.cn/docs/rsync-linux-to-winodws

image-20240416062012160

  • 自己云服务器rsyncd服务配置截图

[root@docusaurus-wiki ~]#vim /etc/rsyncd.conf

image-20240416062337098

  • winodws本地同步数据截图
echo backupmd图床数据……
rsync.exe -avPzruh --port 8730 --password-file=/cygdrive/D/docusaurus/resource/shell/password.txt root@47.100.215.163::cmi-MdImages/ /cygdrive/D/BaiduSyncdisk/backup/rsync_local/cmi-MdImages-local

image-20240416062456003

  • 图床数据量汇总:

本次更换图床为ecs nginx提供的图床,体验nice。

##本地docusaurus配置
Administrator@DESKTOP-LJJNG21 MINGW64 /d/docusaurus (master)
$ du -shc docs/
10M docs/
10M total

##ecs
[root@docusaurus-wiki ~]#ll /images/ |wc -l
13026
[root@docusaurus-wiki ~]#du -shc /images/
3.8G /images/
3.8G total
[root@docusaurus-wiki ~]#

image-20240416062624907

5、配置winodws定时任务

参考如下文章:

《实战-winodws配置定时脚本-2023.11.30(测试成功)》 https://wiki.onedayxyy.cn/docs/DingShiJiaoBen/

image-20240804172841094

我自己目前为图床做的备份定时配置如下:

image-20240804172925309

image-20240804172949114

6、测试验证

  • 使用测试

https://onedayxyy.cn/images/image-20240416055013558.png

image-20240416061201293

image-20240416061236382

总结

笔记数据对任何人来说,都是至关重要的。(尤其对IT人员)

通过md来维护自己的IT数据,特别丝滑;

但md最大的问题就是处理好图床问题,通过这种方式,我们可以轻松解决md图床问题,ecs寸一份图床数据,然后会定期同步到本地(百度云同步空间),自己的md文档也通过坚果云进行同步(免费),基本完全保证了自己的笔记数据安全。

笔记数据安全得到了保证,然后通过丝滑的typora,我们就可以好好专心生成原创文章了。😊

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

QQ群

《玩转Typora+Docusuaurus+起始页》交流群:(欢迎小伙伴一起探讨有趣的IT技术,来完成一些漂亮的项目)

我的开源项目:

项目名称我的文档我的demo作者demo
1、玩转Typorahttps://wiki.onedayxyy.cn/docs/typorahttps://wiki.onedayxyy.cn/docs/typorahttps://typoraio.cn/#
2、玩转Docusaurushttps://wiki.onedayxyy.cn/docs/mogai-docusaurushttps://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页home3.0https://wiki.onedayxyy.cn/docs/home3.0https://onedayxyy.cn/https://github.com/hsBUPT/hsBUPT.github.io
4、全网最美博客-ruyu-bloghttps://wiki.onedayxyy.cn/docs/ruyu-blog-install-one-keyhttps://blog.onedayxyy.cn/https://www.kuailemao.xyz/
5、家庭相册filesite-iohttps://wiki.onedayxyy.cn/docs/filesite.io-photot-install-fullhttps://photo.onedayxyy.cn/https://demo.jialuoma.cn/

https://wiki.onedayxyy.cn/docs/OpenSource

image-20240811063938529

  • typora皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20240518165037517

  • 起始页

https://onedayxyy.cn/

image-20240814230557697

  • 知识库

https://wiki.onedayxyy.cn/

  • 博客

https://blog.onedayxyy.cn/

image-20240803162010305

  • 个人相册

https://photo.onedayxyy.cn/

image-20240923064332963

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

图床typora阅读需 7 分钟

最佳实践:Typora+docusaurus完美解决(云笔记+知识库+博客)需求

image-20240831172803976

目录

[toc]

版权

提示

本文作者: One 本文标题:最佳实践:Typora+docusaurus完美解决(云笔记+知识库+博客)需求 本文链接:https://wiki.onedayxyy.cn/docs/cloud-note-typora-docus 版权声明:本站所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明文章出处!

前言

写在前面

注意

注意:

此方案部署起来很简单,没难度的(之所以本文篇幅有点长,是为了照顾小白,铺垫好背景),手把手文档都给小伙伴了,大家可放心部署;(又任何问题可随时沟通😎)

如果对于非it专业小伙伴,如果感觉又难度,那建议还是用word记录笔记本哈哈;(如果对it感兴趣的话,我相信,部署这个方案不是问题)🤣

背景

==我为什么要写这篇文章呢?==

因为我自己是一个it从业者,那么日常笔记数据对自己来说就特别重要,俗话说,好记性不如烂笔头,那么如何安全地维护好自己的工作经验沉淀数据、日常学习记录数据、生活数据等等,就显得特别重要。(我相信,每个人都有属于自己的重要数据)

自己之前用过各种云笔记,例如word/有道云/notion/wolai/语雀……等等,到最后发现都各种问题,一言难尽,因为来回切换笔记数据真的很麻烦,也很浪费时间。

后买你无意间发现了typora(md软件领域的扛把子),发现用typora来记录和阅读自己的笔记数据真的是一种享受。

后来又发现了docusaurus,发现它真的是静态站点构建工具里的no1,特备适合自己构建知识库,同时,它也提供了博客功能。且有好看的主题及强大的社区。

因此,typora与docusaurus的相遇注定成为很多人理想的内容管理工具。

接下来的这篇文章就是我的关于"云笔记+知识库+博客"的最佳实践,欢迎交流。😉

常见云笔记分类

大致上可以将笔记软件分为几大类:

1)传统的笔记软件:这类一般以 Word、WPS、OneNote为代表。缺点:一般不支持 Markdown 文件格式,需要花费更多的时间在对内容的排版上。

2)云笔记软件:这类笔记软件的特点,是数据都存储在云端,在本地没有备份。一般都是支持Markdown格式,并且有些也支持双链笔记【就是在一个笔记里可以直接引用其它的笔记,然后点击后直接跳转】。这类一般以:语雀、网易云笔记、wolai、notion、飞书 为代表。 缺点:笔记有一个特点就是数据都是存储在远程服务器(数据被牢牢绑定);并且如果是免费版本只提供很少的空间;

3)本地笔记软件:这类软件的特点和云笔记的特点就是,数据都存储在本地。常见的代表作有:Typora、Obsidian、思源。

写博客的好处

在学习到一些新技术的时候,会用笔记的方式把操作的流程记录下来,一方面是为了能够更快的掌握这块技能,同时也方便后续对看过的知识进行回归,进一步对内容进行巩固。同时写成博客后,也可以分享到互联网上进行传播,帮助到更多的人。

你的笔记需求

  • 笔记数据安全且完全可控;(禁止与第三方厂商绑定)
  • 笔记数据由markdown维护;
  • pc端编辑,多端可查看内容;
  • 数据完全本地化;
  • ……

软件介绍

==typora介绍:==

写Markdown费事?Typora让你像写word一样行云流水,所见即所得。

Typora 是一款适配 Windows / macOS / Linux 平台的 Markdown 编辑器,编辑实时预览标记格式,所见即所得,轻巧而强大。

typora就是专为 markdown 语法打造的一款软件。

  • Typora删除了预览窗口,以及所有其他不必要的干扰。取而代之的是实时预览。
  • Markdown的语法因不同的解析器或编辑器而异,Typora使用的是GitHub Flavored Markdown

Typora 最舒服的是所见即所得的排版,以及实时渲染带来的沉浸式写作体验,非常舒服。

用官方的话描述:

Typora 提供同时读写的无缝体验,删除了预览窗口、模式切换器、markdown 源代码的语法符号以及所有其他不必要的干扰。相反,提供了真正的实时预览功能,可帮助您专注于内容本身。

image-20240822124607094


==docusaurus介绍:==

Docusaurus是一款基于React的开源文档站点生成器,它可以帮助开发者快速构建出现代化、易于维护的文档网站。Docusaurus是由Facebook开发的,最初是为React Native文档而创建的。现在,Docusaurus已经成为开发者在创建和维护文档站点时的首选工具之一。

Docusaurus是一个基于React和Node.js构建的开源工具,旨在帮助开发人员快速构建易于管理和维护的文档站点。

Docusaurus的优势之一是它的==易用性==。它提供了一套现成的模板和主题,让开发者可以快速开始构建文档站点。另外,Docusaurus还提供了一个实时预览功能,让开发者可以在本地进行修改和调试,从而加快开发效率。

Docusaurus支持Markdown和==MDX格式==的文档,这意味着开发者可以使用简单的文本编辑器来编写和更新文档。此外,Docusaurus还提供了一些插件和工具,例如搜索和版本控制,使得文档站点的维护更加简单和高效。

除此之外,Docusaurus还具有高度的可定制性。它使用React组件来构建页面,这意味着开发者可以轻松地自定义页面的外观和功能。此外,Docusaurus还支持多语言站点,可以满足不同语言用户的需求。

image-20240822124505446


==vscode介绍:==

VS Code 的全称是 Visual Studio Code,是一款开源的、免费的、跨平台的、高性能的、轻量级的代码编辑器。它在性能、语言支持、开源社区方面,都做得很不错。

image-20210808080621942


==Picgo介绍==:

PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具。

使用markdown一直有一个痛点,那就是图片的问题,不想word那样可以直接保存图片,markdown不行,如果插入图片,图片在本地会单独存放,以链接的形式插入在markdown中,如果本地图片丢失或者位置变了,那就不显示了。

所以这里就需要一个图床,也就是把图片传上去,弄个链接,然后插入markdown中,那么图床不少,怎么传呢?

使用这个工具,只要复制下图片,然后按个快捷键就可以直接将图片上传到你事先设定好的图床上,然后返回给你个链接,可以直接用。

支持全平台,开源且免费,支持丰富的插件系统,推荐使用。使用 PicGo 上传图片的流程是这样的:先复制图片,然后通过一个快捷键上传图片到对应的图床(并直接返回一个该图片的直链到你的系统剪切板),此时你只需到你的 Markdown 内容中粘贴就完事了,整个过程不超过 5 秒钟。

image-20240823214744894


==Everyting介绍:==

image-20240823214922449


==坚果云:==

坚果云是一家中国的云存储服务提供商,为个人和企业用户提供数据存储、同步和共享服务。以下是关于坚果云的一些简介:

  1. 数据存储:坚果云提供安全可靠的云存储空间,用户可以将个人或企业数据存储在云端,避免了数据丢失的风险。

  2. 文件同步和共享:坚果云支持多设备文件同步,用户可以在不同的设备上访问和更新自己的文件,并确保文件的最新版本在各个设备间同步。此外,用户还可以通过链接将文件分享给他人,方便协作和共享。

  3. 数据安全:坚果云提供高级的数据加密和安全性措施,确保用户的数据在传输和存储过程中受到保护。坚果云采用端到端加密技术,即使在数据传输和存储过程中,只有用户才能解密和访问数据。

  4. 多平台支持:坚果云提供支持多种操作系统和平台的客户端应用程序,包括Windows、Mac、iOS和Android等,用户可以在不同的设备上方便地使用坚果云服务。

  5. 备份和恢复:坚果云还提供备份和恢复功能,用户可以定期备份重要数据,以防数据丢失或设备损坏。

  6. 个人和企业版本:坚果云提供个人和企业版本,个人用户可以选择适合自己需求的存储空间,企业用户可以享受更多的存储空间和专业的团队协作功能。

总之,坚果云是一个方便、安全、可靠的云存储服务提供商,适用于个人和企业用户管理和保护他们的数据。

方案

1.方案设计

1、本地元数据:

  • Typora:主力编辑和阅读md文档;

  • Vscode:管理笔记数据;(负责管理笔记视图、查找文件、全文查找等功能)(Everything:配合vscode查找文件;)

  • 百度云盘:存放大型软件、音视频、照片、脚本、实验软件等;

  • docusaurus仓库:持续更新自己的all知识点到这个文档库。(docusaurus仓库里的核心文档放在坚果云里免费进行云同步,其他本地笔记数据放在百度网盘同步空间里进行同步

  • md图床:(利用ecs的nginx来提供图床,图片数据会本地保存一份后再上传到图床,且利用rsync会每天定时从linux同步数据到本地windowsPC,很nice)

提示

为什么我这里要同时用到坚果云和百度网盘同步空间呢?

因为百度网盘同步空间只能对某一个目录进行同步,而坚果云可以对windows的不同目录进行同步,更灵活。刚好适合把后面docusaurus仓库里的docs目录放在坚果云同步目录里,这样我们可以更专心/方便编辑这里的核心md数据。(注意,这里的坚果云有1g的免费空间,对我们只存放md内容,完全够用了)😂

提示

为什么我要使用坚果云来同步docs目录和blog目录而不使用git来同步呢?

因为这个docus仓库要想利用netlify等构建,那这个必须是开源项目。但是,此时自己的所有md就都被同步到了仓库,鉴于版权问题,这里不把自己md暴露出去。而是选择把它放在坚果云里进行数据同步,gite只保存仓库数据就好。

2、分享平台:

docusaurus公开知识库,博客,微信公众号,csdn,知乎;


image-20240321075256966

2.方案优势

  • typora:md领域的扛把子;(编辑和阅读体验真的超丝滑)(可定制typora皮肤)
  • docusaurus:静态站点构建工具的扛把子;(支持知识库+博客,且主题唯美)
  • 数据完全本地化,与第三方厂商完全解耦;
  • ……

3.成本把控

事项价格备注
百度云盘198年会员(活动价)
域名待确认
云服务器99元/年
坚果云1g的免费额度(存放md文档完全足够用)

4.维护原则

docusaurus维护原则:

  • 每一个md的排版都要简洁,清晰;
  • 单个md内容不要太大,否则就拆分成多个md;
  • 自己的docusaurus知识库只允许存放.md,目录,.sh/.py脚本,其他任何类型的数据禁止存放进去。

环境

win10

image-20240822124826708

ecs:

CentOS Linux release 7.9.2009 (Core)

ecs名称:docusaurus-wiki

配置规格:2c 2g 40g ESSD Entry云盘 40GiB (2120 IOPS)

image-20240323150507086

源码

链接:https://pan.baidu.com/s/1FG0opRQgJmX9i6jBSbsrVg?pwd=5vjj 提取码:5vjj 2024.8.23-Typora+docusaurus-softwares

image-20241006224657413

前提条件

  • 具备基础的linux命令行能力
  • 了解markdown语法:见《markdown语法》文章。
  • 购买1台云服务器(自行百度)
  • 购买一个域名(自行百度)

0、配置基础环境

1、安装typora

1.安装typora

  • 来到typora官网,下载windows软件包,直接点击下一步完成安装

https://typoraio.cn/#

image-20240823181000987

image-20240823181023433

  • 完成安装后,桌面出现如下图标

image-20240823181058826

  • 双击打开,输入购买的license

image-20240823181153464

提示

这个软件之前免费,后面收费了,89元,3个license终身使用。建议大家购买正版使用,这个良心软件值得我们付费使用。

image-20240823181231066


==配置typora:==

现在,我们来简单配置下typora:

image-20240823182720959

image-20240823182833630

image-20240823182852090

image-20240823182928958

image-20240823182939952

image-20240823182955721

image-20240823183019518

2.安装picgo

typora配置完成后,我们来安装下picgo,用来传输图片到图传上去。

  • 来到picgo官网,下载windows软件包,直接点击下一步完成安装

https://molunerfinn.com/PicGo/

  • 完成安装后,桌面出现如下图标

image-20240823182227633

  • 我们来配置下picgo

双击打开picgo,我们来配置下picgo的sftp插件:

提示
  • 本次我这这里配置的是ecs nginx图传,这个大家得提前准备好;
  • picgo的sftp插件依赖于nodejs,大家也记得提前安装好这个软件;

自己本次配置

D:/docusaurus/resource/shell/sftpUploader.json

{
"sftpUploader": {
"url": "https://onedayxyy.cn",
"path": "/images/{fullName}",
"uploadPath": "/images/{fullName}",
"host": "ecsip",
"port": 22,
"username": "root",
"password": "123456"
}
}

image-20240404075625491

设置当前sftp方式为默认方式:

image-20241006215929532

自己云服务器ecs地址:

自己域名:onedayxyy.cn
nginx图床配置路径:/images
图片url地址:http://onedayxyy.cn/images/image-20231123144421591.png
  • picgo配置完后,我们来测试下图传是否能正常使用

点击文件-偏好设置-图像:

再点击验证图片上传选项

能看到成功上传图片并获得新的url字样就代表我们的图传是可用的。

image-20240823183326732

3.安装typora_plugin插件

(扩展,但推荐安装)

image-20241006220208254

下载链接:

https://github.com/obgnail/typora_plugin/releases/latest

注意:

使用typora_plugin插件时,强烈关闭如下各选项的自动编号功能,只保留图片自动编号即可:(否则该One主题有一些效果不能很好展示)

具体效果如下图:

image-20241006222040407

2、安装docusaurus

接下来,我们部署下docusaurus:

  • 通过如下命令拉取代码,并在本地运行:
cd /d/
git config --global user.name "hg_it_nuc"
git config --global user.email "2675263825@qq.com"

git clone https://gitee.com/onlyonexl/one-docusaurus
cd one-docusaurus

#指定镜像源为华为源:
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
pnpm config set registry https://mirrors.huaweicloud.com/repository/npm/

#安装好pnpm
npm install -g pnpm@9.4.0

#安装依赖包并启动
pnpm install
pnpm start
  • 默认会在浏览器打开如下页面:

http://localhost:3000/

image-20240823212820949

3、安装坚果云

  • 坚果云下载链接

https://www.jianguoyun.com/static/exe/installer/NutstoreWindowsWPFInstaller.exe

image-20240707192501102

  • 安装方法,一直下一步即可。

  • 将同名目录修改为如下D:\docusaurus\docs路径

image-20240707192623702

image-20240707192636289

image-20241013155649574

image-20241013155605462

4、最佳姿势

1.docus仓库存放位置

注意

docusaurus仓库放在自己的windows/d/docusaurus路径下:

利用坚果云对docusaurus仓库下的docs目录做云同步:(但这个目录不进行git仓库数据同步,方便自己随时进行md数据增删改查)

image-20240823210549224

image-20241006224807274

2.一条命令完成内容发布

  • 配置vscode终端到ecs的免密

在docusaurus仓库,打开vscode:

##win10和ecs做免密,方便本地win10 脚本执行相关命令:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@47.100.215.163 ##输入ecs密码
ssh root@47.100.215.163 date

# $ ls ~/.ssh/id_ed25519.pub
# /c/Users/Administrator/.ssh/id_ed25519.pub
# $ ssh root@47.100.215.163 date
# Fri Apr 12 07:43:24 CST 2024
  • 配置win10 vscode终端环境变量
##(1)配置一键推送PATH环境
cat >> /etc/profile <<EOF
alias xyy2="
sh /d/docusaurus/resource/shell/xyy2.sh
"
EOF
source /etc/profile


##(2)配置rsync PATH环境
#vscode的git bash终端,rsync客户端命令
echo 'PATH=/d/GreenSoftware/cwrsync_6.2.12_x64_free/bin:$PATH' >> /etc/profile
source /etc/profile


## (3)配置备份本地md脚本
echo 'alias backup="sh /d/docusaurus/resource/shell/md_backup.sh"' >> /etc/profile
source /etc/profile
  • 验证

一条命令完成docusaurus构建静态数据并推送到ecs nginx目录:

xyy2

image-20240823211006814

image-20240823211302171

  • web端验证

https://wiki.onedayxyy.cn/

image-20240823211329911

5、数据备份

1.docus仓库配置数据

git备份/本地

image-20240901161044405

2.本地md数据

(坚果云来同步数据)

image-20241006225019668

image-20240901160612145


手动备份核心md数据:(每周一次)备份脚本:

D:\docusaurus\resource\shell\md_backup.sh

#!/bin/bash
echo "开始备份md核心数据……"

cd /d/BaiduSyncdisk/backup/mdBackup
tar -czvf /d/BaiduSyncdisk/backup/mdBackup/`date +%F_%H-%M-%S`-mdBackup.tar.gz /d/docusaurus/docs


echo -e
echo "md数据大小:"
#会被强制覆盖掉当天的代码
du -sh /d/BaiduSyncdisk/backup/mdBackup/

echo -e
echo "已备份的md文件如下:"
ls /d/BaiduSyncdisk/backup/mdBackup -tlh

本地vscode里配置环境变量:

echo  'alias backup="sh /d/docusaurus/resource/shell/md_backup.sh"' >> /etc/profile
source /etc/profile

效果:

直接执行backup命令即可实现自动备份:

image-20241009074103844

image-20241014123447359

image-20241014123515661

3.图床数据

在cmd输入compmgmt.msc

新建任务:MdImages-rsync-linux-to-winodws

利用rsync每天定期增量同步到本地:(可保证数据安全)

image-20240901161236120

image-20240901161417046

ecs上图床大小:

image-20240901161512719

本地图床大小:

image-20240901161621880

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240805214647028

🍀 知识库:

https://wiki.onedayxyy.cn/

image-20240814230415388

🍀 博客:

http://blog.onedayxyy.cn/

image-20240804075845906

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

QQ群

玩转Typora+Docusuaurus+起始页交流群:(欢迎小伙伴一起探讨有趣的IT技术,来完成一些漂亮的项目)

我的开源项目:

项目名称我的文档我的demo作者demo
1、玩转Typorahttps://wiki.onedayxyy.cn/docs/typorahttps://wiki.onedayxyy.cn/docs/typorahttps://typoraio.cn/#
2、玩转Docusaurushttps://wiki.onedayxyy.cn/docs/mogai-docusaurushttps://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页home3.0https://wiki.onedayxyy.cn/docs/home3.0https://onedayxyy.cn/https://github.com/hsBUPT/hsBUPT.github.io
4、全网最美博客-ruyu-bloghttps://wiki.onedayxyy.cn/docs/ruyu-blog-install-one-keyhttps://blog.onedayxyy.cn/https://www.kuailemao.xyz/
5、家庭相册filesite-iohttps://wiki.onedayxyy.cn/docs/filesite.io-photot-install-fullhttps://photo.onedayxyy.cn/https://demo.jialuoma.cn/

https://wiki.onedayxyy.cn/docs/OpenSource

image-20240811063938529

  • typora皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20240518165037517

  • 起始页

https://onedayxyy.cn/

image-20240814230557697

  • 知识库

https://wiki.onedayxyy.cn/

image-20240814230415388

  • 博客

https://blog.onedayxyy.cn/

image-20240803162010305

  • 家庭相册

https://photo.onedayxyy.cn/

image-20240814230625430

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

docusaurustypora阅读需 17 分钟

一个优秀的自托管的监控工具-Uptime Kuma

image-20241010092951172

目录

[toc]

版权

本文由 简悦 SimpRead 转码, 原文地址 https://mp.weixin.qq.com/s/4UUMRvXo3_uDvi4EH6B2iw   

简介

Uptime Kuma 是什么

大家好,我是牛皮糖!最近看到一款简单又强大的工具来监控我的服务器状态。最近,我在 GitHub 上发现了一个宝藏项目——Uptime Kuma,它已经获得了超过 55k 的星标,可见其受欢迎程度。

Uptime Kuma 是一个自托管的监控工具,它允许你轻松地监控你的服务器、网站、网络服务等。它简单易用,界面友好,而且完全开源,你可以自由地部署在自己的服务器上。

  • 监控 HTTP(s) / TCP / HTTP(s) 关键字 / HTTP(s) Json 查询 / Ping / DNS 记录 / 推送 / Steam 游戏服务器 / Docker 容器的正常运行时间

  • 精美、反应灵敏、快速的 UI/UX

  • 通过 Telegram、Discord、Gotify、Slack、Pushover、电子邮件 (SMTP) 和 90 多种通知服务发送通知

  • 20 秒间隔

  • 多语言

  • 多个状态页面

  • 将状态页面映射到特定域

  • Ping 图表

  • 证书信息

  • 代理支持

  • 2FA 支持

1. 简单易用:Uptime Kuma 提供了直观的界面,即使是没有技术背景的用户也能轻松上手。

2. 功能强大:它支持多种监控类型,包括 HTTP/HTTPS、TCP、Ping、Port 等,几乎涵盖了所有常见的监控需求。

3. 自托管:你可以将 Uptime Kuma 部署在自己的服务器上,完全控制你的数据。

4. 开源:作为一个开源项目,Uptime Kuma 拥有活跃的社区支持,你可以参与到项目的开发中,或者根据需要进行定制。

项目地址

https://github.com/louislam/uptime-kuma

image-20241010222927949

部署

  • docker部署
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

image-20241010103554483

  • 登录服务,创建账户及密码

image-20241010103728066

image-20241010103742632


注意

警告

不支持NFS(网络文件系统)等文件系统。请映射到本地目录或卷。

信息

如果您想要限制对本地主机的暴露(而不向其他用户公开端口或使用反向代理),您可以像这样公开端口:

docker run -d --restart=always -p 127.0.0.1:3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

使用

添加监控项

image-20241010105254628

反向代理

官方内容

https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy

image-20241010121046187

为了安全地将 Uptime Kuma 暴露给网络,建议将其代理到传统的网络服务器(如 nginx 或 Apache)后面。以下是一些您可以使用的示例配置。

与其他 Web 应用不同,Uptime Kuma 基于 WebSocket。您需要另外两个标头**“升级”“连接”**才能在反向代理上接受 WebSocket。

信息

笔记

Uptime Kuma不支持诸如 之类的子目录http://example.com/uptimekuma。请准备一个域或子域来执行此操作。此处列出了生成子目录状态页面的黑客方法。此问题在https://github.com/louislam/uptime-kuma/issues/147中进行了跟踪

提示

提示

建议在您的 Web 服务器上使用 SSL(HTTPS),以避免在公共网络上遭受 MiTM 攻击。如果使用 caddy,这些证书将自动生成和更新。

如果使用 Apache 或 NGINX,建议使用 CertBot 免费管理 SSL,它使用 Let's Encrypt 获取证书并保持更新。您也可以使用自己的证书并按上图放置它们。如果使用 CertBot,请使用“不使用 SSL”设置,然后在其上运行 certbot,它将自动配置自动 HTTPS 重定向。

Nginx:

使用 SSL:

server {
listen 443 ssl http2;
# Remove '#' in the next line to enable IPv6
# listen [::]:443 ssl http2;
server_name sub.domain.com;
ssl_certificate /path/to/ssl/cert/crt;
ssl_certificate_key /path/to/ssl/key/key;
# *See "With SSL (Certbot)" below for details on automating ssl certificates

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

不使用 SSL:

server  {
listen 80;
# Remove '#' in the next line to enable IPv6
# listen [::]:80;
server_name sub.domain.com;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}

使用 SSL (Certbot):

server {
# If you don't have one yet, you can set up a subdomain with your domain registrar (e.g. Namecheap)
# Just create a new host record with type='A Record', host='<subdomain>', value='<ip_address>'.

server_name your_subdomain.your_domain.your_tld;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

# Once that's completed, you can run
# sudo apt install python3-certbot-nginx
# sudo certbot --nginx -d your_domain -d your_subdomain.your_domain -d www.your_domain
# And Certbot will auto-populate this nginx .conf file for you, while also renewing your certificates automatically in the future.

自己配置

  • 配置dns解析

image-20241010122259410

  • nginx配置

vim /etc/nginx/conf.d/monitor.conf

server {
listen 443 ssl http2;
# Remove '#' in the next line to enable IPv6
# listen [::]:443 ssl http2;
server_name monitor.onedayxyy.cn;
ssl_certificate "cert/fullchain1.pem";
ssl_certificate_key "cert/privkey1.pem";
# *See "With SSL (Certbot)" below for details on automating ssl certificates

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

重启nginx:

nginx -s reload

  • 测试效果

https://monitor.onedayxyy.cn/

image-20241010123325720

  • 问题

uptime-kuma服务我已经部署起来了,但是如何把这个监控面板集成到自己网站,其他任何用户直接使用一个链接就能查看,而不需要登录

创建新的状态页面:

image-20241010223537438

image-20241010223611492

然后使用次链接打开即可使用监控服务了:

https://monitor.onedayxyy.cn/status/monitor

image-20241010223705376

完美。

将次链接集成到自己网站即可。

image-20241010223738946

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

QQ群

《玩转Typora+Docusuaurus+起始页》交流群:(欢迎小伙伴一起探讨有趣的IT技术,来完成一些漂亮的项目)

开源项目:

项目名称我的文档我的demo作者demo
1、玩转Typorahttps://wiki.onedayxyy.cn/docs/typorahttps://wiki.onedayxyy.cn/docs/typorahttps://typoraio.cn/#
2、玩转Docusaurushttps://wiki.onedayxyy.cn/docs/mogai-docusaurushttps://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页home3.0https://wiki.onedayxyy.cn/docs/home3.0https://onedayxyy.cn/https://github.com/hsBUPT/hsBUPT.github.io
4、家庭相册filesite-iohttps://wiki.onedayxyy.cn/docs/filesite.io-photot-install-fullhttps://photo.onedayxyy.cn/https://demo.jialuoma.cn/

https://wiki.onedayxyy.cn/docs/OpenSource

image-20241007221810896

  • typora皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20241007221846691

  • 起始页

https://onedayxyy.cn/

image-20240814230557697

  • 知识库/博客

https://wiki.onedayxyy.cn/

  • 个人相册

https://photo.onedayxyy.cn/

image-20241007221951254

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

Uptime Kuma阅读需 6 分钟

Typora 插件

image-20240911120905085

image-20240909165759311

目录

[toc]

版权

此项目版权归属如下作者,具体信息请访问原作者仓库,这里只做文档记录,感谢大佬开源的 typora 插件。

https://github.com/obgnail/typora_plugin

image-20240909164445227

环境

个人当前测试环境:

win10

typora正式版 v1.9.5

typora_plugin 1.10.28

源码位置:(具体代码请访问作者原仓库,这里只做备份)

2024.9.10-typora软件和插件

image-20240910073231360

插件特色

自带标号

后来发现这个自动加标号功能,还是很好用的哦!!!

image-20240909164034251

具有上校小箭头功能

image-20240910072524130

具有图片查看功能

image-20240910072604539

支持同一个窗口打开多标签页功能

image-20240910072725187

优化高亮搜索功能

image-20240910072834708

功能汇总

序号插件功能默认启用
1window_tab标签页管理
2search_multi全局多关键字搜索
3multi_highlighter多关键字高亮
4collapse_paragraph章节折叠
5collapse_list列表折叠×
6collapse_table表格折叠×
7md_padding中英文混排优化
8slash_commands斜杠命令
9templater文件模板
10resourceOperation一键清除无用图片
11fence_enhance一键复制、折叠、格式化代码
12toc在右侧生成大纲目录
13commander命令行环境
14mindmap根据文档大纲一键生成思维导图
15toolbar多功能搜索
16right_click_menu右键菜单统一管理、调用插件
17pie_menu圆盘菜单×
18preferences启停插件
19markmap提供 markmap 组件支持
20echarts提供 echarts 组件支持
21chart提供 chartjs 组件支持
22abc提供 abcjs 组件支持
23calendar提供 tui.calendar 组件支持
24wavedrom提供 wavedrom 组件支持
25marp提供 marp 组件支持
26callouts提供 callouts 支持
27text_stylize文字风格化
28read_only只读模式
29blur模糊模式
30kanban看板
31timeline时间线
32chat聊天
33file_counter显示目录下的文件数
34outline以表格、图片、代码块形式的大纲
35auto_number章节、表格、图片、代码块等自动编号
36imageReviewer图片查看器
37chineseSymbolAutoPairer中文符号自动补全
38datatables表格增强(搜索、过滤、分页、排序等)×
39resize_table调整表格行高列宽
40resize_image调整图片显示大小
41export_enhance导出 html 时避免图片丢失
42go_top一键到文章顶部、底部
43reopenClosedFiles打开上次退出 Typora 时尚未关闭的标签页×
44truncate_text暂时隐藏内容,提高大文件渲染性能×
45markdownLintmarkdown 格式规范检测
46darkMode夜间模式
47noImageMode无图模式
48pluginUpdater一键升级插件
49extractRangeToNewFile提取选区文字到新文件
50fullPathCopy复制标题路径
51autoTrailingWhiteSpace为文档添加结尾空格×
52redirectLocalRootUrl重定向本地资源根目录×
53blockSideBySide并列显示活动块×
54scrollBookmarker书签管理器
55openInTotalCommander在 total commander 打开×
56bingSpeech必应朗读×
57cipher加密文件
58ripgrep使用 ripgrep 搜索文件×
59article_uploader一键上传博客到支持的所有平台×
60help用户帮助
61custom开放平台,用户自定义插件(高级)
62hotkeyHub快捷键注册中心(高级)
63quickButton于右下角添加功能按钮(高级)
64json_rpc外部操纵 Typora(高级)×
65old_window_tab标签页管理(已废弃)×

尊重用户的一切选择。本项目的任何插件、任何功能皆可永久启用 / 禁用。

如果各位有其他的需求,或发现 BUG,欢迎 提 issue,欢迎 PR。如果能给我颗 star ⭐ 就更好了 :)

使用方法

方法一(自动)

此方法支持 Windows、Linux 平台。

  1. 下载 插件源码的压缩包,并将其解压

  2. 进入 Typora 安装路径,找到包含 window.html 的文件夹 A(正式版为 Typora/resources/window.html,免费版为 Typora/resources/app/window.html

  3. 将解压后的 plugin 文件夹粘贴进文件夹 A 下(参考方法二的图片)

  4. 进入文件夹 A/plugin/bin/

    • 如果你是 Windows 系统,双击运行 install_windows_amd_x64.exe,如果看到下图,说明安装成功

    • 如果你是 Linux 系统,以管理员运行 install_linux.sh,如果看到下图,说明安装成功

  5. 验证:重启 Typora,在正文区域点击鼠标右键,弹出右键菜单栏,如果能看到 常用插件 栏目,说明一切顺利

WindowsLinux
步骤 4install_windowsinstall_linux

附加说明:

  • 除了 install_windows_amd_x64.exe ,您也可以通过执行同目录下的 install_windows.ps1 安装插件。
  • 每个插件皆有配置选项。开发者鼓励您修改配置,以符合自身需求。配置文件夹位于 A/plugin/global/settings/

方法二(手动)

此方法支持 Windows、Linux 平台。

  1. 下载 插件源码的压缩包,并将其解压

  2. 进入 Typora 安装路径,找到包含 window.html 的文件夹 A(正式版的路径为 Typora/resources/window.html,免费版的路径为 Typora/resources/app/window.html

  3. 将解压后的 plugin 文件夹粘贴进文件夹 A 下

  4. 根据文件夹 A 下是否含有 appsrc 目录判断 Typora 是否为新版本,有则新版本,无则旧版本

  5. 打开文件 A/window.html

    • 若是新版本:搜索文件内容 <script src="./appsrc/window/frame.js" defer="defer"></script>

    • 若是旧版本:搜索文件内容 <script src="./app/window/frame.js" defer="defer"></script>

    在上述搜索内容的 后面 加入 <script src="./plugin/index.js" defer="defer"></script>

  6. 验证:重启 Typora,在正文区域点击鼠标右键,弹出右键菜单栏,如果能看到 常用插件 栏目,说明一切顺利

如果您安装失败,大概率是权限问题导致的。请给上述的 plugin 文件夹授权。

新版本旧版本
步骤 3new_typora_dirwhere_is_windowhtml
步骤 5new_typora_framejswhere_is_framejs

方法三(自动)

目前此方法仅限 archlinux 平台,aur 见 aur/typora-plugin

yay -S typora-plugin

实现原理

前端

window.html 是 Typora 的初始文件,可以写入一个 <script> 标签实现功能,就和 Tampermonkey 脚本一样。

后端

  1. 因为 Typora 暴露了 reqnode 函数(require 的别名),所以可以使用 CommonJS 的 reqnode('path') 导入 Node.js 的 path 库,其他库同理。
  2. 因为 Typora 使用了 electron 不太安全的 executeJavaScript 功能,所以可以用此注入 JS 代码,从而劫持后端关键对象,进而实现 electron 的后端功能注入。理论上劫持了 electron 对象,你甚至可以在 Typora 里斗地主。
// 控制台输入下面命令:

// 让第二个窗口打印消息
JSBridge.invoke("executeJavaScript", 2, `console.log("i am logging")`);

// 让所有窗口打印消息
ClientCommand.execForAll(`console.log("i am logging")`);

// 获取到本窗口的 BrowserWindow 对象
global.reqnode('electron').remote.require('electron').BrowserWindow;

// 获取到所有窗口的 BrowserWindow 对象
ClientCommand.execForAll(`console.log(global.reqnode('electron').remote.require('electron').BrowserWindow)`);

// 让窗口 1 执行语句_myValue = 123,然后将变量_myValue 传给窗口 2
JSBridge.invoke('executeJavaScript', 1, "_myValue=123; JSBridge.invoke('executeJavaScript', 2, `console.log(${_myValue})`)");

Q&A

我的 Typora 版本能用吗?

所有插件都在 0.9.98 版本(最后一个免费版本)和最新版本测试过。本项目理论上支持所有 Typora 版本,但是 Typora 在 0.9.98 版本以后功能才稳定下来。0.9.98 版本以下,可能会因为缺少某些功能导致部分插件失效

插件会失效吗?

理论上能保持长时间有效,且我在维护中。

如何永久禁用/启用某些插件?

右键菜单 -> 少用插件 -> 启停插件。

如何修改插件配置?

目前整个项目包含 600+ 配置选项,可以比较完整的定义各个插件的行为。

这些配置全部位于 ./plugin/global/settings/ 目录中。修改配置的方法请阅读该目录下的 请读我.md

image-20240910070206160

image-20240910070157044

如何升级插件?

右键菜单 -> 常用插件 -> 二级插件 -> 升级插件。

我不想用了,如何卸载插件系统?

右键菜单 -> 少用插件 -> 帮助 -> 卸载插件。

支持 Typora for Mac 吗?

没有 Mac,故没做测试。

插件使用

所有的插件都提供了四种使用方法:

  • 键盘党:
    • 键入 ctrl+j,在输入框键入 plu+空格+插件名称 调出插件列表(详见 toolbar 插件)
    • 快捷键(详见 hotkeyHub 插件)
  • 鼠标党:
    • 在正文区域右键,在弹出的右键菜单中直接调用(详见 right_click_menu 插件)
    • 快捷按钮(详见 quickButton 插件)

callouts: 提供 callouts 支持

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Callouts

callouts

数量、类型、颜色、icon 皆可自己定义,请前往配置文件修改:

[[callouts.config.list]]
type = "note"
background_color = "#e1d1eb"
left_line_color = "#6a1b9a"
icon = "\\f040"

window_tab:标签页管理

  • 切换标签:标签页处 Ctrl+滚轮滚动、ctrl+shift+tab、ctrl+tab、ctrl+PgUp、ctrl+PgDn
  • 关闭标签:ctrl+w、鼠标中键
  • 新窗口打开:ctrl+单击标签
  • 排序标签:拖拽
  • 弹出标签的菜单选项:右键单击标签页

new_window_tab

search_multi:全局多关键字搜索

功能:比如搜索同时包含 golanginstall生命周期 三个关键字的文件。

搜索关键字使用空格分隔,双引号包裹视为词组。eg:golang install 搜索同时包含 golang 和 install 的文件;"golang install" 搜索包含 golang install 的文件

  • 打开搜索框:ctrl+shift+P
  • 关闭搜索框:光标定位到输入框,键入 esc
  • 搜索:enter
  • 选中:ArrowUp,ArrowDown
  • 当前窗口打开:click、ctrl+enter
  • 新窗口打开:ctrl+click、ctrl+shift+enter
  • 移动位置:ctrl+拖动输入框

search_mutli

multi_highlighter:多关键字高亮

功能:搜索并高亮关键字,并提供一键定位功能(左键下一个,右键上一个)

关键字使用空格分隔,双引号包裹视为词组。

  • 打开搜索框:ctrl+shift+H
  • 关闭搜索框:光标定位到输入框,键入 esc
  • 搜索:enter
  • 移动位置:ctrl+拖动输入框
  • 定位到下一个关键字:左键色块
  • 定位到上一个关键字:右键色块

multi_highlighter

注意:当你鼠标点击文档内容时,会自动退出高亮状态。这是 Typora 本身的限制导致的。你可以试试 Typora 自身的 ctrl+F 搜索,在搜索关键字后,点击任意地方原先高亮的地方也会消失。

collapse_paragraph:章节折叠

功能:折叠 / 展开 章节下所有文本。支持折叠的标签:h1~h6。

  • 折叠/展开单个章节:ctrl+click
  • 折叠/展开父章节下所有同级的章节:ctrl+alt+click
  • 折叠/展开所有同级的章节:ctrl+shift+alt+click

collapse_paragraph

collapse_list:列表折叠

功能:折叠 / 展开 无序列表、有序列表、任务列表。

collapse_table:表格折叠

功能:折叠 / 展开 表格。

md_padding:中英文混排优化

功能:中英文混排时,中文与英文之间、中文与数字之间添加空格。

快捷键:ctrl+shift+B

md_padding

有些片段希望保持原状,这时可以用 md-padding-ignore 标签包裹起来。

下面是一段不需要格式化的文本
<!--md-padding-ignore-begin-->
a*b=c, b>1 => a<c
<!--md-padding-ignore-end-->
现在开始又可以格式化了。

slash_commands:斜杠命令

功能:类似于 notion 的 slash command。

支持用户自定义命令,请前往配置文件修改:

[slash_commands]
COMMANDS = [
{ enable = true, type = "snippet", icon = "🧰", hint = "", keyword = "snippet", callback = "thisIsTestSnippet" },
{ enable = true, type = "command", icon = "🧾", hint = "二级标题", keyword = "h2", callback = "() => File.editor.stylize.changeBlock('header2', undefined, true)" },
{ enable = true, type = "command", icon = "🧰", hint = "置底部", keyword = "jumpBottom", callback = "() => File.editor.selection.jumpBottom()" },
...
]

slash_commands

templater:文件模板功能

功能:类似于 obsidian 的文件模板功能,根据模板快速创建文件。

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> 文件模板。

模板列表请前往配置文件修改。

templater

resourceOperation:一键清除无用图片

功能:资源管理,清除无用图片

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> 资源管理

fence_enhance:一键复制,折叠,格式化代码

fence_enhance

toc:在右侧生成大纲目录

功能:Typora 侧边栏的【文件】和【大纲】不能同时显示,为了解决此问题,此插件会在右侧新增一个【大纲】。

使用方式:

  • 方式一:常用插件 -> 二级插件 -> 大纲目录
  • 方式二:右键点击侧边栏的【大纲】按钮

commander:命令行环境

功能:和 total commander 的命令行一样(快捷键也一样),一个快速执行命令的工具,并提供少量交互。

  • 弹出执行框:ctrl+G
  • 关闭执行框:esc
  • 移动位置:ctrl+拖动输入框

支持 shell:

  • cmd/bash:windows 或 Mac 的默认终端
  • powershell:微软的傻儿子 : D
  • git bash:使用此终端前请保证安装了 git bash 并且加入环境变量
  • wsl:使用此终端前请保证安装了 wsl2,并且加入环境变量

内置环境变量:

  • $f:当前文件路径
  • $d:当前文件的所属目录
  • $m:当前挂载的根目录

支持内建命令,方便快速调用。个人可按需自定义配置文件里的 BUILTIN 选项。

# 默认的内建命令
# 目前支持4个参数:
# 1. name: 展示的名称(不可重复)
# 2. shell: cmd/bash、powershell、gitbash、wsl
# 3. hotkey: 快捷键(可选)
# 4. cmd: 执行的命令
BUILTIN = [
{ name = "", shell = "cmd/bash", cmd = "" },
{ name = "Explorer", shell = "powershell", hotkey = "ctrl+alt+e", cmd = "explorer $d" },
{ name = "Vscode", shell = "cmd/bash", cmd = "code $f" },
{ name = "WT", shell = "cmd/bash", cmd = "cd $d && wt" },
{ name = "GitCommit", shell = "cmd/bash", cmd = 'cd $m && git add . && git commit -m "update"' },
]

commander

mindmap:根据文档大纲一键生成思维导图

功能:根据文档大纲一键生成 mermaid 思维导图

使用方式:右键菜单 -> 常用插件 -> 思维导图

mindmap

markmap:提供 markmap 支持

使用方式:

  • 方式一:右键菜单 -> 少用插件 -> markmap
  • 方式二:直接点击右下角的 markmap 按钮

markmap

toolbar:多功能搜索

功能:类似于 vscode 的 ctrl+shift+p 功能

使用方式:

  • 方式一:右键菜单 -> 少用插件 -> 多功能搜索
  • 方式二:快捷键 ctrl+j

支持搜索:

  • his:最新打开过的文件
  • plu:插件
  • tab:打开的标签页
  • ops:常用操作
  • out:文档大纲
  • mode:切换文件模式
  • theme:临时切换主题
  • func:功能列表
  • all:混合查找(所有项目都混在一起查找)

键入内容说明:

  • 键入内容 = 搜索工具名称 + 空格 + 搜索内容
  • 支持 交集查询差集查询,并且可以随意组合(类似于 google 的正负向查询)

举例:

  • his node learn:查找最近打开的文件,要求文件标题【包含 node 和 learn 两个关键字】
  • plu multi -search:查找插件,要求插件名【包含 multi 关键字,但是不包含 search 关键字】
  • tab -messing:查找所有打开的标签页,要求标签页名称【不包含 messing 关键字】
  • his close -win -mark 标签:查找最近打开的文件,要求文件标题【包含 close、标签,不包含 win、mark】

toolbar

right_click_menu:右键菜单统一管理插件

所有插件都支持在右键菜单中直接调用。鼠标党可以将右键菜单作为所有插件的主要调用方式。

可以通过修改配置文件自定义右键菜单:

#  每一个MENUS对应一个一级菜单,允许无限添加一级菜单,允许重复添加同一个插件
# NAME: 一级菜单的名称
# LIST: 二级菜单的插件列表(使用"---"代表在页面上插入一个divider,以作分隔)
[[right_click_menu.MENUS]]
NAME = "少用插件"
LIST = [
"window_tab", "resize_image", "resize_table", "fence_enhance", "export_enhance",
"datatables", "markmap", "auto_number", "truncate_text", "right_click_menu",
"---",
"blur", "go_top", "text_stylize", "toolbar",
"---",
"file_counter", "test",
]
[[right_click_menu.MENUS]]
NAME = "常用插件"
LIST = [
"commander", "mindmap", "collapse_paragraph", "custom",
"---",
"search_multi", "multi_highlighter", "outline", "md_padding", "read_only",
]

pie_menu:圆盘菜单

使用方式:

  • 弹出圆盘菜单:Ctrl+鼠标右键
  • 旋转圆盘菜单:鼠标中键
  • 固定圆盘菜单,圆盘不再自动消失:鼠标左键圆心
  • 展开圆盘菜单,圆盘不再自动收缩:鼠标右键圆心

preferences:启停插件

使用方式:右键菜单 -> 少用插件 -> 启停插件

echarts:提供 echarts 支持

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Echarts

echats

chart:提供 chartjs 支持

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Chart

chart

abc:提供 abc 组件支持

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> ABC

abcjs

calendar: 提供 tui.calendar 组件支持

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Calendar

calendar

wavedrom:提供 wavedrom 组件支持

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Wavedrom

wavedrom

marp:提供 marp 组件支持

功能:使用 markdown 做 PPT。

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Marp

kanban:看板

拓展代码语法,添加看板功能。

kanban

timeline:时间线

拓展代码语法,添加时间线功能。

timeline

chat:聊天

拓展代码语法,添加聊天功能。

chat

text_stylize:文字风格化

功能:将文字转为 html 格式,改变文字样式。

使用方式:右键菜单 -> 少用插件 -> 文字风格化。

text_stylize

read_only:只读模式

功能:只读模式下文档不可编辑(开启后,右下角数字统计区域会出现 ReadOnly 字样)

快捷键:ctrl+shift+R

blur:模糊模式

功能:开启后,只有当前聚焦的组件可见,其余模糊。可以用于防偷窥。

使用方式:右键菜单 -> 少用插件 -> 模糊模式

此插件只能于正式版 Typora 使用。

file_counter:显示文件数

file_count

outline:以表格、图片、代码块形式的大纲

使用方式:右键菜单 -> 常用插件 -> 类别大纲

outline

auto_number:自动编号

auto_number

支持编号的组件(皆可临时或永久打开/关闭):

  1. 标题
  2. 大纲
  3. TOC
  4. 表格
  5. 图片
  6. 代码块

注意:通过注入 CSS 实现此功能,有可能会与你使用的 theme 冲突。

和其他使用 Theme CSS 的实现方式不同,此插件通过修改内置函数,完美解决导出 PDF 后侧边栏没有编号的问题 :)

根据 Markdown 最佳实践,一篇文档应该 有且仅有 一个 h1,故此插件从 h2 开始编号。

imageReviewer:图片查看器

功能:一站式图片查看,并且提供简单图片编辑。

使用方式:

  • 方式一:点击右下角【查看图片】按钮
  • 方式二:右键菜单 -> 常用插件 -> 二级插件 -> 图片查看器

image-reviewer

chineseSymbolAutoPairer:中文符号自动补全

功能:输入 《 【 ( ‘ “ 「 符号时自动补全。

datatables:表格增强

功能:增强表格。提供搜索、过滤、分页、排序等功能。

使用方式:将光标定位在表格 -> 右键菜单 -> 少用插件 -> 表格增强。

datatables

其实此插件可以是提供开放能力的,实现类似于 obsidian 的 dataview 插件的功能。不过暂时不做,原因:

  1. 私以为 Typora 的用户并不需要大量用到此功能。
  2. 需要用户熟悉 javascript 以及 dataTables.js 的 API。成本太高。
  3. 需要编写大量的配套代码。

resize_table:拖动调整表格大小

功能:ctrl+鼠标拖动:修改表格的行高列宽。

resize_table

resize_image:调整图片大小

功能:ctrl+鼠标滚轮滚动:调整图片大小。

resize-image

export_enhance:导出增强

功能:导出 html 时,将图片转为 base64,避免图片丢失。

go_top: 一键到顶

功能:在右下角添加一个一键到顶的按钮。

reopenClosedFiles:打开上次退出 Typora 时尚未关闭的标签页

功能:自动 或者 通过快捷键打开上一次退出 Typora 时尚未关闭的标签页

此插件仅在 window_tab 启用时生效。

markdownLint:markdown 格式规范检测

使用方式:

  • 方式一:右键菜单 -> 常用插件 -> 二级插件 -> 格式规范检测
  • 方式二:点击右上角的小方块

darkMode:夜间模式

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> 夜间模式

noImageMode:无图模式

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> 无图模式

pluginUpdater:一键升级插件

使用方式:右键菜单 -> 常用插件 -> 二级插件 -> 升级插件。

众所周知,有些用户并不能裸连 github 下载最新插件,故提供了设置代理功能(默认为系统代理)

extractRangeToNewFile:提取选区文字到新文件

使用方式:选中一些文字 -> 右键菜单 -> 常用插件 -> 二级插件 -> 提取选区文字到新文件。

fullPathCopy:复制标题路径

使用方式:将光标定位到标题上 -> 右键菜单 -> 常用插件 -> 二级插件 -> 复制标题路径。

就会生成如下文字,并复制到剪切板:

README.md\Typora Plugin 一级标题\插件使用说明 二级标题\fullPathCopy:复制标题路径 三级标题

autoTrailingWhiteSpace:为文档添加结尾空格

使用方式:将光标定位到标题上 -> 右键菜单 -> 常用插件 -> 二级插件 -> 为文档添加结尾空格。

根据严格的 Markdown 换行语法,需要在结尾添加两个空格以表示换行。此工具能一键添加空格。

redirectLocalRootUrl:重定向本地资源根目录

功能:如果你主要使用 obsidian 或 joplin 来管理文件,偶尔用 typora 打开文件。就会遇到一个问题:obsidian 或 joplin 都是将本地资源放在同一个目录中(vault),这导致在 typora 打开后文件由于路径错误,无法访问本地资源。此插件就是为了解决此问题,重定向本地资源根目录。

此插件默认关闭,需手动开启。

使用此插件前需要设置如下配置选项:

# 资源根目录,支持绝对路径(如D:\\tmp\\img)和相对路径(如.\\assets),填写时请注意转义反斜线(若为空,则此插件失效)
root = "./"
# 过滤的正则表达式:只有文件路径命中filter_regexp匹配的文件才使用此插件(若为空,则全部文件都使用此插件)
filter_regexp = ""

blockSideBySide:并列显示活动块

功能:活动块默认是上下显示,改为并列显示。

blockSideBySide

注意:通过注入 CSS 实现此功能,有可能会与你使用的 theme 冲突。

openInTotalCommander:在 total commander 打开当前文件

使用方式:将光标定位到标题上 -> 右键菜单 -> 常用插件 -> 二级插件 -> TC 打开。

使用此插件前,需要您在配置手动修改 TC 的安装路径。

此插件默认关闭,需手动开启。

scrollBookmarker: 书签管理器

使用方式:

  1. 使用 alt+click 正文内容,打上书签。
  2. 接着调出书签管理器,点击上面的书签,即可跳转到书签。

调出书签管理器:

  • 方式一:右键菜单 -> 常用插件 -> 二级插件 -> 书签管理器
  • 方式二:点击右下角的【书签管理器】按钮

bingSpeech:必应朗读

使用方式:鼠标框选一小段文字 -> 右键菜单 -> 常用插件 -> 二级插件 -> 必应朗读

实现原理:采用爬虫技术,盗取必应翻译的播放语音功能

注意:功能完全依赖外部环境,因此不能保证成功。开发者一时兴起做的,仅作娱乐使用。

help: 用户帮助

使用方式:右键菜单 -> 少用插件 -> 帮助。

cipher:加密文件

使用方式:右键菜单 -> 少用插件 -> 加密文件。

truncate_text:暂时隐藏内容,提高大文件渲染性能

功能:大文件在 Typora 的渲染性能很糟糕,用此插件暂时隐藏内容(只是隐藏显示,不修改文件),提高渲染性能。也可以用于防偷窥。

使用方式:右键菜单 -> 少用插件 -> 文本截断。

包含的功能如下:

  • 隐藏最前面:隐藏最前面的文本段,只留下最后 80 段。
  • 重新显示:重新显示之前隐藏的所有文本段。
  • 根据当前可视范围显示:根据当前可视范围显示文本段。

原理:通过设置 DOM 元素的 display 样式为 none 来隐藏元素,让元素不占用渲染树中的位置,对隐藏的元素操作不会引发其他元素的重排。

collapse_paragraph (章节折叠功能)可以很好的替代此插件,建议使用 collapse_paragraph。

ripgrep:使用 ripgrep 搜索文件(待研究)

Typora 自带 ripgrep。此插件支持使用内建的 ripgrep 进行文件搜索。

使用此插件需要您熟悉 ripgrep 工具。此插件默认关闭,需手动开启。

hotkeyHub:快捷键注册中心(高级)(待研究)

此插件是高级插件,仅对有 javascript 基础的用户开放。

功能:以声明的形式,为【任意插件系统函数】或【任意自定义函数】绑定快捷键。

具体使用请参考 hotkey.default.toml

quickButton:于右下角添加功能按钮(高级)(待研究)

此插件是高级插件,仅对有 javascript 基础的用户开放。

功能和 hotkeyHub 类似,以声明的形式,为【任意插件系统函数】设置快捷按钮。

custom:开放平台,用户自定义插件(高级)(待研究)

此插件是高级插件,仅对有 javascript 基础的用户开放。

功能:提供开放能力,支持用户自己写插件。

具体使用请参考 请读我.md

json_rpc:外部操纵 Typora(高级)(暂不考虑使用)

功能:将包括 typora-plugin 所有功能在内的一切能力通过 json-rpc 的形式暴露出去,以供外部操纵 Typora。

具体使用请参考 请读我.md

此插件是高级插件,仅对开发人员开放。

开启此插件后,外部将拥有 node、browser 两套环境,能完全控制电脑,因此如果您不是开发人员,请勿开启此插件。

article_uploader:上传博客文章(很少使用)

功能:用户点击或者使用快捷键触发当前文章的自动发布功能,程序根据用户配置自动发布博客文章到各大平台

具体使用参考: 请读我.md。以上传到 CSDN 为例,Gif 图如下:

CSDN 成功演示

代办

【重要】基于自己之前one主题更新一款兼容typora_plugin的主题

注意

因为当前的one主题在typora_plugin下,有些元素显示会有问题。。。

后续设置在自己的模板

image-20240910070658130

---
title: typora-md
id: typora-md
slug: /typora-md
tags: [docusaurus]
keywords: [docs,docusaurus]
description: typora模板
image: https://onedayxyy.cn/images/image-20240827125241681.png
last_update:
date: 2024-09-08
author: One
---
## typora-md

图片自动编号功能丢失(需要修复自己主题)

image-20240909171757471


默认 github 是没问题的:

标号字体备注为啥是在右侧(需要修复自己主题)

image-20240909171943359


默认 githug 主题是没问题的:。。。

image-20240910064236085

四级-6 级标题出现 Bug(需要修复自己主题)

image-20240909172243994

image-20240909172256345

image-20240909172303476


自己测试了发现:

默认 github 是没这个问题的:。。。

image-20240910064142618

大纲目录不如默认目录好用

image-20240910071122277

用户如何自定义插件(js)

image-20240910073517755

已解决

右下角背景图片和功能键重合了(已解决)

image-20240909173118236

通过把图片设置在左侧进行解决。

小众软件推荐

通过注入 js 代码,为 Typora 额外增加 4 个功能

第一次上榜小众软件,心情非常冲动。同时祝小众软件越办越好。

appinn

致谢

结语

本人并非前端开发,前端技术全靠 Google,JS/CSS 写的很烂。

本项目遵循 MIT 协议,请自由地享受。

如果对各位有用的话,欢迎 star⭐,欢迎推荐给你志同道合的朋友使用。

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240805214647028

🍀 知识库:

https://wiki.onedayxyy.cn/

🍀 博客:

http://blog.onedayxyy.cn/

image-20240804075845906

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm = 1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

QQ 群

玩转 Typora+Docusuaurus+起始页 交流群:(欢迎小伙伴一起探讨有趣的 IT 技术,来完成一些漂亮的项目)

我的开源项目:

项目名称我的文档我的 demo作者 demo
1、玩转 Typorahttps://wiki.onedayxyy.cn/docs/typorahttps://wiki.onedayxyy.cn/docs/typorahttps://typoraio.cn/#
2、玩转 Docusaurushttps://wiki.onedayxyy.cn/docs/mogai-docusaurushttps://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页 home3.0https://wiki.onedayxyy.cn/docs/home3.0https://onedayxyy.cn/https://github.com/hsBUPT/hsBUPT.github.io
4、全网最美博客-ruyu-bloghttps://wiki.onedayxyy.cn/docs/ruyu-blog-install-one-keyhttps://blog.onedayxyy.cn/https://www.kuailemao.xyz/
5、家庭相册 filesite-iohttps://wiki.onedayxyy.cn/docs/filesite.io-photot-install-fullhttps://photo.onedayxyy.cn/https://demo.jialuoma.cn/

https://wiki.onedayxyy.cn/docs/OpenSource

image-20240811063938529

  • typora 皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20240518165037517

  • 起始页

https://onedayxyy.cn/

image-20240814230557697

  • 知识库

https://wiki.onedayxyy.cn/

  • 博客

https://blog.onedayxyy.cn/

image-20240803162010305

  • 家庭相册

https://photo.onedayxyy.cn/

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

typora阅读需 25 分钟

实战:给自己docusaurus网站配置giscus评论服务-2024.8.30(测试成功)

image-20240830064436114

目录

[toc]

环境

2024年8月230日,已解决。

win10 Docusaurus version: 3.4.0 Node version: v20.12.1 pnpm 9.4.0 基于愧怍仓库

前言

推荐两种评论服务

Giscus:基于GitHub Discussions,对程序员相对友好,评论信息提示通过github邮箱发送。

Waline:需要搭建后端服务与数据库服务,提供评论与浏览量服务,可拓展性强。

waline

目前比较流行的博客评论系统还有 waline,它可以提供评论与浏览量服务,由于需要搭配后端服务与数据库服务,所以在配置方面会比 giscus 来的麻烦,但它无需 github Discussions,所以也是绝大多数博客作者的标配。

关于如何配置,参见官方 快速上手 | Waline

image-20240829123633186

简介

如果你有自己的个人博客网站,为了增加互动,评论功能是必不可少的。可以借助giscus这一工具,快速为您的博客添加评论功能,无需从零开始开发复杂的UI页面、设计数据库及搭建后端服务,轻松提升博客的互动性。

==为什么选择giscus== 在众多评论插件或服务中,giscus凭借其显著的优势脱颖而出,成为个人博客主们的理想之选:

  1. 免费且开源:作为一款基于GitHub Discussions的评论系统,giscus对个人用户完全免费,且遵循MIT开源许可协议,确保了使用的透明性和灵活性。

  2. 一键集成:giscus提供简洁易用的配置界面和丰富的文档支持,只需几步简单的设置,即可将评论功能无缝嵌入到您的博客中,大大节省了从头开发所需的时间和精力。

  3. 移植性强:无论您使用的是静态站点生成器(如Jekyll、Hugo、Hexo等)、CMS系统(如WordPress、Ghost等)还是自建网站,giscus都能轻松适应,确保评论功能在各种平台上的良好运行。

  4. 服务稳定可靠:依托于GitHub的强大基础设施,giscus享有高度的稳定性和安全性。用户评论数据存储在您的GitHub仓库中,既便于管理,也免去了自行维护数据库的困扰。

==giscus的工作原理与优势解析==

  1. 基于GitHub Discussions giscus的核心是利用GitHub Discussions作为评论的存储和交互平台。每篇博客文章对应一个GitHub Discussion话题,读者的评论即为该话题下的帖子。这种设计有如下优势:
  • 社区化讨论氛围:读者可以在同一话题下展开深入讨论,形成围绕博文内容的社区交流环境。
  • 用户身份认证:通过GitHub账户登录,简化了用户注册流程,同时增强了评论者的身份可信度。
  • 通知与回复管理:作者和评论者能接收到实时通知,方便追踪讨论动态并及时回应。所有回复操作均在GitHub界面完成,操作体验熟悉且流畅。
  1. 实时同步与定制化 giscus通过JavaScript SDK实时同步GitHub Discussions中的评论数据到您的博客页面,确保评论内容的即时更新。此外,giscus提供了丰富的定制选项:
  • 主题样式:可选择预设的主题颜色或自定义CSS,以匹配您博客的整体视觉风格。
  • 评论排序:支持按时间顺序、热度(点赞数)等规则展示评论。
  • 评论过滤:可根据需要启用或禁用评论的匿名发布、 reactions(表情反应)等功能。

image-20240829220846802

注意

之前的评论使用的是 gitalk,但是那个是基于 github issue 的,并且 issue 不能关闭,每次打开仓库的时候都会看到几十个 issue,特别不友好。

所以后面就考虑换成 giscus,由 GitHub Discussions 驱动的评论系统。首先要确保以下几点:

  1. 此仓库是公开的,否则访客将无法查看 discussion(并不需要一定是博客的项目,随便一个仓库都可以)。
  2. giscus app 已安装否则访客将无法评论和回应。
  3. Discussions 功能已在你的仓库中启用

本博客已经内置好评论组件 src/component/Comment,所以只需要在 docusaurus.config.ts 中设置 giscus 的配置即可。

<script src="https://giscus.app/client.js"
data-repo="OnlyOnexl/blog-kuizuo"
data-repo-id="R_kgDOMkmSPw"
data-category="General"
data-category-id="DIC_kwDOMkmSP84CiBhH"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="bottom"
data-theme="preferred_color_scheme"
data-lang="zh-CN"
crossorigin="anonymous"
async>
</script>

前提

首先你的拥有一个和我一样的漂亮docusaurus网站哦:

https://wiki.onedayxyy.cn/

image-20240830065957423

该网站的开源仓库如下:

https://gitee.com/onlyonexl/one-docusaurus

image-20240823122705480

0.提前创建一个公开仓库

https://github.com/OnlyOnexl/OneDocusComment

image-20240830065800050

1.安装giscus

访问地址:https://github.com/apps/giscus,可以对你的github进行giscus的安装。点击右侧的install按钮进行安装即可,安装完后显示的页面如下:

image-20240829215653880

2.选择仓库

你可以选择需要开启Discussions功能的仓库。点击上面步骤中Configure按钮,进入配置页面,选择你想要的组织用户:

image-20240829215743747

然后选择仓库,可以选择所有仓库,也可以单独选择:

image-20240829215804714

3.开启Discussions功能

进入对应的仓库,点击settings,找到Features,勾选

image-20240829215837059

4.配置giscus

访问地址https://giscus.app/zh-CN,进入配置页面

image-20240829215925803

5.使用giscus

配置完成后,配置页面底部会生成一段js代码,大致如下所示:

<script src="https://giscus.app/client.js"
data-repo="[在此输入仓库]"
data-repo-id="[在此输入仓库 ID]"
data-category="[在此输入分类名]"
data-category-id="[在此输入分类 ID]"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="bottom"
data-theme="preferred_color_scheme"
data-lang="zh-CN"
crossorigin="anonymous"
async>
</script>

把得到的脚本放入你的页面:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="giscus"></div>
<script src="https://giscus.app/client.js"
data-repo="替换成你的实际值"
data-repo-id="替换成你的实际值"
data-category="替换成你的实际值"
data-category-id="替换成你的实际值"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="bottom"
data-theme="noborder_light"
data-lang="zh-CN"
data-loading="lazy"
crossorigin="anonymous"
async>
</script>
</body>
</html>

页面中显示效果如下:

image-20240829220112278

你可以在你的仓库中进行验证:

image-20240829220136224

借助giscus,您可以在短时间内为个人博客添加一个功能完备、稳定可靠的评论系统,无需投入大量资源进行从头开发。让读者畅所欲言

6.自己本次细节

  • 在github创建一个专门用于自己docusaurus网站评论的公开库:

https://github.com/OnlyOnexl/OneDocusComment

image-20240829214742115

  • 配置细节

image-20240829220941397

<script src="https://giscus.app/client.js"
data-repo="OnlyOnexl/OneDocusComment"
data-repo-id="R_kgDOMqCExQ"
data-category="General"
data-category-id="DIC_kwDOMqCExc4CiCRL"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="top"
data-theme="preferred_color_scheme"
data-lang="zh-CN"
data-loading="lazy"
crossorigin="anonymous"
async>
</script>
  • 自己docus仓库配置:

由于我在 src/component/Comment 组件中做了配置合并,并且支持主题变化、国际化。因此,你只需要复制 data-repo, data-repo-id, data-categorydata-category-id 填写到 docusaurus.config.ts 中即可,以下是我的配置文件。

docusaurus.config.tsjavascript

giscus: {
repo: 'OnlyOnexl/OneDocusComment',
repoId: 'R_kgDOMqCExQ',
category: 'General',
categoryId: 'DIC_kwDOMqCExc4CiCRL',
theme: 'light',
darkTheme: 'dark',
}

切记一定要将上述数据替换成你的,如果不替换的话,评论的信息都将会在我的 Discussions 下。

image-20240829221422780

验证:

来到一篇博客最底部:

可以看到有评论界面:

使用自己github登录系统:

image-20240829221524062

进行评论:

image-20240829221633108

来到自己仓库看下:

image-20240829221719879

同时,收到邮箱提醒:

image-20240829221744738

image-20240829221814014

提交本次更改,直接在网站上测试:

xyy2

(完美)

image-20240829222820284

7.给docs也添加评论功能

docs 文章界面开启评论服务

现在只有 blog 文章下面有评论功能,如果 docs 界面也要开启评论功能的话,但由于 Docusaurus 的 bug 导致切换文档时,在未刷新网页的情况下 Giscus 有时获取的仍然是上一篇文章的评论,为解决这一问题需要做一些小修改,参考以下方法:

安装所需包

yarn add @giscus/react mitt

本次命令:

pnpm install @giscus/react mitt

image-20240830062046224

封装评论组件

报错的话不用理,只需确认评论功能是否正常即可

1.配置声明周期函数

在根目录下创建文件 src/clientModules/routeModules.ts

src/clientModules/routeModules.ts

import mitt from 'mitt';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';

const emitter = mitt();

if (ExecutionEnvironment.canUseDOM) {
window.emitter = emitter;
}

export function onRouteDidUpdate() {
if (ExecutionEnvironment.canUseDOM) {
setTimeout(() => {
window.emitter.emit('onRouteDidUpdate');
});
}
// https://github.com/facebook/docusaurus/issues/8278
}

image-20240830062149216

2.修改评论组件

直接复制并将原有的覆盖即可

src/components/comment/index.tsx

import {useColorMode} from '@docusaurus/theme-common';
import BrowserOnly from '@docusaurus/BrowserOnly';
import React, { forwardRef, useEffect, useState } from 'react';
import Giscus, { GiscusProps } from '@giscus/react';
import { useThemeConfig, ThemeConfig } from '@docusaurus/theme-common';

interface CustomThemeConfig extends ThemeConfig {
giscus: GiscusProps & { darkTheme: string };
}

export const Comment = forwardRef<HTMLDivElement>((_props, ref) => {
const themeConfig = useThemeConfig() as any;
const theme = useColorMode().colorMode === 'dark' ? 'dark' : 'light';
const { giscus } = useThemeConfig() as CustomThemeConfig;
const [routeDidUpdate, setRouteDidUpdate] = useState(false);

useEffect(() => {
function eventHandler(e) {
setRouteDidUpdate(true);
}

window.emitter.on('onRouteDidUpdate', eventHandler);

return () => {
window.emitter.off('onRouteDidUpdate', eventHandler);
};
}, []);

if (!routeDidUpdate) {
return null;
}

const options: GiscusProps = {
...(themeConfig.giscus as GiscusProps),
id: 'comments',
reactionsEnabled: '1',
emitMetadata: '0',
inputPosition: 'top',
theme,
};
return (
<BrowserOnly fallback={<div>Loading Comments...</div>}>
{() => <Giscus {...options} />}
</BrowserOnly>
);
});

export default Comment;

image-20240830062242813

3.安装 swizzling 文档页面对应组件

yarn run swizzle @docusaurus/theme-classic DocItem/Layout -- --eject --typescript

个人命令:

pnpm swizzle @docusaurus/theme-classic DocItem/Layout --eject --typescript

image-20240830062339891

image-20240830062350450

这里他会报一个警告,选择 yes 就行

image-20240830062359677

为什么会报警告呢?这是官方文档给的部分说明:

image-20240830062405821

完成后就会在根目录下生成如下文件

image-20240830062437003

这里需要进行一点修改,添加如下代码

点击查看更多
import React from 'react';
import clsx from 'clsx';
import { useWindowSize } from '@docusaurus/theme-common';
// @ts-ignore
import { useDoc } from '@docusaurus/theme-common/internal';
import DocItemPaginator from '@theme/DocItem/Paginator';
import DocVersionBanner from '@theme/DocVersionBanner';
import DocVersionBadge from '@theme/DocVersionBadge';
import DocItemFooter from '@theme/DocItem/Footer';
import DocItemTOCMobile from '@theme/DocItem/TOC/Mobile';
import DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop';
import DocItemContent from '@theme/DocItem/Content';
import DocBreadcrumbs from '@theme/DocBreadcrumbs';
import type { Props } from '@theme/DocItem/Layout';

import styles from './styles.module.css';
import Comment from '../../../components/Comment';

/**
* Decide if the toc should be rendered, on mobile or desktop viewports
*/
function useDocTOC() {
const { frontMatter, toc } = useDoc();
const windowSize = useWindowSize();

const hidden = frontMatter.hide_table_of_contents;
const canRender = !hidden && toc.length > 0;

const mobile = canRender ? <DocItemTOCMobile /> : undefined;

const desktop =
canRender && (windowSize === 'desktop' || windowSize === 'ssr') ? (
<DocItemTOCDesktop />
) : undefined;

return {
hidden,
mobile,
desktop
};
}

export default function DocItemLayout({ children }: Props): JSX.Element {
const docTOC = useDocTOC();
const { frontMatter } = useDoc();
const { hide_comment: hideComment } = frontMatter;

return (
<div className="row">
<div className={clsx('col', !docTOC.hidden && styles.docItemCol)}>
<DocVersionBanner />
<div className={styles.docItemContainer}>
<article>
<DocBreadcrumbs />
<DocVersionBadge />
{docTOC.mobile}
<DocItemContent>{children}</DocItemContent>
<DocItemFooter />
</article>
<DocItemPaginator />
</div>
{!hideComment && <Comment />}
</div>
{docTOC.desktop && <div className="col col--3">{docTOC.desktop}</div>}
</div>
);
}
  • 修改 docusaurus.config.js 文件
module.exports = {
themeConfig: {
giscus: {
repo: 'xxx',
repoId: 'xxx',
category: 'Announcements',
categoryId: 'xxx'
}
},
clientModules: [require.resolve('./src/clientModules/routeModules.ts')]
};

image-20240830063137298

完成以上步骤后即可以到你文档界面查看就可以了(Swizzling 后需要重新运行 Docusaurus ,不然是无法看到效果的)。 对于某些不想开启评论功能的文章,只需在前言中加入:hide_comment: true

验证

我们这里直接推送,然后验证doc的评论服务:

执行xyy2:

完美。

image-20240830064320976

参考与致谢

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240805214647028

🍀 知识库:

https://wiki.onedayxyy.cn/

🍀 博客:

http://blog.onedayxyy.cn/

image-20240804075845906

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

QQ群

玩转Typora+Docusuaurus+起始页交流群:(欢迎小伙伴一起探讨有趣的IT技术,来完成一些漂亮的项目)

我的开源项目:

项目名称我的文档我的demo作者demo
1、玩转Typorahttps://wiki.onedayxyy.cn/docs/typorahttps://wiki.onedayxyy.cn/docs/typorahttps://typoraio.cn/#
2、玩转Docusaurushttps://wiki.onedayxyy.cn/docs/mogai-docusaurushttps://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页home3.0https://wiki.onedayxyy.cn/docs/home3.0https://onedayxyy.cn/https://github.com/hsBUPT/hsBUPT.github.io
4、全网最美博客-ruyu-bloghttps://wiki.onedayxyy.cn/docs/ruyu-blog-install-one-keyhttps://blog.onedayxyy.cn/https://www.kuailemao.xyz/
5、家庭相册filesite-iohttps://wiki.onedayxyy.cn/docs/filesite.io-photot-install-fullhttps://photo.onedayxyy.cn/https://demo.jialuoma.cn/

https://wiki.onedayxyy.cn/docs/OpenSource

image-20240811063938529

  • typora皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20240518165037517

  • 起始页

https://onedayxyy.cn/

image-20240814230557697

  • 知识库

https://wiki.onedayxyy.cn/

  • 博客

https://blog.onedayxyy.cn/

image-20240803162010305

  • 家庭相册

https://photo.onedayxyy.cn/

image-20240824100027597

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

docusaurus阅读需 11 分钟

TS:从 Git 2.0 开始,push.default 的默认值将从 matching 改为 simple-2024.6.2(已解决)

image-20240602204528076

目录

[toc]

1、问题现象

image-20240602203513108

[root@diy-index-home diy-index-home2.0]#git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 251 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:onlyonexl/diy-index-home2.0.git
e080c76..9f375e1 master -> master
[root@diy-index-home diy-index-home2.0]#git status
# On branch master
nothing to commit, working directory clean

2、gpt 回答

你在执行 git push 命令时,遇到了一个关于 push.default 配置项的警告。这个警告是提醒你,Git 2.0 版本对 push.default 的默认值进行了更改,并建议你明确设置该配置项以避免未来的混淆。以下是这个警告的详细解释和解决方法:

警告内容解释

  • push.default is unset:表示当前 Git 配置中没有设置 push.default 选项。
  • its implicit value is changing in Git 2.0 from 'matching' to 'simple':从 Git 2.0 开始,push.default 的默认值将从 matching 改为 simple

两种配置解释

  • matching:推送所有当前分支与远程仓库中具有相同名字的分支。这在某些情况下可能会推送不需要的分支。
  • simple推送当前分支到它的上游分支(通常是你从中拉取的分支)。这种方式更安全,并且是 Git 2.0 以后的推荐方式。

解决方法

你可以根据自己的需求选择合适的配置方式。以下是两个选项:

选项一:保持旧行为(matching)

如果你希望保持旧的行为,可以运行以下命令:

git config --global push.default matching

选项二:采用新行为(simple)

如果你希望采用推荐的新行为,可以运行以下命令:

git config --global push.default simple

推荐选择

推荐使用 simple 方式,因为它更安全,更符合直觉,并且适合大多数常见的使用情景。

以下是详细操作步骤:

  1. 打开终端或命令行。

  2. 运行以下命令之一,根据你的选择:

    • 保持旧行为:

      git config --global push.default matching
    • 采用新行为:

      git config --global push.default simple

设置完成后,你可以重新运行 git push 命令,警告信息将不再出现。

参考命令

你还可以通过以下命令查看当前的 Git 配置:

git config --list

这将列出所有的 Git 配置选项,帮助你确认 push.default 的设置情况。

希望这些信息能帮助你解决问题!

3、实际测试

  • 当前git版本
[root@diy-index-home diy-index-home2.0]#git version
git version 1.8.3.1
  • 查看当前的 Git 配置
[root@diy-index-home diy-index-home2.0]#git config --list
user.name=hg-diy-index-vm
user.email=2675263825@qq.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=git@gitee.com:onlyonexl/diy-index-home2.0.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

可以看到没配置,那就是默认的:matching

  • 本次自己配置为simple
[root@diy-index-home diy-index-home2.0]#git config --global push.default simple
  • 检查
[root@diy-index-home diy-index-home2.0]#git config --list
user.name=hg-diy-index-vm
user.email=2675263825@qq.com
push.default=simple ##本次配置后效果
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=git@gitee.com:onlyonexl/diy-index-home2.0.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

结束。

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

https://onedayxyy.cn/

image-20240530221922506

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

git阅读需 4 分钟

实战:一款唯美的个人主页-home2.0-2024.6.4(测试成功)

image-20240604060532928

目录

[toc]

实验软件

image-20240604211719232

链接:https://pan.baidu.com/s/1zN-TL1U3wqL_bOjzWhHPig?pwd=whnu 提取码:whnu 2024.6.4-推荐一款唯美的个人主页-home2.0

前提条件

  • 具备docker环境环境
  • 拥有一台云服务器;
  • 具有自己的域名;(可选)

如何搭建docker和docker-compose,见如下链接:

《实战:centos在线安装docker-2022.8.4(成功测试)》 https://onedayxyy.cn/docusaurus/docs/centos-docker-online-install/

效果

🍀 个人主页:

https://onedayxyy.cn

image-20240604060532928

🍀 知识库:

https://onedayxyy.cn/docusaurus/

image-20240602215648594

🍀 博客:

http://47.100.215.163:8090/

image-20240602215637124

image-20240602215720712

说明

我附件里放的是自己已经构建好的docker镜像,你直接起容器的话,那么个人主页就只是我的主页哦。

docker run -p 12445:12445 -d --name=diy-index-home --restart=always onlyonexl/home2.0:v3.0

如果你要配置为自己的网站信息,请按如下步骤配置为自己的网站信息。

image-20240604201226003

1、背景

本实战的目的是部署一个属于自己的个人主页,将个人主页、博客、知识库等可以分离,体验很nice。

2、配置

1、克隆代码库

来到我的gitee仓库,拉取代码:

git clone https://gitee.com/onlyonexl/home2.0.git

image-20240604201226003

2、配置并构建镜像

代码库拉取后,配置自己网站相关信息,然后利用Dockerfile构建镜像。

==(1)配置自己网站相关信息==

配置网站链接:

src/assets/siteLinks.json 中可以自定义网站链接(以指向自己的网站):

{
"icon": "Blog",
"name": "博客",
"link": "https://blog.imsyy.top/"
},

其中 icon 网站链接的图标可以在 src/components/Links/index.vue 中添加:

// 可前往 https://www.xicons.org 自行挑选并在此处引入
// 此处引入的是 fa 类型
import {
Link,
Blog,
CompactDisc,
Cloud,
Compass,
Book,
Fire,
LaptopCode,
} from "@vicons/fa";

...

// 网站链接图标
const siteIcon = {
Blog,
Cloud,
CompactDisc,
Compass,
Book,
Fire,
LaptopCode,
};

配置社交链接:

src/assets/socialLinks.json 中可以自定义社交链接。

image-20240602230457823

==(2)利用Dockerfile构建镜像==

cd home2.0/
docker build -t home2.0:v3.0 .

image-20240604213317690

构建成功后,可以看到如下镜像:

image-20240604213404678

3、部署测试

以上自己的个人主页服务源码部署已经完成了。

注意:这里有2种方法来部署个人主页服务。

个人更推荐docker方式。

方案1:从docker容器拷贝生成的静态文件放到网站/目录

来到自己云服务器:

[root@docusaurus-wiki ~]#mkdir -p  diy-index
[root@docusaurus-wiki ~]#docker cp -a diy-index-home:/app/dist diy-index/
[root@docusaurus-wiki ~]#ls diy-index/dist/
assets images index.html.gz registerSW.js sw.js.gz workbox-faaa562d.js.gz
font index.html manifest.webmanifest sw.js.bak workbox-faaa562d.js

[root@docusaurus-wiki ~]#docker stop diy-index-home
diy-index-home

配置nginx:

#vim /etc/nginx/nginc.conf

image-20240604220207883

重启nginx:

nginx -s reload

测试:(完美)

image-20240604220305833

方案2:启动容器,nginx里配置反向代理(推荐)

(1)利用docker启动容器

docker run -p 12445:12445 -d --name=diy-index-home --restart=always onlyonexl/home2.0:v3.0

(2)配置自己Nginx

配置nginx的反向代理,让用户通过访问你的域名即可访问到我们刚搭建的个人主页:

#vim /etc/nginx/nginc.conf
# diy-index
location / {
proxy_pass http://47.100.215.163:12445;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

#重新加载nginx
nginx -s reload

image-20240604213658452

测试:(完美)

image-20240604220348625

4、访问

访问自己域名,即可体验效果:

https://onedayxyy.cn

image-20240604060532928

3、总结

以上就是关于如何部署自己的个人主页,更详细的知识请见如下链接:

《推荐一款唯美的个人主页-home2.0》 https://onedayxyy.cn/docusaurus/docs/diy-index-home

image-20240604212736611

引用

https://github.com/imsyy/home home项目原作者仓库

image-20240602175013161

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240604060532928

🍀 知识库:

https://onedayxyy.cn/docusaurus/

image-20240602215648594

🍀 博客:

http://47.100.215.163:8090/

image-20240602215637124

image-20240602215720712

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

home2.0阅读需 4 分钟

实战:docker式部署frp内网穿透-2024.7.13(测试成功)

image-20240713102435925

前提

首先就需要准备好一台云服务器,用于提供公网 IP 和流量转发。至于购买哪家的云服务产品,本着能省则省的原则,这个当然是哪家便宜用哪家呢。

我手上目前有闲置的腾讯云的服务器,刚好可以用来作为内网穿透的机器,首先需要在云服务器上设置安全组,我这里为了演示方便,就把所有的端口都放开了,小伙伴可以自行根据自己的需求,开放指定的端口即可。

环境

1台公网服务器(centos7.x系统)
1台家里nuc小主机(ubuntu24.4系统)


frp镜像:
registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps:latest
registry.cn-shenzhen.aliyuncs.com/mogublog_business/frpc:latest

#配置
frp server:
阿里云ecs,2核(vCPU),2 GiB,公网带宽3 Mbps,40GiB ESSD Entry云盘(2120 IOPS)

frp client:
英特尔NUC11TNHi5老虎峡谷(8c,16g,512g ssd)

说明:只要是linux系统就好,且提前安装好docker环境。

源码

链接:https://pan.baidu.com/s/1B42I1kEZYzRm-rKdPm4FLQ?pwd=fxbk 提取码:fxbk 2024.7.13-实战:docker式部署frp-2024.7.13(测试成功)

image-20240713110016819

简介

Frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCPUDPHTTPHTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有 公网 IP 节点的中转暴露到公网。

通过在具有公网 IP 的节点上部署 Frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:

  • 多种协议支持:客户端服务端通信支持 TCPQUICKCPWebsocket 等多种协议。

  • TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。

  • 代理组间的负载均衡。

  • 端口复用:多个服务可以通过同一个服务端端口暴露。
  • P2P 通信:流量不必经过服务器中转,充分利用带宽资源。

  • 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTPSOCKS5 代理等,以便满足各种需求。

  • 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。

  • 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。

frp 主要由两个组件组成:客户端 ( frpc ) 和 服务端 ( frps )。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。

由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frpsfrp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。

Frp 是一款在 Github 上非常热门的项目,使用 Golang 语言开发,目前已经有 82kstar 数,社区也很活跃。

https://github.com/fatedier/frp/releases

1、安装服务端

首先来安装服务端,服务端需要在具有公网 IP 的设备上进行安装,我目前的云服务器是预装了 ubuntu24.04 系统。(是linux系统就好)

这里需要使用到 docker 来进行安装,关于 docker 的安装教程,请看如下链接:

linux主机具有docker环境。如何安装dodcker,

https://onedayxyy.cn/docusaurus/docs/centos-docker-online-install 《实战:centos在线安装docker-2022.8.4(成功测试)》

https://onedayxyy.cn/docusaurus/docs/ubuntu-docker-online-install 《实战:ubuntu上安装docker-2022.8.4(成功测试)》

  • 首先使用远程连接工具连接到云服务器,然后使用下面的命令,创建 frp 的服务端配置文件:
vim /root/frps.ini

然后填写配置信息,这里会启动两个端口号:

7000:用于和内网设备数据交互;

7500:提供 frp 图形化界面,同时需要配置面板访问的账号和密码,以及 token 是内网设备和 frp 服务端建立连接时的密码。

[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = admin
# 登录面板的密码
dashboard_pwd = 123456

# 身份验证
token = 666666
  • 启动容器

使用下面 docker 命令,下载我们的 frp 服务端。其中,这里使用到了蘑菇的阿里云镜像仓库地址,官方的镜像地址因为被墙的原因,可能很多小伙伴目前无法访问了。

docker run --restart=always --network host -d -v /root/frps.ini:/etc/frp/frps.ini --name frps registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps

细心的小伙伴,可能会发现:命令行中使用了 --network host 定网络模式为 host 模式。

众所周知,Docker 使用了 Linux 的 Namespaces 技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable 规则等都与其他的 Network Namespace 隔离。

如果使用 host 模式时,容器中的应用都直接绑定在宿主机的端口上,没有经过 NAT 转换,但容器的其他如文件系统等还是隔离的。

  • 查看

安装完成后,输入下面命令,即可查看容器运行状态

[root@docusaurus-wiki ~]#docker run --restart=always --network host -d -v /root/frps.ini:/etc/frp/frps.ini --name frps registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps
Unable to find image 'registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps:latest' locally
latest: Pulling from mogublog_business/frps
396c31837116: Pull complete
23169097eaa2: Pull complete
Digest: sha256:2356311d8aa9f01c8b60501af1655756c04bfc9595cd4e2c9eeed02bb62bd62c
Status: Downloaded newer image for registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps:latest
ba8cb18a543f77592e6eb93b4b692cfcd93334121747d25dc8270ba3af8b2ddc
[root@docusaurus-wiki ~]#docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba8cb18a543f registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps "/bin/sh -c '/usr/bi…" 35 seconds ago Up 35 seconds frps
[root@docusaurus-wiki ~]#

可以看到,现在运行了一个 frps 的容器

  • 登录web查看后台

http://47.100.215.163:7500/

同时,frp 还提供了图形化的界面,我们使用 http://your_ip:7500 即可打开对应的图形化界面。输入上面配置文件中,配置的账号和密码登录即可。

如果能看到下面的页面,说明就我们的服务端就安装成功了

自己测试效果:

image-20240713062222592

2、客户端安装

客户端需要在我们的内网的机器上进行安装,在上一期的文章中,我们通过 PVE 系统安装了一个 CentOS 服务器,并搭建了蘑菇系统。

我们接着打开之前的机器,然后使用 SSH 工具进行连接。

  • 首先,需要在这台机器上,创建 frp 的客户端配置文件:
vim /root/frpc.ini

然后填写下面的配置,这里需要注意的是 server_addr 填写的是服务器端的地址,然后 token 是服务端配置的 token 令牌,用于客户端和服务端建立连接。

[common]
# server_addr为云服务器IP地址
server_addr = 47.100.215.163
# server_port为服务端监听端口,bind_port
server_port = 7000
# 服务端设置的token
token = 666666

[ruyu-blog]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8083

上面配置是将这台机器中的四个端口,映射到服务端的四个端口上。

这里我映射的是本地80端口服务,其是我测试的一个博客服务。(比较复杂)

为了简便,这里我再映射一个Ngninx服务,如下:(大家使用nginx来测试就好)

[common]
# server_addr为云服务器IP地址
server_addr = 47.100.215.163
# server_port为服务端监听端口,bind_port
server_port = 7000
# 服务端设置的token
token = Admin@2024

[ruyu-blog]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8083


[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8084

[nginx-test]
type = tcp
local_ip = 127.0.0.1
local_port = 81
remote_port = 8085
  • 启动容器

配置完成后,执行下面命令下载客户端的 docker 镜像,并加载上面的配置文件,启动 frp 的客户端。

docker run --restart=always --network host -d -v /root/frpc.ini:/etc/frp/frpc.ini --name frpc registry.cn-shenzhen.aliyuncs.com/mogublog_business/frpc



docker run -d -p 81:80 --name=web --restart=always nginx

image-20240713104737686

  • 验证

我们再打开 frp 的图形化界面,选中:Proxies → TCP,可以看到这几个端口都已经注册上来了

image-20240713104808493

image-20240713103756614

3、测试效果

访问公网 IP 的8083端口,即可看到本地虚拟机部署的页面。

http://47.100.215.163:8083/

当前的demo为:http://47.100.215.163:81/

image-20240713070443131

nginx-test:

http://47.100.215.163:8085/

image-20240713104827525

最后:

测试完,删除Nginx-test,只保留博客、ssh frp即可。

image-20240713105246414

FAQ

二进制方式部署

引用

搭建的小主机服务器,如何被互联网访问?(蘑菇大佬)https://mp.weixin.qq.com/s/nwAGNd3gbP7gCmRUOAdw_g

frp文档地址:https://gofrp.org/zh-cn/docs/

frp github:https://github.com/fatedier/frp/releases

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240711101911622

🍀 知识库:

https://onedayxyy.cn/docusaurus/

image-20240711101933614

🍀 博客:

https://onedayxyy.cn/hexoblog/

image-20240711102002480

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

frp阅读需 8 分钟

vmwareworkstation3种网络区分及如何让虚机固定ip且能访问外网

目录

[toc]

原文

本文由 简悦 SimpRead 转码, 原文地址 www.moguit.cn

来自蘑菇博客分享。

前言

这阵子在整 K8s,因为之前不太清楚 VMWare 如何设置固定 IP 地址,所以每次 VMWare 中都是自动获取 IP 的,这样就造成了每次只要本地机器重启,虚拟机中的网络又变化了,导致 K8S 服务无法正常的启动。

这里需要特别感谢群里的小伙伴 @你钉钉响了 @清欢渡 手把手的教学,帮助我学习了一波 VMware 网络知识~,有时间要好好补一补 Linux 网络知识 ...,言归正传,下面开始给 VMware 设置固定 IP 了

VMware 网络模式

我们安装 VMware Workstations 后,进行虚拟机的网络配置时,一般有四种网络连接方式

在我们安装好 VMware Workstations 后,我们可以打开网络中心会发现生成 两个虚拟网卡,我们打开网络和共享中心能够看到下面的两个

关于这两个网卡对应的规则,我们可以到 VMware 的虚拟网络编辑器查看

可以发现 VMnet1 网卡,对应的是 仅主机模式,VMnet8 对应的是 NAT 模式

1、桥接模式 (Bridged)

桥接模式,可以这样进行理解

它是通过主机网卡,假设了一条桥,直接连入到网络中了,因此,它使得虚拟机能被分配到一个网络中独立的 IP,所有网络功能完全和在网络中的真实机器一样。

桥接模式下的虚拟机,我们把它认为是真实计算机就行了~

虚拟机和主机:可以相互访问,因为虚拟机在真实网络段中有独立 IP,主机与虚拟机处于同一网络段中,彼此可以通过各自 IP 相互访问

虚拟机与其它主机:可以相互访问,同样因为虚拟机在真实网络端中有独立 IP,虚拟机与所有网络其它主机处于同一个网络段中,彼此可以通过各自 IP 相互访问

虚拟机与虚拟机: 同样可以相互转换,原因同上

桥接模式下,虚拟机就像一台真正的计算机一样,直接连接到实际网络,与宿主机没有任何联系

2、NAT 模式

😂(之前这一块儿理解的不透彻哇)

NAT:Network Address Translation,网络地址转换

NAT 模式是最简单的实现虚拟机上网的方式

Guest 访问网络的所有数据都是主机提供的,Guest 并不真实存在与网络中,主机与网络中的任何机器都不能查看和访问到 Guest 的存在

Guest 可以访问主机能访问的所有网络,但是对于主机以及主机网络的其它机器,Guest 又是不可见的,甚至主机也访问不到 Guest

虚拟机与主机:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机

虚拟机与其它主机:只能单向访问,虚拟机可以访问到网络中其它主机,其它主机不能通过网络访问到虚拟机

虚拟机与虚拟机:相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此

NAT 模式下,虚拟机网络连接到宿主机的 VMnet8 上,此时系统的 VMWare NAT Service 服务器就充当了路由器的作用,负责将虚拟机发送到 VMnet8 的包 进行地址转换之后,发到实际的网络上,再将实际网络上返回的包进行地址转换后通过 VMnet8 发送到虚拟机。VMware DHCP Service 负责为虚拟机提供 DHCP 服务。

也就是说 NAT 模式下,虚拟机网卡连接到宿主机的 VMnet8 的网卡,当 VMnet8 收到虚拟机发送的数据包时,会吧数据包转发给物理机的网卡。相当于物理网卡不能直接接触虚拟机的数据包,而是接触 VMnet8 进行处理,实际上 VMnet8 是 NAT 模式,自带 DHCP 功能,能够给虚拟机分配 IP 地址。

3、主机模式 (Host-only Adapter)

主机模式:这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这个模式下,通过虚拟机及网卡的设置都可以被实现。

我们可以理解为 Guest 在主机中模拟出一张专供虚拟机使用的网卡,所有的虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网以及其他功能

为什么使用 NAT 模式

桥接模式的配置很简单,但是如果网络环境 ip 资源很缺少,或者对 ip 管理比较严格的时候,那么桥接模式就不适用了,因为我们通过上面的理解可以知道,桥接模式就是创建一个和宿主机同一级别的网络环境,它是在网络地址中真实存在的 ip 地址。

如果我们又想让虚拟机上网,又不想占用真实的 IP 地址,那么就需要使用 NAT 模式是最好的选择,NAT 模式借助虚拟 NAT 设备和虚拟 DHCP 服务器,使得虚拟机可以联网。其网络结构如下图所示:

在 NAT 模式下,主机网卡直接与虚拟 NAT 设备相连,然后虚拟 NAT 设备与虚拟 DHCP 服务器一起连接在虚拟机交换机 VMnet8 上,这样就实现了虚拟机联网。

实战:使用 NAT 模式配置虚拟机固定 IP-2024.7.26(测试成功) 🤷‍♀️

1.设置宿主机 VMnet8 网卡为自动获取ip方式

因为 NAT 模式需要借助宿主机的 Vmnet8 网卡进行虚拟机与主机之间的通信的,因此我们需要首先找到宿主机上的 VMnet8 网卡

然后我们右键属性,找到 IPv4 协议,然后选择 自动获取 IP 地址

image-20240727111421253

2.编辑虚拟网络编辑器

在设置好 VMnet8 网卡后,我们到 VMware 中,点击 编辑 -> 虚拟网络编辑器,然后选择 还原默认值

在还原后,我们在上面能够看到有三种模式了,这里我们主要是 操作 NAT 模式

  • 首先选择 NAT 模式
  • 然后勾选 2 中的两个选项
  • 第三步就是打开 NAT 设置

然后设置网关 IP 为: 192.168.13.254 【这里需要记住这个值,以后会用到】,然后保存

  • 第四步点击 DHCP 设置

这里能看到我们的起始 ip 地址 和 结束 ip 地址,也就是后面我们在设置固定 ip 地址时,必须在这个范围内

  • 设置完成后,回到主页面,点击应用

3.设置 CentOS 虚机网络连接方式为NAT

我们到我们的创建的 CentOS 系统,右键选择 设置

然后找到网络适配器,选择 NAT 模式,这样我们的系统就通过 NAT 模式连接了

4.设置虚机网络

然后我们就可以启动我们的 CentOS 系统进行网络配置了

vim /etc/sysconfig/network-scripts/ifcfg-ens33

然后在文件中,加入如下内容

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1f6d2414-12b7-40ef-8fb1-d2e6db9c739b
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.13.130
NETMASK=255.255.255.0
GATEWAY=192.168.13.254
DNS1=223.5.5.5
DNS2=114.114.114.114

这里需要注意的几个点就是下面几个参数

BOOTPROTO=static
ONBOOT=yes

IPADDR=192.168.13.130

NETMASK=255.255.255.0

GATEWAY=192.168.13.254
DNS1=223.5.5.5
DNS2=114.114.114.114

配置完成后,我们就重启网络即可

service network restart

5.测试

下面我们通过 ping 命令,查看是否能够正常访问网络

ping www.baidu.com

发现能够成功访问网络了,这个时候说明我们虚拟机已经能够正常联网~

注意

在说一个我遇到的问题,就是在配置好网络后,重启电脑,发现之前配置的虚拟机又不能上网了,后面经过群里小伙伴的指点,发现是重启后,VMware 的 NAT 和 DHCP 服务已经关闭了,所以我们需要手动启动

重启后打开虚拟机,发现能够成功联网了~

自己虚拟配置如下 😁

截止2024年7月27日

#nat
网段:192.168.1.0 255.255.255.0 192.168.1.254(网关)
可用ip:192.168.1.1-192.168.1.254 (.254不可用)
宿主机ip:dhcp获取
虚机ip:192.168.1.200

image-20240727112009598

image-20240727112023163

image-20240727112038743

image-20240727111421253

image-20240727112528141

image-20240727112133884

image-20240727112224691

自己虚机也能通外网:

image-20240727112248234

宿主机也能ping通虚机且能 ssh上去:

image-20240727112322615

参考

https://blog.csdn.net/ning521513/article/details/78441392

https://blog.csdn.net/tyutzhangyukang/article/details/78525086

http://www.moguit.cn/#/info?blogUid=4837a5b04cc34f9f9caee067334baa44

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240711101911622

🍀 知识库:

https://onedayxyy.cn/docusaurus/

image-20240711101933614

🍀 博客:

https://onedayxyy.cn/hexoblog/

image-20240711102002480

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

我的开源项目:

image-20240723103138684

引用

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

vmwareworkstation阅读需 8 分钟

实战:Docker部署moments极简微信朋友圈-2024.7.19(测试成功)

image-20240719161623145

目录

[toc]

环境

docker环境

源码

image-20240728165137746

通过百度网盘分享的文件:2024.7.28-实战:Docker部署moments极简微信朋友圈... 链接:https://pan.baidu.com/s/1M_WYwW6Xw33vTvYYSKuWWA?pwd=st45 提取码:st45 2024.7.28-实战:Docker部署moments极简微信朋友圈-2024.7.19(测试成功)

预览效果

http://47.100.215.163:3000/

image-20240728164938097

1、介绍

GitHub:https://github.com/kingwrcy/moments

今天给大家分享一个 类似微信朋友圈 的项目 moments,适合用于记录生活。

image-20240719155739998

项目特色

  • 支持匿名评论/点赞
  • 支持引入网易云音乐,b站视频,插入链接等
  • 支持自定义头图,个人头像,网站标题等
  • 支持上传图片到S3兼容的云存储,支持本地存储
  • 适配手机
  • 支持暗黑模式
  • 数据库采用 sqlite,可随时备份
  • 支持引入豆瓣读书/豆瓣电影,样式来源于这里

2、部署

要具备docker环境。

mkdir -p /root/docker/moments
cd /root/docker/moments


cat >> docker-compose.yml <<EOF
services:
moments:
image: kingwrcy/moments:latest
ports:
- "3000:3000" # 左边的 8080 可以随意更改成服务器上没有用过的端口
volumes:
- ./moments-data:/app/data
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
EOF


cd /root/docker/moments
docker-compose up -d

image-20240728162321585

3、使用

http://47.100.215.163:3000

image-20240719155418578

登录并修改默认密码

默认用户名密码:admin/a123456,登录进去后后台可以自己修改密码.

image-20240719155500646

image-20240719155932876

我的配置

Copyright 2023-2024 One & ICP2023002645

image-20240728162810501

仓库地址

仓库地址

https://github.com/kingwrcy/moments

image-20240728163828525

image-20240728164623654

image-20240728164649300

image-20240728164703277

-- sqlite数据库位置
DATABASE_URL="file:/app/data/db.sqlite"
-- 本地上传的文件目录
UPLOAD_DIR="/app/data/upload"
-- 配置文件目录(可以复制项目根目录的)
CONFIG_FILE=/app/data/config.json
-- 自定义jwt密钥(从0.2版本开始必填,不填无法使用)
NUXT_JWT_KEY=自定义jwt密钥,可以自己随机生成



-- 安装依赖
npm install
-- 脚本迁移
npx prisma migrate dev
-- 执行构建
npm run build
-- 预览
npm run preview

image-20240728164723959

image-20240728164741907

image-20240728164750598

引用

https://blog.csdn.net/weixin_74962223/article/details/138277841 使用 Docker 部署 moments 微信朋友圈

image-20240624111647165

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240711101911622

🍀 知识库:

https://onedayxyy.cn/docusaurus/

image-20240711101933614

🍀 博客:

https://onedayxyy.cn/hexoblog/

image-20240711102002480

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

moments阅读需 3 分钟

实战:docker部署filesite.io完美解决家庭相册需求-2024.8.10(测试成功)

image-20240811062854508

目录

image-20240811110354359

版权声明

本着开源共享、共同学习的精神:

本文是根据 开源站点:《家庭相册-filesite-io》里提供的部署文档进一步编辑输出的 ,具体信息请看 原作者github开源仓库。转载无需和我联系,但请注明文章来源。如果侵权之处,请联系博主进行删除,谢谢~

官网:https://jialuoma.com/

仓库地址:https://github.com/filesite-io/machete

image-20240807124010055

image-20240807072211857

公告

因个人最近清理了百度网盘已经分享的链接(原来已分享的链接均已失效),如果有小伙伴需要相关实战源代码,请随时联系笔者即可。😘

效果演示

动画

背景

你想拥有一个家庭相册吗?里面可以放你的摄影作品、家人照片、旅拍作品等等……

恰好这个相册部署简单,体验丝滑,数据安全,那么选择filesite.io就对了😜

一个完美的家人相册的理想状态:

想实现如下一个需求:

我的winodws桌面有一个叫做photo的目录,然后这个目录下有不同子目录,而每个子目录分别存放了不同类型的照片。

有没有一款相册软件,可以把这个photo目录(保持子目录不变)给渲染成一个相册或图库,供大家可以公网访问呢。

本地windows相册数据-->linux;(rsync服务,增量同步,很方便)

这样的好处就是,我只需要维护winodws本地照片,然后就会自动刷新云端照片的,而不需要维护2份数据。

前提

具有1台linux服务器,具有docker、docker-compose环境。

具体部署文档参考如下:

如何搭建docker和docker-compose,见如下链接:

《实战:centos在线安装docker-2022.8.4(成功测试)》 https://wiki.onedayxyy.cn/docs/centos-docker-online-install

《实战:docker-compose安装-2024.4.14(测试成功)》 https://wiki.onedayxyy.cn/docs/docker-compose-install

环境

win10
vmwareworkstation里一台centos7.6 1810虚机,192.168.1.100,能通公网(nat模式)

源码

通过百度网盘分享的文件:v1-2024.8.10(修复bug后版本) 链接:https://pan.baidu.com/s/17vnaSkGH_0IQ43TMyk69Gw?pwd=mi0h 提取码:mi0h

v1-2024.8.10(修复bug后版本)
filesite-machete-2024.8.10.tar.gz #261M

image-20240810193508582

说明:

这里之所以把镜像打包提供,是为了对数据进行备份。还是建议大家从 官网仓库 获取镜像。

1、部署

docker-compose版本:

mkdir -p /root/machete/photo
cd /root/machete
cat > /root/machete/docker-compose.yaml <<EOF
version: "3"

services:
mtphotos:
image: filesite/machete
container_name: machete
restart: always
ports:
- 1081:80
- 445:445
volumes:
- /root/machete/photo:/var/www/machete/www/girls/
EOF

docker-compose up -d
docker ps

image-20240810225619594

docker版本:

docker run --name machete \
-p 1081:80 -p 445:445 \
-v /root/machete/photo:/var/www/machete/www/girls/ \
--restart=always \
-itd filesite/machete

2、访问

在浏览器访问http://192.168.1.100:1081/

image-20240810181429530

3、手动上传windows相册数据到linux服务器端

将准备好的相册数据photo-test-demo.zip上传到服务器/root目录:

[root@ruyub-blog-prod ~]# ll -h photo-test-demo.zip 
-rw-rw-rw- 1 root root 61M Aug 10 18:08 photo-test-demo.zip

将相册数据解压到/root/machete/photo目录:

cd ~
unzip photo-test-demo.zip -d /root/machete/photo

image-20240810225735227

验证:

访问web,刷新下,观察现象,此时就可以看到我们的个人相册数据了:

http://192.168.1.100:1081/

image-20240810182300467

4、rsync方式同步数据到linux

1.测试过程

删除/root/machete/photo下相册数据:

cd /root/machete/
rm -rf /root/machete/photo
ls

image-20240810225854798

这里假设linux服务器和winodws之间的rsync服务都已部署完成,具体如何部署,看如下文档:

《实战:从windows同步数据到linux(增量定时同步)-2023.11.30(测试成功)》:https://wiki.onedayxyy.cn/docs/rsync-windows-to-linux

image-20240811063123909

我这里给出本次具体配置:

linux服务器端:

vim /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# 进行通信的端口,如果 firewall 打开的话,需要将对应的端口添加进去
port=8730

# 日志文件
log file=/var/log/rsync.log

# rsync 的进程 id
pid file=/var/run/rsync.pid

# 要同步的模块,这里一般以项目名命名
[cmi-filesite]

# 同步的目标文件夹
path=/root/machete/

# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no

# 指定最大的连接数
max connections=4

# yes 表示只读本地文件无法同步到服务器
read only=no

# 客户端请求显示模块列表时,该模块是否显示出来
list=true

# 服务运行时的用户
uid=root

# 服务运行时的用户组
gid=root

# 进行验证时的用户名,必须是系统存在的用户
auth users = root

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd

# 允许的 ip
hosts allow=*

!

# 1、创建目标的文件夹
mkdir /root/rsync

# 2、创建密码
# 创建文件夹
#vim /etc/rsyncd.passwd
# 写入密码
echo "root:zxl520" > /etc/rsyncd.passwd #这里写入你自己云服务器的密码就行!!!

#更改文件权限
chmod 600 /etc/rsyncd.passwd


systemctl restart rsyncd
  • 同布windows相册数据到linux服务器端:
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/

image-20240811063234538

image-20240811063306732

image-20240810230229792

观察效果:

image-20240810230259931

web可以看到:(为什么是空白的呢)

因为winodws上的rsync把数据同步到linux后,同步上去的目录所属主/所属组都发生了改变,不是root,因此docker里的相册服务也就无法正常识别了。

image-20240810224235759

我现在想把windows的某个目录下的内容利用rsync同步到linux,能否通过设置一些参数,让同步上去的文件默认被赋予655权限吗?(gpt下)

image-20240810224817874

删除相关目录,再次执行测试:

cd ~
cd machete/
rm -rf photo/
ls

image-20240810230336661

开始同步:

rsync.exe -avPzruh --delete --port 8730 --chmod=Fp=655 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/

image-20240810230404092

可以看到,报错了。。。


我们再次gpt下:

C:\Users\Administrator>rsync.exe -avPzruh --delete --port 8730 --chmod=Fp=655 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/
rsync: Invalid argument passed to --chmod (Fp=655)
rsync error: syntax or usage error (code 1) at main.c(1791) [client=3.2.7]

gpt回答:

image-20240810225059302

image-20240810225131655

亲自测试:

删除相关目录,再次执行测试:

cd ~
cd machete/
rm -rf photo/
ls

image-20240810230336661

开始同步:

rsync.exe -avPzruh --delete --port 8730 --chmod=F655,D755 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/

image-20240810230513090

验证:

怎么还是有问题啊。。。。。。(按理说应该好了哇。。。。。)

image-20240810230631676

image-20240810230624687

我重启在容器看看:

docker restart machete

image-20240810230829927

image-20240810230839421

竟然ok了。。。。。

2.方案输出

也就是说,我们通过windows上的rsync客户端将相册数据同步到linux服务器上,且需要重启下linux上的容器,然后相册上才能出现我们最新的数据。

(1)同步数据到linux服务器(winodws上)

rsync.exe -avPzruh --delete --port 8730 --chmod=F655,D755 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/

(2)重启machete容器

docker restart machete

5、FreeFileSync方式同步数据到linux(推荐)

1.安装FreeFileSync_13.7_Windows

  • winodws安装FreeFileSync_13.7_Windows_Setup

image-20240811072434170

官网链接:

https://freefilesync.org/

image-20240811072109273

下载winodws客户端:

https://freefilesync.org/download/FreeFileSync_13.7_Windows_Setup.exe

image-20240811072139140

安装:(一直下一步安装即可)

安装后:

image-20240811072218130

image-20240811072234365

2.同步数据到linux服务器

  • 清空环境

删除/root/machete/photo下相册数据:

cd /root/machete/
rm -rf /root/machete/photo
ls

image-20240810225854798

  • 利用FreeFileSync同步数据到linux机器

同步之前,我们先来创建下远程目录:

mkdir /root/machete/photo
ll -d /root/machete/photo

image-20240811071154131

开始同步:

同步前,我们先来做下比较,发现远程目录都为空。

image-20240811071239186

这里选择镜像把本地数据同步到linux服务器:

image-20240811071406785

点击同步:

image-20240811071447999

此时已经同步完了。

image-20240811071533650

3.验证

  • 验证

此时,发现同步上来的文件权限、属主、属组都是欧克的,完美。😜

image-20240811071607476

可以再做一次数据比较,发现2边数据是完全欧克的。

image-20240811071700031

  • 此时访问web

http://192.168.1.100:1081/

image-20240811071750161

可以看到,是无效果的,我们接着重启下重启看看现象。

docker restart machete

image-20240811071853885

再次访问:

重启重启后,完美,出现效果。(可以看到,这种同步方式更简单丝滑些哦)😜

image-20240811071915372

存在问题:

利用同步软件例如FreeFileSync,把相册数据从winodws同步到linux后,必须要重启容器才能生效,这个能否从代码曾解决下这个问题?

-->我们来修复下这个问题:(根据群主指导解决了这个问题)

不要删除容器映射的目录,直接同步试试

比如容器映射的根目录是photo,你不要删除它,但是可以删除它里面的内容:
rm -rf photo/*

winodws本地新增5-家乡风景相册目录,然后同步数据:

按这个方式测试后,果真正常同步数据后,刷新下就出现象了哦:

image-20240811095429458

至此,完美。😜

6、最终效果

http://192.168.1.100:1081/

image-20240810234603916

7、扩展(将家庭相册部署在公网)

以上部署方式可以直接部署在公网的云服务器上,是完全没问题的。

或者将局域网内的小主机frp(内网穿透)出去提供服务。(相册部署都是一样的方法,只是我采用的是frp方式,因此这里仅记录一下)

关于如何部署frp,请看如下文章:

《实战:docker式部署frp内网穿透-2024.7.13(测试成功)》:https://wiki.onedayxyy.cn/docs/docker-install-frp

image-20240811062415167

  • 自己nuc小主机frp配置
vim frpc.ini

[filesite-photo]
type = tcp
local_ip = 127.0.0.1
local_port = 1081
remote_port = 1081

image-20240811062534387

重启frpc客户端:

docker restart frpc
  • 自己公网ecs上Nginx配置

vim /etc/nginx/nginx.conf

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
gzip on; # 启用 gzip 压缩
gzip_vary on; # 根据请求中的 `Accept-Encoding` 响应头决定是否启用 gzip
gzip_proxied any; # 在所有代理请求中启用压缩
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 指定哪些类型的响应需要压缩
gzip_comp_level 5; # 压缩等级(范围是 1-9,高级别意味着更好的压缩但会消耗更多 CPU 资源)
gzip_min_length 256; # 只对超过给定长度的响应启用压缩
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
charset utf-8;

# Settings for a TLS enabled server.

}

cat /etc/nginx/conf.d/photo.conf

    server {
listen 80;
server_name photo.onedayxyy.cn;

#配置https重定向
return 301 https://$host$request_uri;
}


server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name photo.onedayxyy.cn;

#root /root/home3.0;

#location / {
# index index.html index.htm;
#}


location / {
proxy_pass http://47.100.215.163:1081/; # 实际的后台路径
client_max_body_size 100M;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

ssl_certificate "cert/fullchain1.pem";
ssl_certificate_key "cert/privkey1.pem";

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

ssl_prefer_server_ciphers on;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

重启nginx:systemctl -s reload

  • 验证

https://photo.onedayxyy.cn/

image-20240811062854508

8、总结

以上,关于自己的家庭相册就完美解决了。

我只需要维护winodws本地照片(增加、修改、删除等等),然后就会自动刷新云端照片的,而不需要维护2份数据。

为了数据安全性,我windows本地相册数据是放在百度云同步空间的哦,也对数据安全性做了保障,完美。😜

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240805214647028

🍀 知识库:

https://wiki.onedayxyy.cn/

image-20240804075128231

🍀 博客:

http://blog.onedayxyy.cn/

image-20240804075845906

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

我的开源项目:

https://wiki.onedayxyy.cn/docs/OpenSource

项目名称我的仓库地址我的demo地址作者仓库地址
1、玩转Typorahttps://gitee.com/onlyonexl/typora-theme-one-https://onedayxyy.cn/docusaurus/docs/typorahttps://typoraio.cn/#
2、玩转Docusaurushttps://gitee.com/onlyonexl/docusaurus2.0https://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页home3.0https://gitee.com/onlyonexl/home3.0https://onedayxyy.cn/
4、全网最美博客-ruyu-blog(简洁、唯美、丝滑)/https://blog.onedayxyy.cn/仓库地址:https://gitee.com/kuailemao/ruyu-blog
demo地址:https://www.kuailemao.xyz/
5、家庭相册filesite-io/https://photo.onedayxyy.cn/https://github.com/filesite-io/machete

image-20240811063938529

  • typora皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20240518165037517

  • 起始页

https://onedayxyy.cn/

image-20240803161628640

  • 知识库

https://wiki.onedayxyy.cn/

image-20240803161507990

  • 博客

https://blog.onedayxyy.cn/

image-20240803162010305

  • 家庭相册

https://photo.onedayxyy.cn/

image-20240811062854508

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

相册阅读需 11 分钟

实战:docker部署一言接口服务-2024.8.17(测试成功)

image-20240817231646119

目录

[toc]

版权声明

注意

本着开源共享、共同学习的精神:

本文是在 博主Hyde 文章:https://hydoc.netlify.app/docs/blog/tutorial/ruyu-blog/#17%E9%83%A8%E7%BD%B2%E4%B8%80%E8%A8%80%E6%8E%A5%E5%8F%A3 基础上增加了自己实践过程的一些细节,转载无需和我联系,但请注明文章来源。如果侵权之处,请联系博主进行删除,谢谢~

背景

为什么要折腾这个呢?

因为最近在部署ruyu-blog,用到了这个一言接口,体验还不错。

官网接口有每分钟qps限制,有时会得不到想要的结果。因此我这里自己进行部署。

简介

什么是一言接口服务

官网

https://developer.hitokoto.cn/

image-20240806100033304

环境

docker环境

centos7.x机器

源码

image-20240817234308639

链接:https://pan.baidu.com/s/1jd8IGC76Av9qdiE7l6U5nA?pwd=tbfd 提取码:tbfd 2024.8.17-实战:docker部署一言接口服务-2024.8.17(测试成功)

docker save  hitokoto/api |gzip > hitokoto.tar.gz #74M
docker save redis:6.0.8 |gzip > redis.6.0.8.tar.gz #36M

image-20240817233834783

1、部署

一言官方提供了各种部署方式,自己选一个,这里使用 Docker 部署

  • 创建数据目录
cd ~
#创建hitokoto目录
mkdir -p hitokoto

#进入hitokoto目录
cd hitokoto
  • 创建「一言」的配置文件

vim config.yml

填写config.yml的配置

自己本次配置:

name: 'hitokoto' # 服务名称,例如:hitokoto  [必填!]
url: 'http//192.168.1.100:8000' # 服务地址,例如:https://v1.hitokoto.cn [必填!]
api_name: 'demo_api_name' # 服务表示,例如:cd-01-demo [必填!]
server: # 配置 HTTP 服务的信息
host: hitokoto_api # 监听的地址,因为我们采用 docker-compose 启动,因此设置为 service 名称即可 [必填!]
port: '8000' # 监听的端口 [必填!]
compress_body: true # 是否使用 GZIP 压缩
redis: # 配置 Redis
host: hitokoto_db # Redis 主机名,因为我们采用 docker-compose 启动,因此设置为 service 名称即可 [必填!]
port: 6379 # Redis 端口 [必填!]
password: '输入你的密码' # Redis 密码 [必填!]
database: 0 # Redis 数据库索引,通常使用 0 号数据库
sentences_ab_switcher: # 本节是服务 AB 异步更新的配置,这是获取语句库的远程地址,除非有特殊需求,通常不需要修改保持默认!
a: 1 # a 状态对应的 redis 数据库
b: 2 # b 状态对应的 redis 数据库
remote_sentences_url: https://cdn.jsdelivr.net/gh/hitokoto-osc/sentences-bundle@latest/ # 语句库地址,通常默认即可。如果您想使用您自己打包部署的语句库,您可以修改此项

image-20240817232337657

参考:

name: 'hitokoto' # 服务名称,例如:hitokoto  [必填!]
url: '您的IP:8000' # 服务地址,例如:https://v1.hitokoto.cn [必填!]
api_name: 'demo_api_name' # 服务表示,例如:cd-01-demo [必填!]
server: # 配置 HTTP 服务的信息
host: hitokoto_api # 监听的地址,因为我们采用 docker-compose 启动,因此设置为 service 名称即可 [必填!]
port: '8000' # 监听的端口 [必填!]
compress_body: true # 是否使用 GZIP 压缩
redis: # 配置 Redis
host: hitokoto_db # Redis 主机名,因为我们采用 docker-compose 启动,因此设置为 service 名称即可 [必填!]
port: 6379 # Redis 端口 [必填!]
password: '' # Redis 密码 [必填!]
database: 0 # Redis 数据库索引,通常使用 0 号数据库
sentences_ab_switcher: # 本节是服务 AB 异步更新的配置,这是获取语句库的远程地址,除非有特殊需求,通常不需要修改保持默认!
a: 1 # a 状态对应的 redis 数据库
b: 2 # b 状态对应的 redis 数据库
remote_sentences_url: https://cdn.jsdelivr.net/gh/hitokoto-osc/sentences-bundle@latest/ # 语句库地址,通常默认即可。如果您想使用您自己打包部署的语句库,您可以修改此项

image-20240817185213677

  • 创建 docker-compose.yml

vim docker-compose.yml

version: "3.8"  # Docker Compose 文件的版本

services:
# Redis 服务
hitokoto_db:
image: redis:6.0.8 # 使用 Redis 6.0.8 镜像
# 可以添加更多 Redis 配置项,例如环境变量、持久化等

# Hitokoto API 服务
hitokoto_api:
image: hitokoto/api # 使用 Hitokoto API 镜像
ports:
- 8000:8000 # 将容器的 8000 端口映射到主机的 8000 端口
depends_on:
- hitokoto_db # 确保 hitokoto_api 在 hitokoto_db 启动后启动
volumes:
- ./config.yml:/usr/src/app/data/config.yml:ro # 将主机的 config.yml 文件挂载到容器中的指定路径,并以只读模式挂载
# 可以添加更多配置项,例如环境变量、启动命令等
  • 运行一言容器
docker-compose up -d

image-20240817225114140

2、测试

浏览器输入ip+8000端口是否成功返回

自己现象:

http://192.168.1.100:8000

image-20240817225215974

image-20240817225308464

3、给ruyu-blog博客配置一言jei'kou

最后在 ruyu-blog\blog-frontend\kuailemao-blog.env.development或者.env.production配置文件中填写您的ip+端口

# 开发环境配置
NODE_ENV = development
...

# 自己部署的一言接口,如果不填写会默认使用官网的接口,官网接口有每分钟qps限制,有时会得不到想要的结果
VITE_YIYAN_API = 'http://您的IP:8000/'

image-20240817190659438


自己配置:

cd /root/ruyu-blog/blog-frontend/kuailemao-blog

默认配置:

image-20240817225707683

我们来配置下.env.production

vim .env.production

# 生产环境配置
NODE_ENV = production

# 博客代理
VITE_APP_BASE_API = '/api'
# 后台域名
VITE_SERVE=''
# 前台域名
VITE_FRONTEND_URL = ''
# 音乐代理地址
VITE_MUSIC_BASE_API = '/wapi'
# 音乐后台
VITE_MUSIC_SERVE=''
# # 第三方开源集成的音乐前端地址,如果不配置上面菜单栏就不会出现音乐选项
VITE_MUSIC_FRONTEND_URL = ''
# 自己部署的一言接口,如果不填写会默认使用官网的接口,官网接口有每分钟qps限制,有时会得不到想要的结果
VITE_YIYAN_API = 'http://192.168.1.100:8000/'

image-20240817231048546

  • 重新构建测试
#重新构建dist
cd /root/ruyu-blog/blog-frontend/kuailemao-blog/
rm -rf dist
pnpm install
pnpm build

#删除老容器和老镜像
docker rm -f blog-qt
#docker rmi -f blog-qt

#构建新镜像和启动新容器
docker build . -t blog-qt-v1.4.2-v2-2024.8.17
docker run --name blog-qt -d -p 80:80 blog-qt-v1.4.2-v2-2024.8.17
docker ps
##

image-20240817231148437

  • 验证

http://192.168.1.100/

image-20240817231305414

image-20240817231518779

参考

提示

提示

可选,ruyu-blog原作者官网的一言接口有qps限制,想使用流畅一点就自己部署一个

「一言」官方部署文档:https://developer.hitokoto.cn/sentence/deploy.html

「一言」官网:https://hitokoto.cn/

在线 API 地址:https://v1.hitokoto.cn/

API 文档:[https://developer.hitokoto.cn/]

  • docker部署

https://developer.hitokoto.cn/sentence/deploy.html

image-20240806100142919

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人主页:

https://onedayxyy.cn

image-20240805214647028

🍀 知识库:

https://wiki.onedayxyy.cn/

image-20240814230415388

🍀 博客:

http://blog.onedayxyy.cn/

image-20240804075845906

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

往期推荐

QQ群

玩转Typora+Docusuaurus+起始页交流群:(欢迎小伙伴一起探讨有趣的IT技术,来完成一些漂亮的项目)

我的开源项目:

项目名称我的文档我的demo作者demo
1、玩转Typorahttps://wiki.onedayxyy.cn/docs/typorahttps://wiki.onedayxyy.cn/docs/typorahttps://typoraio.cn/#
2、玩转Docusaurushttps://wiki.onedayxyy.cn/docs/mogai-docusaurushttps://wiki.onedayxyy.cn/https://www.docusaurus.cn/
3、个人主页home3.0https://wiki.onedayxyy.cn/docs/home3.0https://onedayxyy.cn/https://github.com/hsBUPT/hsBUPT.github.io
4、全网最美博客-ruyu-bloghttps://wiki.onedayxyy.cn/docs/ruyu-blog-install-one-keyhttps://blog.onedayxyy.cn/https://www.kuailemao.xyz/
5、家庭相册filesite-iohttps://wiki.onedayxyy.cn/docs/filesite.io-photot-install-fullhttps://photo.onedayxyy.cn/https://demo.jialuoma.cn/

https://wiki.onedayxyy.cn/docs/OpenSource

image-20240811063938529

  • typora皮肤

https://wiki.onedayxyy.cn/docs/typora

image-20240518165037517

  • 起始页

https://onedayxyy.cn/

image-20240814230557697

  • 知识库

https://wiki.onedayxyy.cn/

image-20240814230415388

  • 博客

https://blog.onedayxyy.cn/

image-20240803162010305

  • 家庭相册

https://photo.onedayxyy.cn/

image-20240814230625430

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

hitokoto阅读需 7 分钟