新的风景
未读有一天我在修复无法启动的verdacci容器时,不小心删除了它的配置文件。官方容器不自动生成默认配置文件真的很令人苦恼,不是最小可用的镜像为什么会被上传呢?我不得而知,但这却是常见的现象。
我忘记了当时是从哪里找到的配置文件,官方文档也没有提供好用的信息。非常疲惫的情况下,抱着试一试的心态询问了AI:按照我的服务器配置了一下之后:这种感觉很奇妙,原本需要我把书签翻烂,搜索引擎干报废的事情,居然一问一答之间就可以解决。AI,一定还可以做什么了不起的事情:
试验场
AI可以成为我的健身教练吗?
AI可以成为我的写bug小助手吗?
反向代理与CDN回源我的主页和播客为了稳定性考虑是部署在阿里云的ECS服务器上的。而我的图床和Bucket则部署在家里的服务器,这样可以节省不少的空间费和流量费。但家里的宽带是没有公网ip的,所以我使用了内网穿透+反向代理的方式访问家里的服务,详见:DNS解析与反向代理。这样会有一个问题,我的主页和播客是可以直接通过ip+端口访问的,因此cdn的回源地址就是ip+端口。但家里服务的域名是全部解析至公网VPS的443端口,再由frp统一转发至家里的反向代理服务器。那这些服务的回源地址要怎么写呢?全部写VPS的443,要怎么拿到指定站点的资源呢?
回源SNI这个问题的关键在于,cdn通过ip+端口访问反向代理服务器时没有告知域名信息。解决的办法是,在https通信中,TLS协议有一个叫做SNI的扩展,它允许客户端在建立SSL/TLS连接的初始阶段就告知服务器其所请求的域名,以便服务器能够正确地返回对应域名的SSL证书,实现HTTPS加密连接。我所使用的cdn是阿里云提供的服务:
进入cdn对应的域名管理页。
左侧导航栏点击回源配置。
在下面找到SNI配置,打开开关并配置相应的域 ...
why do this?
希望封面更加抓人眼球
仅凭标题和一张图片无法即概括内容,又点明重点。
不想花费太多的时间在ps上
改造思路1. front-matter既然封面的上的内容与文章内容相关,那就应该遵循文章书写工作流,而不涉及代码。在文章模板中先添加两个front-matter元素:
123456789101112131415161718---title: <%tp.file.title%>date: <%tp.date.now("YYYY-MM-DD HH:ss")%>categories: <%tp.file.folder()%>unique_url: <%tp.user.getUniqueUrl()%>copy_url: https://world.ocer.cc/<%tp.user.getUniqueUrl()%>cover:top_img:tags:updated:keywords:swiper_index: 5top_group_index: 5ai: "true"m ...
直入主题,在微前端项目的开发过程中,我主要使用3种通信方式,按照易用程度排序为:
location.query
sessionStorage
props
在普通组件开发过程中,这也是常用的父子组件通信方式,只是它们与微前端发生的化学反应要更加剧烈。
location.query将参数存在url中,这种方式有几个好处。
页面与参数高度匹配,不需要考虑离开页面时参数清理的问题。
可直接通过URL分享指定页面与内容,减少使用者间的沟通成本(比如可以跳转至指定tab页,或者表格的指定页数和搜索参数)。
浏览器历史即是操作历史,在返回时可直接调用goBack()方法,不需要记录上一个页面的参数。
缺点:
URL不美观,数据存量有极限。
数据有一定的时效性,譬如刷新时按照query请求数据,其中的参数可能已经无效。
sessionStorage相较于location.query来说,它的优点是:
URL美观,不易被使用者察觉和破坏。
可以存储的数据量大。
缺点:
操作繁多,需要字符串与对象间的转换。
需要考虑页面进出时的数据清理问题。
不具有url分享的属性。
props不好用 ...
阅读本篇之前需要首先阅读git工作流。除非完全不想操作服务器,并且没有较严格的版本控制需求,否则还是建议使用 git 工作流。
技术提要
docker
obsidian
git
webdav
webdav
[!通义千问] 什么是webdav?WebDAV(Web-based Distributed Authoring and Versioning)是一种基于HTTP/HTTPS协议的互联网工程技术标准,旨在提供一种标准化的方法来让用户通过网络进行分布式文件编辑、文件管理和文件协作。简单来说,WebDAV允许用户像操作本地文件系统一样,通过网络在远程Web服务器上创建、读取、更新和删除文件及目录。
hexo 框架本身提供了 hexo server 作为本地调试和部署的方式,我们只需在服务器上启动并将指定端口暴露即可访问。在 server 启动期间,posts文件夹下的文件如有更改,会自动进行索引。那我们放弃使用git管理posts文件夹,并使用webdav进行文件的直接更替,即可省去拉取代码等需要操作服务器的步骤。
nextcloud
一个支持webdav的私有部署云盘 ...
技术提要
hexo-轻量级博客框架。
Obsidian-作为编辑器及发布工具。
git-用于博客与文章代码的版本管理。
docker-博客载体。
docker基本部署因为hexo本身提供了hexo server作为服务启动,因此我们只需要将博客项目clone到容器内部,安装依赖并启动服务即可。
123456789101112# 构建时执行FROM node:latestRUN npm install -g hexo-cli \&& git clone https://你的项目git地址 \&& cd 项目目录 \&& npm install# 启动时执行CMD cd 项目目录 \&& git pull \&& hexo server -p 5000# 之后将容器的5000端口映射到服务器指定端口即可访问
每当我们更新博客内容后,只需要上传git库并重启docker容器就会自动上线最新版本了。
Obsidian
一个基于markdown的知识库管理工具
Obsidian官网容我先说一句,word真是一个非 ...
这个章节我们将实现通过形如 https://ocer.cc 的域名访问我们的局域网设备/服务。
什么是DNS?当你想要访问这个网站的时候,只需要在浏览器的地址栏里输入 https://world.ocer.cc,回车就可以到达这里。但实际上这个网站在互联网上的地址是形如192.168.127.126的数字ip。相信前者会更容易让你记住,甚至你只需要在浏览器输入ocer.cc这7个字符就可以被重定向到这里。我们之所以能通过这么多条路到达这个地方,全靠有DNS为我们指路。
[!文心一言] 什么是DNS?DNS,全称为域名系统(Domain Name System),是一个用于将域名转换为IP地址的分布式数据库。它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。用户通过在应用程序中输入DNS名称,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。这样,用户就可以通过易于记忆的域名来访问互联网上的计算机和服务,而无需记住复杂的IP地址。
简单理解:
将域名解析至公网主机那么DNS是如 ...
我们将通过接下来的两个章节实现外网访问我们的内网服务。
内网穿透一种可以让互联网设备访问到我们局域网设备的方式。
为什么需要内网穿透?由于我们国内的运营商在为我们安装宽带之后,并没有为我们分配公网ip(指ipv4),因此我们局域网内的设备是无法直接在互联网上被找到的,也就是说我们部署的服务在我们家以外的地方是无法访问的。当然这不是运营商的问题,ipv4的数量本身就不足以分配给每一个人。虽然现在ipv6在逐渐普及,但ipv4仍然作为主流的网络地址。
VPS与frp虽然外界找不到我们的局域网设备,但我们的局域网设备是可以主动与有公网ip地址的设备建立连接的。那么,只要我们把请求发送给有公网ip的设备,让它转发给已经与之相连的局域网设备,我们就可以间接访问到我们的局域网设备。
所以,我们现在还需要两样东西:
一台拥有公网ip的主机(VPS)。
局域网设备与该主机相连的方式。
VPS由于我们只要求公网主机进行转发,不需要它做其他事情。因此公网主机不需要具有很强的性能,但需要有足够的带宽。
多少算足够呢?在Nas服务器的应用场景中,4K视频播放应该是最需要大带宽支持的一个场景。
[!文 ...
什么是路由?就是让数据流向它应该流向的地方。
在家用网络中,一般存在两个路由设备。一个是运营商给予的用来进行拨号上网的交换机,但现在基本都给路由器了,可以直接开WIFI,就是性能一般,我们暂且称之为主路由。另一个是我们自己买来的性能较强的WIFI路由器,我们称之为从路由。当然,我们完全可以直接用我们自己买的路由器来拨号,作为主路由,性能更强的同时,也能统一管理局域网中的设备。
什么是软路由?它是安装于通用计算机上的专业路由软件。
网关网关就是类似于海关的地方,数据的进出都要通过这个指定的地方,我们也在此规定了什么数据能通过,什么数据不能通过。一般来说,设备的默认网关就是与其直接相连的路由器。比如这里PC的网关就是主路由,PC通过主路由->网口连接至互联网。如果我们把PC的网关设置为从路由,那么数据的流向就变为了:PC->主路由->从路由->主路由->网关。此时的从路由对于PC来说,就成为了旁路由。那这么做的意义是什么呢?
旁路由的意义主路由与旁路由(软路由)能做到的事情是一样的,但我们可以设置它们去做不一样的事情。比如说在旁路由中开启科学上网、广告过滤等功 ...
市面上已有较为成熟的Nas软硬件服务提供商,如群辉、威联通等等,但成熟稳定的服务,必然意味着要在扩展性和价格上进行取舍。秉承着折腾的精神与尽可能100%私有化的原则,我选择自己组装硬件并搭建系统。
Unraidunraid官网具体的安装教程可以查看中文社区,非常详细。
为什么是Unraid?我的理解,Unraid是一个基于Raid的VM与docker载体,它简化了许多配置VM与docker的步骤,具有极强的扩展性。并且它具有极高性价比的备份机制:
数据备份:Raid与奇偶校验作为Nas服务器的原始需求出发,首先它需要保证数据的绝对安全。安全最直接不过备份,而备份又基于Raid。
什么是Raid?简单来说就是将多个磁盘组成一个大的磁盘系统,在我们使用时可直接当做在一个磁盘内进行操作。
常见的Raid有以下几种:Raid0将数据分成N份,对N个硬盘进行写入,具有非常高的执行性能,但是缺少备份机制。
Raid1将硬盘分为同等的两份,并进行同时写入。最简单的备份,但是会损失一半的存储容量。
Raid3(奇偶校验)Raid3引入了一种叫做奇偶校验的校验机制。所有的数据都由0和1组成,而不同的数据 ...