本文记录一次令我非常无语的文件上传大小限制的问题。之前也提到过我开了一档《暮色时光》的播客,那为了方便,我就直接使用 WordPress 的 Media 来管理我自己的音频文件了,但是最近一期聊《台湾》相关的内容,时长超过了 1 个小时,所以导出的文件有点大(102MB),稍微超过了我预期的 100MB ,这导致我需要调整 WordPress 文件上传的限制。那我一想这个也简单,之前也调整过,无非就是调整一下 Nginx 和 PHP 的配置,重启一下服务就行,谁知道我在这么个简单的事情上竟然又浪费了几个小时。
按照我之前的经验,无非就是调整一下 PHP 的配置文件。
因为我直接使用的 HestiaCP ,登录后台之后,点击右上角的齿轮,进入系统设置,然后在其中找到,我使用的 PHP 版本,点击编辑配置,立即就可以看到 PHP 相关的配置,HestiaCP 也非常人性化的将常用的配置列了出来。
那这个地方只需要修改
post_max_size
upload_max_filesize
memory_limit
max_execution_time
max_input_time
这几个值。然后点击保存之后, PHP 会自动重启。
这个时候我去后台看,WordPress 已经将文件上传的限制放宽到了 256 MB 大小,我尝试上传,发现上传接口 Pending。
于是我想是不是 Nginx 配置里面 client_max_body_size
配置有限制,于是直接看 HestiaCP 后台的 Nginx 配置,但发现这不是问题啊,现在的大小就已经足够。
于是我想难道是配置没有生效,在 HestiaCP 后台,通过 SSH 登录服务器,直接重启了 PHP,Nginx。
然后在 PHP 目录里面创建了文件 test.php ,直接放入
<?php phpinfo(); ?>
访问,发现 PHP 已经生效了上传限制。
重新尝试,接口还是 pending。
于是我想难道是 WordPress 自身做了什么限制?但之前也没有遇到过类似的事情?但网上查的时候有人说还需要加上一些配置,那么我也不管了,先加上再说。
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_UPLOAD_SIZE', '256M');
重新尝试上传,接口还是 pending。
这个时候我就不知道问题出现在那里了,然后我就尝试换用 async-upload.php
为关键字,终于在一个 StackOverflow 的帖子里面看到了一个让我震惊的回答,说 Cloudflare 的基础套餐有 100 MB 的限制!
我突然意识到,确实我的站点前面确实增加了一个 Cloudflare CDN,而我的文件刚刚好超过 100MB。于是立即去 Cloudflare 后台关闭了云朵,然后我发现问题解决了!
后来仔细的研究了一下 Cloudflare,发现 Free 和 Pro 的套餐,上传文件大小限制都是 100MB。1 而 Business 是 200MB 限制,Enterprise 是 500MB 限制。
如果文件大小超过 100MB,会直接返回 413 错误,文件上传也不会到自己的服务器,我就说为什么我上面几次修改,在 PHP 和 Nginx Error 日志里面什么错误信息都没有看到!
至此文件上传的问题就得到了解决。
本文总结常见的邮件发送的错误。
450 4.1.8 Sender address rejected: Domain not found
这个错误提示表明发件人地址被拒绝,因为域名未找到。这通常是由于发件人地址的域名无法在 DNS(域名系统)中找到所致。解决这个问题可能需要以下步骤:
表示邮件被拒绝了,因为发件人的邮箱无法正确解析,因为特定的 DNS 记录(A,MX,PTR 记录) 缺失了。
50 5.1.1: Recipient address rejected: User unknown in local recipient table
这个错误表示你尝试发送邮件给一个在本地收件人表中未知的用户。
553 5.7.3 CONTENT REJCT:blockid=xx:URL
这个错误意味着你尝试发送的邮件包含被拒绝的内容,通常是因为邮件包含了被认为是垃圾邮件或恶意链接的内容。通常是如下的原因:
遇到此错误一般可以检查一下发送的邮件是否合法,是否包含恶意链接或内容。
Recipient address rejected: User unknown in virtual mailbox table
Net::SMTPFatalError: 550 5.1.1 your@email.address: Recipient address rejected: User unknown in virtual mailbox table
错误表明你尝试发送邮件给一个在邮件服务器的虚拟邮箱表中不存在的用户。
可能是如下的原因:
自从去年 EV Hosting 上线以来已经过快一周年了,过去的一年中陆陆续续推出了如下的服务。
这一些服务也是我开发独立产品的过程中不可缺少的一部分,比如说我可以在一分钟内直接创建一个博客来发布我的播客,我可以用我自己的域名注册服务来注册我自己的 life 域名,比如我的日本生活 https://ijp.life ,而我自己的域名邮箱服务已经稳定使用超过 3 年,过去我所有的域名邮箱全部都自己维护。
之前在 Twitter 上曾经看到过一篇 0 成本 Build 属于你自己的项目,其中列举了不少我也正在使用的服务,比如说 GitHub,Cloudflare 等等,但是问题的关键就在于当你自己的服务与这样的平台非常紧密地连接在一起的时候,未来带来的潜在风险也会伴随着平台的起伏而波动。
代码: @github $0
CDN: @Cloudflare $0
后端: @flydotio $0
域名: @freenomofficial $0
邮件: @Mail_Gun $0
数据库: @PlanetScale $0
日志: @AxiomFM $0 [[AXIOM]]
存储: @Cloudflare R2 $0
CDN: @BunnyCDN $0 [[Bunny CDN]]
统计: @googleanalytics $0 [[Google Analytics]]
比如过了半年当再来看这一份清单的时候,就会发现 freenom 提供的免费域名被收回了,之前也曾经推荐的 PlanetScale 将在 2024 年 4 月 8 号取消 Hobby 套餐,而 MailGun 也大幅度收窄了免费的额度。如果想要使用 PlanetScale,最低档的就是 39 USD 一个月,那如果你的应用构建于此,那必然要面临一个艰难的选择。我之前有一些自己和朋友的 21 天计划服务就放在了 PlanetScale 上,没有多少流量,所以我也不会为此付费订阅。但好在我的数据不是很多,使用 DataGrip 迁移一下就行了。并且在迁移的过程中我还发现了 PlanetScale 存在的问题,就是它并不支持 mysqldump,必需使用它专属的 cli 才能导出数据。而如果一旦服务数据量比较多,想必迁移起来就麻烦很多了。同样的,上述的所有服务虽然看起来入门是 0 USD,但其实很多服务的收费第一档就非常昂贵。
所以为什么我自己创建了 EV Hosting 的服务,也是因为来自我自己的需求,我有一些小网站需要一些邮件发送服务,比如给注册用户发送邮箱验证,比如我有一些静态或动态的网站需要托管,当然 GitHub Pages,Cloudflare Pages,Vercel,Netlify 等等都是非常不错的服务,托管自己的博客内容也完全没有问题,但同时也需要考虑比如 Vercel 的域名被屏蔽,GitHub Pages,Netlify 的访问速度等等问题。
首先我为了解决自己的托管和发邮件的问题,最早就是自建了 SMTP 和 Nginx 但我发现这个服务也能开放出来给有需求的用户用,然后就是域名的问题,不过域名的问题,我自己都是去 Google Domains(已被收购)和 Spaceship 上购买的,我建议大家先用 https://tld-list.com/ 进行比价,然后根据自己的情况来选择,现在 Cloudflare 也开放了域名注册,但我还没用起来,如果有使用感受也可以一起来分享。而我提供的域名注册服务通常来说是因为拿到了批量销售的折扣,我自己也会根据具体的促销价格来选择,我自己选择注册 .life 域名其事就是我自己拿到的售卖价格只要十几块人民币一年,已经非常便宜了,所以就直接买了一个。
为了庆祝一周年生日,现在针对独立开发者推出如下的套餐。
99 套餐 内容包括
199 套餐内容包括
我因为自己的需求所以维护了这样一套服务,如果你也是一位独立开发者,你也需要为你的早期项目接入邮件注册,也需要网站托管内容
如果你满足了如下的条件,欢迎找我,提供免费一年的 99 套餐。
Pull Request 格式
- [项目名字](项目地址)
使用的项目:
英国奕丰环球银行是一家英国的数字银行,总部在英国,受到英国 FCA 监管,享受 85000 英镑的金融服务补偿计划。
之前已经写过一篇文章是开设新加坡的华侨银行 OCBC ,本文再来介绍一下 iFast 英国奕丰环球数字银行。
首先访问官方页面,通过此链接注册,存入 500 英镑并保留在账户中 3 个月,可以额外获得 5 英镑的奖励。
打开页面之后可以在右上角切换语言,然后点击注册,选择个人注册。
注意在注册的过程中需要提供地址证明,可以使用信用卡账单,水电燃气等账单,我因为使用香港汇丰银行的账户,直接使用对账单即可。
完成资料提交,并且验证成功之后,可以开户成功,开户成功之后会获得一个英国银行账户,提供了 IBAN 号,该账户是一个多币种账户,默认 GBP 英镑,也支持 CNY 人民币,欧元,美元,新笔,港币等。
首次存款需要以自己的同名帐号存入。
因为 iFast 账户提供 IBAN,那么可以使用 Wise 的英国账户来入金存入英镑。
通过香港汇丰银行入金 iFast 无汇款费用,需要同名账号如今 iFast
到帐稍慢,汇丰的汇率比较差。
通过 Wise 入金 iFast 汇率比较好,无汇款费用。
到帐偏慢。
在网上申请海外银行账户或者证券账户的时候通常会要求提供一份地址证明,通常如果使用国内的银行卡,或者海外的银行卡的时候,每个月会生成一份 Bank Statement,中文件叫做对帐单,上面有地址即可。或者水电燃气等公共设施的缴费单通常也可以作为地址证明,但是在日本,所有的水电燃气以及银行对帐单都是日文的,那么在英语国家的证明中就没有办法,通常会要求在日文的账单上附加一份专业的翻译证明,这样也非常麻烦。
所以今天就来聊一聊在日本如何获取一份英文的地址证明文件。
地址证明(Proof of address),顾名思义,是指证明您居住地的文件。它也可能被称为居住证明。大多数银行都会要求这样做作为安全措施,以确保您不会在居住地方面撒谎。
对于不同的机构,可能都有一份特定的文件和规则列表来验证地址证明。许多地方会要求提供两到三份地址证明文件来验证您的居住状况。他们通常需要原始文件,不接受副本。一般来说,地址证明可以是以下文件之一:
住址证明通常用来验证一个人的居住地址,用于身份和安全性检查,有一些国家和地区的法律和法规也要求一些机构,比如银行,金融服务提供商等,在提供服务之前验证客户的地址,为了遵守反洗钱(AML) 以及满足 KYC 的要求。
一份地址证明通常是一份 PDF 或实体的缴费单,类似如下,不同地区的对帐单是不同的,需要注意的是,在账单中最好写有明确的地址。
通常在英语国家,发行的水电燃气账单,或者信用卡账单都是英文的,只需要有地址就可以直接使用。但是日本的所有账单都是日文,我查阅了所有我拥有的账单,以及银行卡对帐单,全部都是日语,但后来发现银行的「残高证明书」是可以去线下开具英文版本的。
比如说邮局 ゆうちょ,在平日的 9:00 到 16:00 ,可以去线下要求发行残高证明书,截止 2024 年,发行证明书的费用是 1100 日元。
需要的材料包括
在窗口表达自己想要一份英语记录的残高证明书,需要记载住所和名字。对于小的邮局可能工作人员不清楚,可以更换比较大的邮局。
这两天看到有人分享自己的密码管理方案是通过固定 Pattern 然后根据不同的网站设定一个随机可记忆字串来防止密码泄漏之后影响其他网站,于此同时也一定程度上可以摆脱密码管理器的约束。这也是我这 10 多年来的密码管理方案,虽然我还是会强烈推荐 Bitwarden,当一些重要的网站我还是会选择自己记住密码,并且加上二步验证保护安全,而其他网站则是通过密码管理器来管理。
但是我明明记得我写过一篇关于密码管理的文章,但就是怎么都没有找到,后来一想这已经是十年前写在 Blogger 上面的文章,于是突然想把沉积多年的 Blogger 内容备份出来,并转成 Markdown ,导入到 Obsidian,因为我一直认为只有被反复唤起(搜索)的内容才有价值。
既然有了这个目标,那么说干就干,首先是导出 Blogger 的内容,这一点在设置中,直接可以选择 Backup,下载获取到一个特殊格式的 XML 文件。
然后我用 Google 简单的搜索了一下 Blogger to Markdown,发现原来已经有人使用 NodeJS 实现过了。但代码直接运行有一些异常,打开代码看看,做了一下修复。
然后再运行命令,不到一分钟的时间就把 2010 年到 2019 年的内容转成了 Markdown。
在这个时间点又不免再感慨一下,Blogger 当年作为一个非常流行的博客平台,如今却半死不活,很多年没有更新,Google 内部可能也放弃维护了,并且非常无语的是,我登录了后台才发现,以前明明发布的内容,却告诉我有一些文章被 Blogger 自动取消发布了,说违反了社区规则,但我仔细地看了一下这几篇文章,是 2014 年发表的一篇《继续折腾 WNDR3800 之 shadowsocks》,这篇文章已经存在互联网上 6 年,但却告诉我在 2020 年违反了社区规则?实在没有搞懂 Google。
我仔细的检查了一下文章内容,无非就是几行代码,以及一些 iptables 的配置,完全看不出任何违反社区规则的内容。
在把文件导出来之后,也看了几篇当时写的文章,感慨物是人非,那个时候我还是非常喜欢 Google,也会在第一时间去尝试 Google 的所有的服务,当时也写了很多 Google+ 的使用感受,当时也确实在 Google+ 认识了一些朋友,但后来的事情其实大家也都知道,自从 Google+,Google Reader 关闭以来,我就已经开始自主的脱离 Google 的生态,将所有我自己产生的数据慢慢地从 Google 从移走,Google Photo 等等。
而到了 2024 年,Google 突然遇到 OpenAI 的「劲敌」,至于 AI 是否会颠覆传统的搜索引擎,在这个时间还不好说,但可以肯定地说肯定会代替一部分的搜索流量,至于是否会影响到 Google 的广告业务,那也只能让我们拭目以待了。
BLEUnlock 是一款 macOS 上的自动化锁屏工具,可以通过 iPhone 或者 Apple Watch 和 macOS 的距离来锁定和解锁 macOS。
借助这款开源的工具,就可以非常方便地解决离开 macOS 忘记锁屏的问题。
BLE devices 指的是低功耗蓝牙设备。
BLEUnlock 的原理就是通过周期性发送信号的 BLE 设备,当蓝牙设备,比如 iPhone 设备,接近 macOS 系统时就会解锁,当发现 iPhone 远离的时候就会自动锁定。
直接通过 Homebrew 安装
brew install bleunlock
安装完成之后,可以在状态栏进行设定
BLEUnlock 毕竟是通过蓝牙来进行通信的,所以可能会存在一定的不精确,尤其是在电脑附近行走时可能会对 macOS 产生干扰。
我终于制作了一档播客《暮色时光》!
为什么说我终于制作了一档播客呢,这是因为早在 10 多年前我就已经是播客的听众,并且这么多年以来一直都有一个做一档播客的梦想,研究过如何托管 Podcast,也自己尝试部署过一个 Podcast Feed,但过去的时间里一直没有找到一个合适的主题,周围也没有一个对播客感兴趣的朋友,故而一拖再拖。但和我写文章不一样,写文章是我单方面的输出,我也很少有机会得到反馈,博客的评论系统虽然也有一些朋友会给我留言但还是少数。但是播客不一样,它是一个两方面的交流,他是两种思想和声音的碰撞,截止到现在播客已经做了三期,播客的存在让我知道有了一个新的探索方向,也让我能够和很久没有聊天的朋友可以坐下来一起聊聊。
暮色时光播客在最初的时候,我就给自己起了一个标题,就是朋友之间的闲聊,我会定下来每一期的主题和想要聊的大致方向,让整个播客有一个框架,有一个中心的话题,但交流的过程中也会调整话题的方向。
制作播客的初衷:
在《暮色时光》播客中,我们会聊一些我们感兴趣的话题,比如科技、文化、旅行、生活经验等等。每一期都会有一个主题,围绕这个主题展开讨论,同时也会有一些杂谈和随想。我希望通过这个播客,能够让大家更了解我们,也能够启发大家的思考,并且希望能够和更多人建立联系。
这档播客虽然只是刚刚开始,但也是多年之后终于迈出的一步,也希望我可以通过这个节目认识到更多志同道合的朋友,如果你对这个播客感兴趣,欢迎关注我们的 网站 ,也非常欢迎给我们留言反馈和建议。谢谢!
如果有任何小伙伴对播客感兴趣或者愿意一起聊聊天也欢迎来找我。
用户系统,登录验证几乎是每一个 SaaS 系统必备的入口功能,前两天在 Twitter 上看到有人自己设计的用户登录验证系统,因为瞬时使用的人太多,直接把登录入口打挂掉了,所以我就整理一下这篇文章,来看看如何快速的设计并使用用户登录验证系统。
我所了解的几个方案:
关于 BaaS 之前在我的笔记中其实也整理过一些,比如 PHP 编写的 Appwrite, Go 语言编写的 PocketBase ,这一些都是可以自行托管,并且完全开源的项目,如果你寻求一些更商业化的项目,也可以考虑 Google 的 [[Firebase]] 或者社区商业化维护的 [[Supabase]]。
并且如果以 BaaS 或者 Firebase alternative 为关键字去搜索,也能找到非常多的实现方案,几乎每个语言都实现了一遍用户登录验证的方案。
Clerk 给自己打的广告就是「最全面的用户管理方案」,作为一个创业公司,Clerk 给出的免费额度还是非常充足的。
免费一档的套餐,可以每个月有 10000 个活跃用户,这里的活跃用户指的是登录 24 小时之后再次登录的用户,如果用户没有再访问就不会记录为活跃用户。
NextAuth.js 是一个专门为 Next.js 而设计开发的用户登录验证系统,提供了前后端的实现,并且可以托管在 Serverless ,后端也可以搭配多个数据库使用,比如 MySQL,PostgreSQL,MSSQL,Mongo 等等,直接利用我之前介绍过的 PlanetScale 也是可以的。
NextAuth 是一套完全开源的解决方案,借助一些 Serverless 的平台和 Cloud Database 也可以做到非常低的成本实现用户登录方案。
之前在使用 [[Eagle]] 的时候就想过如果能够一键将本地的素材库分享到网络上就好了,但后面因为 Eagle 使用的频率不是那么高,我自己也在用 Chevereto 所以就搁置了。这两天发现一个 PHP 编写的开源的在线图库 [[PicHome]],看展示界面不错,所以来分享一下。
PicHome 是一款 PHP 编写的,开源的图片展示网站,可以将电脑中的媒体文件展示在网页中。
快速尝试
docker run -d -p 80:80 --restart=always oaooa/pichome
使用 Docker compose 启动
git clone https://github.com/zyx0814/Pichome-docker.git
cd ./Pichome-docker/compose/
修改docker-compose.yaml,设置数据库root密码(MYSQL_ROOT_PASSWORD=密码)
docker-compose up -d