WWW.NEKOPARA.UK is down!昨天，大概中午12点，我家里云失联了！我以为是停电了，打电话回去询问情况，然后才知道是因为断网。光猫光信号闪红灯然后我自己的全部服务都无法使用了（众所周知，网站掉线会导致搜索引擎掉排名。于是，我想，能不能用我的云服务器搞个镜像服务器，以便于家里云出问题的时候，至少保持网站处于可访问状态。就有了如下的故事:设置Hosts文件编辑Host文件定义本地回环地址为网站，方便爬取。nano /etc/hosts加上这行：127.0.0.1 www.nekopara.uk镜像网站经过与通义千问的友好技术交流，并尝试了多个工具后，我决定用wget进行网站的镜像工作。wget --mirror --convert-links --adjust-extension --page-requisites --no-parent -P / https://www.nekopara.uk/这样我就把网站镜像到了/www.nekopara.uk/这个目录。安装Httpd我云服务器使用的是默认的Debian11系统，以下是安装过程：apt install apache2 a2enmod ssl systemctl enable --now apache2因为之前部署HAproxy占用了80和443端口，所以启动服务应该是失败的。不过没关系，后面会解决的。放置证书我的证书放置在/certs/目录下：root@ali-nekoproxy-hk:~# tree /certs/ /certs/ ├── le-chain.pem ├── nekopara_uk.key └── nekopara_uk.pem创建/修改配置文件修改端口配置文件是/etc/apache2/ports.conf，以下是修改后的内容：Listen 8080 <IfModule ssl_module> Listen 8443 </IfModule> <IfModule mod_gnutls.c> Listen 8443 </IfModule>我把http端口改成了8080，https改成了8443。创建网站配置文件使用nano在/etc/apache2/conf-enabled/目录创建一个配置文件：nano /etc/apache2/conf-enabled/nekopara.conf文件内容如下：<IfModule mod_ssl.c> <VirtualHost *:8443> ServerAdmin chocola@nekopara.uk ServerName www.nekopara.uk DocumentRoot /www.nekopara.uk # SSL Configuration SSLEngine on SSLCertificateFile /certs/nekopara_uk.pem SSLCertificateKeyFile /certs/nekopara_uk.key SSLCertificateChainFile /certs/le-chain.pem <Directory /www.nekopara.uk> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/nekopara_error.log CustomLog ${APACHE_LOG_DIR}/nekopara_access.log combined </VirtualHost> </IfModule>保存后，重启Httpd：systemctl restart apache2此时，访问 https://www.nekopara.uk:8443 就会出来镜像的网站了。虽然元素有一些缺失了，不过无所谓，反正只是个备胎。配置HAproxy实现宕机自动切换HAproxy的配置文件位于：/etc/haproxy/haproxy.cfg编辑这个配置文件：nano /etc/haproxy/haproxy.cfg然后增加备用服务器设置，增加后配置文件内容如下：#--------------------------------------------------------------------- # 全局设定部分 #--------------------------------------------------------------------- global defaults log global option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # 定义DNS解析器 #--------------------------------------------------------------------- resolvers dns1 nameserver internal-dns 1.1.1.1:53 resolve_retries 3 timeout resolve 10s timeout retry 10s hold other 30s hold refused 30s hold nx 30s hold timeout 30s hold valid 10s hold obsolete 30s #--------------------------------------------------------------------- # 接管HTTP流量实现302跳转HTTPS #--------------------------------------------------------------------- frontend http bind :80 accept-proxy mode http redirect scheme https code 302 if { hdr(Host) -i www.nekopara.uk } !{ ssl_fc } #--------------------------------------------------------------------- # 通过SNI Proxy对HTTPS流量实现四层转发 #--------------------------------------------------------------------- frontend https_proxy mode tcp bind :443 tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } acl is_www.nekopara.uk req_ssl_sni -i www.nekopara.uk use_backend www.nekopara.uk if is_www.nekopara.uk backend www.nekopara.uk mode tcp balance roundrobin option tcp-check server ddns-1 origin.nekopara.uk:3939 resolvers dns1 resolve-prefer ipv4 check send-proxy server backup-server 127.0.0.1:8443 backup保存后，重启HAproxysystemctl restart haproxy这样就配置完成了。尝试在家停掉家里云的web服务器，一样可以访问博客，不过不完整了，部分内容缺失。设置计划任务每天从家里云镜像博客cron有玄学问题，最好是创建shell脚本执行任务。在根目录创建一个download_nekopara.sh文件。cd / nano download_nekopara.sh文件内容如下：#!/bin/bash cd / # 定义下载目录 DOWNLOAD_DIR="/path/to/download" # 创建下载目录（如果不存在） mkdir -p "$DOWNLOAD_DIR" # 使用wget下载网站 /usr/bin/wget --mirror --convert-links --adjust-extension --page-requisites --no-parent -P "$DOWNLOAD_DIR" https://www.nekopara.uk/给文件执行权限：chmod +x ./download_nekopara.sh使用cronrab设置计划任务，选择用nano打开：root@ali-nekoproxy-hk:/# crontab -e no crontab for root - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny Choose 1-3 [1]: 1 crontab: installing new crontab在打开文件后面加上这行：0 2 * * * /download_nekopara.sh然后按F2保存退出。然后使用crontab -l确认一下是否生效：root@ali-nekoproxy-hk:/# crontab -l # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any'). # # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command 0 2 * * * /download_nekopara.sh到此，就配置完成啦。
⚠️此教程仅在Manjaro Linux进行实施，其他发行版不一定适用！⚠️⚠️此教程使用的桌面环境是KDE，并且是Xorg显示服务器，不是Wayland！⚠️可以说，安装中文输入法就是新手使用Linux的第一道坎，这篇文章会教你如何安装中文输入法。安装Fcitx5使用su切换到root，然后使用pacman安装Fcitx5:pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki正常来说还需要如下配置，但是实际上有更方便的方法，即方法2，个人推荐方法2。配置方法1配置环境变量，编辑~/.pam_environmentGTK_IM_MODULE DEFAULT=fcitx QT_IM_MODULE DEFAULT=fcitx XMODIFIERS DEFAULT=\@im=fcitx SDL_IM_MODULE DEFAULT=fcitx使用wps的用户还需要编辑~/.xprofile。不会有人用WPS这个流氓软件吧？export QT_IM_MODULE=fcitx5保存后，然后注销重新登入。按理来说Fcitx5应该启动了，会看到右下角有启用云拼音提示。配置方法2使用pacman安装输入法支持软件包：pacman -S manjaro-asian-input-support-fcitx5安装完成后注销重新登陆，输入法应该就直接出来了。个性化Fcitx事实上，Fcitx5是支持输入法皮肤的，就像这样：获得并转换输入法皮肤皮肤的来源，是搜狗输入法，但是下载的皮肤并不能直接被Fcitx5使用，我们需要进行转换。而转换需要的工具，叫ssfconv，可以把搜狗输入法的皮肤转换为Fcitx5的皮肤，很不错的小工具。考虑到github经常连不上，我这里给个分流下载吧：ssfconv.zip将工具下载后，解压，将ssf皮肤文件放到解压后的文件夹内。使用以下命令转换皮肤：python ssfconv -t fcitx5 你下载的皮肤.ssf 你下载的皮肤如果提示没有安装相关模块，例如这样：python ssfconv -t fcitx5 天选姬·有你很甜.ssf 天选姬·有你很甜 Traceback (most recent call last): File "/run/media/chocola/6T-DATA/chocola/ssfconv/ssfconv", line 4, in <module> from Crypto.Cipher import AES ModuleNotFoundError: No module named 'Crypto'这样：python ssfconv -t fcitx5 天选姬·有你很甜.ssf 天选姬·有你很甜 Traceback (most recent call last): File "/run/media/chocola/6T-DATA/chocola/ssfconv/ssfconv", line 13, in <module> import numpy as np ModuleNotFoundError: No module named 'numpy'要用pacman安装环境，因为现在manjaro已经是用pacman管理系统自带的python环境了。你想用pip的话只能通过miniconda部署多个python环境进行使用。可以参考我的这篇文章：部署Miniconda3并自定义环境安装路径。使用pacman安装环境：pacman -S python-crypto python-numpy然后全面的命令应该就可以正常执行了。附上文件树：tree . ├── 天选姬·有你很甜 │ ├── 16819877314275_former.jpg │ ├── a1.png │ ├── a2.png │ ├── a3.png │ ├── arrow.png │ ├── ban1.png │ ├── ban2.png │ ├── ban3.png │ ├── bar.png │ ├── cn1.png │ ├── cn2.png │ ├── cn3.png │ ├── cn_biaodian1.png │ ├── cn_biaodian2.png │ ├── cn_biaodian3.png │ ├── comp_631184.png │ ├── en1.png │ ├── en2.png │ ├── en3.png │ ├── en_biaodian1.png │ ├── en_biaodian2.png │ ├── en_biaodian3.png │ ├── highlight.png │ ├── menu_highlight.png │ ├── next.png │ ├── oh2_custom01.png │ ├── oh_custom01.png │ ├── prev.png │ ├── quan1.png │ ├── quan2.png │ ├── quan3.png │ ├── radio.png │ ├── skin1_1.png │ ├── skin1_2.png │ ├── skin1.png │ ├── skin2_1.png │ ├── skin2_2.png │ ├── skin2.png │ ├── skin.ini │ ├── skinmanager1.png │ ├── skinmanager2.png │ ├── skinmanager3.png │ └── theme.conf ├── 天选姬·有你很甜.ssf ├── LICENSE ├── README.md └── ssfconv 2 directories, 47 files不过有一说一，现在搜狗输入法的皮肤，好看的越来越少了，之前我还看到有镜音的皮肤和猫娘乐园的皮肤，现在都没了。我这里附上我之前下载并且转换好的皮肤吧：skins.zip安装皮肤到Fcitx5输入法安装输入法皮肤的过程非常简单。只需要把皮肤文件夹复制到对应的文件夹里面就行了。将转换好后生成的文件夹，复制到以下目录：/home/chocola/.local/share/fcitx5/themes/⚠️注意，chocola是我的用户名，应该替换成你自己的用户名！然后就是设置皮肤了，自己看图：然后你试一下输入法，应该就会变成你设置的皮肤了。
这显卡真难插进PCIE其实一开始这张卡第一次安装到我的机架式服务器就已经发现这个问题了。因为我怕搞坏显卡，每次都是小心翼翼的用力。这让我非常的不爽。看这挡板的做工，非常的小作坊，很明显是后配的。之前我也说过，这个卡就PCB是原装的，连挡板都不是！大战小黄鱼有点小贵，18包邮的价格买了个铁片（卖家说是原装显卡拆下来的。更换挡板拆出来的挡板和买的原装挡板：更换后长这样，看这比之前的那个挡板舒服多了。而且这个新买的挡板有小尾巴可以固定到PCB的螺丝，不错。安装显卡把显卡插进Riser卡一插就进去了，比之前的好太多。Riser卡装进服务器，收工。意料之外的情况按理来说，换了更加镂空的挡板，应该是能改善这种涡轮卡散热的。但是事实却是，因为这个正规的挡板契合度比较好，导致显卡与盖板贴合的更近了！！！然后，因为进气比之前更加受阻，所以，温度变高了，无语。傻逼浪潮，设计的这逼养的Riser卡，不给显卡进气空间，真贱啊！！！
心疼哥布林窝里赎回来的女骑士这张RTX2080Ti是我从某鱼购买的，平时一般就作为亮机卡，偶尔会上强度跑Stable Diffusion，打电动。但是一旦要给她上强度，除非我给服务器的风扇拉到50%并且显卡风扇转速拉满，不然温度直奔90度。我想让她陪我久一点，于是琢磨着像给他换个最好的涡轮散热。在某个RTX2080Ti涡轮卡交流群里，多次骚扰群主，得知了最好的涡轮散热器——丽台显卡的涡轮散热器。大战小黄鱼得知最好的散热器是什么后，我就开始有事没事在小黄鱼上面搜索RTX2080Ti涡轮散热器。但是，丽台的散热器存量比较少，大部分是华硕的，还有各种无品牌，也就是白牌的散热器。仅有的几个有丽台涡轮卡散热器卖的，价格也十分难看。终于，有一天我再次打开小黄鱼，发现，之前看过要价100的丽台散热器居然降到65了！于是，我问了问那个老兄是否可以50包邮，他居然同意了，于是我就拿到了这个散热器。购买导热垫和硅脂又是心在滴血，导热材料都快比散热器贵了。为了降低温度当时我也是下血本了。更换散热器终于，在今天，东西都到齐了，正式开工。先来看看原先的显卡和要更换的散热器：新的散热器内部：然后就是拆显卡了：细看核心：这是一个300的核心，不是300A，不过也问题不大，正常使用性能没有差距。而且都放服务器了，通风本来就不好，还是涡轮，你还想超频？！有一说一，哥布林窝里赎回的显卡就是不一样，核心很脏，我强迫症犯了，于是用纸巾和牙签给他处理了一下，至少看起来没这么邋遢了。最折磨的地方来了，导热垫的安装。这个也是我花了最多时间倒腾的，足足搞了一个多小时，因为装上去发现不合适又要拆下来，反反复复去试验，最终是做好了。这步我感觉是最难的。似乎因为导热垫片的问题，无论怎么调整，PCB总会有轻微的弯曲，我是有点害怕的，后面去群里问了，轻微的变形问题不大。然后就是涂上导热硅脂，因为我买的是高导热的硅脂，相当的粘稠，十分难涂抹。装上散热片，以及外壳，完工：将显卡装回服务器先把显卡插到Riser卡上面，然后把Riser卡插回服务器，给显卡接上供电。插电，开机，轻松秒杀！测试温度表现我用GTA5进行了压力测试，其实也算不上压力，因为显卡跑不满，大概温度在64-70度这样波动，相比于之前的散热器低了一两度，但是降温不太明显。然后我就真上强度了，连续跑半个小时的Stable Diffusion，最终温度温度在了76度，相比于之前的82度，已经是有所改善了。
跑路了！今天突然发现，之前用的host.mw申请一年免费证书的网站，一年免费证书跑路了，只有90天免费证书了。于是，我在想之前用的那个ACME单网页客户端会不会也有可能跑路。因为他之前的Gitee的page前段时间已经没办法访问了。有一说一，确实挺好用的，贴个GitHub地址：github.com/xiangyuecn/ACME-HTML-Web-Browser-Client自主创新我就去GitHub把他的HTML文件下载了下来，进行"自研"，删掉了一点我看着不太舒服的东西，然后加上点装饰效果，进行"自主创新"。以下是"自主创新"后的代码: 免费SSL证书申请 Loading... 网页版ACME客户端 ACME Web Browser Client 功能用途本网页客户端用于：向 Let's Encrypt、ZeroSSL、Google 等支持 ACME 协议的证书颁发机构，免费申请获得用于 HTTPS 的 SSL/TLS 域名证书（RSA、ECC/ECDSA），支持多域名和通配符泛域名；只需在现代浏览器上操作即可获得 PEM 格式纯文本的域名证书，不依赖操作系统环境，无需下载和安装软件，纯手动操作，只专注于申请获得证书这一件事。 Functional useThis web client is used to: apply for free SSL/TLS domain name certificates (RSA, ECC/ECDSA) for HTTPS from Let's Encrypt , ZeroSSL , Google and other certificate authorities that support the ACME protocol, and support multiple domain names and wildcard pan-domain names; Simply operate on a modern browser to obtain a domain name certificate in plain text in PEM format, does not depend on the operating system environment, does not need to download and install software, and is purely manual, only focus on the only thing that is to apply for and obtain a certificate. 简单易用点点鼠标 Ctrl+C Ctrl+V 就能完成证书的申请，全程需要的操作少，每一步都有保姆级操作提示，UI友好大气美观；本客户端不需要注册账号、更不需要登录。 Easy to useClick the mouse and Ctrl+C Ctrl+V to complete the certificate application. The whole process requires less operations, and there are nanny level operation prompts at each step; UI friendly, atmospheric and beautiful; This client does not need to register an account, and does not need to log in. 开源项目本网页客户端源码已开源，访问网址由托管仓库提供，源码透明可追溯。 Open source projectThe source code of the client side of this webpage has been open sourced, and the access URL is provided by the hosting warehouse, and the source code is transparent and traceable. 单一文件本网页客户端仅一个静态 HTML 文件，不依赖其他任何文件；因此可以直接保存到你本地（右键-另存为），即可通过浏览器打开。 A single fileThis web client is only a single static HTML web page file and does not depend on any other files; therefore, it can be directly saved to your local (right-click - save as), and you can open it through a browser. 数据安全除了你指定证书颁发机构的 ACME 接口地址外，本网页客户端不会向其他任何地址发送数据，通过浏览器控制台很容易做到网络数据审查。 Data securityExcept for the ACME interface address of the certificate authority you specify, this web client will not send data to any other address, and it is easy to check the network data through the browser console. 系统安全纯网页应用，不会也无法对你的电脑系统做出任何修改。 System securityPure web application, will not and cannot make any modification to your computer system. 证书过期风险提醒由于本网页客户端只能纯手动操作，不支持自动续期，需注意在证书过期前重新生申请新证书（免费证书普遍90天有效期，届时只需重复操作一遍即可），或使用 acme.sh 等客户端自动化续期。 Certificate Expiration Risk AlertSince this web client can only be operated manually and does not support automatic renewal, you should pay attention to apply for a new certificate before the certificate expires (free certificates are generally valid for 90 days, you only need to repeat the operation at that time), or use acme.sh and other client automatic renewal. 步骤一：选择证书颁发机构 Step 1: Select a Certificate Authority * 证书颁发机构 ACME(v2, RFC 8555) 服务URL： Certificate Authority ACME (v2, RFC 8555) Service URL: Let's Encrypt ZeroSSL Google 手动填写URL Fill in the URL manually 测试用[不要选] For testing, don't choose Let's Encrypt: 请按照下面的操作步骤提示进行申请即可得到证书，证书有效期90天。 Please follow the operation steps prompts below to apply, and you can get the certificate, which is valid for 90 days. ZeroSSL: 此URL可能需要先根据下面的提示进行操作来消除跨域不能访问的问题。 This URL may need to be operated according to the prompts below to eliminate the problem of cross-domain inaccessibility. 申请证书前，你需要根据ZeroSSL的官方文档，先注册ZeroSSL账号并生成一个EAB凭据，每次申请证书时使用此EAB凭据，按照下面的操作步骤提示进行申请即可得到证书，证书有效期90天。 Before applying for a certificate, you need to follow ZeroSSL's official documents, register a ZeroSSL account and generate an EAB credential, and use this EAB credential every time you apply for a certificate, follow the operation steps prompts below to apply, and you can get the certificate, which is valid for 90 days. Google Trust Services: 此URL可能需要先根据下面的提示进行操作来消除跨域不能访问的问题。 This URL may need to be operated according to the prompts below to eliminate the problem of cross-domain inaccessibility. 申请证书前，你需要根据Google的官方文档，在Google Cloud中生成一个EAB凭据，每次申请证书时使用此EAB凭据，按照下面的操作步骤提示进行申请即可得到证书，证书有效期90天。 Before applying for a certificate, you need to follow Google's official documents, generate an EAB credential in Google Cloud, and use this EAB credential every time you apply for a certificate, follow the operation steps prompts below to apply, and you can get the certificate, which is valid for 90 days. 注意：因为同一个Google EAB凭据只能绑定到一个ACME账户（私钥），因此你在首次申请证书时，必须同时保存好在第二步操作中新创建的或手动填写的ACME账户私钥，下次申请证书时使用此EAB凭据必须和已保存的ACME账户私钥一起使用。 Note: Because the same Google EAB credential can only be bound to one ACME account (Private key), when you apply for a certificate for the first time, you must also save the newly generated or manually filled ACME account private key in the second step, this EAB credential must be used together with the saved ACME account private key when applying for a certificate next time. 读取服务目录 Read service directory 步骤二：证书配置 Step 2: Certificate Configuration 等待中，请先完成第一步... Waiting, please complete step 1 first... 温馨提示：如果上次申请过证书，可以拖拽已下载保存的记录LOG文件到本页面，将自动填充上次的配置信息。 Reminder: If you have applied for a certificate last time, you can drag and drop the downloaded and saved record LOG file to this page, and the last configuration information will be automatically filled in. * 证书中要包含的域名： Domain name to be included in the certificate: 一个证书可以包含多个域名（支持通配符），比如填写：a.com, *.a.com, b.com, *.b.com；第一个域名将作为证书的通用名称（Common Name）；带通配符的域名只支持DNS验证，其他域名支持上传文件验证；注意：填了www.a.com时，一般需要额外填上a.com。 A certificate can contain multiple domain names (wildcard are supported), for example, fill in: a.com, *.a.com, b.com, *.b.com; the first domain name will be used as the Common Name of the certificate; Domain names with wildcard only support DNS verification, and other domain names support upload file verification ; Note: When www.a.com is filled in, it is generally necessary to fill in a.com additionally. 记住 Remember * 证书的私钥： Private key of certificate: 生成或填写的私钥仅用于ACME接口签名，支持RSA(2048位+)、ECC(曲线)私钥；注意：证书私钥的类型决定了申请到的证书是RSA证书还是ECC(ECDSA)证书，RSA类型适用性更广也更常见；本客户端不会对此私钥进行保存或发送给其他任何人；证书签发后在部署到服务器时，需使用到此私钥；建议每次申请证书时均生成新的证书私钥。 The generated or filled private key is only used for ACME interface signature, and supports RSA (2048-bit+) and ECC ( curve) private keys; Note: The type of certificate private key determines whether the applied certificate is an RSA certificate or a ECC(ECDSA) certificate, RSA type is more widely applicable and more common; this client will not save or send this private key to anyone else; this private key needs to be used when deploying to the server after the certificate is issued; it is recommended to generate a new certificate private key every time you apply for a certificate. 创建新RSA私钥 Generate RSA private key 创建新ECC私钥 Generate ECC private key 手动填写私钥 Manually fill in the private key * ACME账户的私钥： Private key of ACME account: 生成或填写的私钥仅用于ACME接口签名，支持RSA(2048位+)、ECC(曲线)私钥；账户私钥类型对证书无影响；本客户端不会对此私钥进行保存或发送给其他任何人；一个私钥相当于一个账户，可用于吊销已签发的证书；建议每次申请证书时使用相同的一个私钥（这样短期内多次申请证书时，验证域名所有权的参数极有可能会保持相同），不过每次都生成一个新的私钥大部分情况下也不会有问题。 The generated or filled private key is only used for ACME interface signature, and supports RSA (2048-bit+) and ECC ( curve) private keys; the account private key type has no effect on the certificate; this client will not save or send this private key to anyone else; A private key is equivalent to an account and can be used to revoke an issued certificate; it is recommended to use the same private key every time you apply for a certificate (in this way, the parameters used to verify the domain name ownership are likely to remain identical when multiple certificate applications are made in a short period of time); However, generating a new private key every time will not be a problem in most cases. 注意：如果你选择的ACME服务（比如Google）要求提供EAB凭据并且限制了同一个EAB凭据只能绑定到一个ACME账户（私钥），那每次使用此EAB凭据时必须使用相同的一个私钥（首次时如果新创建了私钥，此新私钥需立即保存起来下次和此EAB凭据一起使用）。 Note: If the ACME service you choose (such as Google) requires EAB credentials and limits the same EAB credentials to only one ACME account (private key), then you must use the same private key every time you use this EAB credential (if you generate a new private key for the first time, this new private key needs to be saved immediately and used with this EAB credential next time). 创建新RSA私钥 Generate RSA private key 创建新ECC私钥 Generate ECC private key 手动填写私钥 Manually fill in the private key * ACME账户的联系邮箱： Contact email of ACME account: 此邮箱地址用于证书颁发机构给你发送邮件，比如：证书过期前的续期通知提醒。 This email address is used by the certificate authority to send you emails, such as a reminder of renewal notice before the certificate expires. 记住 Remember EAB凭据： EAB Credentials: 当前ACME服务要求提供外部账号绑定凭据（External Account Binding），比如ZeroSSL：你可以在ZeroSSL的管理控制台的 Developer 中获得此凭据，所以你需要先注册一个ZeroSSL的账号。 The current ACME service requires external account binding credentials, such as ZeroSSL: You can obtain this credentials in the Developer of the ZeroSSL management console, so you need to register a ZeroSSL account first. *EAB KID: *HMAC KEY: 确定 OK 步骤三：验证域名所有权 Step 3: Verify Domain Ownership 等待中，请先完成第二步... Waiting, please complete step 2 first... 请给每个域名选择一个你合适的验证方式（推荐采用DNS验证，比较简单和通用），然后根据显示的提示完成对应的配置操作。 Please select a suitable verification method for each domain name (DNS Verify is recommended, which is relatively simple and common), and then complete the corresponding configuration operations according to the displayed prompts. 请每个域名选择好对应的验证方式，根据显示的提示进行对应的配置操作；必须所有域名配置完成后，再来点击下面的“开始验证”按钮进行验证，如果验证失败，需要返回第二步重新开始操作。 Please select the corresponding verify method for each domain name, and perform the corresponding configuration operation according to the displayed prompts; after all domain names are configured, click the "Start Verify" button below to verify, if the verify fails, you need to go back to the step 2 Start the operation. 开始验证 Start Verify 取消 Cancel 重试 Retry 步骤四：下载保存证书PEM文件 Step 4: Download and save the certificate PEM file 等待中，请先完成第三步... Waiting, please complete step 3 first... * 保存证书PEM文件： Save certificate PEM file: 必须保存此文件，请点击下载按钮下载，或者将证书文本内容复制保存为文件（PEM纯文本格式）；文件名后缀可改成 .crt 或 .cer，这样在Windows中能直接双击打开查看。本PEM格式文件已包含你的域名证书、和完整证书链，文本中第一个CERTIFICATE为你的域名证书，后面的为证书颁发机构的中间证书和根证书，如过有需要你可以自行拆分成多个.pem文件。 This file must be saved, please click the download button to download, or copy the text content of the certificate and save it as file (PEM plain text format); the file name suffix can be changed to .crt or .cer , so that it can be directly double-clicked to open and view in Windows. This PEM format file already contains your domain name certificate and complete certificate chain. The first CERTIFICATE in the text is your domain name certificate, followed by the intermediate certificate and root certificate of the certificate authority, if necessary, you can split it into multiple .pem files. 下载保存 Download * 保存证书私钥KEY文件： Save the certificate private key KEY file: 请点击下载按钮下载，或者将私钥文本内容复制保存为文件（PEM纯文本格式，.key后缀可自行修改成.pem）。如果第二步操作中你手动填写了证书私钥，此处的证书私钥和你填写的是完全一样的，可以不需要重复保存；如果你是新创建的证书私钥，则你必须下载保存此证书私钥文件。 Please click the download button to download, or copy and save the text content of the private key as file (PEM plain text format, the .key suffix can be modified to .pem by yourself). If you manually filled in the certificate private key in the step 2, the certificate private key here is exactly the same as what you filled in, and you don’t need to save it repeatedly; if you are a newly created certificate private key, you must download and save it This certificate private key file. 下载保存 Download * 保存记录LOG文件： Save the record LOG file: 建议下载保存此文件，本记录文件包含了所有数据，包括：证书PEM文本、证书私钥PEM文本、账户私钥PEM文本、所有配置参数。下次你需要续签新证书时，可以将本记录文件直接拖拽进本页面，会自动填写所有参数。 It is recommended to download and save this file. This record file contains all data, including: certificate PEM text, certificate private key PEM text, account private key PEM text, and all configuration parameters. Next time you need to renew a new certificate, you can drag and drop the record file directly into this page, and all parameters will be filled in automatically. 下载保存 Download 你需要其他格式的证书文件？ Do you need certificate files in other formats? 大部分服务器程序支持直接使用 + 来配置开启HTTPS（比如Nginx），如果你需要 *.pfx、*.p12 格式的证书（比如用于IIS），请用下面命令将PEM证书转换成 pfx/p12 格式： Most server programs support directly using + to configure and enable HTTPS (such as Nginx). If you need a certificate in *.pfx or *.p12 format (such as for IIS), please use the following command to convert the PEM certificate Convert to pfx/p12 format: openssl pkcs12 -export -out .pfx -inkey -in IIS证书链缺失？ IIS certificate chain missing? 对于Windows IIS服务器，你需要将证书链安装到“本地计算机”的“中间证书颁发机构”中；请将PEM证书中的所有证书拆分成单个PEM文件（后缀改成.crt或.cer），然后将系统中缺失的中间证书双击打开然后安装进去；详细参考： For Windows IIS server, you need to install the certificate chain into "Intermediate Certification Authorities" in "Local Computer"; please split all certificates in PEM certificate into a single PEM file (change the suffix to .crt or .cer), then double-click to open the missing intermediate certificate in the system Then install it; detailed reference: http://support.microsoft.com/kb/954755 本客户端部分原理简介 Introduction to the principle of this client 得益于现代浏览器的 crypto.subtle 对加密功能标准化，不依赖其他任何js库就能在网页上实现 RSA、ECC 的加密、解密、签名、验证、和密钥对生成。在本客户端内的 X509 对象中：用 X509.CreateCSR 来生成CSR，用 X509.KeyGenerate 来创建PEM格式密钥，用 X509.KeyParse 来解析PEM格式密钥，用 X509.KeyExport 来导出PEM格式密钥；这些功能都是根据相应的标准用js代码在二进制层面上实现的，二进制数据操作封装在了 ASN1 对象中：实现了 ASN.1 标准的二进制解析和封包，使用 ASN1.ParsePEM 方法可以解析任意的PEM格式密钥或证书。以上这些都是实现ACME网页客户端的核心基础。 Thanks to the standardization of encryption functions by crypto.subtle of modern browsers, RSA and ECC encryption, decryption, signature, verification, and key pair generation can be implemented on web pages without relying on any other js library. In the X509 object in this client: use X509.CreateCSR to generate CSR, use X509.KeyGenerate to create PEM format key, use X509.KeyParse to parse PEM format key, use X509.KeyExport to export PEM format key; These functions are implemented at the binary level with js code according to the corresponding standards, and binary data operations are encapsulated in ASN1 objects: ASN.1 standard binary parsing and encapsulation are implemented, Arbitrary PEM format keys or certificates can be parsed using the ASN1.ParsePEM method. These are the core foundations for implementing the ACME web client. 然后就是对接ACME实现证书的签发，和实现交互UI；对接ACME可以直接参考 RFC 8555 标准。有些证书颁发机构的ACME服务对浏览器支持不良，未提供齐全的 Access-Control-* 响应头，导致网页内无法直接调用服务接口；目前采用的解决办法非常简单粗暴，比如ZeroSSL：检测到此ACME服务存在跨域问题时，会调用 acmeReadDirGotoCORS() 方法告诉用户操作步骤（你可以点此手动调用此方法），通过在他们的页面内运行本客户端来消除跨域问题（既然打不过，那就加入他们）。 Then it is to connect with ACME to realize certificate issuance and realize interactive UI; for connecting with ACME, you can directly refer to the RFC 8555 standard. The ACME services of some certificate authorities do not support browsers well, and do not provide complete Access-Control-* response headers, so that the service interface cannot be called directly in the web page; the current solution is very simple and rude, such as ZeroSSL: detect this ACME When there is a cross-domain problem with the service, the acmeReadDirGotoCORS() method will be called to tell the user the operation steps (you can call this method manually by clicking here), and the cross-domain problem will be eliminated by running this client in their page (if we can't beat them, we'd better join them). Language: 中文 | EN 部署页面最终页面我部署到了Cloudflare page，主要是为了方便自己使用吧，不然每次都记不住那个GitHubpage的地址。如果你要用的话也可以来用，网址是ssl.nekopara.uk
意外发现我网站的图片静态资源都已经走OSS了，OSS的速度很给力，图片加载很快，但是我还是发现我网站首次加载的时候有点慢，于是我打开了浏览器的性能调试检测一探究竟。不看不知道，一看吓一跳，根据文件大小从大到小排序，最大的一个图片文件居然回源了？！然后我意识到这个是live2D看板娘的纹理文件。解决问题既然定位到问题出在live2D看板娘，那就把插件文件整个拿下来，仔细品读。寻找相关文件我使用了Dolphin的文件文本内容检索，定位到了这个texture_00.png相关的代码位置，就在model.json这个文件里面，完整路径是：usr/plugins/Pio/models/pio/model.json,以下是文件的内容：{ "posted": "Dreamer-Paul", "model": "model.moc", "textures": [ "textures/texture_00.png" ], "layout": { "center_x": 0.0, "center_y": 0.0, "width": 2.0 }, "hit_areas_custom": { "head_x": [-0.35, 0.6], "head_y": [0.19, -0.2], "body_x": [-0.3, -0.25], "body_y": [0.3, -0.9] }, "motions": { "idle": [ {"file": "motions/idle/idle.mtn"} ] } }很显然，textures/texture_00.png就是文件路径。替换为OSS的文件连接我测试过了，直接换成URL链接是没问题的，就行下面这样：{ "posted": "Dreamer-Paul", "model": "model.moc", "textures": [ "https://teachermate.oss-cn-qingdao.aliyuncs.com/PjKgz-1728558308008-texture_00.png" ], "layout": { "center_x": 0.0, "center_y": 0.0, "width": 2.0 }, "hit_areas_custom": { "head_x": [-0.35, 0.6], "head_y": [0.19, -0.2], "body_x": [-0.3, -0.25], "body_y": [0.3, -0.9] }, "motions": { "idle": [ {"file": "motions/idle/idle.mtn"} ] } }保存后替换掉原来的model.json。查看效果保存好文件后，刷新浏览器，速度确实要快不少了：
前言当初我刚建站的时候，就想搞邮件提醒了，但是因为能找到的评论邮件提醒插件都没办法使用，于是作罢。前几天在一个交流群里，有人跟我聊天的时候说目前他试下来有且只有一个插件是可以用，我一问，好嘛，居然是我之前就试过的插件，因为没效果已经禁用了。但是，我还是抱着死马当活马医的心态，试了一下，有用，但是又不完全有用，因为也就刚设置好，发了几个邮件，后面就成哑巴了。为此，我折腾了好久。。。。。。我在折腾时无意间点开了插件作者的Github，发现这个插件居然不久前更新了。于是我抱着试一试的心态试一试，就有了这篇文章。安装插件安装过程非常简单，去作者Github地址下载就是了。Github项目链接：https://github.com/jrotty/CommentNotifier下载后，解压出来文件夹，命名为CommentNotifier，丢到网站目录下的/usr/plugins插件目录，进入管理页面，启用就行了。如果Github打不开没法下载我这里有下载链接（渐变主题我加了猫娘乐园图片，改了一下文本）：CommentNotifier.zip配置插件我试了几个邮箱，可能是我打开方式不对，只有QQ邮箱可以正常发件，下面我来说一下具体怎么配置。配置qq邮箱配置QQ邮箱，启用STMP服务设置，期间需要手机发送短信验证，是有点麻烦的。具体方法自己去查。配置好后，他会给你一个独立的登陆密码，这个密码就是要在插件里面填写的邮箱密码。请注意，这个密码它只会显示一次，记得保存好！插件设置我会逐项列举每一项我的设置：设置名称选项/内容邮件推送方式SMTPSMTP服务器地址smtp.qq.comSMTP登录用户你的邮箱地址，如果设置了别的名称就填那个名称，例如example@foxmail.comSMTP邮箱地址你的邮箱地址，如果设置了别的名称就填那个名称，例如example@foxmail.comSMTP登录密码上一步设置你得到的独立密码SMTP加密模式TLS加密SMTP服务端口587发件人姓名你的名称站长收件邮箱你的邮箱地址，用于接收通知是否通知站长通知发信方案传统直发方案配置好后，你可以点最下面的点击测试邮件发信是否正常【仅适用于SMTP模式】，大概过几分钟后，看看你设置的站长邮箱有没有收到测试邮件。如果收到了，大概率就没什么问题了。不过最好还是自己写个评论，然后回复，测试一下。邮件效果：大概效果就长这样：Ciallo～(∠・ω < )⌒☆ 和猫娘乐园配图是我自己加上去的，原版没有。如果你下我这篇文章附带的那个就有了。23333
So NVIDIA, Fuck You ！最近几年，显卡市场简直如同地狱，NVIDIA堂而皇之的玩起了按性能定价，把消费级卡皇从5000价位（GTX1080Ti,5699元，GTX980Ti,4699元，GTX780Ti,4999元）硬生生拉到了10000价位（RTX2080Ti,9999元），后续继续水涨船高，RTX3090 11999,RTX4090 12999,甚至因为AI热和挖矿，根本没办法原价购买，RTX4090更是涨价到了2.5W+。。。此时AMD也不给力，高端显卡市场毫无还手之力，可以说老黄是赚得盆满钵满，也被骂得最惨。因为按性能定价的原因，显得新显卡毫无性价比，再加上矿老板有了第一次甩显卡导致价格暴跌的经验（当时2019年矿难，RX580 8G只需要三四百一张），开始控住二手市场不让显卡价格暴跌，搞得二手显卡价格还是狗屎（如果是之前的那种情况，那RTX3060 12G矿难的时候应该只要五六百）。但是，有那么一张显卡，刚推出的时候因为定价被骂得很惨，但是现在却成了二手显卡的香饽饽，他就是——RTX2080Ti入手经过这可以说是一篇迟到的测评，显卡是我在七月底购买的。本来想买A卡，毕竟我是Linux用户，Linus的So NVIDIA,Fuck You!名言永不过时。但是奈何5700XT之后，A卡就没有涡轮卡了，5700XT对于我当时现任的RX580 8G提升不是很大，看中的显卡是6800XT,但是因为没有涡轮卡不能满足我把显卡放到机架式服务器的需求只能作罢。于是，我就只能购买涡轮卡里面最具性价比的卡——RTX2080Ti说句实话，这个价位在当时买到，别人的评论是：这个价格，炸了我都夸他炸得响！显卡照片显卡到手后，我先是检查了一下外观，确认没问题。不过我后面才知道，这是一张拼装卡，只有PCB是华硕的，其他都是拼装的白牌配件。甚至拿到手第一眼看到散热器保护膜都没撕掉，还以为捡到宝了直到我发这篇博客为止，这张显卡一切正常。这也算是我人生中第一张卡皇，也算是小圆梦，RTX2080Ti是我高中时期梦寐以求的显卡，当时天天看到那些科技区UP主动不动就是简简单单亮机卡RTX2080Ti，现在确实在我这也是亮机卡，23333显卡安装因为我是机架式服务器当作电脑使用，机箱内部空间狭小。再加上"浪潮的阴间设计"，导致显卡涡轮直接给贴到服务器盖板上面了，进气是最大的问题。测试跑AI的情况下，过一会就86度了，这还是把显卡风扇拉满的情况下。当时我显卡刚到手就借给朋友拿去打游戏测试显卡稳定性，涡轮拉满的情况下，这卡温度就没上过70度。于是我怀疑应该就是服务器盖板贴得太近导致显卡无法吸取到足够的空气进行冷却，后续我尝试开盖运行状态下跑AI,温度最终稳定在了73度，印证了我的猜想。估计过段时间我要去买个涡轮口下凹的散热器，不然显卡高温真的不太好。然后我人生第一张属于自己的显卡——RX580 8G就光荣退役了真的，全网估计找不到几张，箱说齐全，没矿过的RX580!显卡使用虽然绝大部分时间这卡就是当作亮机卡使用，真～RTX2080Ti亮机卡首先是neofetch日常我就拿这张卡，嗯，练英语听力，做设计作业，GIMP，Blender，Revit，SketchUp，Stable Diffusion，敲代码…………就是没怎么拿来打游戏。虽然打游戏确实也很猛，问就是试过。给一张跑Stable Diffusion的截图，你们自行感受一下吧：附上跑出来的图：
前言这些资料是之前课程设计的时候老师要求去参考的，《建筑设计资料集》被成为建筑学的百科全书，对建筑设计很有帮助。我在我的小破站分享出来，感兴趣的可以看一下。建筑设计资料集 第1分册 建筑总论建筑设计资料集 第2分册 居住建筑设计资料集 第3分册 办公·金融·司法·广电·邮政建筑设计资料集 第4分册 教育·文化·宗教·博览·观演建筑设计资料集 第5分册 休闲娱乐·餐饮·旅馆·商业建筑设计资料集 第6分册 体育·医疗·福利建筑设计资料集 第7分册 交通·物流·工业·市政建筑设计资料集 第8分册 建筑专题