阅读视图

发现新文章,点击刷新页面。

梅州卧佛山、雁山湖游记

清明假期自驾车去了离家不远的卧佛山和雁山湖,简单记录下游玩的经历。

卧佛山

我们九点多起床,十点半出发,车程两个半小时,到达卧佛山景区是一点半,因为门票优惠问题和景区工作人员纠扯了半个小时。

这个景区不大,上山要坐观光车,逛过景点再从后面走下山。因为上山和下山不是一条路,一般人都是上山坐车,下山走路。当然也可以下山坐车,但是要走一段回头路。

我们这次是上山走路,下山坐车。这座山不高,大概半小时就上去了,一路上风景还行,都是红色的山体,Jasmine笑说这是「赤水丹霞」。

上山后有三个景点,分别是佛手、玻璃栈道和空中之镜。这些都要额外收费,我们没有玩。简单地在山上转悠了一下就下山了,全程两个小时。

回去的路上我们去了「嘉应古城」,这个古城还没有完全开发,店铺比较少,仅有几家卖吃的,很少有其他的店铺。逛着逛着下起了雨,我们就回了酒店。

九点多饿了出来吃饭,吃的是没有吃过的地锅鸡。这种菜做法很别致,桌子中间一大口锅,很深。老板把食材拿过来当场抄,炒过后盖上锅盖焖一会儿,然后又在锅的四周没有汤汁的地方贴一圈白馍(这是才知道为什么锅很深了,为了贴馍),然后继续焖。等了大概半个小时,总算好了,这种菜心急可吃不得,太久了。我们点的是微辣,吃起来都觉得太辣了,不过菜的味道很好。

雁山湖

第二天一早在下小雨,等我们进入雁山湖景区已经十点半了。工作人员说十一点大草坪会有表演,于是就直奔那里。等了一会儿眼看就要十一点了,只有我们一家人和工作人员,还以为会取消演出。演出还是准时开始了,总共才3个节目,分别是川剧变脸、魔术和小丑发气球。前两个还好,最后一个感觉是在凑数。节目都比较简单,但聊胜于无。

看完演出雨停了,我们沿着湖走了一大圈,还登上了湖中的小岛。之后开车在景区转了一圈,实在没什么好逛的就出来了。可以看出这个景区早期投资了不少钱,建的也不错,不过现在没落了,几乎是满目疮痍。不知是不是下雨的缘故,整个园区几乎没见到其他人。

这次去的地方不远,开车也能接受,虽然景区的可玩性不高,不过带着孩子出去走走也不错,可以打发时间和亲近自然。

WordPress备份的内容及方法

为了防止意外发生,需要定期备份WordPress的数据,以下是我根据自己的需要整理的备份内容及方法:

1. 备份数据库

  • 使用插件:如Database Backup for WordPress插件,可自动备份数据库到电子邮箱。(频率:每周一次,自动)
  • 数据库操作:通过phpMyAdmin导出数据库文件。(频率:每年一次,手动)

2. 备份文章

  • 备份到博客托管平台:WordPress后台导出xml文件,然后导入到WordPress.com或者Blogger。(频率:每年一次,手动)
  • 电子邮件备份:使用电子邮件订阅博客服务(如follow.it),每次更新文章时,将会收到邮件。(频率:每次发布文章一次,自动)

3. 备份文件

  • 主题文件:备份wp-content/themes目录。
  • wp-config.php:包含数据库连接信息等重要配置。
  • .htaccess:用于URL重写等服务器配置。
  • robots.txt:搜索引擎规则。
  • favicon.ico:网站图标。
  • 上传文件:备份wp-content/uploads目录。因为我的图片全部是外链,不需要备份这个文件夹。
  • 手动备份:通过FTP或文件管理器下载文件。
  • 频率:每次修改后立即备份。

4. 备份外链图片

  • 查找包含图片的文章
    SELECT ID, post_title,guid FROM wp_posts WHERE post_type = 'post' AND post_content LIKE '%<img%';
  • 查找包含2张及以上图片的文章
    SELECT ID, post_title, guid FROM wp_posts WHERE post_type = 'post' AND (LENGTH(post_content) - LENGTH(REPLACE(post_content, '<img', ''))) / LENGTH('<img') >= 2;
  • 备份方法:手动将文章复制粘贴到国内各大平台,如微信号、知乎、豆瓣、头条号等,这些平台会自动将外链图片上传到自身的服务器。
  • 频率:不定期备份。

