使用 Cloudflare WARP 保护 Mastodon 源站

Cloudflare CDN 能保证实例免遭 DDoS 和 CC 攻击,但是基于 Mastodon 和 Fediverse 互联的特性,攻击者完全可以通过特定联合来锁定源站,这篇文章是为了记录让 Mastodon 实例和其他实例通信时通过 Cloudflare WARP 代理流量以防止源站泄露。

联合问题警告
Mastodon 和其他实例通信时走代理能很好的保护源站,但如果您的代理提供商所提供的 IP 不干净,可能会导致在与其他实例通信时被对方的 WAF 阻拦。

修改配置文件

修改 docker-compose.yml

services 项下添加以下内容:

1
2
3
4
5
warproxy:
image: ghcr.io/tunmax/canal:latest
restart: always
networks:
- mastodon-network

理论上,这里可以换成任何一个代理,本文在此处使用了 canel 项目,这是已经打包好的 Cloudflare WARP 镜像。

修改环境变量

.env.production 文件添加以下内容:

1
2
http_proxy=http://warproxy:1080
no_proxy="127.0.0.1,1Panel*,es,es*,172.18.0.0/24"

这里的 no_proxy 需要换成你不需要走代理的地址,防止在启用代理后 无法连接至 Elasticsearch

启用 Cloudflare WARP 代理

执行以下指令:

1
2
docker compose down
docker compose up -d

随后,Mastodon 的几乎所有网络操作都会通过代理进行。

额外的配置 License

Cloudflare WARP 可能存在流量上限,因此我建议额外配置这一步。

参考 canal 的 README,使用 WARP+ 需要以下额外步骤:

1
2
3
4
5
6
7
8
9
10
11
# 容器部署后,输入以下命令进入容器
docker exec -it canal bash

# 设置 WARP+ 的 license
warp-cli registration license <license id>

# 退出容器
exit

# 重启容器
docker restart canal

使用 Cloudflare WARP 保护 Mastodon 源站
https://blog.byteloid.one/2025/02/11/using-warp-to-protect-mastodon-origin-server/
作者
bingxin666
发布于
2025年2月11日
许可协议