约 3577 字
预计阅读 8 分钟
近期折腾简记
2024-08-11
博客
AI 摘要
109酱

各位老友们好,我是 Chlorine。继续水文章,讲讲最近摸鱼期间折腾的一些事情。

封面:用 AI 搓出来的(不太完善的)小氯酱

继续薅 CloudFlare 活佛的羊毛。

大善人:别薅了别薅了我一年都亏好几个小目标了

插句话:为什么没有发现 CloudFlare 娘?按理说 CloudFlare 作为广大站长的好朋友,应该会有喜欢 ACG 的老友们做一个娘化的形象啊。很奇怪。

临时邮箱,字面意思,临时的邮箱(废话)。有时候我们突然需要一个服务,欢欢喜喜地找到一个网站,却发现需要注册才能使用。那注册就注册吧,又害怕来一堆垃圾邮件,或者是泄露隐私。这个时候就可以使用一个临时邮箱,用完即丢的那种。

基于 CloudFlare 的临时邮箱很多,我选择的是这个:

CloudFlare free temp domain email 免费收发 临时域名邮箱 支持附件 IMAP SMTP TelegramBot

Vue
2157
803
MIT

功能基本上没有缺失的。由于我没兴趣配置 telegram bot 和发件,还会更简单一点。

官方文档比较简略,可能需要多读几遍。所幸开发大佬很热心,遇到问题可以去 issue 里面搜下。

我只补充一点:记得添加电子邮件路由,不仅是 catch-all 规则,还有一个已经被你创建的邮件地址规则,不然会收不到邮件

包括但是不限于 emactions、文件中转站……

DeepL 大家都知道,非常出色的翻译提供商。虽然说可能比不上用 GPT-4 这种比较强的大模型去翻译,但是对付 Google 翻译、百度翻译这种厂商【一般情况下】还是手拿把掐的。

众所周知,如果想要在一些用户界面之外的地方(比如说第三方翻译软件、代码中)执行翻译,那么我们就需要 API。不过……API 需要注册账号,还需要绑卡,最难受的是还得是境外的银行卡,而且一个月只有 500k 的 token……

500k 听着还挺多,但是如果你经常翻译各种外语文章,比方说 BBC/Reuters/NYT 等外国媒体的报道,或者是英语的学术论文,那您就用吧,一用一个不吱声。

这时候就要再次求助万能的开源社区了。隆重请出今日主角——DeepLX

Powerful Free DeepL API, No Token Required

Go
6327
512
MIT

简单来说,DeepLX 就是一个通过模拟 DeepL iOS 客户端/DeepL Pro/DeepL 官方 API 来把 DeepL 免费服务转换为 DeepL API 的开源服务,免费,无限量,可以自部署,非常舒适。

唯一的要求应该就是需要服务器(有一个 CloudFlare Worker 版本的,但是已经不能用了。我自己写的 Vercel 版本在后面)。不过好在 DeepL 在大陆是能够顺利访问的,而且我也有一台虚拟机(不是阿里云的服务器,来自我光荣而伟大的孙哥),可以支持我部署这样的业务。

Important
以下内容需要一台 Linux 机器,以及 docker 和 docker-compose 环境等。

随便找你个你喜欢的目录(比如 /home/yoghurtlee/deeplx,如果没有喜欢的就 mkdir yourdir && cd $_ 创建一个),编辑 docker-compose.yml 文件:

nano docker-compose.yml
# 使用你喜欢的编辑器,例如 Vim 也没问题

把下面的内容粘贴进去:

services:
    deeplx:
        image: ghcr.io/owo-network/deeplx:latest
        container_name: deeplx
        restart: always
        logging:
            options:
                max-size: 10m
        ports:
          - "1188:1188" # 如果端口被占用了就换个空闲的

        environment:
          # - AUTHKEY=your_offical_deepl_api_key # 如果你有 DeepL 官方的 key
          - TOKEN=your-token # 设置一个你喜欢的 token,防止被人滥用

