1
0
Fork 0
blog/content/posts/百草园/近期折腾简记.md

296 lines
12 KiB
Markdown
Raw Normal View History

---
slug: recent-tinkering-summary
summary: 小氯最近也在很努力地摸鱼呢
tags:
- 博客
- 折腾
- 备案
title: 近期折腾简记
date: 2024-08-11
description: 本文分享了作者近期一些折腾的简记,包括使用 CloudFlare 的临时邮箱、DeepLX 翻译服务的搭建及使用以及阿里云服务器的开荒笔记。临时邮箱可以保护隐私DeepLX 提供免注册的 DeepL API而阿里云则通过合租解决了服务器问题。
categories: ["百草园"]
featuredImage: https://img.viento.cc/cover/recent-tinkering-summary-cover.webp
draft: false
---
各位老友们好,我是 Chlorine。继续水文章讲讲最近摸鱼期间折腾的一些事情。
封面:用 AI 搓出来的(不太完善的)小氯酱
## 临时邮箱
继续薅 CloudFlare 活佛的羊毛。
~~大善人:别薅了别薅了我一年都亏好几个小目标了~~
插句话:为什么没有发现 CloudFlare 娘?按理说 CloudFlare 作为广大站长的好朋友,应该会有喜欢 ACG 的老友们做一个娘化的形象啊。很奇怪。
临时邮箱,字面意思,临时的邮箱(废话)。有时候我们突然需要一个服务,欢欢喜喜地找到一个网站,却发现需要注册才能使用。那注册就注册吧,又害怕来一堆垃圾邮件,或者是泄露隐私。这个时候就可以使用一个临时邮箱,用完即丢的那种。
基于 CloudFlare 的临时邮箱很多,我选择的是这个:
{{< github repo="dreamhunter2333/cloudflare_temp_email" >}}
功能基本上没有缺失的。由于我没兴趣配置 telegram bot 和发件,还会更简单一点。
官方文档比较简略,可能需要多读几遍。所幸开发大佬很热心,遇到问题可以去 issue 里面搜下。
我只补充一点:**记得添加电子邮件路由,不仅是 catch-all 规则,还有一个已经被你创建的邮件地址规则,不然会收不到邮件**。
### 其他项目
包括但是不限于 emactions、文件中转站……
## DeepLX 翻译服务
DeepL 大家都知道,非常出色的翻译提供商。虽然说可能比不上用 GPT-4 这种比较强的大模型去翻译,但是对付 Google 翻译、百度翻译这种厂商【一般情况下】还是手拿把掐的。
众所周知,如果想要在一些用户界面之外的地方(比如说第三方翻译软件、代码中)执行翻译,那么我们就需要 API。不过……API 需要注册账号,还需要绑卡,最难受的是还得是境外的银行卡,而且一个月只有 500k 的 token……
500k 听着还挺多,但是如果你经常翻译各种外语文章,比方说 BBC/Reuters/NYT 等外国媒体的报道,或者是英语的学术论文,那您就用吧,一用一个不吱声。
这时候就要再次求助万能的开源社区了。隆重请出今日主角——**DeepLX**。
{{< github repo="OwO-Network/DeepLX" >}}
简单来说DeepLX 就是一个通过模拟 DeepL iOS 客户端/DeepL Pro/DeepL 官方 API 来把 DeepL 免费服务转换为 DeepL API 的开源服务,免费,无限量,可以自部署,非常舒适。
唯一的要求应该就是需要服务器(有一个 CloudFlare Worker 版本的,但是已经不能用了。我自己写的 Vercel 版本在后面)。不过好在 DeepL 在大陆是能够顺利访问的,而且我也有一台虚拟机(不是套路云的服务器,来自我光荣而伟大的[孙哥](https://clf3.org)),可以支持我部署这样的业务。
### 部署
> [!IMPORTANT]
> 以下内容需要一台 Linux 机器,以及 docker 和 docker-compose 环境等。
随便找你个你喜欢的目录(比如 `/home/yoghurtlee/deeplx`,如果没有喜欢的就 `mkdir yourdir && cd $_` 创建一个),编辑 `docker-compose.yml` 文件:
```bash
nano docker-compose.yml
# 使用你喜欢的编辑器,例如 Vim 也没问题
```
把下面的内容粘贴进去:
```yaml
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防止被人滥用
```
然后启!动!
```bash
docker-compose up -d
```
如果一切顺利,在启动完成后访问 `https://your-ip:1188(or your custom port)` 应该可以看到:
```json
{
"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`。使用方法大概是:
```bash
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正常现象。
### FaaS 版本?
我去翻了一下,感觉这个东西的原理很简单,那看起来完全可以用 Vercel 或者 Netlify 一类的部署。
找来找去只找到这个项目:
{{< github repo="LegendLeo/deeplx-serverless" >}}
不过这个是凉心云云函数版本的。于是我秉持着自己动手丰衣足食的理念,改了个 Vercel 版本的:
{{< github repo="chlorine3545/deeplx-faas" >}}
用法和普通版一样,不过 API 是 `/api/translate`
如各位所知,我是真不懂前端,连需要在 `package.json` 里面加 Vercel 的 dependency 都不知道。这个版本可用,不过也只保证基本可用性,连 Key 的功能都没有。等以后我知识丰富了慢慢加好了。我还写了个 Workers 版本,但是还不能用。没办法,菜就多练。
此外,如果有现成的项目已经实现了这个功能,请一定要在评论区嘲笑我。
## 套路云服务器
### 前言
上次我分享我备案注销的经历后,有许多热心的老友都建议我:把一个子域名解析到套路云的服务器上,然后保证其至少有一些流量,这样套路云就不会把域名识别为未接入了。
我首先花了一点时间弄明白了这条建议是什么意思 🤣 然后我找到套路云的售后工程师咨询了一下,得到了肯定的答复。
![](https://img.viento.cc/IMG-20240811160225.avif)
这倒是个好方法,不过这里还有一个关键的问题:**我没有服务器**。当时备案的服务器是用高校优惠白嫖的,而套路云正常的服务器是什么价格大家应该都清楚。作为一个穷学生,我是断然不会花这么多钱只挂一个网站的。
~~服务器你唯唯诺诺,买域名你重拳出击~~
于是,我想到了合租。偶然的机会,我联系到了大一上写沟课的一位同学(无系的)。在经过沟通后,我们达成了合租的协议。具体细节就不多说了,反正今天上午,我购入了一台套路云的 ECS2H2G 配置,经典的 99 元款。希望能以这个价格多续费几年。
### 开荒
然后需要简单开一下荒。
#### 重置密码
99 元的服务器默认不能远程登录(应该是),需要在 ECS 控制台重置密码。
随后就可以通过 SSH 命令进行登录了。
#### 创建 sudo 用户
由于我的机器有两个人用,我们需要创建两个用户。
```bash
# 在 root 模式下
adduser xxx
# 输入相关信息
usermod -aG sudo xxx
# 另一个同理
```
#### 安装 ufw
ufw 是我们 Ubuntu server 用户的好朋友。不过注意,由于云服务器的特殊性,光是用 ufw 开放端口是不够的,还得在云服务器控制台的安全组里面编辑规则。也可以一次性打开所有端口,但是不推荐,有亿点危险。
```bash
sudo apt update # 以后这个步骤我就不写了
sudo apt install ufw
sudo ufw enable
# 假设你要开放 114514 号端口——当然实际上没有这个端口
sudo ufw allow 114514
```
可能是因为套路云服务器的缘故,已经配置好了套路云镜像源。速度极其可观,我就没动。
#### 更改默认 SSH 端口
改 SSH 端口这个事情我是从光荣而伟大的孙哥那里学来的。据说可以有效防止一部分宵小之辈的攻击。
编辑器选一个你喜欢的:
```bash
sudo nano /etc/ssh/sshd_config
```
`Port 22` 那一行取消注释,再改成你喜欢的端口,比方说 20022。
注意此处有被锁在外面的风险,建议开两个终端同时 SSH。以及别忘记添加防火墙放行。
#### 免密 SSH
又是来自光荣而伟大的孙哥。
在**本机**执行:
```bash
ssh-copy-id -p your-ssh-port username@address
```
(如果没有 SSH 密钥记得生成一个)
#### 安装 1Panel
1Panel著名的开源 Linux 服务器面板,界面清爽,功能全面,非常推荐大家用。我知道可能有老友认为自己命令行耍得贼 6完全不需要面板。没关系我之前也是那么觉得的。
直接一键安装:
```bash
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 默认在一个挺长的地方创建网站文件夹:
```bash
/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 的反代。这就成了死循环了。
然后我发现只要这样就可以了:
```bash
1pctl listen-ip ipv6
```
因为我的虚拟机是纯 IPv6所以默认不能访问`小碘-认清现实の小曲.mp4`)。
然后的事情就没什么新意了。由于我的网站不多,手动迁移就完事。
现在我的虚拟机大概跑了这么几个容器:
- OpenResty建站工具、反代服务器
- Stirling PDFPDF 处理)
- Memos备忘录
- DeepLX翻译接口
- DDNS GoDDNS
- AList网盘
- Domain Admin域名控制台
里面 Stirling PDF 内存占用最大(大概 8%),但是用得却是最少的。