WordPress Newsletter 插件

前几天看到 拾月 开发了一个 RSS to Email 的服务,可以让读者订阅网站的 RSS feeds,0.002 元 / 封。

目前有 5 人民币的免费额度,对大部分博客来说,已经够用很久。

个人感觉这个服务很棒,不用花费额外精力配置,也不用再编辑一遍文本,都是自动化的,特别适合静态博客。

以此为契机,我搜了搜 WordPress 的插件商店,发现了 Newsletter

比起其他类似功能的插件,这个插件的优势是不需要注册,如果我保持 WordPress 版本不变,即使这个插件不更新维护,我依旧能使用。

设置很简单,如果 WordPress 配置过 SMTP 邮件转发,则可以直接下载使用该插件。

我目前使用的是免费版。可以展示近期的多篇博客,也可以每封邮件展示一篇博客全文。

CleanShot 2025-03-03 at 14.50.50@2x

Note: @JeffreyCalm 补充了一下非自建邮件服务(比如Gmail、Outlook)一天用 SMTP 发 200 封左右会被封停,自建的应该没有该限制。

自建邮箱则会有触达率的问题,目前大部分邮件服务商是白名单模式,新且小的 STMP 转发有可能被退信。

第一次卖域名

12月9日注册新域名,12月10日下午在阿里云发布一口价域名(临近下班才通过域名所有权的认证),12月11日上午11点阿里云短信通知我发布的域名已被人下单,域名卖出的速度之快令人咋舌。

知道域名被人买了,我是又喜又忧,喜的是原本到期不再续费的旧域名很快被人买走,忧的是旧域名做301重定向才不到两天,这么短的时间旧网址的权重还没有传递到新网址上。

根据规则,我需要在10日内将旧域名转入阿里云,否则将受到50元保证金的罚款。我一直拖到第八天才进行域名转入操作。Namesilo的域名转出很方便,而且提供快速转出功能,十几分钟就把域名转入到阿里云了。转入到阿里云后,域名很快就自动转移给了对方。

这次在阿里云卖域名,体验很好,操作简单,唯一的遗憾是卖的太快觉得有点卖亏了。因为第一次卖域名,也不知道卖多少钱合适,想着先标个700元的价钱(阿里云收15%的服务费,实际是805元),我觉得已经很高了,到时候没人买再降价。而且没有考虑到转入域名需要续费一年的问题,又掏了80元的续费费,最终实收620元。

这个域名是2015年5月5日注册,到2027年5月5日到期,总共续费了12年,620元还不够这些年域名续费的费用,不过这也是博客目前最大的一笔收入了。

前几年Jasmine问我,博客的文章都没什么人看为什么还要写?后来又得知这十几年在博客上花了一千多块了,更加不支持了。我和她说,这是我唯一的爱好了,和抽烟喝酒比起来既省钱又健康。

到目前为止,我用过5个域名,2个免费的3个收费的。免费的是TK和NET.RU,用的时间都很短,加起来才3个月。第一个收费的域名是INFO,从2010年到2015年。最长的是上一个COM域名,从2015到2024年。

静风说更换域名及网址301重定向

一、 为什么要换域名

目前这个域名用了快十年了,域名注册的时间看起来还挺有意义,是2015年5月5日。当时移动端还没有兴起,我的大部分网上冲浪的时间是在电脑端,于是注册了一个三拼(三个全拼的汉语拼音)的域名,用电脑的键盘输起来很顺手(当时对域名的要求就是没有数字和下划线)。后来移动端越来越发达,手机使用的时间也越来越长,电脑使用得越来越少。这时在手机上输入博客的网址,显得很不方便,12个字母总是输错,输起来也着急。于是就萌生了把博客换成更短的域名。

思来想去,最终确定了jfsay.com这个域名,因为jfsay和博客的名称「静风说」相对应。Jasmine看到后说,为什么不用jfs.com,更短更好记。我笑说,这个我们买不起。

在输入jfsay时,发现输入法默认出来的结果是「减肥少熬夜」,竟然是劝人注重健康的,也合我意。

二、 购买域名