然后启!动!

docker-compose up -d

如果一切顺利,在启动完成后访问 https://your-ip:1188(or your custom port) 应该可以看到:

{
    "code": 200,
    "message": "DeepL Free API, Developed by sjlleo and missuo. Go to /translate with POST. http://github.com/OwO-Network/DeepLX"
}

我们的 API 接口就是 <your IP and port/translate。使用方法大概是:

curl --location 'your-API' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer your-key' \
--data '{
    "text": "你的内容",
    "source_lang": "你的源语言",
    "target_lang": "你的目标语言"
}'

由于我的虚拟机只有 IPv6 地址,还是动态的,每次都输入一串又臭又长的地址实在是难绷,所以我就用 DDNS-Go 和 Nginx Proxy Manager 绑定了个域名。这个事情应该难不倒各位老友,我就不赘述了。

这个事情简单,直接把你的 API 地址和 key 填进去就完事。像沉浸式翻译(Immersive Translate)和简约翻译(Kiss Translate)都可以用。

这个服务的稳定性还是不错的,不过有时候会 429,正常现象。

我去翻了一下,感觉这个东西的原理很简单,那看起来完全可以用 Vercel 或者 Netlify 一类的部署。

找来找去只找到这个项目:

DeepLX Free API for Serverless

JavaScript
123
26
MIT

不过这个是凉心云云函数版本的。于是我秉持着自己动手丰衣足食的理念,改了个 Vercel 版本的:

可在 Vercel/Netlify 部署的 DeepLX API。DeepLX Free API for FaaS like Vercel and Netlify.

JavaScript
0
0
MIT

用法和普通版一样,不过 API 是 /api/translate

如各位所知,我是真不懂前端,连需要在 package.json 里面加 Vercel 的 dependency 都不知道。这个版本可用,不过也只保证基本可用性,连 Key 的功能都没有。等以后我知识丰富了慢慢加好了。我还写了个 Workers 版本,但是还不能用。没办法,菜就多练。

此外,如果有现成的项目已经实现了这个功能,请一定要在评论区嘲笑我。

上次我分享我备案注销的经历后,有许多热心的老友都建议我:把一个子域名解析到阿里云的服务器上,然后保证其至少有一些流量,这样阿里云就不会把域名识别为未接入了。

我首先花了一点时间弄明白了这条建议是什么意思 🤣 然后我找到阿里云的售后工程师咨询了一下,得到了肯定的答复。

IMG-20240811160225.avif

这倒是个好方法,不过这里还有一个关键的问题:我没有服务器。当时备案的服务器是用高校优惠白嫖的,而阿里云正常的服务器是什么价格大家应该都清楚。作为一个穷学生,我是断然不会花这么多钱只挂一个网站的。

服务器你唯唯诺诺,买域名你重拳出击

于是,我想到了合租。偶然的机会,我联系到了大一上写沟课的一位同学(无系的)。在经过沟通后,我们达成了合租的协议。具体细节就不多说了,反正今天上午,我购入了一台阿里云的 ECS,2H2G 配置,经典的 99 元款。希望能以这个价格多续费几年。

然后需要简单开一下荒。

99 元的服务器默认不能远程登录(应该是),需要在 ECS 控制台重置密码。

随后就可以通过 SSH 命令进行登录了。

由于我的机器有两个人用,我们需要创建两个用户。

# 在 root 模式下
adduser xxx
# 输入相关信息
usermod -aG sudo xxx
# 另一个同理

ufw 是我们 Ubuntu server 用户的好朋友。不过注意,由于云服务器的特殊性,光是用 ufw 开放端口是不够的,还得在云服务器控制台的安全组里面编辑规则。也可以一次性打开所有端口,但是不推荐,有亿点危险。

