Misskeyの外部HTTPリクエストをインスタンス毎に経由するプロキシを変えたり、ネットワークレベルでブロックしたりする

Misskeyの外部HTTPリクエストをインスタンス毎に経由するプロキシを変えたり、ネットワークレベルでブロックしたりする

どうも、適当にMisskey自鯖を建ててるたいぷりんぐです。

やり方

必要なもの
  • Privoxy (HTTPプロキシを構築できるソフト。Debian系ならapt install privoxyとかで入るはず)
  • 上流に使用するHTTP or Socks5プロキシ
    ※WireGuardプロファイルをダウンロードできるVPN(ProtonVPN, Mullvad VPNなど)を使用することも可能です。こちらを参考にしてください
  • 気合, やる気
Privoxyの設定

設定ファイルは/etc/privoxy/configにあるはず。無ければ頑張って探してください(投げやり)

変更箇所

#  5.1. forward
#  =============
~~省略~~
#        forward  ipv6-server.example.org  .
#        forward  <[2-3][0-9a-f][0-9a-f][0-9a-f]:*>   .
#
forward / proxy-host.tld:6324 # メイン(指定インスタンス以外)のプロキシ
forward misskey.io proxy-host.tld:1081 # 別のプロキシを経由させたいインスタンスのドメインを指定
forward misskey.typeling1578.dev . # プロキシを通さないことも可能
forward misskey.example.com 0.0.0.0:80 # 上流プロキシを0.0.0.0とかに設定することでブロックできる 
#
#  5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t
#  =========================================================================
~~省略~~
#
#        forward           localhost/     .
#
forward-socks5 misskey.dev proxy-host.tld:5738 . # Socks5を使うことも可能
forward-socks5t .onion proxy-host.tld:9050 . # `.onion`ドメインだけTorを経由させたりもできる(非推奨)
#
#  5.3. forwarded-connect-retries
#  ===============================
~~省略~~
#  6.9. max-client-connections
#  ============================
~~省略~~
#  Example:
#
#      max-client-connections 256
#
max-client-connections 1024 # 許容する同時接続数を設定します。これは運営しているインスタンスの規模によって変えてください。(1024もあれば余程大丈夫)
#
#  6.10. listen-backlog
#  =====================

変更を保存すれば即時に反映されます。(心配ならsystemctl restart privoxyでも)

あとはMisskeyの設定にPrivoxyのHTTPプロキシを設定してください。(デフォルト状態ならポート8118)

【余談】そもそも何故こんなことをするのか

インスタンス毎に経由するプロキシを変える理由は、一部のインスタンスでは特定の国からのHTTPリクエストしか受け付けない場合があるため、連合に影響が出る場合があるからです。
ネットワークレベルでブロックする理由は、インスタンスブロックをしてもアクティビティの配送がされないだけで、メディアプロキシやサマリープロキシからのリクエストは引き続き機能してしまうからです。