jfsay.com这个域名被人注册了,这几天突然看到可以注册,于是和Jasmine商量后,决定购买了。我找了好多家域名注册商对比价格,最后发现Spaceship 最便宜,5.87美元,折合人民币是42.73元。

三、 主机空间绑定新域名

域名解析很容易,添加一条A记录到主机的IP地址就可以了。主机空间绑定新域名时,却遇到了问题,提示无法绑定新的域名。问了主机商才知道,我是入门型的套餐,只能绑定一个域名。我只好把主机空间的域名改成新域名。很快,新的域名可以正常访问博客了。

四、老域名301重定向到新域名

下面要做的是把老域名301重定向到新域名,在这个地方我花了好多时间。

我原以为旧域名A记录到主机的IP,或者301重定向到新域名就可以了。后来发现需要做域名绑定,把域名和空间对应起来。主机商给我的解决方案是,需要升级套餐然后绑定多个域名,其余一概不管。我心想,只是为了网址跳转去掏钱升级主机空间太不划算。何不申请个免费的虚拟主机,只做301重定向?

免费的虚拟主机很多,随便就申请了下来。绑定域名,.htaccess重定向,很快就做好了。原以为大功告成,没想到https 的网址会提示网址不安全。也就是http的网址可以正常跳转,https的网址会卡在那里不动。

这个免费的虚拟主机没有免费的SSL,却有个SSL/TLS证书配置页面。我心想,申请一个免费SSL证书不就行了吗。我试了好几家免费证书提供商,总是在域名确认的时候出错,无法确认域名。最后在腾讯云上申请下来了。但是这个虚拟主机没有证书上传和部署的地方,查了好久也解决不了。

既然SSL证书解决不了,我想着是否能把https的网址跳转到http呢?上网查了下,都是http的网址跳转到https的,后来才知道https的网址跳转到http技术上行不通。只好作罢。

就在我一筹莫展的时候,我找到了redirhub.com,一个专门做网址跳转的网站,而且支持HTTPS。我用了十几分钟,跟着网站的步骤提示,很快就做好了301网址重定向,完美解决了https网址跳转的问题。

遥想当年,我在2015年更换域名的时候就没有这么麻烦,因为那时主机空间可以绑定多个域名,直接在.htaccess做301重定向就行了。

麻烦各位看官及时惠存新的网址,更换RSS订阅地址。

新的网址:http://www.jfsay.com/
新的RSS地址:https://www.jfsay.com/feed

目前使用的自托管服务

趁着黑五,新购置了配置高些的 VPS。折腾一番后,整理了目前自托管的服务。

第一个 VPS (Bandwagon)托管了 2 个项目 wordpress(建站) 和 Umami(数据统计),保持全球稳定的线路,和博客的稳定性:

第二个 VPS(Racknerd) 托管了 11 个项目:

  • Freshrss,RSS 阅读器,目前还安装了两个扩展:TranslateTitlesCN(谷歌翻译标题) 和 Auto Refresh(自动刷新)。日常我会使用 Reeder 登录 freshrss 账号阅读。Freshrss 因是网页端的,所以也很适合配合 immersive translate 使用。
  • wewe-rss,生成微信公众号订阅源,实际使用还挺稳定的,最后订阅了 27 个微信公众号。
  • rsshub,为其他网站生成RSS源,自建的更稳定些。
  • RSS-Bridge,订阅部分 rsshub 无法订阅的内容。本想用来订阅 instagram,但不稳定。不过功能确实挺强,便留下观察。与rsshub有很多互补之处,比如 rsshub 如果要订阅 telegram channel 比较复杂,RSS-Bridge 目前则比较简单。经费充裕的话,可以尝试 thefeedreaderbot,使用 webshare 的动态代理 ip,能够躲过 Block.
  • AdGuardHome,DNS 去广告服务,配合浏览器插件uBlock Origin,效果很好。
  • n8n,工作流自动化平台。
  • calibre-web,在线电子书库管理系统。
  • laber,跨越付费墙。
  • FileCodeBox,文件分享。
  • qBittorrent Web UI,BT 下载客户端的 Web 界面,可以远程管理和控制BT下载任务。
  • NextChat,以前叫 ChatGPT-Next-Web,ChatGPT 网页端界面,专门部署给家人使用。

更多自部署软件可参考:awesome-selfhostedTop 3 BEST applications you’ve decided to self-host? 。想轻量级省心的可以试试 YunoHost