sudo apt update # 以后这个步骤我就不写了
sudo apt install ufw
sudo ufw enable
# 假设你要开放 114514 号端口——当然实际上没有这个端口
sudo ufw allow 114514

可能是因为阿里云服务器的缘故,已经配置好了阿里云镜像源。速度极其可观,我就没动。

改 SSH 端口这个事情我是从光荣而伟大的孙哥那里学来的。据说可以有效防止一部分宵小之辈的攻击。

编辑器选一个你喜欢的:

sudo nano /etc/ssh/sshd_config

Port 22 那一行取消注释,再改成你喜欢的端口,比方说 20022。

注意此处有被锁在外面的风险,建议开两个终端同时 SSH。以及别忘记添加防火墙放行。

又是来自光荣而伟大的孙哥。

本机执行:

ssh-copy-id -p your-ssh-port username@address

(如果没有 SSH 密钥记得生成一个)

1Panel,著名的开源 Linux 服务器面板,界面清爽,功能全面,非常推荐大家用。我知道可能有老友认为自己命令行耍得贼 6,完全不需要面板。没关系,我之前也是那么觉得的。

直接一键安装:

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

跟随向导安装即可。

安装完成,进入面板后,就可以随意发挥了。

这件事情让我几乎红温。原因是,我之前用的是 Nginx Proxy Manager,但其功能似乎和我的这个要求不太吻合,考虑到 Nginx 实在是太抽象了,我打算用 Caddy。

没想到的是 Caddy 更抽象,一直给我报 403,怎么调都没用。

于是我放弃了 Caddy。想到之前有个老哥用宝塔面板完成的配置,那我有 1Panel,是不是可以照猫画虎?

于是我去下载了应用商店的 OpenResty,一次通过。

赞美可视化界面。

我们接着上面的 OpenResty 说。

由于我只是想挂一个网站,因此直接把 Hugo 构建出来的产物扔到一个文件夹下就可以了。

先复制一份文件夹,把大部分多余的东西删掉,然后用我写好的 Makefile 跑一下得到 public 文件夹。记得把 http://localhost:1313 替换成你的域名(血的教训 qaq)。

1Panel 默认在一个挺长的地方创建网站文件夹:

/opt/1panel/apps/openresty/openresty/www/sites

所以在 1Panel 的主机-文件选项卡中找到这个地方,创建一个文件夹,名字推荐就写网站的域名。然后把 public 上传上去,并更名为 index。然后创建 logs 文件夹并在其中创建 access.log 文件即可。

做好 DNS 解析后点击网站-创建网站-静态网站,选择你的目录,创建即可。

然后还可以申请个 SSL 证书,和 Nginx Proxy Manager 一样是可视化、自动续期的。不过需要 DNS 服务商的 API token。

然后访问域名,就可以看到一个纯静态网站了。可以设置个定时任务,隔一段时间访问下。这样就会有流量了。

在尝到了 OpenResty 的甜头后,我打算把我日用的虚拟机也改成 OpenResty。不过这里有一个问题:OR 需要通过 1Panel 安装,而 1Panel 不能通过 IP 直接访问,需要 Nginx Proxy Manager 的反代。这就成了死循环了。

然后我发现只要这样就可以了:

1pctl listen-ip ipv6

因为我的虚拟机是纯 IPv6,所以默认不能访问(小碘-认清现实の小曲.mp4)。

然后的事情就没什么新意了。由于我的网站不多,手动迁移就完事。

现在我的虚拟机大概跑了这么几个容器:

  • OpenResty(建站工具、反代服务器)
  • Stirling PDF(PDF 处理)
  • Memos(备忘录)
  • DeepLX(翻译接口)
  • DDNS Go(DDNS)
  • AList(网盘)
  • Domain Admin(域名控制台)

里面 Stirling PDF 内存占用最大(大概 8%),但是用得却是最少的。

近期折腾简记
https://www.yoghurtlee.com/recent-tinkering-summary/
作者
Chlorine
发布于
2024-08-11