今天早上在 Twitter 上连续看到三个人在同一时间推荐了一款在 macOS 上运行的 Docker 容器和 Linux 虚拟机 —- OrbStack 。
GitHub:https://github.com/orbstack
而 macOS 上的 Docker Desktop 原本就是饱受诟病,慢,重,资源消耗巨大。 OrbStack 的出现就是为了解决这个问题。
macOS 从 2020 年发布 Big Sur 开始,提供了虚拟化的框架,开发者可以在 macOS 上构建基于 Intel/ARM 的 Linux 环境。macOS 上的 [[Parallels Desktop]] 和 [[Docker Desktop]] 都在使用这个框架,但这二者都比较重。
下载安装的过程特别简单。可以看到如下的界面可以在 macOS 上快速,轻便的创建 Docker 容器和 Linux 环境。
执行一下测试的容器:
docker run -it -p 80:80 docker/getting-started
然后再访问 http://localhost/ 即可看到最基础的 Docker 教程。
在这个界面中也可以对容器进行简单的管理。
在系统的资源管理器中可以看到 OrbStack 几乎不怎么占用 CPU 和内存。
CPU 消耗
内存消耗
OrbStack 也提供了一些管理命令 orbctl
,可以直接在命令行使用。
orbctl help
OrbStack 在创建了 Ubuntu 等 Linux 镜像之后也可以使用 SSH 连接
orb -m ubuntu -u root
orb -m ubuntu -u root uname -a
orb
命令还提供了其他一些特性,比如可以在虚拟机中 push 或 pull 来传输文件。
OrbStack 虚拟的 Linux 是不支持 GUI 的,不过这也不妨碍,我想大部分开发应该只会使用命令行去管理 Linux 运行环境吧。大致猜想 OrbStack 应该只是用 Docker 开启了一个 Linux 的容器,所以不支持图形化界面也是可以理解的。
总之如果你之前饱受 Docker Desktop 慢的问题困扰,或者之前经常使用 Virtual Box,[[VMware Fusion]] 等虚拟化工具在 macOS 上虚拟化 Linux 运行环境,不妨来试试这一款轻量的 OrbStack。
Muverse 是一个由社群驱动的 Web3.0 互动音乐平台,将音乐、游戏、社交媒体和加密技术连接在一起。该平台通过构建新的社群,为独立艺术家创造一个更自由、更公正、更适当的商业环境。Muverse 通过其内部互动吸引全球艺术家和粉丝一起成长,并在 Web3 中共享丰厚的奖励。Muverse 平台具有多种有益于艺术家的功能,赋予艺术家在互联网上自由发行他们的音轨,并完全掌控他们的音乐的能力。此外,他们可以从其音乐和商品销售中赚取加密货币,并将其转换为真实货币。
最近,Muverse 推出了 YOLO Bunny NFT 头像系列,并公布了其全球产品开发计划,加速了未来“虚拟”NFT 市场的“实现”。随着音乐行业持续向区块链技术转移,像 Muverse 这样的平台有潜力为独立艺术家提供更公平透明的环境。
可以看到的是有一些艺术家,歌手已经开始在 Muverse 上独立发行音乐专辑,韩国歌手李洪基宣布在 Muverse 上独家发行单曲 그 자리(I’m missing you),而他发布的 NFT 也在一个小时的时间内售空。1
We are excited to announce a partnership with FNC , Korea's leading entertainment agency. 🥂
— Muverse (@MuverseNFT) September 7, 2022
Lee Hong Gi the artist of FNC, will perform as the lead singer for a song that exclusive issuing on Muverse and collect a @YOLOBunnyNFT. @FNC_ENT @skullhong pic.twitter.com/IHiyOHWnGD
在注册 Muverse 之后可以看到有两个很醒目的按钮「Play to Earn」 和 「Listen to Earn」
听音乐获得 MCT 代币
上面还是有不少选曲不错的频道的。
听够 6 分钟就能兑换。
玩游戏获取 MCT 代币
不过需要注意的是,应用最开始的时候就会要求用户购买一个耳机(Headphone),这样才会有更多的奖励,一个虚拟的耳机,在他 App 中的售价在 0.05 ETH 左右,折合人民币也得好几百了。这一点可以谨慎考虑一下,等熟悉了这个平台之后再进行购买也可以。
截止到目前为止,这个平台的构建还非常初步,在应用内的下方 5 个 Tab,其中就有 2 个(Invest、Social)还是未实现的,很显然官网目前说的音乐、游戏、社交媒体、加密货币,这个平台目前就只有将听音乐和音乐游戏做好了,并且游戏这一块还做的比较简单。而听音乐这一块,目前不知道这个平台的音乐版权是自己购买的还是和音乐人合作的,还在上面听到不少刚刚发行不超过 1 年的歌曲,比如 LeeHi 的 ONLY,米津玄師的 orion,还有一些欧美音乐人。还有一个要吐槽的是,明明是一个音乐应用,却不能在息屏的情况下听音乐,Why?
在 Web 3.0 的发展过程中我一直在思考的问题便是 Web 3.0 行业从业者经常提及的对私人数据的控制和所属权问题。在 Web 2.0 时代,内容(包括文字、图片、视频)的大量价值都被大平台(博客平台、Instagram、小红书、YouTube、抖音等)所垄断,原来归属于用户内容的「价值」全部被平台的所吸收,并美其名曰会给创作者以奖励。当然我承认在 Web 2.0 时代大平台所起得推广、算法推荐等等是对创作者有一定的推波助澜的作用的。但是如果真的能像 Web 3.0 所承诺的那样,比如音乐人在 Muverse 上发行的单曲,通过播放量,通过售卖的 NFT 来将收益直接归属到艺术家,是否会真正改变一些行业。之前也看到过一些文章分析 Spotify 兴起之后一些小众音乐家再无法通过有效的手段售卖自己的专辑,或许这样的情况是否可能直接通过一种新的方式得到改善,让我们拭目以待吧。
如果你看到这里觉得这个平台很有意思,也可以直接点击这里(带邀请码)注册。或者在注册之后输入邀请码 j9uyp 。
[[MXRoute]] 是一家 Email Hosting 服务提供商,专注于提供高送达率的电子邮件发件服务。[[MXRoute]] 是由国外著名主机论坛 LET 的管理员 Jarland 开设。MXRoute 的主要目标之一是向其用户提供经济实惠的邮件托管服务。
MXRoute 的特点是无限域名,无限邮箱账号。MXRoute 配置非常简单,只要拥有自己的域名,通过修改域名的 DNS 配置,就能很方便的搭建自己的邮件服务器。MXRoute 是正规邮件服务,不能用于发送 SPAM 。
需要注意的是,MXRoute 与其他电子邮件提供商类似,存在电子邮件被标记为垃圾邮件的风险,并且发送者信誉和电子邮件内容等因素可能会影响其交付率。
MXRoute 作为一家邮件服务提供商,提供了可靠的邮件送达率。
在购买了 MXRoute 的服务之后,系统会发送一封标题为「[MXroute] Important Account Information」的邮件到注册的邮箱中,其中包含了后台访问的地址,用户米和密码,还有一些重要的 DNS 配置,包括 DNS 的 [[MX 记录]],[[SPF]] 记录。邮件中还包括了邮件客户端的配置,包括 [[IMAP]],[[SMTP]] 的访问信息,包括地址和端口等等。
使用邮件中的信息,登录管理后台,如下图所示。
在域名设置中可以添加域名,子域名也是可以设置的。
以 Cloudflare 中 DNS 配置为例,添加记录,然后选择 MX,填入邮件中 MXRoute 发来的 MX 记录地址,然后设置优先级,MXRoute 提供了两个地址分别设置优先级 10, 20 即可。如果是添加的子域名,这里记得将 @
对应修改一下。
关于 SPF 记录,DKIM 记录,以及电子邮件是如何工作的,可以参考之前的文章。
SPF(Sender Policy Framework)记录是一种 DNS 记录,用于指定哪些邮件服务器被授权发送来自特定域名的电子邮件。通过使用 SPF 记录,邮件接收服务器可以检查发送方 IP 地址是否被列入授权的 IP 地址列表中,从而减少垃圾邮件和电子邮件欺诈的风险。
SPF 记录的名称通常是类似于下面这样的:
example.com. IN TXT "v=spf1 mx a:mail.example.com -all"
其中,example.com
是你的域名,v=spf1
是 SPF 记录的版本号,mx
表示允许域名的 MX 记录中列出的邮件服务器发送电子邮件,a:mail.example.com
表示允许特定 IP 地址的邮件服务器发送电子邮件,-all
表示拒绝所有未列入授权 IP 地址列表中的其他邮件服务器发送电子邮件。
在 SPF 记录中,你可以添加多个条目来授权多个 IP 地址和邮件服务器发送电子邮件。当邮件接收服务器收到一封电子邮件时,它会检查发送方 IP 地址是否在域名的 SPF 记录中列出,并根据 SPF 记录的设置来确定是否接受该电子邮件。如果 SPF 记录中未列出发送方 IP 地址,则接收方邮件服务器可能会将该邮件标记为垃圾邮件或拒绝接收。
在 Cloudflare 中选择 TXT 记录,然后在记录值中填入 MXRoute 发送过来的记录值。
DKIM(DomainKeys Identified Mail)记录的名字通常是类似于下面这样的:
dkim._domainkey.example.com
其中,example.com
是你的域名,而 default._domainkey
是一个固定的字符串,表示这是一个 DKIM 记录。如果你有多个域名需要签名验证,则需要为每个域名创建一个相应的 DKIM 记录。
在 DNS 中添加 DKIM 记录时,需要将该记录类型设置为 TXT,并将 DKIM 信息放入记录的值字段中。DKIM 信息包括用于签名验证的公钥和用于加密 DKIM 签名的私钥。在 DKIM 记录中,公钥通常以 “k=” 开头,如下所示:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC...
当其他邮件服务器收到一封使用 DKIM 签名的电子邮件时,它们会检查该域名的 DNS 来查找 DKIM 记录,并使用公钥来验证该邮件的 DKIM 签名。如果签名验证成功,则说明该邮件确实是由该域名的授权发送者发送的,而不是伪造的垃圾邮件。
DKIM 记录没有在邮箱中,需要在 MXRoute 管理后台,找到 「帐号管理」 -> 「DKIM keys(USE ONLY DKIM KEY)」,然后复制 DKIM 值。
然后在 Cloudflare 中添加 TXT 记录,Name 填写 dkim._domainkey
,值就填写上面拷贝出来的值即可。记住如果是配置的子域名,可能需要自行调整一下记录的 Name。
虽然 DMARC 记录是可选的,但是为了追求完美,还是建议配置 DMARC 记录。
DMARC 记录通常是
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
一般直接建议配置一个:
v=DMARC1; p=none;, p=reject;, p=quarantine;
在 MXRoute 后台配置完域名之后,可以在「邮件管理器」->「邮箱帐号」 中添加域名邮箱,然后就可以在任意的邮件客户端使用 IMAP ,或者使用 MXRoute 提供的网页([[Roundcube]])客户端来发送或接受邮件。IMAP 的连接地址在邮件中,用户名和密码就是添加邮箱的时候设置的。
打开网站 https://www.mail-tester.com/, 之前几篇将 Self-hosted Email 的文章中也提到过,可以用来检测邮件服务器的得分(从各个方面判定邮件会不会进入垃圾邮箱)。打开这个网站之后,会生成一个随机的邮箱,使用自定义的域名邮箱向这个邮箱发送一封邮件(标题和内容随意),发送后点击页面中的 Then check your score 按钮,即可查看分数。正常如果得到 10 分才算是正常,如果不是,则按里面的要求进行改进,一般都是 DNS 配置错误。或者 如果发信的 IP 地址在黑名单中,也可能导致分数不好看。
昨天晚上申请了 Google Bard 试用,今天下班了看到很多人都是几个小时就拿到了试用体验,我想我怎么没有收到邮件呢,我反复确认了邮箱确实没有,然后我想着再去网页上看看呢,登录了一下 https://bard.google.com/ ,开始的时候没有使用代理,提示所在的地区暂时还不能用,然后加上美国的代理,刷新一下就进去了。
Bard 依托 Google 的一款大型语言模型,可以生成文字、撰写各种类型的创意内容,还可以根据它掌握的信息解答你的问题。
进去的第一个弹窗就是「警告」,Bard 是一个实验性的产品,可能不会一直都是正确的,并且 Google Bard 的每一条回复都会有赞同,否定,重新回答,或者直接 Google 的按钮。
大型语言模型是会犯错的
说实话 Google 做这个产品确实非常小心了,在下方的输入框下也有明确的注意事项。
在调研的过程中发现已经有人逆向了 Google Bard。通过如下的方法,然后执行 Python 即可在命令行使用 Bard,不过记住需要使用美国的 IP。
Go to Google Bard
__Secure-1PSID
复制这个 Cookie 值window.WIZ_global_data.SNlM0e
,复制结果tawk.to 是一个可以在网页上添加客户聊天对话框的应用。用户可以通过 tawk.to 泡泡快速地得到支持。
tawk.to 是百分百免费的,创始人写了很长的一篇博客来介绍为什么我们是免费的
tawk.to 在文章中介绍其盈利的方式:
tawk.to 公司还推出了其他服务:
tawk.to 根据其官网的介绍已经占据市场 20% 左右,是目前企业实时聊天这个市场的第一名,接下来依次是 Zendesk(12.25%),Facebook(9.63%),Live Chat(6.36%),Tidio(5.44%),Intercom(4.34%),Zoho(3.6%),Pure Chat(3.49%),Drift(3.25%),Olark(3.11%)。
就和其官网介绍的一样,接入 tawk.to 非常简单,我在我的Life in Japan 接入 tawk.to 的服务花费不到 5 分钟。稍微设置一下展示,和其位置,然后熟悉一下后台控制面板就能快速上手。
如果想看一下具体效果可以访问这里,在右侧看到的绿色聊天对话框就是 tawk.to,在其中留言,我就可以实时收到信息。
之前就简单地介绍过使用yt-dlp 来下载 YouTube 视频,yt-dlp 是自从 youtube-dl 不再更新之后有人接手开发的新工具。但这篇文章重点是在于下载 YouTube 视频,我会整理一下我目前了解的所有可视化,命令行,Telegram bot 等等工具。
之前的文章中介绍过 Tailscale ,是一个功能非常强大的虚拟组网的工具,底层使用更高级的 [[WireGuard]] 协议进行通信。之前的文章中只简单的介绍了一下 Tailscale 的使用,但是过去的时间里面 Tailscale 又更新了很多的新特性,这篇文章就介绍其中的一个特性 Exit Nodes。
Exit Nodes(出口节点)功能就是允许 Tailscale 组件的局域网中的节点通过一台 Exit Node(出口节点)来进行网络通信。路由流量的设备称为“出口节点”。
默认情况下,Tailscale 通常只会借助互联网进行节点和节点之间的通信,而用户正常的流量,比如访问 Google,Twitter 等的流量都是通过本机进行的,而存在部分情况,比如在一些对安全通信要求比较高的场景,需要加密访问,这个时候就可以让局域网中的节点经过一个可信的出口节点(Exit Node)来于外部互联网进行通信。
如果要配置出口节点,需要经过下面几步:
如果要使用出口节点需要有一些必备的前提条件:
// All users can use exit nodes
// If you are using the default ACL, this rule is not needed because the
// default ACL allows all users access to the internet through an exit node
{ "action": "accept", "src": ["autogroup:members"], "dst": ["autogroup:internet:*"] },
如果有 /etc/sysctl.d
目录:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
如果没有:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
启用 IP 转发时,确保您的防火墙设置为默认拒绝流量转发。这是常见防火墙(如 ufw 和 firewalld )的默认设置,可确保您的设备不会路由您不想要的流量。
然后执行如下的命令将节点设置成出口节点:
sudo tailscale up --advertise-exit-node
访问 Tailscale 控制面板,点击 Exit Node 节点后的设置,点击 Disable key expiry,禁用密钥过期。然后点击 Edit route settings,勾选 Use as exit node,之后启用。
经过了上面两步网络中的其他节点就可以使用上面的出口节点,但是每个设备都需要单独启用出口节点。
其他节点需要运行:
sudo tailscale up --exit-node=<exit-node-ip>
可以从管理控制台或运行 tailscale status 找到设备的 IP 地址。
或者,将 --exit-node-allow-lan-access
设置为 true 以允许在通过出口节点路由流量时直接访问本地网络。
sudo tailscale up --exit-node=<exit-node-ip> --exit-node-allow-lan-access=true
然后就可以通过 在线 IP 检测工具 来查看本地流量是否已经由出口节点路由。
如果在命令行下可以使用 curl ip.gs
来查看 IP 信息。
[[Porkbun]] 通常被人戏称为「猪肉包」,是一家新成立于美国俄勒冈州波特兰市的域名注册商,母公司是 Top Level Design,后者是 design, ink 和 wiki 三个顶级域名后缀的管理局。这家域名注册商虽然成立时间比较短,但是胜在价格实惠。短短几年时间就打开了知名度。
现在就讲一下 Porkbun 赠送的第一年免费的 app, wiki, ink, gay, uk, pt, website, site, it, mx 等等后缀的域名,可以第一年免费领取使用。
在结帐的时候需要注意,官方的验证方式是只能使用信用卡验证的,但是网页中预留了 Alipay 的验证方式,在 Chrome 浏览器中,右击选择 Inspect,或者使用快捷键调出,然后使用这里的箭头,选择图中的红色「New Card」
在页面代码中就能看到 Alipay 相关的字样,将右侧的 diaplay: none
取消掉,就能看到页面中的 Alipay 支付验证。
然后通过 Alipay 支付即可。
附赠一些小彩蛋
免费的 .uk, .co.uk, .org.uk 域名,但是可能需要验证地理位置。
免费的 .pt, .website, .site 域名
注册也是可能被拒绝的。
免费的 .it 域名,可能需要验证地址
免费的 .mx 域名 (限时)
如果有兴趣讨论关于本文章,或者本博客的所有内容可以到 Telegram 群组。
很久以前想要了解世界各地房地产的时候,收集了不少的相关书籍,[[全球房地产]] 一书就写得太过学术,读起来有些枯燥,而这一本《负动产时代》应该就是那个时候加入的豆瓣待看列表。
本书并没有一个单一作者,而是日本的《朝日新闻》采访组的一线记者走访了大量的房主,政府机构,不动产中介,并远赴德国、法国和美国,采访取材之后编写的一本描绘了日本房地产从狂热盲信时代到少子老龄化时代的巨大落差,房地产政策的滞后,以及带来了一系列严重的后果。
这本书读起来没有那么枯燥,作者引用了非常多的真实事例来展示当前房地产存在的问题,由这些问题再进一步得追问为什么会发生这些问题?为了解决这个问题又实地采访了亲历者,包括购房者,地产中介,相关政府部门。
存在的问题:
作者还走访了法国,美国,德国等地方,试图寻找解决方案其他国家类似情况的政策。
法国政府的政策:
美国的情况:
德国允许放弃土地所有权:
在阅读本书的过程中,我不止一次的被震惊到,读起书中的事例,就像是在看一个魔幻的故事集。管理费和固定资产税已经超过房产价值,最后被 1 万日元拍卖的度假公寓;120 年没有变更户主的老房子,已经有几十个继承人;在当年房地产市场欣欣向荣的时候,把一块什么都没有的「原野」土地,高价卖出去,如今已经是原先的十分之一价格;多年失修的公寓,因为没有办法得到全部户主的同意而无法重修。
更甚至在作者调查房地产中介公司的时候,让我窥见了公司如何压榨劳工,因为政府会查公司车辆的使用记录,会查看公司电脑的使用情况,员工为了达成业绩,甚至隐瞒自己的工作证据,周末用自己的车办公,工作时关掉电脑的电源,故意少报工时。
在人口减少的国家,购买度假性房地产或者在地方性城市投资性房地产都要谨慎再谨慎。特别是以高价贷款购买上述类型房地产,更是要谨慎。如果是想要在持有房地产要交固定资产税和房屋管理费的国家,如日本,购买上述房地产,那真的是“投资有风险,入市需谨慎”。
对日本,以及房地产这两个关键字感兴趣的人。
在商品房的样板间里,销售人员常会说:“用您现在的房租做月供,就能买到一套同样格局的房子。”如果您听了很动心,就相当于迈出了通往“负动产地狱”——维护和管理费用不堪重负,想卖却又卖不出去 —— 的第一步。
日本的土地制度是以土地和房产永远不会失去资产价值的“土地神话”为前提制定的。
Code Server 是一个在 Web 浏览器中运行的开源代码编辑器。它是 Visual Studio Code 的开源版本,可以提供基本的代码编辑、语法高亮、智能感知、自动补全等功能,同时支持多人协作、远程开发等特性。
能够在浏览器运行的集成开发环境通常也被称为 Cloud IDE。
Code Server 可以在本地计算机或云服务器上运行,用户可以通过浏览器访问并使用其中的编辑器功能,不需要在本地安装 Visual Studio Code 等本地编辑器。这样可以方便地进行远程开发、多人协作、快速搭建开发环境等操作。同时,Code Server 也支持自定义插件和扩展,可以满足不同用户的需求。
推荐通过 Docker 来安装,我使用的是 LinuxServer 提供的镜像 ,转成 docker-compose.yml
来使用。
具体见 docker-compose
创建 password hashed
echo -n "thisismypassword" | npx argon2-cli -e
$argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4
官方文档 中已经有了如何使用 [[Nginx]] 和 Let’s Encrypt 的相关配置
server {
listen 80;
listen [::]:80;
server_name mydomain.com;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
但是因为我使用的是 [[HestiaCP]],这个面板自带了一个 Nginx 模板,可以参考我之前的文章 创建新的 code-server.tpl
和 code-server.stpl
然后修改相应的配置。
但是我在配置的过程中,访问 Code Server 遇到了如下的问题。
An unexpected error occurred that requires a reload of this page.
The workbench failed to connect to the server (Error: WebSocket close with status code 1006)
仔细的看了一下 Nginx 配置,才发现在 HestiaCP 默认的模板中后面有一个多余的配置
proxy_hide_header Upgrade;
把这个配置注释掉,然后在 HestiaCP 中重新关闭和启用该网站即可生效。
code server 下暂时还没有像 Visual Studio Code 一样内置的同步功能,但是 Shan Khan 的 Stttings Sync 可以作为一个不错的代替。