个人倾向于将关键的非隐私类文件托管于信誉较好的大平台,如 Dropbox 和 1Password,所以没有使用自托管云盘和密码软件。

Calibre-web 数据库路径和下载权限 500 Internal Server Error 问题

最近用 Docker 搭建了 Calibre-Web(书籍管理阅读平台),出现了一些问题,以下是解决方案。

Calibre 数据库路径

先是进入网页界面中,需要填写 Calibre 数据库路径,该路径需要进入 Docker 容器内部,创建数据库,并添加写入权限。

先查看容器内目录结构,并进入 bin。

docker exec -it calibre-web sh

ls /

cd bin

创建一个空的数据库。

calibredb add --empty --with-library /books

如果上面的命令成功,则设置正确的权限。

chmod -R 777 /books

初始化数据库。

calibredb add --empty --with-library /books

退出容器。

exit

OPDS

支持 OPDS 的阅读器,能更方便的下载和阅读 Calibre-web 中的书籍。

OPDS link 的正确格式是:http(s)://username:password@ip/hostname:port/opds

ip/hostname:port,也可以是网站域名。

iOS 中推荐 Cantook

CleanShot 2024-11-25 at 14.15.29@2x.png

下载权限问题

在绑定 OPDS 阅读器的时候,我发现无法正常下载书籍,网页版也有相同问题,但仍可以阅读。报错:500 Internal Server Error。

这部分报错是比较新的问题,在 Github issue 中找到了解决方案。与 PUID/PGID 相关,应使用运行 Docker 的用户的 ID,这样可以确保容器内外的权限一致。

重新回到 docker-compose.yml 中,将这两者都设为 1000,再重启 docker 即可解决。

services:  
  calibre-web:    
    environment:      
      - PUID=1000      
      - PGID=1000

目前使用的 WordPress 插件

以下是我目前使用的WordPress插件,共 11 个:

  • UpdraftPlus,核心备份插件,免费版支持定期备份到 Google Drive。近期迁移了一次,安装好WordPress和该插件,再关联一下 Google 账号即可备份成功,体验很好。
  • Blocksy 主题 + 插件,目前在使用的主题,免费版够用,可自定义选项多,颜值高。
  • Polylang,多语言插件,免费版功能齐全,中英文界面可同时 SEO 索引,增强博客覆盖面。
  • Antispam Bee,屏蔽广告评论。
  • Post SMTP,邮件发送插件,更简单的配置 SMTP。
  • Wenprise Better Emails,提供邮件模板,美化邮件。
  • WP Super Cache,网站缓存插件,提升网站加载速度。
  • WPS Hide Login,安全插件,可以自定义WordPress登录页面URL。
  • Rank Math SEO,SEO 优化插件,增强搜索引擎可见度。
  • Meow Gallery,图片画廊插件。
  • Juicer,社交媒体聚合插件,能为国内用户展示 Twitter 时间线。

目前已有足够的舒适度,之后会偏重稳定性,于是关闭了插件和主题的自动更新。除了安全性更新,尽量不动。

除了 Blocksy,都用的免费版。但 Blocksy 其实也没用到几个付费功能,只是比较喜欢,且长期使用,支持一下。

在 Jack 的帮助下,最近管理面板换成了 1Panel,舒适度比 AMH 要高一些,操作也更简单。

截图留念!

CleanShot 2024-11-24 at 15.52.48@2x.png

公告:网站被攻击了

今早起床发现博客网站宕机了,最初以为是小 bug,就重启了服务器。

网站加载速度依旧很慢,艰难的进入了控制面板。记录显示从昨晚 11点 左右开始服务器 CPU 满载,且提示已开启 CSRF 攻击防护。CSRF(Cross-Site Request Forgery)的中文名为跨站请求伪造,是一种常见的 web 安全攻击方式。

在群友的建议下,开启了 Cloudflare 代理服务(橙色小云)。没立即见效。然后开启了 Cloudflare 五秒盾(Security—settings—Security Level —I’m Under Attack!),并再次重启服务器,能够勉强进入博客页面,但 CPU 依旧满载。

半小时后,安装了 fail2ban,依旧没有缓解问题。

