--- 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 接口就是 `}} 不过这个是凉心云云函数版本的。于是我秉持着自己动手丰衣足食的理念,改了个 Vercel 版本的: {{< github repo="chlorine3545/deeplx-faas" >}} 用法和普通版一样,不过 API 是 `/api/translate`。 如各位所知,我是真不懂前端,连需要在 `package.json` 里面加 Vercel 的 dependency 都不知道。这个版本可用,不过也只保证基本可用性,连 Key 的功能都没有。等以后我知识丰富了慢慢加好了。我还写了个 Workers 版本,但是还不能用。没办法,菜就多练。 此外,如果有现成的项目已经实现了这个功能,请一定要在评论区嘲笑我。 ## 套路云服务器 ### 前言 上次我分享我备案注销的经历后,有许多热心的老友都建议我:把一个子域名解析到套路云的服务器上,然后保证其至少有一些流量,这样套路云就不会把域名识别为未接入了。 我首先花了一点时间弄明白了这条建议是什么意思 🤣 然后我找到套路云的售后工程师咨询了一下,得到了肯定的答复。 ![](https://img.viento.cc/IMG-20240811160225.avif) 这倒是个好方法,不过这里还有一个关键的问题:**我没有服务器**。当时备案的服务器是用高校优惠白嫖的,而套路云正常的服务器是什么价格大家应该都清楚。作为一个穷学生,我是断然不会花这么多钱只挂一个网站的。 ~~服务器你唯唯诺诺,买域名你重拳出击~~ 于是,我想到了合租。偶然的机会,我联系到了大一上写沟课的一位同学(无系的)。在经过沟通后,我们达成了合租的协议。具体细节就不多说了,反正今天上午,我购入了一台套路云的 ECS,2H2G 配置,经典的 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 PDF(PDF 处理) - Memos(备忘录) - DeepLX(翻译接口) - DDNS Go(DDNS) - AList(网盘) - Domain Admin(域名控制台) 里面 Stirling PDF 内存占用最大(大概 8%),但是用得却是最少的。