有些头疼,就干了会其他工作,再回来看,网站已恢复正常。回顾之前的操作,已经搞不清楚是哪步起了作用,也可能是 DNS 服务生效比较慢,生效后就解决问题了。

又或是攻击者觉得累了,恰好暂停攻击,让我喘口气。

无论是哪种,都让我有些心有余悸。

我选用的服务器网络比较好,兼容外网和国内网络,所以溢价较高。如果一直使用 Cloudflare 代理,可以增加稳定性,但抹去了这些优势。

陷入了两难的境地。

听朋友说 1panel 自带了防火墙(ModSecurity),易用性高一些,之后考虑试一试。

最后,感谢群友们的帮助。

并求求别攻击我这个小博客了。

telegram-cloud-photo-size-5-6145471324785590530-y.jpg

记录一下:

11月05日,被攻击第1次。

11月11日,被攻击第2次。

11月12日,被攻击第3次。

11月13日,被攻击第4次。

朋友们,如果访问不了我的网站,记得提醒我一下。

杜老师建站史

小伙伴还记得第一次接触建站是什么时候的事情吗?还记得一共搭建过多少个网站吗?哪些网站依旧印象深刻?今天来聊一聊杜老师建站史!

接触网络

第一次接触计算机还是在小学时,具体的年龄忘记了,只记得那会还是 DOS 系统,相比那时候的红色警戒,杜老师更喜欢扫雷,接触第一款操作系统还是 Windows 95。

时隔几年,家里买了台兼容机,运行了 Windows 98,当时因为硬件原因,运行极不稳定,但不妨碍刷大菠萝,那会还没有修改器,凭能力一遍又一遍刷图还是很有趣的。

杜老师第一次接触互联网还是通过调制解调器,那会一小时三块钱,而且会占用电话的线路「上网期间电话无法接听」因为费用和线路的关系,都是在网络的海洋中蘸点水,然后断开网络干搓~

到了初中家里办了宽带,别看只有两兆,可是打开了杜老师的世界观。那会很少会玩游戏,而是在网上浏览各类的资源,偶尔再聊聊天~

第一个站

好像是初二的时候,在日常浏览网站时,看到了一条免费内容托管的广告,顺着链接进入,就来到了名为 AnyP 的平台。

AnyP 为免费用户提供了 100M 存储空间,赠送 anyp.cn 后缀的二级域名。付费可以获得更多空间,并且支持绑定顶级域名。

在零几年的时候网络安全意识比较弱,页面支持各类代码,可以借助模块实现各种效果。

那会最大的乐趣就是在页面中集成新功能,然后接受隔壁小伙伴的膜拜以及请教「目前该平台已停止运营」

腾讯空间

随着内容不断增加,免费的 100M 容量已经不够用了,又没条件付费「那会还没手机,不像现在支付那么便捷」就转战 QQ 空间。

与现今的 QQ 空间不一样,最开始的空间自定义功能非常墙,借助 JS 代码可以打造各类的效果,当时身边小伙伴的空间都是非主流的主题。

杜老师生活在辽宁,当地比较流行的主题风格叫残血。杜老师在官方属于技术运营主力之一,来空间的访客大多都是寻求帮助,也有不少定制模板的小伙伴~

当年空间访问量达到了 50 万,也有付费的小伙伴,当时付费就是 Q 币,再者就是各种会员「不知各位看几年前的日志时,有没有想要掐死自己的冲动,杜老师舍不得掐死自己,就申请了空间注销」

班级网站

因为 QQ 空间对代码没有限制,久而久之就爆出了严重安全问题,腾讯平台开始限制代码使用,功能需要通过内置模块实现,效果等则需要办理黄钻才可。

在升入高中后,因高中强制性住校,家人为了方便给杜老师办了张银行卡,借此杜老师买了第一个虚拟主机,仅支持 ASP 网页语言。

借助开源平台搭建了班级的主页,据说是整个学校史上第一个班级网站,因为噱头较大,再加上新鲜感,除本班同学外,隔壁班的也跑来贡献 IP。

值得骄傲的是,杜老师还凭此获得学校颁发的计算机类比赛一等奖「空间当时买一赠一,就是两年,两年到期后并没有续费,整站数据随之消失」

世外桃源

在班级站运营期间,杜老师逐渐熟悉 BBS 平台,也在众多站长的帮助下,找到很多免费资源,于是就有了综合型论坛「世外桃源」

当时论坛程序是 Discuz,运行在一个国内的免费空间「08 年前国内的空间无需备案」认识了很多行业的大牛,在他们加入后,论坛会员达到了 10W。

那会不懂如何盈利,只是单纯想着人多热闹,而且作为站长,十分有成就感。不过也有一些问题,杜老师的同学知道该论坛后,都想凭借关系获得版主一职,不过论坛规则所限,不能满足他们要求,因此被孤立了好一阵子。

08 年后国内开始要求备案后接入,免费空间没有任何警示直接跑路,论坛全部数据丢失,杜老师的心态直接崩了,弃网备战高考。

工作室站

进入大学后在学者的怂恿下,迷迷糊糊创立了工作室,主要为学校周边的经营场所提供网站搭建、网络维护服务,就搭建了一个演示站点。

在众多开源程序中,杜老师选择了 emlog。忘记是什么原因了,但确实因为 emlog 让杜老师对 PHP 充满兴趣,并为 emlog 贡献了不少代码。

那会还没用 Git,写完代码后发给创始人那多,然后坐等审核、整合、上线,可惜的是 emlog 从 5.2.1 版本后,那多记忆逐渐淡出论坛,也不参与后期开发,元老团队成员逐渐转向其它程序,emlog 落没了~

大学毕业,工作室交给了学弟学妹管理,站点也没带走「毕业后两年的一天,再次访问工作室网站发现无法打开了」

菜鸟博客

大学毕业后从事了培训行业,光荣变成一枚讲师。因自身的授课风格需要学院配合,对埋头记笔记的学员甚无奈,所以和大学时学长及众伙伴创建:菜鸟团队技术博客「后更名为菜鸟博客」

杜老师的能力不多说了,垃圾一枚。

开发频道:老魏,国家计算机研究中心的技术总监,擅长各类编程语言。

网络频道:悦悦,华为华中地区项目经理,精通思科、华三网络设备调试。

数据频道:婧婧,北京理工大学当届校花,擅长数据分析、数据处理,那一条腿比杜老师的生命线还长。

还有些伙伴就不介绍了。因博客使用 WP 程序搭建,用过的小伙伴应该知道它多臃肿,数据量访问量上来之后,一般服务器扛不住。为了平衡运营成本,杜老师提供了很多付费内容、服务,可惜后期因为「分赃不均」导致团队解散,菜鸟博客因此关站。

杜老师说

就你们面前的这个破站,还需要杜老师多介绍吗?

水到这可以了,要什么自行车。

博客作者呀,我想采访你这 9 个问题!

「为自己而写作」是绝大多数作者的自我形象定义。这个行业,有它自己的传统。
—— 李兆欣

这个采访目录参考了 Manu雅余。Manu 会定期邀请有趣的人聊聊自己的博客,至今已有 59 篇。我稍微调整了他的目录,问一些感兴趣的问题。雅余则设计了一个独立博客问卷,已有很多朋友参加。

平日读博客时,最喜欢看的是各位写的杂文随笔,那些生活中的细碎小事,也很好奇文章背后的各位,是如何看待自己与博客的联系。所以和朋友一起设计了这 9 个博客作者和读者共同感兴趣的问题。

写完的朋友,可以回评论区留个言,期待看到一个很多链接的评论区。

如果有更多想与我分享的,也可以参加「交个朋友」活动。


1. 简单介绍下自己或者你的博客?

2. 什么契机让你开始写博客?

3. 你是如何完成创作的?

4. 运营博客的过程中是否有失去过动力?如果有,是为什么恢复的?如果没有,请问您又是如何保持创作的激情?

5. 如何搭建博客,以及运营博客每年需要投入的资金?

6. 推荐 1 篇你博客中的文章,并推荐一个你喜欢读的博客,聊聊原因。

7. 推荐 1 个近期喜欢的事物?

(例如书籍、电影、音乐、工具、软件。)

8. 想做还没有做的事,或想尝试还没有尝试的主题?

9. 写到这里,闭上你的眼睛,深呼吸几分钟,或是出去溜达一圈,然后回来写任何你想写的东西。


写一篇博客,就是跟未来的自己约会。

希望大家享受这个问卷。

Peer review:JackYorks0n

.

.

拖了两周,终于坐下来答自己设计的问卷。

❌